[인공지능] 케라스 학습 기술 - 가중치 초기화

참조


가중치 초기화의 중요성

  • 머신러닝, 딥러닝 모델 학습에 있어서 초기 가중치 설정은 매우 중요합니다.
  • 가중치의 설정에 따라 기울기 소실 문제 또는 표현력의 한계를 갖는 여러가지 문제가 발생하기도 하며 반대로 해결할 수도 있습니다.
  • 다음 정보를 보게 되면, 초기화에 따라서 모델 성능이 달라지는 것을 확인하실 수 있습니다.
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

이 글을 공유하기

댓글

Designed by JB FACTORY