꿈이 너무 많은 한 대학생의 공간

Gradient Descent (경사 하강법) 본문

Coursera 문서 번역/Machine Learning

Gradient Descent (경사 하강법)

청울울청 2020. 10. 26. 21:15

자 이제 우리는 함수 h(x)를 가지고 있고, 이 함수를 데이터셋에 어떻게 최적화시키는 지 알 수 있게 되었습니다.

이제 우리는 h(x) 함수의 변수(a, b)를 평가해야 합니다. 이것이 경사하강법(Gradient Descent)가 나온 이유입니다.

a(세타1), b(세타0), 비용 함수 J를 축으로 하는 3차원 그래프가 있다고 가정합시다. 그렇다면 그래프는 아래와 같은 형식으로 만들어지게 됩니다. 

우리는 모두 비용 함수가 최소화되었을 때, 즉 하나의 점의 3차원 그래프상에서 매우 아래쪽에 있을 때, 우리는 변수 a, b의 값을 매우 잘 정한 것을 압니다. 위 그래프 상에서의 빨간색 점을 주목해주세요.

우리가 이걸 하는 방법은 우리 비용 함수를 위한 미분계수(함수의 탄젠트값)을 구하기 위해서입니다. 함수의 기울기(탄젠트)는 곧 미분계수이며, 이것은 우리에게 앞으로 나아갈 기회를 줍니다. 우리는 이 비용 함수를 최적화 하기 위해서는, 높은 곳에서 빠르게 아래로 내려와야 합니다. 이 내려오는 속도는 곧, 학습 빈도(Learning Rate)라고 하며, 흔히 α 라고 정의합니다. 

예를 들어, 위 그래프상에서의 별은 α를 통해 결정됩니다. 작은 α는 아마 더 짧은 간격으로 별을 찍을 것이고, 큰 α는 매우 넓은 간격으로 별을 찍게 됩니다. 또한, 별을 찍는 방향은 J(a, b)의 부분미분계수로부터 결정됩니다. 

일정한 시작점으로부터 의존하면서, 하나 하나씩 다른 점을 찍어 나가며 그래프상의 아래로 내려갑니다. 위 그래프는 2개의 다른 시작점으로부터 달라지는 2개의 최소값을 보여줍니다. (사진 상에는 잘 안나와 있지만, 강의를 들으면 시작점이 2개입니다)

경사하강법은 다음과 같은 알고리즘을 가지고 있습니다.

위 식에서 j는 각각 0일때, 1일때로 분기가 나뉩니다.

또한 := 기호는 아래 사진과 같이 계산이 이루어질때 세타0을 계산한 직후에는 세타0의 값이 변하지 않으며,

모든 계산이 다 끝난 후에 세타0의 값이 변화된다는 뜻입니다. 우리는 이것을 동시 수정(Simultaneous Update)라고 부릅니다.

Comments