Reference
https://iai.postech.ac.kr/teaching/machine-learning
https://iai.postech.ac.kr/teaching/deep-learning
위 링크의 강의 내용에 기반하여 중요하거나 이해가 어려웠던 부분들을 정리하여 작성하였고,
모든 강의 슬라이드의 인용은 저작권자의 허가를 받았습니다.
또한, 모든 내용은 아래 Notion에서 더 편하게 확인하실 수 있습니다.
>>노션 링크<<
Keywords
- Logistic Regression
- sigmoid, softmax
- log likelihood
- Kernel trick
Logistic Regression - Motivation
Perceptron → data들의 부호 ($g(x)=0$을 기준으로 어느 쪽에 위치해있는지) 에 따라,
SVM → data와 separator의 minimum distance(margin)에 따라 결정.
(각 class에서 separator와 가장 가까운 하나의 data point에 좌우됨.
minimum distance를 maximize하는 과정!)
모든 data point에 대한 거리 정보를 이용하여 Optimization을 하고 싶음
→ Logisitic Regression을 이용!
거리를 이용해 separator를 가운데로 놓도록.
만약 거리의 합을 이용하면? → 좌, 우 경우가 같은 결과를 가짐.
거리의 곱을 이용하면? → 왼쪽이 더 큼.
(아래의 산술기하평균부등식을 이용. 저 부등식이 같아지는 경우는 $h_1 = h_2$일 때. 따라서, maximize하는 Optimization 문제를 구성하면 → 같아질 때가 최대이므로, 딱 중간에 오도록 할 수 있음.)
두 개의 data point에서 확장하면 위와 같다.
동일하게 산술, 기하평균을 이용하여 계산.
$\Pi_i|h_i|$ 를 maximize하는 $g(x)=0$ ($\omega$)를 찾는 Optimization 문제가 된다.
(엄밀하게는 여러 변수에 대한 산술기하평균부등식의 maximization은 모든 거리가 같아야 하지만, 일단은 rough하게 이해하고 지나가면 될 듯.)
결국 두 class의 중간 지점을 찾는 문제!
Logistic Regression - Training
Sigmoid Function(Logistic Function)을 이용하게 된다. 이를 사용할 때의 장점은
- Monotic하여 Optimization 문제를 바꾸지 않으며
- 연속적이고, 미분가능하여 GD에 사용하기 좋음.
- 확률로써 바라볼 수 있음.
마지막이 중요한데, 모든 값을 0~1 사이의 값으로 mapping하므로, 확률로써 바라볼 수 있다는 것이 장점.
예를 들어, 특정 input x에 대해 class 0일 확률이 $P(y=0 | x;\omega)$ 인 것.
(sigmoid를 적용하였을 때, 그 값이 0-1 사이 이므로...)
그러한 Sigmoid Function을 이용하여 parameter $\omega$를 fit(train)하는 식을 표현할 수 있다.
PDF의 첫 번째 식처럼 sigmoid를 $h_\omega(x)$로 표현하면 저렇게 나타낼 수 있다.
그 이후, 첫 번째 식의 두 줄을 아래의 두 번째 식처럼 간단히 나타낼 수 있는데, 저렇게 compactly describe할 수 있는 이유는 data point들에 대해 y값이 항상 0 or 1이기 때문이다.
(따라서, y=0이면 $(h_\omega(x))^y = 1$ 이 되어 앞의 항의 없어지고 뒤의 항만 남으며, 반대의 경우도 마찬가지.)
다음, 세 번째 식에서는 모든 data point에 대한 joint probability를 하나의 식으로 정리하는데,
모든 data point에 대해 probability가 independent하다고 가정하기 때문에, 모든 probability의 product로 표현이 된다.
최종 정리된 식은 아래와 같으나, 결국 개념적으로는 <모든 거리의 곱> 과 다를 것이 없다.
거리에 sigmoid 함수를 적용하여 확률적으로 바라본 설명일 뿐, 결국 모든 거리의 곱인 것!
위의 최종 정리된 식에서 0~1 사이의 수가 매우 많이 곱해지기 때문에, 값이 매우 작아질 것. (당연히.)
따라서 중간과 같이 log likelihood로 식을 변환.
(product에 log를 적용하여 제곱은 밑으로 내려오고, Product는 Summation으로 변환됨.)
마지막으로, log likelihood로 정리된 식 자체가 convex한 optimize function(loss function)이 된다.
Gradient Descent
이러한 optimize function을 편미분하여 gradient를 계산하여 GD를 수행해야 한다.
(중간 식)
우선 하나의 data point에 대해 gradient를 계산하면, 저렇게 계산됨.
(아래 식)
따라서 이를 적용하여 m개의 data에 대해 gradient를 계산하게 되면, vectorize하여 다음과 같은 결과로 정리됨. (1개의 data에 대한 결과를 일반화하여 vector 형태로 표현)
최종적으로 다음과 같이 계산.
이러한 방식으로 GD 수행.
Non-linear / Multiclass Classification
위와 같은 non-linear separable한 data는 하나의 threshold로 분류될 수 없음. (1D 예시)
이러한 data를 $x→\{x, x^2\}$ 로 mapping하여 2D로 변환하면, linearly separable하게 된다.
위와 같이 mapping하는 방식으로도 수행할 수 있음 (또다른 예시)
이러한 방법으로 non-linear separable한 data를 linear separable한 데이터로 mapping하여 동일한 방식으로 linear classification을 수행할 수 있다!