IT하는 참새
06. 기울기하강 알고리즘(Gradient Descent) 본문
기울기하강 알고리즘(Gradient Descent)
쉽게말하면 비용함수의 값이 최소가 되기위한 Θ값들을 찾는 알고리즘
이전까지는 일일이 랜덤하게 숫자를 대입하며 근본없이(?) 찾아냈다
하지만 가설식이 커지고 데이터의 양이 방대해지면 이는 불가능에 가깝다
그래서!! 사용할 것이 기울기하강 알고리즘!!
사실 기울기하강 알고리즘은 인공지능분야에서만 사용되는 것이 아닌
함수가 있을 때 최소값을 구하는데에 유용하게 쓰인다
단지, 비용함수의 최소값을 구하는데 사용할 뿐
--------------------------------------------------------------------------------------------------------
기울기하강 알고리즘 동작방식(단순히)
함수 h(x) = Θ0 + Θ1x 가 있고
Θ0과 Θ1의 값을 최적의 방법으로 바꿔가며 값을 찾는 방식이다
처음에는 무슨값이 최적인지 모르니 아무렇게나 값을 지정한다
(ex. Θ0 = 0, Θ1 = 0)
다음은 기울기하강 알고리즘을 그림으로 비유했다 (위치는 비용함수의 값이다)
(내가 산에 올라와있고 어느지점에 있다하면, 어느경로로 내려와야 최적일까를 생각한다)
위에서 아래로 내려오는 것이다
산에서 임의의 위치에서는 저렇게 내려오는 것이 최적이라고 답이 나왔다
만약 다른위치에서 내려온다면?
이번에는 저 위치에서 내려온다면 저렇게내려와야 최적이라고 답이 정해졌다
그럼 둘다 최적이라고 결론이 나왔는데 뭐가 최적인가?
이렇게 여러개 나온 최적을 지역적 최적값이라고 한다
그럼 나는 지역적 최적값중 더 작은경로를 이용하면 되는것이다
다음은 기울기하강 알고리즘의 수학적 정의이다(편미분 개념)
여기서 말하는 것은
J(Θ0, Θ1) 을 편미분 해서 나온 결과값을 동시에
Θ0, Θ1 에 각각 대입하여 최적의 값을 찾아낸다는 것이다
이때 α값은 Learning Rate라고 해서 Scaling을 위한 값이다
이 비용함수를 미분한값과 α값에 따라서 세타값이 달라진다
다음은 미분한값이 +, -일 경우를 나눠서 설명한다 (기울기가 +, - 인경우)
(미분한값 = 미분계수 = 기울기 라는건 수학적 상식)
Θ1 := Θ1 - α*미분값
에 따라서 그래프에 기울기점이 정해진 것이다
이렇게 Θ1의 값을 계속 옮겨가며 최적의 값을 찾아낸다
여기서 최적의 값이란 J(Θ1)함수의 가운데부분 (미분계수가 0인부분)이 최적값일 것이다
그런데
Θ1 := Θ1 - α*미분값
이러한 식에따라서 Θ1값이 옮겨가는 과정을 더 자세하게 말하면
만약 α가 없다면
Θ1 = 5, 기울기 = 7일때 Θ1 = -2 가 된다
그러면 어떻게되는가? => 최적값으로 가지않고 반대쪽으로 튀게 된다
첫 번째 그림은 α값을 너무 작게주면 너무조금씩 값이 변하니까 기울기도 천천히 변한다는 것이다
두 번째 그림은 α값을 너무 크게주거나, 안주면 이렇게 최적을 찾지않고 튕기며 발산한다
그래서 머신러닝 알고리즘을 구현할 때 α값을 적당히 주어 Scaling작업을 해야한다!!!!!!!
-----------------------------------------------------------------------------------------------------
Coursera 사이트의 인공지능 강의를 토대로 작성됨
'인공지능' 카테고리의 다른 글
05. 비용함수(Cost Function)(3) (2) | 2018.07.14 |
---|---|
04. 비용함수(Cost Function)(2) (0) | 2018.07.14 |
03. 비용함수(Cost Function)(1) (0) | 2018.07.14 |
02. 모델표현(Model Representation) (0) | 2018.07.13 |
01. 인공지능 개론 (0) | 2018.07.06 |