Endrew Ng 교수님의 Machine Learning강의를듣고 복습하는 글입니다. (www.coursera.org)
처음으로 배워볼 알고리즘은 지도학습의 알고리즘이다.
데이터 과학을 하다보면 특정 상황에 가장 적합한 모델을 찾아야할 때가 많다. 여기서 '가장 적합한'이라 함은 대부분 '모델의 오류를 최소화하는' 혹은 'likelihood(우도-일관되는 정도)'를 최대화하는'것을 의미한다.
즉, 어떤 최적화 문제에 대한 답을 내리는 것이다.
앞으로는 여러 최적화 문제들을 풀기 위해 경사 하강법(gradient descent)이라 부르는 방법을 사용할 것이다.
1. Gradient Descent (경사 하강)
▶비용 함수J의 최솟값을 구하는 알고리즘
▶선형회귀 뿐만 아닌 많은 일반적인 함수에도 적용됨.
▶보통은 J(Θ0, Θ1, ...., Θn)을 최소화하는 값을 찾지만, 일단 이해를 쉽게 하기위해 min J(Θ0, Θ1)로 생각.
▶경사하강 알고리즘의 개념
⑴ Θ0, Θ1의 초깃값들을 추측한다. (보통 처음엔 0으로 초기화)
⑵ J(Θ0, Θ1)을 줄이기 위해 Θ0, Θ1을조정한다.
* 표면으로의 높이 == J(Θ0, Θ1)값
⑶ 가정한 J(Θ0, Θ1) 점에서 가장 조금 걸으면서 언덕을 가장 빨리 내려오는 방법 : 아래까지 도달하기 위한 지역적으로 최소의 거리를 선택한다.
-> 해당 지점에서 주위를 둘러보고, 가장 적은 걸음의 기울기로 발걸음을 옮긴다고 생각할 수 있다.
⑷ 새로 초기화된 지점에서 또한 반복한다.
⑸ 기울기 하강은 지역적 최적값을 도출해낼 것이다.
** 발걸음의 크기(star 간 거리)는 '훈련률'이라는 파라미터 α에 의해 결정된다. α가 크면 거리가 커진다.
▶경사하강 Algorithm
repeat until convergence:
(for j=0 and j=1)
- := 는 할당 기호
- α 는 훈련비율(training rate) : 언덕을 내려가기 위해 얼마나 큰 걸음을 내딛는지 결정. (α가 크면 꽤 공격적인 경사하강!)
- ∂/(∂*θj) * J(θ0,θ1) : 미분 계수
- 경사 하강에서 가장 적합한 θ0와 θ1 값은 동시에 반영한 값이다.
⑴ Correct : 동시적 업데이트 # 경사하강에서 값을 대입하는 방식!
temp 0 := θ0−α{∂/(∂*θ0)} * J(θ0)
temp 1 := θ1−α{∂/(∂*θ1)} * J(θ1)
θ0 := temp0
θ1 := temp1
⑵ Incorrect : 값을 동시에 바꾸지X
temp 0 := θ0−α{∂/(∂*θ0)} * J(θ0)
θ0 := temp0 # 미리 θ0값을 바꾼 후에
temp 1 := θ1−α{∂/(∂*θ1)} * J(θ1) # 새로운 θ0값을 미분 계수에 사용하게 되면 temp1에 다른 값을 주게 된다.
θ1 := temp1
Quiz.
temp 0 := Θ0 + 루트(Θ0Θ1)
temp 1 := Θ1 + 루트(Θ0Θ1)
Θ0 := 1+루트2
Θ1 := 2+루트2
Answer)
j=0) Θ0 := Θ0 + 루트(Θ0Θ1) 이므로 1 + 루트2
j=1) Θ1 := Θ1 + 루트(Θ0Θ1) 이므로 2 + 루트2
2. Gradient Descent Intuition
이번 시간에는 하나의 파라미터 Θ1을 이용하여, gradient descent(경사하강)을 구현하는 비용함수를 나타내는 것을 해볼 것이다!
먼저 미분계수의 개념적 이론을 쉽게 이해하기 위해 단일 파라미터를 이용한 공식은 다음과 같다.
θ1 := θ1− α* (d/d*θ1)*J(θ1)
▶J(θ1)의 함수 기울기 == 미분계수가 되는것.
▶θ1은 결국 최소값으로 수렴되는데, 먼저 두가지 경우를 보겠다.
ex1) 기울기가 양수인 경우
(J(θ1)의 탄젠트값=)해당 점의 함수 기울기 양수 -> 미분계수 양수 -> (d/d*θ1)*J(θ1) ≥ 0
결국, θ1 := θ1 - α * (positive number)
θ1값을 줄이면 최소값으로 다가가진다.
ex2) 기울기가 음수인 경우
음수 미분계수(기울기)이므로, (d/d*θ1)*J(θ1) ≤ 0
결국, θ1 := θ1 - α * (negative number)
* θ1에서 음수값을 뺀다는 것은 θ1값이 증가한다는 의미.
θ1이 커지면 최소값으로 다가가진다.
▶α 가 의미하는 비율의 값은?
ⅰ) α값이 매우 작다면,작은 숫자를 곱하게 되어 매우 작게 이동 -> 전역적최소값에 도달하기 위해 매우 많은 이동이 필요
α가 작다면 하강이 매우 느려진다.
ⅱ) α값이 너무 크다면, 매우 큰 거리 이동 -> 비용함수의 반대편으로 이동 -> 다시 작아지려해도 계속 최솟값으로부터 멀어짐.
최소값보다 너무 가거나, 값/방향을 바꾸는 것도 어려워질 수 있음.
Q. 만약 local optimum으로 θ1을 예측했다면, 무엇으로 해야하나?
A) 해당 점이 지역 최적값이라면, 미분계수는 0이다. -> θ1 := θ1 - α* 0
지역 최적값이라면, 이 값은 변하지 않게 된다.
즉,
파라미터가 지역 최소값이면, 하강 기울기는 파라미터에 아무런 영향도 끼치지 않고, 지역최적값이 유지된다.
2-1. 만약 훈련비율 α가 고정되어있다면, 하강 기울기는 최소값에 영향을 미치지 못한다.
1. 미분계수가 매우 가파르므로 이동한다.
2. 미분계수는 점점 0에 가까워지고/기울기가 덜 가파르고/최소값에 더 가까워지고있다.
3. 더 조금의 거리를 이동하더라도 미분계수는 작아지고 θ1의 값도 작아진다.
4. local minium에 접근할 수록, 경사 하강은 자동적으로 더 조금의 거리를 이동하기 때문에 α값을 반복적으로 줄일 필요 없다.
하강 기울기는 지역 최소값에 가까워질 수록, 더 작은 거리를 이동하게 된다.
* 지역 최소값에 가까워진다 == 미분계수값이 (0을 향해) 작아진다. -> 하강 기울기는 더 조금씩 이동하게 된다. 그렇기 때문에 α값을 감소시킬 필요가 없다.
다음 시간에는 선형회귀에서 사용되는 비용함수를 배울 것이다.
3. Gradient Descent For Linear Reagression ( 선형 회귀에서 사용되는 비용함수 )
비용함수와 기울기 하강을 함께 사용하여 선형회귀를 위한 알고리즘을 구하고, 우리의 자료(집 크기에 따른 가격)의 일차함수를 구해보겠다.
Quiz.
Which of the following are true statements? Select all that apply.
To make gradient descent converge, we must slowly decrease \alpha over time. (x)
Gradient descent is guaranteed to find the global minimum for any function J(\theta_0, \theta_1) . (x)
Correct.
- Gradient descent can converge even if \alpha is kept fixed. (But \alpha cannot be too large, or else it may fail to converge.)
- For the specific choice of cost function J(\theta_0, \theta_1) used in linear regression, there are no local optima (other than the global optimum).
비용함수 j의 해답을 얻기 위해서는 하강 기울기 알고리즘같은 반복적 알고리즘을 사용해야한다.
하지만, 나중에는 비용함수 j의 최솟값을 반복없이 구하는 알고리즘인 반복최소이승법을 사용해 구할 것이다.
머신러닝 강의에서 첫번 째 지도학습 알고리즘인 경사 하강 알고리즘을 배우면서도 수학에 대한 지식의 필요성을 느꼈다. (문과였기 때문에 배우지 못했던..) 그래서 『밑바닥부터 시작하는 데이터 과학』으로 필요한 개념들을 다지고 다시 머신러닝 공부를 시작해야할 것같다. coursera 강의는 계속 듣는 것으로 이어가고, 수학개념을 정리한 후에 머신러닝 정리를 해야겠다.
'지식 > Review' 카테고리의 다른 글
데이터 시각화 기초 (0) | 2021.01.04 |
---|---|
클래스와 넘파이, 그리고 matplotlib (0) | 2021.01.03 |
Const Function - Intuition 1,2 (0) | 2020.12.28 |
Linear Regression(선형 회귀) (0) | 2020.12.27 |
What is machine learning? (0) | 2020.12.27 |