2020. 9. 7. 22:12ㆍ머신러닝
로지스틱 회귀의 전체적인 흐름에 대해 알아봤다. 그렇다면 Regression에서 정말 중요한 cost함수는 어떻게 생겼을까?
처음에 가설에서 Weight는 랜덤 하게 설정했을 경우, 좌측의 모델처럼 다양한 경우의 모습을 보인다. 우리의 목적은 우측의 그림처럼 두 가지 그룹을 나누는 모델이다. 그동안의 강의에서 배운 것과 마찬가지로 Cost function은 Label과 Hypothesis의 차이일 텐데 여기서 문제가 있다.
우리의 Hypothesis는 Sigmoid 함수로 곡선의 형태를 띄고 있고, Label값들은 이상적인 1과 0의 값을 가지기 때문에 둘의 차는 구불구불해진다. 그래서 y=1, y=0인 두 경우의 Label에서 log함수를 이용해 우리가 원하는 cost function의 형태를 만든다.
그 후에 Gradient descent를 이용하여 적절한 Weight 값을 찾는다는 내용인데.. 사실 이해가 잘 되지 않는다. 그래서 다른 머신러닝 강좌를 참고했다. HKUST 김성훈 교수님의 [머신러닝과 딥러닝 BASIC] 강좌이다. 마찬가지로 edwith에 있다.
이런 훌륭한 세상에서 안배우면 손해!
기존의 Linear Regression에서는 Hypothesis가 선형 함수라서 Cost function이 부드럽게 생겨서 좋았다. 왜, 어디에서 시작해도 Gradient descent를 통해 최소화할 수 있었으니까.
그런데 Logistic Regression의 Hypothesis는 선형이 아닌 Sigmoid 함수이다. 따라서 cost 함수가 꾸불꾸불하다.
이렇게 되면 문제가 무엇이냐, 옛날에 Gradient descent에 대해 배울 때 Gradient descent의 단점이라고 한 부분이 있었다. 바로 Local minimun 문제이다. cost function이 울퉁불퉁할 때 Gradient가 0인 부분이 여럿이 존재하면 경사 하강법 알고리즘이 전체의 최솟값인 Global minimum이 아니라 지역적으로 평평한 Local minimum에서 멈추는 것인데, 이 때문에 우리는 매끄러운 Cost function을 새로 설계해야 한다.
log를 이용하는 이유는 직관적으로 우리의 Hypothesis가 가진 exponential을 상쇄해주는 log를 사용한다는 것이고 우리가 필요한 Cost Function을 만들기 적절하기 때문이라고 한다. 값을 대입해 보아도 매우 깔끔하게 Cost function의 역할을 하는걸 볼 수 있다. 따라서 Logistic Regression의 Cost function은 아래와 같다.
이 Cost function을 가지고 Gradient descent를 하면 끝~
텐서플로우에서는 GradientDescentOptimizer를 지원한다.
자세한 코드는 다음 강의에서 확인하자.
'머신러닝' 카테고리의 다른 글
[텐서플로우로 시작하는 딥러닝 기초] Lec 06-1: Softmax Regression: 기본 개념소개 (0) | 2020.10.29 |
---|---|
[텐서플로우로 시작하는 딥러닝 기초] 복습과 고민 (0) | 2020.10.17 |
[텐서플로우로 시작하는 딥러닝 기초] Lec 05-1: Logistic Regression/Classification 의 소개 (0) | 2020.09.03 |
[텐서플로우로 시작하는 딥러닝 기초] Lab 04: Multi-variable Linear Regression 를 TensorFlow 로 구현하기 (0) | 2020.09.01 |
[텐서플로우로 시작하는 딥러닝 기초] Lec 04: Multi-variable Linear Regression (0) | 2020.08.31 |