돌아서면 까먹어서

ML 개념 정리 - Optimization 18.12.01 본문

ML/ETC

ML 개념 정리 - Optimization 18.12.01

양갱맨 2018. 12. 1. 16:14

<Optimization>

- minimum loss 값을 찾는 것.


gradient를 계산하는 것은 가장 급경사를 찾아내는 것이다.

Input 개수 = gradient 개수


gradient를 계산하는 방법은 두가지

1. numeric gradient : 느리고 근사값이지만 계산 쉬움.

2. analytic gradient : 빠르고 정확하지만 미분 필요. 계산 실수가 있을 수 있음.


numeric gradient는   도함수 공식을 사용해서 Weight 요소들과 이동간격인 h를 대입해서 gradient를 전부 구해서 update한다. (너무너무 오래걸림..)


analytic gradient를 사용하게 되면, 일반적으로 사용하는 미분을 해서 구한다. (바로 답 나옴. 빠르다)


gradient check : numeric으로 구한 gradient와 analytic 으로 구한 gradient를 비교해서 틀린 부분을 찾아내는 것.



가장 대표적인 방법

<gradient descent>


1. 임의의 값으로 W를 초기화

2. loss, gradient 계산

3. gradient를 바탕으로 W 업데이트


data set이 너무 크면 전부 구하기가 힘드니까 mini batch를 뽑아서 gradient를 계산하는 MGD(minibatch gradient descent)를 사용한다.


왜 MGD가 가능한 것일까?

-> data들 간이 상관관계가 있기 때문이다. 120만개를 평균내서 구한 loss나, 적은 수의 mini batch에서 구한 loss를 구한 것이다 똑같다.

그래서 mini batch에서 gradient를 구해 자주 update 시켜주는 것이 오히려 더 빠르게 수렴하기도 한다.


mini batch는 대부분 2승수로 정한다고 한다.


SGD(Stochastic Gradient Descent)라고도 한다. (이 의미가 더 많이 쓰임)










이 포스팅은 http://cs231n.stanford.edu 을 바탕으로 작성했습니다.

* 잘못된 부분은 댓글 부탁드립니다.

Comments