인공지능
[인공지능] 케라스 학습 기술 - 가중치 초기화
범범조조
2022. 2. 17. 19:20
참조
- https://www.youtube.com/watch?v=E3HhuCjyZoA&list=PL7ZVZgsnLwEHGS6EId3B_AnRYSCi_35rj&index=7
- https://blog.naver.com/PostView.naver?blogId=handuelly&logNo=221831940317&parentCategoryNo=&categoryNo=31&viewDate=&isShowPopularPosts=true&from=search
- https://keras.io/api/layers/initializers/
가중치 초기화의 중요성
- 머신러닝, 딥러닝 모델 학습에 있어서 초기 가중치 설정은 매우 중요합니다.
- 가중치의 설정에 따라 기울기 소실 문제 또는 표현력의 한계를 갖는 여러가지 문제가 발생하기도 하며 반대로 해결할 수도 있습니다.
- 다음 정보를 보게 되면, 초기화에 따라서 모델 성능이 달라지는 것을 확인하실 수 있습니다.
Model | Train accuracy | Problem/Comment |
---|---|---|
3-layer NN with zeros initialization | 50% | fails to break symmetry |
3-layer NN with large random initialization | 83% | too large weights |
3-layer NN with He initialization | 99% | recommended methdon |
초기화 전략
- Glorot Initialization(Xavier)
- 활성화 함수
- 없음
- tanh
- sigmoid
- softmax
- 활성화 함수
- He Initialization
- 활성화 함수
- ReLU
- LeakyReLu
- ELU 등
- 활성화 함수
from tensorflow.keras.layers import Dense, LeakyReLU, Activation
from tensorflow.keras.models import Sequential
# 모델 만들기
model = Sequential([Dense(30, kernel_initializer='he_normal', input_shape=[10, 10]),
LeakyReLU(alpha=0.2),
Dense(1, kernel_initializer='he_normal'),
Activation("softmax")])
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 10, 30) 330
leaky_re_lu (LeakyReLU) (None, 10, 30) 0
dense_1 (Dense) (None, 10, 1) 31
activation (Activation) (None, 10, 1) 0
=================================================================
Total params: 361
Trainable params: 361
Non-trainable params: 0
_________________________________________________________________
728x90