※본 포스팅은 직접 강의하는 내용이 아닌, 김성훈 교수님의 머신러닝 강의를 정리하기 위한 포스팅입니다.
김성훈 교수님의 강의는 모두를 위한 머신러닝/딥러닝(http://hunkim.github.io/ml)에서 들을 수 있습니다.
Sigmoid 함수 적용
우리는 지난 시간 여러 값으로 분류하는 예측모델(ex.공부 시간, 출석에 따른 학점 예측)을 식으로 나타내는 것까지 공부했다. 그림(그래프)으로 표현 했던 것을 세 개의 독립적인 Binary Classification 수식으로 나타내면 아래와 같았다. 그리고 연산을 통해 2.0, 1.0, 0.1이라는예측 값을 얻을 수 있다.
예측 값 중 2.0이 가장 큰 값이기 때문에, 결과 값은 A라고 예측 할 수 있다. 하지만 우리가 원하는 것은 Sigmoid 함수를 사용하여 0~1 사이의 값으로 얻는 것이다.
Softmax 함수를 사용 하여 우리는 예측 값을 다음과 같이 변환할 수 있다.
1. 0과1사이의 값
2. 모든값을 더했을 때 1이 되는 값
모든 값을 더했을 때 1이 되기 때문에 각각을 확률(Probabilities)이라고 볼 수 있다. 그림과 같이 Softmax를 구현하는 공식이 따로 있지만, 텐서플로우에서 함수를 호출해 구현할 수 있기 때문에 여기서는 자세한 부분을 생략하도록 한다.
여기까지 가설(Hypothesis)은 완성되었고, 다음 단계는 예측 값과 실제 값을 비교하는 Cost function을 설계하는것이다.
Cross-Entropy
Cross-Entropy의 용어에 대한 설명 : http://blog.naver.com/PostView.nhn?blogId=gyrbsdl18&logNo=221013188633
S : 예측 값
L : 실제 값
수식으로 나타내면 아래와 같다.
Cost function이 제대로 작동하는지 확인 해보자. 실제 값이 B인 경우를가정할때, 두 가지로 예측할 수 있다.
1.실제 값이 B인데, B를 예측(맞는 예측)
2.실제 값이 B인데, A를 예측(틀린 예측)
Cost function이 궁극적으로 하고 싶은 것이 무엇일까? 맞았을 때 Cost function이 작은 값, 틀렸을 때 Cost function이 큰 값을 가져서 시스템에 상 or 벌을 주는 형식이라고 생각하면 된다. 아래와 같이 요소별 연산(element-wise) 연산(벡터의element들끼리 곱한다는 말)을 진행해 예시를 검증한다.
예측이 맞았을 때,
예측이 틀렸을 때,
맞았을 때 Cost function(Loss)이 작고, 틀렸을 때 Cost function이 크다. 우리가 원하는 형태로 결과가 나타났다. Cost function이 제대로 작동하고 있다고 볼수있다.
Logistic cost VS Cross entropy
위 두 식이 실제로는 같은 것을 의미한다. 왜 같은지는 한 번 생각해보시길 바란다.
여러개일 경우에는 전체의 거리(Distance)를 더하고 그 수로 나누어 평균의 Distance를 알아내면 된다. 그것이 전체의 Loss, Cost function이다.
Gradient descent
Loss가 밥그릇 모양으로 생겼다고 가정(실제로도 그렇다)하고 미분을 해서 최소값을 찾아낸다(경사하강법). 식 자체가 많이 복잡해졌기 때문에 실제로 미분하는 과정은 다루지 않는다. 하지만 직관적으로 미분을 해서 최소값을 찾는다는 것만 알면 된다. 실제 계산은 어차피 컴퓨터가 할 것이다.
'IT 기록 > 머신러닝' 카테고리의 다른 글
[머신러닝]06-1.Softmax Regression 기본 개념 소개 (0) | 2018.08.02 |
---|---|
[머신러닝]05-2.Logistic Regression의 cost 함수 (0) | 2018.07.30 |
[머신러닝]05-1.Logistic Classification의 가설 함수 정의 (0) | 2018.07.28 |
[머신러닝]04-3.TensorFlow로 파일에서 데이터 읽어 오기 (0) | 2018.07.24 |
[머신러닝]04-2.multi-variable linear regression TensorFlow 구현 (0) | 2018.07.23 |
댓글