- Training : 파라미터 학습을 위한 데이터
- Test : 최종적으로 학습된 모델 테스트용 데이터
- Validation : 하이퍼파라미터 선택을 위한 데이터
Test 데이터는 학습 때 사용하면안됨, 처으보는 data에 대해서 어떻게 잘하는 지 봐야 하기 떄문
Epoch을 축으로 x 봤을 때 loss는 계속 내려갈 것입니다. 내려가는 것이 무조건 좋은 상황은 아닌 것이 머신이 반복학습을 많이 하면 외워서 풀면서 원리를 잊어버리게 될 수 있기 때문입니다.
그래서 테스트에 대한 에러를 생각해본다면 내려가다가 다시 올라갈 수도 있다는 것입니다. 그래서 존재하는 것이 모의적으로 테스트를 해보기 위한 것이 Validation 데이터입니다. validation 데이터 가장 잘할 때 학습을 멈추면 얼추 맞습니다.
Weight의 초기값
0 근처로 랜덤하게 값을 잡습니다. 평균은 0 근처로 잡습니다. 분산은 조금 다르게 측정합니다.
mini-batch SGD
SGD는 하나씩만 보니깐 너무 성급하게 방향을 결정
-> 마침 GPU로 여러 데이터 동시 통과시킬 수 있기도 하니 -> Mini Batch
e1,e2,e3,e4,e5
mini batch가 3개다? 3개뽑고 4개, 5개면 5개 5개 5개 이런 식으로 Gradiant Descent와 똑같아집니다.
GPU가 허락하는 한 batch size를 키워지는 것이 좋습니다. 어차피 데이터는 >> batch size입니다.
하나씩 만들어서 더하니깐 오래걸렸는데 GPU가 허락가능한 수준으로 키우는 것입니다.
Epoch & Batch Size
- epoch : 전체 데이터를 얼마나 반복해서 볼 것인가
- Batch Size : 몇 개씩 볼 것인가
- Learning Rate : 얼마큰 갈 것인가
이것들을 하이퍼파라미터 라고 부릅니다. 내가 정해줘야 하는 것입니다.
파라미터 vs 하이퍼 파라미터
파라미터 : 머신이 스스로 알아내는 변수
- weights
- bias
하이퍼파라미터 : 내가 정해줘야 하는 변수
- epoch, batch size
- Learning Rate
- Model Architecture
SGD vs Momentum vs RMSprop
SGD - 는 불필요한 좌우 움직임이 있습니다.
Momentum은 가속을 줍니다. 속도를 누적을 하면서 관성을 가지도록 하는 것입니다. GD를 하면서 좌우로 움직일 때 앞으로 조금씩 나아가고 있으면 그쪽으로 점점 더 방향이 붙도록 하는 것입니다. GD를 누적하는 것입니다.
(여기서 GD는 Gradient Descent입니다)
SGD와 처음엔 비슷하지만 오른쪽으로 갈려고 했는데 왼쪽으로 가려고 했으면 상쇄가 되기 때문에 많이 왼쪽으로 못가게 됩니다. 원래였으면 왼쪽 오른쪽 왔다갔다 하는 범위가 깊을건데 지금은 관성이 있기 때문에 전보다 적게 이동합니다.
다만 앞으로 가는 방향은 유지가 됩니다.
RMSprop
두개의 축이 있다고 합니다. w1과 w1의 축이 있습니다. Gradient 축이 (1,3)으로 나아간다고 가정하고 또 다시 간다면 (2,6)이 됩니다. RMSprop은 x축으로 그리고 y축으로 얼마나 갔는지의 크기를 고려해줍니다. 그리고 그 크기의 평준화를 시켜줍니다.
이전 크기를 누적하는 것입니다. 현재 방향을 정할 때는 누적을 루트해줘서 크기 평준화를 해줍니다.
보폭은 많이 훑은 축으로는 적게, 적게 훑은 축으로는 많이 탐색(평준화를 통해 공평하게 탐색)
'IT 프로그래밍 > AI' 카테고리의 다른 글
인공신경망은 MLE 기계 (0) | 2025.03.30 |
---|---|
[Loss function] MSE vs log-likelihood (0) | 2025.03.30 |
[Pytorch] BMM, Layer, Activation Function (0) | 2025.03.24 |
파이토치의 구성요소 (0) | 2025.03.19 |
딥러닝 연구의 초점 (0) | 2025.03.18 |