ML lab 05 DeepLearning
ML lec 5-1: Logistic Classification의 가설 함수 정의
이 강의의 목표인 딥러닝을 공부하기 전에 logistic classification이 중요한 요소이기 때문에 짚고 넘어간다.
그 전에 regression에 대해 배운 내용을 요약하자면 아래와 같다.
우선 가설을 정의한다.
그리고 나의 가설이 실제 데이터 포인트와 비교해 비용함수를 만든다.
우리의 목표는 비용함수를 최소화하는 것이다.
최소화하기 위해 gradient descent라는 알고리즘을 사용했다.
regression의 메카니즘은 위와 같다.
하지만 hypothesis에는 다른 알고리즘이 있을 수 있고
cost에서도 마찬가지고 cost를 최소화하는 알고리즘도 많다.
그 중 가장 기본인 알고리즘들로 구현한 것이다.
위 그림은 두 개의 카테고리를 예측하는 binary classification의 예시를 설명한다.
그렇다면 classification 예제는 linear regression으로는 모델링은 할 수 없는 것인가?
위 그림처럼 구현은 가능하나 x축의 값이 큰 값을 가진다면 1(pass)가 아닌 더 큰 값을 갖게 되 정확한 모델링이 불가능하다.
그래서 사람들은 모든 x값에 따른 y값을 범위 0부터 1까지로 규정하고 싶어서 만든
함수가 바로 sigmoid 함수이다.
위와 같은 그래프를 나타내는 함수가 sigmoid 함수이다.
아래를 보면 알겟지만 x 값은 linear regression의 hypothesis인 H(x) = W^T*X이다.
ML lec 5-2 Logistic Regression의 cost 함수 설명
linear regression과는 다른 cost 함수가 나타난다.
왜냐하면 기존의 linear regression의 cost 함수는 제곱을 하면 부드러운 2차 곡선이 됐으나
logistic regression은 e^(-W*X)가 존재하는 함수이기 때문에 cost 함수가 부드러울 수가 없다.
결과를 위 그림에서 보면 logistic regression의 cost 함수에서 global minimum을 구하기
굉장히 까다로워 보인다. 또한 local minimum에 빠질 가능성이 농후하다.
그래서 사람들은 새로운 함수를 다시 강구해낸다.
다음에 갑자기 바뀐 cost 함수에 대해 적응하기 힘들 수 있다.
바뀐 함수를 보기 전에 cost 함수의 정의에 대해 다시 짚어볼 필요가 있다.
cost 함수는 실제 값과 우리가 예측한 값이 같아질수록 cost는 작아지고
더 멀어질수록 cost는 커져야하는 함수이다.
위와 같이 cost 함수를 다시 만들 수 있다.
예측한 값과 실제 값이 같으면 cost 는 0이고 틀리면 cost는 무한대로 간다.
그리고 마지막 식은 프로그래밍할 때 적합한 식이다.
왜냐하면 2번째 식으로 코드를 짜면 if문을 써야하지만
마지막 식을 이용하면 한 줄이면 구현 가능하다.
이제는 cost를 minimize하는 gradient descent 알고리즘이 필요하다.
전에도 공부했듯이 미분을 이용해서 gradient descent 알고리즘을 구현할 수 있다.
그리고 tensorflow에서는 함수가 제공되기 때문에 쉽게 구현가능하다.
ML lab 05: TensorFlow로 Logistic Classification의 구현하기
한 페이지에 구현 가능할 정도로 텐서플로우 라이브러리가 잘 되어 있는 듯하다.
전에 공부한 공식들을 그냥 코드로 그대로 바꾼 코드이다.
댓글
댓글 쓰기