파라미터(parameter) vs 하이퍼 파라미터(hyperparameter)
- 파라미터(AI가 스스로 알아내는 변수)
- weight
- bias(이것도 그냥 weight라고 부르기도 함)
- 등등
- 하이퍼파라미터(내가 정해줘야 하는 변수)
- Epoch : 몇 번 학습할 것인가?
- batch size : 몇 개 씩 꺼낼 것인가?
- Initial weight 값
- learning rate & learning rate scheduling
- model architecture(layer 수, node 수, activation 함수 등)
- loss 함수 뭐 쓸지
- 최적화 함수 뭐 쓸지
그렇다면 파라미터 초기 값들은 아무렇게나 값을 할당해주면 되는가?
- 만약 가중치를 0으로 초기화 한후 학습을 진행한다면 모든 뉴런들이 같은 값을 가지게 되고, 역전파 진행시 각 뉴런이 loss에 미친 영향도 같으므로, 모두 동일한 값으로 가중치가 update 된다. -> 여러 개의 층으로 나눈 의미가 없게 됨
- 만약 가중치 초기값을 너무 크게 설정한 경우 gradient가 기하 급수적으로 커지며, weight(가중치)도 비정상적으로 커지면서 학습 양상이 발생하게 된다. -> 발산-> Overshooting
- 반대로 초기 값을 너무 작게 설정한 경우 역전파 과정에서 연산이 진행 될 수록 gradient가 작아지면서 weight가 제대로 업데이트 되지 않게 되며, 너무 느리게 수렴하게 된다.
-> 랜덤하게 0 근처로 잡아야하는게 정설
N : Normal ( 평균, 분산 )
U : Uniform (시작 값, 끝 값) -> 시작 ~ 끝 값 까지 범위
Initial weight(초기 값)는 어떻게 잡아야하는가?
- LeCun 방식
- Kaiming( He )
- ReLU 활성화 함수와 그를 변형한 활성 함수를 사용하는 네트워크를 위해 개발된 초기화 방식
- ReLU 사용하는 신경망에 자주 사용
- Xavier(Glorot) -> 더 0 근처로 더 보수적으로 초기값을 잡겠다!
- 입력 노드와 출력 노드에 따라 초기 가중치의 스케일을 조정하는 방식
- N(out)을 통해 역전파를 할 경우에도 고려해서 초기값을 할당해 주는 방식
- 분산이 Kaiming 방식보다 작다
- Sigmoid/ tahn을 사용하는 신경망에 적합
모델을 학습할 때, 가중치 초기화 방식에 문제가 있다는 것을 어떻게 알 수 있을까?
아래의 문제가 생겼다고 해서 가중치 초기화 방식에 문제가 있다는 것이 아니라 고려해 봐야한다는 것이다.
- 학습이 매우 느리게 진행되는 경우
- 적절한 가중치 초기화가 이루어지지 않으면, 신경망은 매우 작은 그라디언트 값을 가질 수 있다.
- 학습이 전혀 진행되지 않는 경우
- 가중치가 너무 크게 초기화되어 그라디언트 발산이 발생하거나 너무 작게 되어 그라디언트 소실이 발생할 수 있다.
-> 이 경우 Weight와 Bias가 Nan의 값을 가진다.
- 가중치가 너무 크게 초기화되어 그라디언트 발산이 발생하거나 너무 작게 되어 그라디언트 소실이 발생할 수 있다.
- 손실 함수의 값이 NaN이나 무한대로 발산하는 경우
- 가중치가 너무 크게 초기화되어 오버플로를 일으키거나, 계산 중에 불안정한 수치 문제가 발생할 수 있다.
- 검증 성능이 개선되지 않거나 과적합이 심해지는 경우
- 가중치 초기화가 모델의 학습 능력에 부적절하게 영향을 미쳐, 학습 데이터에는 빠르게 적응하지만 검증 데이터 셋에서는 성능이 개선되지 않거나, 과적합이 발생할 수 있다.
https://familia-89.tistory.com/85
https://www.youtube.com/watch?v=iehelJNqlhE -> 혁펜하임 참고 자료
'AI 정리' 카테고리의 다른 글
딥러닝 기본적인 모델 유형 (0) | 2025.03.22 |
---|---|
Overfitting+ Internal Covariate Shift와 해결 방법 (0) | 2025.03.19 |
Optimizer 종류들 (0) | 2025.03.19 |
역전파 (0) | 2025.03.17 |
비용 함수 (0) | 2025.03.10 |