본문 바로가기
머신러닝

Initialization 1, Optimizer 1

by 후닝훈 2021. 6. 19.
반응형

Data의 Input

- 위 이미지에서 데이터 한개에 784개의 정수가 있는 것이다.

- 따라서 input layer의 unit의 개수는 784개 이다

- 이러한 데이터가 batchsize 만큼 존재하는것.

- batchsize 는 데이터를 몇 개씩 넣어줄 것인지 정해주는 요인.

Initialization

- 위의 그림에서 78400 / 10000 / 1000개의 Weight 값이 있따.

- Weight 값을 0으로 초기화 시키면, 어떠한 숫자를 입력하여도 Output이 0이 나오게 된다.

- Weight 값이 굉장히 많기 때문에, 초기화할 값이 중요하다.

- 아래의 그림은 initialization의 종류이다.

 

Optimizer

- 머신러닝 학습 프로세스에서 실제로 파라미터를 갱신시키는 부분을 의미.

- 최적화 알고리즘. GD를 기본으로 하여 loss function이 최소가 되는 지점, 즉 최적의 가중치를 찾는 방법

- 모델의 구조를 최적화 하는 것은 아님.

Gradient Desent

- 기본이 되는 optimizer 알고리즘으로 경사를 따라 내려가면서 W를 update시킨다.

- 로스에 대하여 미분값을 구하고, 그 미분값에 Learning Rate를 곱하여 Weight 값을 구함.

- 모든 데이터를 전부 계산한 뒤에 로스의 평균값을 구하여 업데이트 하는방식

- 많은 계산량을 요구하기 때문에 속도가 늦게 된다.

- 러닝 레이트를 업데이트 할 수 있는 기회가 줄어들기 때문에 오히려 성능이 낮다.

 

Learning Rate

- 얼마나 빨리 W값을 업데이트를 할 것인가? 를 정하는것

- 너무 높은 러닝레이트는 빨리 내려가다가 맞춰지는 속도가 늦어질 수 있고, 확산이 될 수도 있음.

- 너무 작은 러닝레이트는 원하는 loss에 도달하지 못할 수 있음.

- 데이터에 맞는 러닝레이트를 찾는것이 중요함

 

Stochastic gradient decent(SGD)

- Mini batch 사용 : 일부의 랜덤으로 추출한 Data만 사용

- 일부의 데이터만 사용하고 업데이트하고 미분한다.

- 일부의 데이터만 사용하기 때문에 학습속도가 빠르고, 많은 업데이트를 할 수 있다.

- 같은양의 Training 시 성능이 GD 방식에 비해 성능이 좋다.

- input 된 데이터가 랜덤이다 보니 Training error가 들쑥날쑥함.

- 매 업데이트마다 생성된 gradient로 파라미터를 업데이트하여 Local minimum에서 빠져나오게 만들수도 있지만 반대로 수렴을 방해 할 수도 있다

 

SGD with Momentum

- 모멘텀은 전의 학습 결과도 반영하는것.

- 같은 Training Data여도, 우리가 원하는 Loss 까지 걸리는 시간이 적게 걸리고, 원치않는 확산 등의 가능성이 확연히 줄어듬.

import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum = 0.9)

다음글

 

Optimizer 2

Optimizer란? 기본적으로 Weight updates를 하는 도구.  - loss를 줄이는 방향으로 updates. Adaptive Gradient 방식 α : Learning rate h : 기존의 h에 새로운 미분값을 더해줌. h가 커질수록 Learning rate는..

5sangs.tistory.com

 

반응형

'머신러닝' 카테고리의 다른 글

CNN. Image Kernel  (0) 2021.06.19
Autograd, NN 모델  (0) 2021.06.18
PyTorch  (0) 2021.06.18
Vectorization  (0) 2021.06.18
Feed - Foward 정리  (0) 2021.06.18

댓글