[CS231n] lecture 3. Optimization: Gradient Descent 강의 요약
Optimization
목표: Loss
function을 통해 Weight vector의 품질을 점차 좋아지게 만든다.
방법론 1:
Random Search
방법론 2:
Random Local Search
방법론 3:
Gradient Descent
-
Numerical Gradient
-
Analytic Gradient
-
Mini-batch Gradient descent
방법론 1:
Random Search
알고리즘:
Weight 벡터를 매 번 랜덤으로 생성한 후 더 좋은 품질을 보이는 Weight 벡터를
저장한다.
장점: 코드 작성이 쉽다.
단점: 최적의
결과를 보장할 수 없다. 컴퓨터 자원 남용
방법론 2:
Random Local Search
알고리즘:
k*(Weight vector)의 성능이 더 좋다면 이를 저장한다.
장점: 코드 작성이 쉽다.
단점: 지역해로
빠질 가능성, 컴퓨터 자원 남용
방법론 3:
Gradient(미분)
아이디어: 일반적으로 어떤 문제의 최대 최소 문제는 미분을 통해 접근한다.
알고리즘: 미분은 접선의 기울기를 뜻하므로 W에 따라 Loss function을 미분하면 Loss function의 접선의 기울기를 알 수 있다. 이를 통해 Loss function의 값을 가장 빠르게 줄일 수 있는 지점을 찾을 수 있다.
Numerical
Gradient
컴퓨터를 통해 극한값을 계산할 수 없으므로 무수히
작은 수(ex. h= 0.00001)를 통해 미분식을 대입한다.
장점: 함수의
미분을 몰라도 코드 작성이 가능하다.
단점: 시간이
무수히 많이 걸린다. 엄밀한 의미에서 미분이 아니다(에러
유발 가능).
Analytic
Gradient.
설계자가 수학적 개념을 통해 Loss function을 W로 편미분
(1은
괄호 안의 수식이 0보다 클 경우 1, 그 외의 경우는 0을 반환하는 indicator function)
Gradient Descent.
미분한 결과에 따라 step size(변수)에 따라 weight
vector를 갱신한다.
(weight
= weight – step_size*weights_grad인 이유는 loss function의
값을 줄이기 위해서다.)
Mini-batch
Gradient descent.
일반적으로 데이터의 개수는 neural network에서 무수히 많기 때문에 모든 데이터를 통해 Gradient를
계산하는 것은 너무 많은 메모리와 시간을 소요한다. 따라서 training
데이터의 부분집합을 통해 gradient를 계산한다.