심층 신경망 훈련하기 - 레이블 된 데이터가 적을 때 복잡한 문제를 다루는 데 도움이 되는 전이 학습과 비지도 사전 훈련 하는 방법
2020. 12. 29. 14:40ㆍML&DL
본 글은 핸즈온 머신러닝 Part2-11장을 공부한 후 정리한 내용입니다.
✅ 보다 깊은 심층 신경망을 학습시켜 아주 복잡한 문제를 다룰 때 발생할 수 있는 문제들
- Gradient 소실 or gradient 폭주 문제에 직면.
- 심층 신경망의 아래쪽으로 갈수록 gradient가 점점 더 작아지거나 커지는 현상
- 하위층을 학습하기 매우 어렵게 만듦.
- 대규모 신경망을 위한 학습 데이터가 충분하지 않거나 레이블을 만드는 작업에 비용이 많이 들 수 있음.
- 학습이 극단적으로 느려질 수 있음.
- 수백만 개의 파라미터를 가진 모델은 학습 할 때 과대적합 될 위험이 큼.
- 특히, 학습 샘플이 충분하지 않거나 잡음이 많은 경우
그 중 레이블을 만드는 작업에 비용이 많이 소요되는데 레이블 된 데이터가 적을 때 어떤 방법을 이용할 수 있는지 알아보겠습니다.
🔸 해결방안. 전이 학습
- 해결하려는 것과 비슷한 유형의 문제를 처리한 신경망을 재사용하는 것으로 해결하고자 하는 문제에는 정답 라벨이 적은데 비슷한 문제에 정답이 대량으로 존재할 경우 사용하는 지도학습 방법
- 훈련 속도를 크게 높이고 필요한 훈련 데이터도 크게 줄어듦.
- 규모가 매우 큰 모델을 처음부터 학습시키면 속도가 느린데 이미 학습된 비슷한 모델의 하위층을 가져와서 빠르게 만듦.
- 보통 원본 작업에서 유용했더 특성과는 상당히 다르기 때문에 저수준 특성을 갖고 있는 하위 은닉층이 상위 은닉층을 재사용하는 것보다 더 유용함.
- 작업이 비슷할수록 낮은 층부터 시작해서 더 많은 층을 사용.
- 아주 비슷한 작업이라면 모든 은닉층을 유지하고 출력층만 교체 가능.
- 재사용할 층 개수를 잘 선정하는 것이 필요.
출처: 인공지능 전이학습과 응용 분야 동향
- 전이학습 방법
- 재사용하는 층 동결(가중치가 바뀌지 않도록 훈련되지 않는 가중치로 만듦.)
- 모델 학습 및 성능 평가
- 맨 위 한,두개의 은닉층의 동결을 해제하고 역전파를 통해 가중치를 조정하여 성능이 향상되는지 확인.
- 학습 데이터가 많을수록 많은 층의 동결을 해제할 수 있음.
- 재사용 층의 동결을 해제할 때는 가중치를 세밀하게 튜닝하기 위해 학습률을 줄이는 것이 좋음.
- 성능이 좋아지지 않고 학습 데이터가 적다면 상위 은닉층들을 제거하고 남은 은닉층을 다시 동결하며 재사용할 은닉층의 적절한 개수를 찾을 때까지 반복.
- 학습 데이터가 아주 많다면 은닉층을 다른 것으로 바꾸거나 추가할 수 있음.
- 새로운 출력층이 랜덤하게 초기화되어 있으므로 큰 오차를 생성(적어도 처음 몇 에포크 동안)
- 이는 오차 gradient가 재사용된 가중치를 망칠 수 있으므로 재사용된 층을 동결
for layer in model_B_on_A.layers[:-1]:
layer.trainable = False # 재사용된 층을 동결
# 동결을 하거나 해제한 후에는 반드시 다시 컴파일 해야함.
model_B_on_A.compile(loss="binary_crossentropy",
optimizer=keras.optimizers.SGD(lr=1e-3),
metrics=["accuracy"])
보통 전이 학습은 패턴 수를 적게 학습하는 작은 네트워크, 특정 패턴을 학습하는 완전 연결 네트워크의 작은 완전 연결 네트워크에서는 잘 동작하지 않고, 주로 심층 합성공 신경망에서 잘 동작함.
* 자율 자동차
* 의료 영상 데이터 분석
🚫 레이블된 학습 데이터가 많지 않은 복잡한 문제가 있는데, 비슷한 작업에 대해 훈련된 모델을 찾을 수 없다면?
🔸 해결방안 1. 비지도 사전훈련
- autoencoder나 GAN 판별자를 이용하여 하위층을 재사용하고 그 위에 새로운 작업에 맞는 출력층을 추가한 후 지도학습으로 최종 네트워크 튜닝
- 비지도 학습 기법으로 레이블이 없는 데이터 또는 전체 데이터로 모델을 학습.
- 지도 학습 기법읈 사용하여 레이블된 데이터에서 최종 학습을 위해 튜닝.
- 한 번에 하나의 층씩 동결시키며 학습할 수도 있고 전체 모델을 바로 학습할 수도 있음.
Autoencoder
GAN
🔸 해결방안 2. 보조 작업에서 사전훈련
- 레이블된 학습 데이터를 쉽게 얻거나 생성할 수 있는 보조 작업에서 첫 번째 신경망을 학습시키고 재사용
- 첫 번째 신경망의 하위층은 두 번째 신경망에서 재사용될 수 있는 특성 추출기를 학습하는 것.
728x90
'ML&DL' 카테고리의 다른 글
[ML] 직관적인 모델 의사결정나무와 강한 학습기 앙상블 (0) | 2021.01.31 |
---|---|
심층 신경망 훈련하기 - 학습 속도를 높이는 방법 (0) | 2020.12.29 |
심층 신경망 훈련하기 - Gradient 소실과 폭주 문제 해결 방법 (0) | 2020.12.29 |
[DL] 06. 새로운 데이터를 생성하는 법, GAN? (0) | 2020.12.08 |
[DL] 05. 데이터를 압축하고 생성하는 AutoEncoder? (0) | 2020.12.08 |