- [WIKI 문서] https://wikidocs.net/book/110
- [코드아카데미] https://www.codecademy.com/ko/courses/python-advanced-ko/0/1?curriculum_id=53b5e0d8fed2a81590000003
IT
- [Python] Python 기초 프로그래밍 2017.03.17
- 1. Tensorflow 윈도우/맥에서 설치하기 2017.03.17
- [머신러닝] lec 6-2 : Softmax classifier 의 cost함수 2017.03.10
- [머신러닝] lec 6-1 : Softmax Regression: 기본 개념 소개 2017.03.10
- [머신러닝] lec 5-2 : Logistic Regression의 cost 함수 설명 2017.02.28
- [머신러닝] lec 5-1 : Logistic Classification의 가설 함수 정의 2017.02.23
- [머신러닝] 01~04강 복습 및 리뷰 2017.02.22
- [머신러닝] lec 04 - Multi-variable linear regression 2017.02.22
[Python] Python 기초 프로그래밍
1. Tensorflow 윈도우/맥에서 설치하기
텐서플로우 개발하기 위해 필요한 프로그램들 설치하기
1. Python 설치 : 텐서플로우는 파이썬 기반의 언어이므로 파이썬 설치가 필요하지만 Anaconda를 설치할 경우 설치하지 않아도 된다.
- [Mac] 최신버전 다운로드 : https://www.python.org/
- [Windows] Python 3.5.x 다운로드 : https://www.python.org/downloads/release/python-352/
2. Anaconda 설치하기
- 아나콘다란? Continuum Analytics 라는 곳에서 만든 파이썬 배포판으로 다양한 형태의 파이썬 관련 패키지를 모두 포함하여 개발을 더 편리하게 해주는 툴!
- [Windows] 현재 3.6.x 까지 나왔으나, 윈도우에서는 텐서플로우(Python) 3.5.x만 호환된다. (TensorFlow only supports version 3.5.x of Python on Windows)
아래 아카이브 들어가서 아나콘다 python 3.5.2 버전의 아나콘다 설치
Anaconda 다운로드 : https://repo.continuum.io/archive/
Anaconda 버전별 패키지 버전 확인 문서 : https://docs.continuum.io/anaconda/old-pkg-lists/4.1.1/py35
직링크 : https://repo.continuum.io/archive/Anaconda3-4.1.1-Windows-x86_64.exe - [Mac] 맥은 3.6.x 설치하면 된다.
Anaconda 다운로드 : https://www.continuum.io/downloads
아나콘다 설치 후, 버전확인 및 conda 라이브러리 업데이트 명령어
$python --version
$pip --version
$conda update --all
[Mac에서 pip 업데이트 하기] ☞ 업데이트 실패시
$pip install -U
[Windows에서 pip 업데이트 하기] ☞ 업데이트 실패시
$python -m pip install -U pip
3. 텐서플로우 설치 : https://www.tensorflow.org/install/
- Windows OS : https://www.tensorflow.org/install/install_windows
- Linux OS : https://www.tensorflow.org/install/install_linux
- MAC OS : https://www.tensorflow.org/install/install_mac
- Pycharm에서 pip 명령어로 tensorflow 설치를 받을 수 있으므로 설치하지 않아도 됨.
다음편 : ☞파이썬 개발을 위한 Pycharm IDE 설치하기편
'◼︎ 개발 > 텐서플로우' 카테고리의 다른 글
[텐서플로우] 기본 예제1) (0) | 2017.03.23 |
---|---|
[텐서플로우] Open GL과 Open CL (0) | 2017.03.23 |
7. [Mac] 에서 텐서플로우(Tensorflow) GPU 설치하기 (0) | 2017.03.22 |
6. 텐서플로우 시작하기 (0) | 2017.03.19 |
5. 김성 머신러닝 git hub 소스 다운로드 받기 (0) | 2017.03.18 |
4. 파이참(Pycharm)에서 텐서플로우 예제 실행해보기 (0) | 2017.03.17 |
3. 파이참(Pycharm)으로 Hello world 찍기 (0) | 2017.03.17 |
[머신러닝] lec 6-2 : Softmax classifier 의 cost함수
#모두를 위한 립러닝 강좌 lec 6-2 : Softmax classifier 의 cost함수
https://www.youtube.com/watch?v=jMU9G5WEtBc&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=14
* Softmax classifier란?
Logistic classification 함수를 사용해서 WX = Y 꼴을 계산해서 벡터값이 나오게 되고 값이 만약에 여러가지로 나왔을 때는 a = 0.7, b= 0.2, c=0.1로 나와서 합이 1이되는 값을 가지는 함수를 만들면 어떨까?라고 이야기가 나왔다. 바로 그렇게 만드는 것이 바로 softmax이다.
* Softmax classifier
Softmax의 특징
1) 모든 값은 0에서 1 사이의 값을 가진다.
2) 전체의 sum이 1이 된다. 즉, 0.7이 나올 확률, 0.2가 나올 확률, 0.1이 나올 확률을 구할 수 있게 된다.
3) 그리고 one-hot encoding 을 통해서 제일 확실한 값이 뭐야? 라고 했을 때 0.7을 가지는 값인 A를 1 나머지는 0으로 리턴해줄 수 있다.
그리고 ML에서는 궁극적으로 cost 함수를 최소화(cost function) 하여서 적용한다.
* Cross-entropy Cost function
S(y) 예측값 L (실제값)을 넣어서 cross-entropy 함수를 통해서 그 차이를 구한다.
x가 0일 땐 1에 가깞게, 1일 때는 0에 가깝게 그려지는 그래프다.
* gradient descent
경사면의 기울기 구하기 - 믜분이 필요하겠구나 ^^
#실습
'◼︎ 개발 > ML 알고리즘' 카테고리의 다른 글
[머신러닝] lab 7-1 : training/test dataset, learning rate, normalization (0) | 2017.04.04 |
---|---|
[머신러닝] lec 7-2 : Training/Testing 데이타 셋 (0) | 2017.03.22 |
[머신러닝] lec 7-1 : 학습 Learning rate, Overfitting, 그리고 일반화 (0) | 2017.03.20 |
[머신러닝] lec 6-1 : Softmax Regression: 기본 개념 소개 (0) | 2017.03.10 |
[머신러닝] lec 5-2 : Logistic Regression의 cost 함수 설명 (0) | 2017.02.28 |
[머신러닝] lec 5-1 : Logistic Classification의 가설 함수 정의 (0) | 2017.02.23 |
[머신러닝] 01~04강 복습 및 리뷰 (0) | 2017.02.22 |
[머신러닝] lec 6-1 : Softmax Regression: 기본 개념 소개
#모두를 위한 딥러닝 강좌 lec 6-1 : Softmax Regression: 기본 개념 소개
https://www.youtube.com/watch?v=MFAnsx1y9ZI&index=13&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm
* Multinomaial classification
왼쪽 표의 데이터를 그래프 위에 그려보면 오른쪽 그림과 같이 데이타가 나온다.
그리고 그 데이타들을 binary 라는 0과 1로 나누는 classification 알고리즘을 적용한다고 했을 때 각각은 빨간선으로 구분할 수 있다.
1. C와 C가 아닌 값
2. B과 B가 아닌 값
3. A와 A가 아닌 값
저 3개를 행렬의 곱으로 구하기엔 좀 복잡할 수 있으므로, 하나의 식으로 합치어서 계산해보자.
이전에는 시그모이드(sigmoid)를 처리해야 했지만,
각각의 시그모이드(sigmoid) 함수를 정의해야하지만, 3개를 한꺼번에 구하는 방법도 있다.
'◼︎ 개발 > ML 알고리즘' 카테고리의 다른 글
[머신러닝] lec 7-2 : Training/Testing 데이타 셋 (0) | 2017.03.22 |
---|---|
[머신러닝] lec 7-1 : 학습 Learning rate, Overfitting, 그리고 일반화 (0) | 2017.03.20 |
[머신러닝] lec 6-2 : Softmax classifier 의 cost함수 (0) | 2017.03.10 |
[머신러닝] lec 5-2 : Logistic Regression의 cost 함수 설명 (0) | 2017.02.28 |
[머신러닝] lec 5-1 : Logistic Classification의 가설 함수 정의 (0) | 2017.02.23 |
[머신러닝] 01~04강 복습 및 리뷰 (0) | 2017.02.22 |
[머신러닝] lec 04 - Multi-variable linear regression (0) | 2017.02.22 |
[머신러닝] lec 5-2 : Logistic Regression의 cost 함수 설명
#모두를 위한 딥러닝 강좌 lec 5-2 : Logistic Regression의 cost 함수 설명
https://www.youtube.com/watch?v=6vzchGYEJBc&index=11&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm
* Logistic (regression) classification 알고리즘
지난 번에 hypothesis를 구했고 이번엔 minimizs cost function과 gradient decent 값을 구해보자.
* Linear Hypothesis 의 그래프
- 장점 : 어디서든지 답(최저값)을 구할 수 있다! → 왜냐는 사람은 이전 강의 참고
* Cost Function의 그래프
- 초록 : Linear regression의 Hypothesis
- 주황 : Classification의 sigmoid function(Hypothesis)을 통해서 값이 0~1사이로 들어오도록 만들었다.
- Linear regression H(x)를 그래프로 그린다면 매끈한 밥그릇 모양!
- sigmoid 함수의 H(X)를 통해서 그래프로 그린다면 울퉁불퉁한 밥그릇 모양!
→ 이전시간(05-01)의 그래프를 보면 선이 구불구불하기 때문에 울퉁불퉁할 수 밖에 없다.
→ 그래서 어디에서 시작하던지 최저값을 찾는 것이 아니라, Local 최소값과 Global 최소값이 생기면서 값이 복잡하니까!
불안정하여 값을 쓸 수가 없다.
* Cost function 이해하기
cost function의 의미 : 실제 값과 예측 값과 비슷한다면 cost 값은 작아지고, cost 값은 커져서 우리의 모델을 더 정확히 하는 것이다.
to-do)아래의 예제를 그려가면서 이해해보기..!
하지만, 텐서플로우에서 코딩하려고 보면 굉장히 복잡해진다.
저 2개의 식을 하나의 식으로 만들어보자.
y=1일 때, c = -log(H(x))
y=0일 때, c = -1 * log(1-H(x)) 가 되므로 위의 식과 동일하게 변하게 된다.
* Cost minimize 하기 (Gradient Decent)
gradientDescentOptimizer라는 함수 라이브러리를 이용하여서 미분하여 구하면 된다.
#Logistic Classification 구현하기
https://www.youtube.com/watch?v=t7Y9luCNzzE&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=12
'◼︎ 개발 > ML 알고리즘' 카테고리의 다른 글
[머신러닝] lec 7-1 : 학습 Learning rate, Overfitting, 그리고 일반화 (0) | 2017.03.20 |
---|---|
[머신러닝] lec 6-2 : Softmax classifier 의 cost함수 (0) | 2017.03.10 |
[머신러닝] lec 6-1 : Softmax Regression: 기본 개념 소개 (0) | 2017.03.10 |
[머신러닝] lec 5-1 : Logistic Classification의 가설 함수 정의 (0) | 2017.02.23 |
[머신러닝] 01~04강 복습 및 리뷰 (0) | 2017.02.22 |
[머신러닝] lec 04 - Multi-variable linear regression (0) | 2017.02.22 |
[머신러닝] lec 03 - Linear Regression의 cost Function 최소화 알고리즘 (0) | 2017.02.22 |
[머신러닝] lec 5-1 : Logistic Classification의 가설 함수 정의
#모두를 위한 딥러닝 강좌 lec 5-1 : Logistic Classification의 가설 함수 정의
https://www.youtube.com/watch?v=PIjno6paszY&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=10
* 이전시간 복습 Linear Regression
Hypothesis : H(X) = WX
Cost : cost(W)
Gradient decent : W
* Binary classification 이란?
- 두 개중에 하나를 고르는 알고리즘!
- 사용 예시) Spam or Ham (스팸 메일 필터링), 페이스북 추천 타임라인, 주식시장의 이전 학습으로 인한 살지 팔지에 대한 판단 등에 사용할 수 있다.
* Linear Regression의 단점
문제1)
- 0과 1로만 구분할 경우 기울기가 달라질 경우 4시간 공부했을 때 성공이였던 데이타가 실패로 분류될 수도 있다.
문제2)
H(x) = Wx + b라는 Linear 공식으로 Classification의 값을 구할 때 0에서 1사이의 값이 아니라 1이 넘어버리는 값이 발생할 수 도 있다.
그래서 많은 사람들이 0에서 1사이의 값을 가지는 함수를 고민을 하게 되어 발견한 함수가 있다.
* sigmoid Function (시그모이드 함수) or Logistic Function
- 1을 넘어가게 된다면 1을 넘지않는 선을 가지게 되며, -100이 되어도 0과 가까운 수가 될 뿐 0밑으로 가지 않는다.
- z = WX로 두고, H(x) = g(z)로 두게 된다.
* Logistic Hypothesis의 최종
'◼︎ 개발 > ML 알고리즘' 카테고리의 다른 글
[머신러닝] lec 6-2 : Softmax classifier 의 cost함수 (0) | 2017.03.10 |
---|---|
[머신러닝] lec 6-1 : Softmax Regression: 기본 개념 소개 (0) | 2017.03.10 |
[머신러닝] lec 5-2 : Logistic Regression의 cost 함수 설명 (0) | 2017.02.28 |
[머신러닝] 01~04강 복습 및 리뷰 (0) | 2017.02.22 |
[머신러닝] lec 04 - Multi-variable linear regression (0) | 2017.02.22 |
[머신러닝] lec 03 - Linear Regression의 cost Function 최소화 알고리즘 (0) | 2017.02.22 |
[머신러닝] lec 02 - Linear Regression의 Hypothesis 와 cost (0) | 2017.02.17 |
[머신러닝] 01~04강 복습 및 리뷰
'◼︎ 개발 > ML 알고리즘' 카테고리의 다른 글
[머신러닝] lec 6-1 : Softmax Regression: 기본 개념 소개 (0) | 2017.03.10 |
---|---|
[머신러닝] lec 5-2 : Logistic Regression의 cost 함수 설명 (0) | 2017.02.28 |
[머신러닝] lec 5-1 : Logistic Classification의 가설 함수 정의 (0) | 2017.02.23 |
[머신러닝] lec 04 - Multi-variable linear regression (0) | 2017.02.22 |
[머신러닝] lec 03 - Linear Regression의 cost Function 최소화 알고리즘 (0) | 2017.02.22 |
[머신러닝] lec 02 - Linear Regression의 Hypothesis 와 cost (0) | 2017.02.17 |
[머신러닝] lec 01 - 기본적인 Machine Learning 의 용어와 개념 (0) | 2017.02.17 |
[머신러닝] lec 04 - Multi-variable linear regression
#모두를 위한 딥러닝 강좌 lec 04 : Multi-variable linear regression
https://www.youtube.com/watch?v=kPxpJY6fRkY&index=8&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm
이전 시간
Hypothesis ( 01강 : http://aileen93.tistory.com/48 )
H(x) = Wx + b
Cost function ( 02강 : http://aileen93.tistory.com/49 )
cost(W, b)
Gradient descent algorithm ( 03강 : http://aileen93.tistory.com/50 )
미분을 통한 최저값 0을 찾는 방법 minimize cost(W, b)
Multi-variable linear regression
One-feature
H(x) = Wx+b
변수가 하나일 경우에는 w에 x만 곱하면 되었다.
x (hour) =입력값 =one-feature |
y (score) = 답 (결과값) = 학습 결데이터 = one-variable |
10 |
90 |
9 |
80 |
3 | 50 |
2 |
60 |
11 | 40 |
- 좋은 feature를 통해서 결과값(y)를 알아내므로 좋은 feautre들을 갖는 것이 중요하다.
- 표 해석 : 10(x값)시간 공부하여 90점(y값)을 받은 친구와 9시간 공부하여 80점을 받은 친구 등으로 해석할 수 있다.
- H(x1,x2) = w1x1 + w2x2 + w3x3 +b
Multi-variable/Multi-feature도 다르지 않다. 변수(feature)가 여러개로 늘어날 경우를 말한다.
x1 (hours) =입력값 = feature | x2 (attendance) =입력값 = feature | y (score) = 답 (결과값) = 학습 결과 데이터 = variable |
10 | 5 | 90 |
9 | 5 | 80 |
3 | 2 | 50 |
2 | 4 | 60 |
11 | 1 | 40 |
- feature가 여러 개일 경우, multi-variable/feature 라고 부른다.
- 그리고 이 feature가 많을 경우, 당연하게 더 자세하고 정확한 결과를 얻을 수 있다! ( 그렇다고 많은 variable이 있다고 다 좋은 것도 아니다. )
- 표 해석 : 11(x1값)시간을 공부하고도 40점(y값)을 받은 친구는 수업 참석률(x2값)이 1번 밖에 되지 않았음을 우리는 알 수 있다.
( 아까 하나의 feature가 있을 때 보다 더 정확한 결과가 느껴질 것이다. )
결국, feature(변수)가 많아지면 식도 길어지고 계산하기 어려워지니까 고민했었는데 Matrix(행렬)을 통해서 쉽게 계산이 가능하도록 했다.
Matrix
근데, w1x1이던게 행렬의 곱을 하다보니 x1w1으로 순서가 바뀌게 되어서 ( 순서가 바뀌는 것은 아래 Hypothesis using matrix 이미지 참고)
행렬의 곱을 나타낼 경우 H(X) = XW로 표현하게 되었다. (X를 먼저 표현해준다.)
이해가 안간다면 아래 그림을 보면 더 쉽다.
결국, 연산값이 한줄로 표현이 가능하게 된다.
즉, 인스턴스를 각각 계산할 필요가 없이 instance의 수 * W만 행렬로 곱해버린다면 y값이 바로 계산되어서 나오게 된다.
그래서 나온 새로운 Hypothesis
Transpose
원래 행렬은 (1*4)*(4*1)이 되어야 행렬의 곱을 할 수가 있는데, W행렬을 X 행렬과 같은 모양으로 4*1행렬 * 4*1행렬으로 만들어서 강제로 곱하는 방법이 나오게 된다. (수학자들이 왜 1*4행렬에 4*1행렬을 하니까 보기 싫다며 보기 좋게 만들자고 하면서 나온 방법 Transpose -_-)
=> 나중에 찾아보이소
그래서 우리는 최종적으로 라는 형식으로 사용을 하게 된다.
#multi-variable Linear Regression을 TensorFlow에서 구현하기 실습 04
https://www.youtube.com/watch?v=iEaVR1N8EEk&index=9&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm
# Lab 4 Multi-variable linear regression
import tensorflow as tf
tf.set_random_seed(777) # for reproducibility
x1_data = [73., 93., 89., 96., 73.]
x2_data = [80., 88., 91., 98., 66.]
x3_data = [75., 93., 90., 100., 70.]
y_data = [152., 185., 180., 196., 142.]
# placeholders for a tensor that will be always fed.
x1 = tf.placeholder(tf.float32)
x2 = tf.placeholder(tf.float32)
x3 = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
w1 = tf.Variable(tf.random_normal([1]), name='weight1')
w2 = tf.Variable(tf.random_normal([1]), name='weight2')
w3 = tf.Variable(tf.random_normal([1]), name='weight3')
b = tf.Variable(tf.random_normal([1]), name='bias')
hypothesis = x1 * w1 + x2 * w2 + x3 * w3 + b
print('=================> hypothesis :',hypothesis)
# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
# Minimize. Need a very small learning rate for this data set
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)
# Launch the graph in a session.
sess = tf.Session()
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())
for step in range(2001):
cost_val, hy_val, _ = sess.run([cost, hypothesis, train],
feed_dict={x1: x1_data, x2: x2_data, x3: x3_data, Y: y_data})
if step % 10 == 0:
print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)
'''
0 Cost: 19614.8
Prediction:
[ 21.69748688 39.10213089 31.82624626 35.14236832 32.55316544]
10 Cost: 14.0682
Prediction:
[ 145.56100464 187.94958496 178.50236511 194.86721802 146.08096313]
...
1990 Cost: 4.9197
Prediction:
[ 148.15084839 186.88632202 179.6293335 195.81796265 144.46044922]
2000 Cost: 4.89449
Prediction:
[ 148.15931702 186.8805542 179.63194275 195.81971741 144.45298767]
'''
참고 링크
- [ML 강의 소스] https://github.com/hunkim/ml
'◼︎ 개발 > ML 알고리즘' 카테고리의 다른 글
[머신러닝] lec 6-1 : Softmax Regression: 기본 개념 소개 (0) | 2017.03.10 |
---|---|
[머신러닝] lec 5-2 : Logistic Regression의 cost 함수 설명 (0) | 2017.02.28 |
[머신러닝] lec 5-1 : Logistic Classification의 가설 함수 정의 (0) | 2017.02.23 |
[머신러닝] 01~04강 복습 및 리뷰 (0) | 2017.02.22 |
[머신러닝] lec 03 - Linear Regression의 cost Function 최소화 알고리즘 (0) | 2017.02.22 |
[머신러닝] lec 02 - Linear Regression의 Hypothesis 와 cost (0) | 2017.02.17 |
[머신러닝] lec 01 - 기본적인 Machine Learning 의 용어와 개념 (0) | 2017.02.17 |