Softmax Regression
·
머신러닝/모두를 위한 딥러닝
여러 개의 class가 있을 때 그것을 예측하면 Multinomial classification 그중에서도 가장 많이 쓰이는 softmax classification에 대해 알아볼 것이다. 지난 시간에 logistic regression에 대해 공부해보았는데 H(X)=Wx의 단점은 리턴 값이 어떤 실수의 값이 되기 때문에 두 개 중에 하나를 고르는 즉, 0이냐 1이냐 적합하지 않았다. 그래서 생각한 방법이 이것을 z라 놓고 g(z)라는 함수가 큰 값을 압축을 해서 0이나 1로 또는 그 사이 값으로 나오는 것이다. 그때 연구해서 나온 것이 바로 sigmoid이다. 다른 말로는 logistic이라고도 부른다. 그러면 마지막 H(x) = g(H(x))가 된다. 이것을 그림으로 표현하면 아래 처럼된다. 여기서 ..
TensorFlow로 Logistic Classification의 구현하기
·
머신러닝/모두를 위한 딥러닝
일단 Data를 보고 가자. x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]] y_data = [[0],[0],[0],[1],[1],[1]] # placeholders for a tensor that will be always fed. X = tf.placeholder(tf.float32, shape=[None, 2]) Y = tf.placeholder(tf.float32, shape=[None, 1]) x_data는 x1, x2순서로 주어진 data이고 y는 0 또는 1로 주어진 데이터이다. x_data는 딥러닝을 공부한 시간이라 하고 y_data 중 0을 fail 1을 pass라고 하는 것이다. 이렇게 나누면 binary classification..
Logistic Regression의 cost 함수 설명
·
머신러닝/모두를 위한 딥러닝
Cost를 이야기할 때 대략 가설의 값과 실제의 값의 차의 제곱을 평균을 내는 것인데 H(x)로 하면 대략 아래 사진처럼 나타나 최솟값을 찾을 수 있다. 하지만 sigmoid를 사용하면서 0에서 1 사이의 값이 나오게 하였다. 이것을 사용해서 Cost를 사용하면 울퉁불퉁한 그래프가 완성된다. H(x)는 어디서 시작해도 경사를 타고 최솟값을 찾는다. 하지만 H(X)는 linear가 아니라 S자 모양인 sigmoid에 경사 타기 알고리즘을 적용하면 끝나는 점이 달라질 수 있다는 것이다. 위 사진처럼 어느 지점에서 시작하냐에 따라 최솟값이 달라진다. 이 값을 바로 local minimum이라고 한다. 원래 global minimum을 찾는 게 목표인데 local minimum를 찾는 것이다. 문제는 여기서 학..
Logistic Classification의 가설 함수 정의
·
머신러닝/모두를 위한 딥러닝
이 알고리즘은 Classification 알고리즘 중에서 정확도가 높은 알고리즘으로 알려져 있다. 실제 문제에도 바로 적용해볼 수 있다. NN과 딥러닝을 이해하기 위해서는 이 알고리즘이 굉장히 중요하다. Regression과 굉장히 유사하다. classification의 다른 점은 둘 중의 하나를 고르는 것 즉, binary classification이다. 예를 들어 스팸과 햄을 구분하는 것이나 페이스북을 들어가면 굉장히 재밌고 신나는 타임라인이 올라온다. 친구가 300명 400명 정도 되면 올라오는 피드가 굉장히 많다. 페이스북에서는 classification은 우리가 좋아요를 누른 게시물 등을 학습해서 친구들이 만들어내는 수백 개의 타임라인 중 어떤 라인은 보여주고 어떤 라인은 보여주지 말자 그래서 ..
TensorFlow로 파일에서 data읽어오기
·
머신러닝/모두를 위한 딥러닝
이제 데이터가 많아지니까 소스코드에 적기 어렵다. 데이터가 만개 정도 되면 코드 또한 정말 더러울 것이다. 그럴 때는 txt 파일에 적어서 가져오면 된다. numpy를 사용하면 이를 쉽게 할 수 있다. xy = np.loadtxt('data-01-test-score.csv', delimiter=',', dtype=np.float32) x_data = xy[:, 0:-1] y_data = xy[:, [-1]] # Make sure the shape and data are OK print(x_data, "\nx_data shape:", x_data.shape) print(y_data, "\ny_data shape:", y_data.shape) np.loadtxt로 파일을 불러온 다음 파일 이름을 적고, de..
multi-variable linear regression을 TensorFlow에서 구현하기
·
머신러닝/모두를 위한 딥러닝
우선 이론 시간에 이야기했던 것처럼 x의 데이터가 3개가 있는데 마지막 값이 얼마 일까?라는 모델을 만들어 볼 것이다. x의 data가 많으면 예측하는 값도 더 정확할 것이다. 그러면 어떻게 하면 좋을까? 일단 H(x)를 tensor flow로 표현해보자 H(x1, x2, x3) = x1 w1 +x 2 w2 +x 3 w3 우리가 이론 시간에 배운 matrix이다. 이제 코드를 확인해보자. 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 th..
multi-variable linear regression
·
머신러닝/모두를 위한 딥러닝
이번에는 linear regression에 이어서 하나의 변수가 아니라 여러 개의 변수를 사용하는 multi-variable linear regression을 배워보았다. 위 같은 경우로 시험을 3번을 본 다음 마지막 시험에는 몇 점을 맞을까?처럼 여러 가지 변수가 사용되었을 때 어떻게 하면 될까? 변수가 하나일 때는 H(x) = Wx + b였다. 하지만 3개일 때는 아래 식과 같다. 굉장히 간단하게 표현할 수 있다. Cost도 아래 식과 같다. 근데 hypothesis가 계속 길어진다. 이때 사용하는 것이 바로 Matrix이다. 위에 처럼 1x7 + 2x9 + 3x11을 하여 58이라는 수가 나온다 이것을 행렬곱이라고 한다. 이런 것을 hyporthesis로 표현하면 아래 식처럼 된다. 위에서 봣듯이 ..
Linear Regression의 cost 최소화 알고리즘의 원리
·
머신러닝/모두를 위한 딥러닝
쉽게 설명하기 위해서 H(x) = Wx로 하였습니다. 그러면 Cost의 식은 아래처럼 된다. 그러면 X,Y의 데이터를 각각 1,2,3씩 주었다. 이때 Cost의 값은 어떻게 될까? 위 식에 대입하면 된다. W = 1, Cost(W) = 0 W = 0, Cost(W) = 4.67 W = 2, Cost(W) = 4.67 이것을 그래프에 그리면 Cost는 대략 아래 사진처럼 나오게 된다. 우리는 제일 최소화 된 값을 찾는 게 목적이다. 이 값을 기계적으로 찾을 때 많이 쓰는 게 바로 Gradient descent algorithm이다. 주어진 Cost를 minimize를 할 때 사용하는 것이다. 이것을 좀 더 쉽게 설명하면 예를 들어 등산을 갔는데 해가 지기 시작해서 내려와야 할 때 어떻게 해야 될까? 산 밑..
TensorFlow로 간단한 linear regression을 구현
·
머신러닝/모두를 위한 딥러닝
이전 게시물에서 배웠던 linear regression을 구현해볼 것이다. Tensor Flow가 구현하기 위해 기본이 되는 3가지 를 거칠 것이다. 그래프를 빌드한다. 세션을 통해 그래프를 실행을 시킨다 그에 해당하는 값을 돌려준다. 1. 그래프 구현 H(x) = W(x) + b를 Tensorflow로 표현한 것이다. # X and Y data x_train = [1, 2, 3] y_train = [1, 2, 3] W = tf.Variable(tf.random_normal([1]), name="weight") b = tf.Variable(tf.random_normal([1]), name="bias") # Our hypothesis XW+b hypothesis = x_train * W + b 여기서 tf..
Linear Regression의 Hypothesis 와 cost
·
머신러닝/모두를 위한 딥러닝
regression training dara set을 보면 X는 시간을 나타내고 Y는 점수를 나타낸다. 이때 만약 7시간을 공부했다고 가정을 하고 regression모델에서 예측을해 65점 정도가 나왔다고 하자. 이게 바로 Linear Regression이다. 여기서 쉽게 이해하기 위해 X와 Y의 data를 1,2,3씩 주었다. 이때 Hypothesis(가설)가 나오게 된다. 어떤 데이터가 있다면 여기에 잘 맞는 linear이 나오게 된다 어떤 선이 데이터에 잘 맞는 선 일까를 찾는 것이다. ...더보기 H(x) =Wx + b 여기서 보면 Hypothesis가 여러개 가 있고 어떤 선이 데이터에 가장 잘 맞는 선인지 찾으면 된다. 가장 좋은 Hypothesis는 실제 데이터와 가설의 데이터의 거리를 계산..