학습률 조정하기
학습률 감소
학습률을 감소시킨다. 이때 원하는 정도로 학습률을 감소시킬 수 있다. 옵티마이저에서 구현이 되있어서 이 옵티아마이저에 파라미터를 조정하면 된다.
model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.001, beta_1 = 0.89)
, loss='sparse_categorical_crossentropy'
, metrics=['accuracy'])
학습률 계획법
사진처럼 학습률을 계속 조정하는 것
first_decay_steps = 1000
initial_learning_rate = 0.01
lr_decayed_fn = (
tf.keras.experimental.CosineDecayRestarts(
initial_learning_rate,
first_decay_steps))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=lr_decayed_fn)
, loss='sparse_categorical_crossentropy'
, metrics=['accuracy'])
Sigmoid ⇒ Xavier 초기화를 사용하는 것이 유리
ReLU ⇒ He 초기화 사용하는 것이 유리
가중치 초기화
역전파로 가중치 갱신을 하기전에 초기의 가중치를 설정하는 것
정규 분포로 가중치 초기화를 한다면??
표준편차를 1인 정규분포로 가중치를 초기화 할 때 각 층의 활성화 값 분포
표준편차가 일정한 정규분포로 가중치를 초기화 해 줄 때에는 대부분의 활성화 값이 0과 1에 위치하는 것을 볼 수 있습니다.
활성값이 고르지 못할 경우 학습이 제대로 이루어지지 않는데요.
그렇기 때문에 가장 간단한 방법임에도 잘 사용되지 않습니다.
Xavier
Xavier 초기화(Xavier initialization)는 가중치를 표준편차가 고정값인 정규분포로 초기화 했을 때의 문제점을 해결하기 위해 등장한 방법입니다.
Xavier 초기화는 이전 층의 노드가 n개일 때, 현재 층의 가중치를 표준편차가 1/sqrt(n)인 정규분포로 초기화
HE
Xavier 초기화는 활성화 함수가 시그모이드(Sigmoid)인 신경망에서는 잘 동작합니다.
하지만 활성화 함수가 ReLU 일 경우에는 층이 지날수록 활성값이 고르지 못하게 되는 문제를 보이는데요.
이런 문제를 해결하기 위해 등장한 것이 바로 He 초기화(He initialization) 입니다.
He 초기화는 이전 층의 노드가 N개일 때, 현재 층의 가중치를 표준편차가 2/sqrt(n)
과적합 방지하기
- 가중치 감소
- 가중치가 클 때 과적합이 일어나기 때문에 가중치 값이 커지지 않도록 규제항 즉 조건을 추가해야 함
- 이때 손실 함수(Cost function)에 가중치와 관련된 항을 추가됩니다. 조건을 어떻게 적용할지에 따라 L1 Regularization(LASSO), L2 Regularization(Ridge) 으로 나뉩니다.
- 드롭아웃
- 레이어 노드 중 일부를 사용하지 않으면서 학습을 진행하는 방법
- 조기종료학습(Train)
- 데이터에 대한 손실은 계속 줄어들지만 검증(Validation) 데이터셋에 대한 손실은 증가한다면 학습을 종료
'딥러닝' 카테고리의 다른 글
[자연어처리] 단어 자체를 벡터화(Embedding, Word2Vec) (0) | 2022.11.17 |
---|---|
[자연어처리] 자연어 처리 기본 (0) | 2022.11.16 |
[딥러닝] 딥러닝 기본 공부 (0) | 2022.11.12 |
[딥러닝] 활성화 함수와 출력층 함수 (0) | 2022.11.10 |
[딥러닝] 순전파와 역전파 (0) | 2022.11.10 |