3. 3
Optimizer 전 까지의 내용 정리를 해보면..
점수 = 이미지 * 가중치
Loss = 점수의 틀린 정도를 정량화한 값
즉! Loss 는 가중치 에 영향을 받음!!
Loss 를 최소로 하는 가중치 값을
찾기 위한 방법(optimizer)은 무엇일까요?
우리의 목표!!
4. 4
loss를 최소로 하는 과정(optimizer)에서
가중치를 찍어서 찾는 방법을
그림으로 확인해 보도록 하겠습니다.
5. 5
Random Search
optimization 을 해 나가는 과정은 이렇게 산 속에서 눈을 가리고 서있는 상황
이 산속에서 하산하기 위해
여기저기를 텔레포트 하듯이 최적의 경로를 찾아 헤매는 것 입니다.
시간도 오래 걸릴 뿐더러 절대 불가능!!
도착지
현 위치!!
: 텔레포트 위치
7. 7
기존 신경망이 가중치 parameter 들을
최적화(optimize) 하는 방법
Gradient Decent
경사 하강법
loss function의 현 가중치에서의 기울기(gradient)를 구해서
loss를 줄이는 방향으로 업데이트해 나갑니다.
8. 8
1. 여기서 미분을 하면 loss의 값을 줄이는
방향을 알 수 있습니다.
2. 그 방향으로 얼마나 내려갈지에 대한 크기
(learning rate)를 구할 수 있습니다.
기울기!!
보폭!!
loss를 최소화 하는 가중치를 업데이트 하는 방법은
기울기와 보폭의 크기를 알면 됩니다!
가중치 업데이트 = 보폭 * 기울기 * 방향
(learning rate) (gradient) (descent)
15. 15
도착지
현 위치!!
: 한 걸음 당 4시간
SGD가 도착점까지 걸린 시간을 확인해 보면
6 걸음 * 4시간 = 24시간
Random Search VS Gradient Descent
: 텔레포트 위치
GD
RS
16. 16
도착지
현 위치!!
: 한 걸음 당 4시간
Random Search VS Gradient Descent
: 텔레포트 위치
GD
RS
랜덤으로 선택할 때는 도착지에 도달이 거의 불가능 했지만
GD는 시간이 걸려도 어느정도 도착지에 도달이 가능하다
17. 17
전체 데이터의 기울기 만큼 한번 보폭을 움직이는
Gradient Descent 보다 빠른 optimizer는 없을까?
18. 18
Gradient Descent
N
N
Stocastic Gradient Descent 의 아이디어
데이터 중 일정한 갯수를 랜덤 선택(mini-batch) 후
기울기를 구해 가중치를 업데이트
mini-batch
epoch
mini-batch
mini-batch
mini-batch
전체 데이터에 대해 한 걸음
Stocastic Gradient Descent
mini-batch에 대해 한 걸음
20. 20
: 보폭 당 4시간
SGD가 도착점까지 걸린 시간을 확인해 보면
13 걸음 * 40분 = 약 8시간
Gradient Descent VS Stocastic Gradient
Descent
: 보폭 당 40분
SGD
GD
도착지
현 위치!!
21. 21
보폭의 수는 많지만 작은 크기의 데이터를 랜덤으로 뽑아
가중치를 갱신하기 때문에 Gradient Descent 보다 빠르다
Gradient Descent VS Stocastic Gradient
Descent
SGD
GD
: 보폭 당 4시간
: 보폭 당 40분
도착지
현 위치!!