1. 학습 속도 저하 문제 해결법
1) 선학습층 재사용
- 매우 깊은 DNN의 학습 시 모든 층을 학습하는 대신 비슷한 업무에 사용했던 신경망을 사용
- 학습 속도 상승 / 학습 데이터의 양 줄어듬
- 업무가 비슷할 경우 저수준의 학습 결과가 비슷하므로 하위층 뉴런의 재활용으로 학습의 질을 크게 손해 보지 않으면서 속도 향상
- 재사용 하위층 중 상위 1~2개 층은 새로운 데이터에 맞게 가중치 재조정
- 재사용 층 위에 새로운 층 몇 개를 더해 새 업무에 맞는 상위 특징을 학습
- tflearn으로 구현 시
# 재사용 가능한 층을 설정 시
hidden_layer_name = tflearn.fully_connected(..., restore = True)
# 재사용 안되게 하려면 restore = False 로 지정
# 읽어오는 함수
model.load("model_name")
2) 향상된 최적화기 사용
- 기존에 많이 사용하는 경사 하강 옵티마이저 보다 더욱 빠른 옵티마이저를 사용
- 모멘텀 옵티마이저 / AdaGrad / RMSProp / Adam 옵티마이저 / ...
Adam 옵티마이저
- 상단에 설명한 옵티마이저들 중 가장 많이 사용됨
- 기존 경사 하강 옵티마이저
- Adam 옵티마이저의 방법
- 패러미터에 따라 스케일링을 다르게 적용
- 변화량이 큰 패러미터 → 상대적으로 작은 스케일링
- 변화량이 작은 패러미터 → 상대적으로 큰 스케일링
- 모멘텀과 스케일링을 시간에 따라 다르게 적용
- GD 옵티마이저와 달리 적응형 학습률을 사용하기 때문에 최적의 학습률 값을 위해 상대적으로 덜 노력해도 됨
- 자체의 학습률 스케쥴링 방법에 따라 학습률을 줄여 나가므로 별도로 추가할 필요 없음