심층 신경망 훈련하기 - 레이블 된 데이터가 적을 때 복잡한 문제를 다루는 데 도움이 되는 전이 학습과 비지도 사전 훈련 하는 방법

2020. 12. 29. 14:40ML&DL

본 글은 핸즈온 머신러닝 Part2-11장을 공부한 후 정리한 내용입니다.

✅ 보다 깊은 심층 신경망을 학습시켜 아주 복잡한 문제를 다룰 때 발생할 수 있는 문제들

  • Gradient 소실 or gradient 폭주 문제에 직면.
    • 심층 신경망의 아래쪽으로 갈수록 gradient가 점점 더 작아지거나 커지는 현상
    • 하위층을 학습하기 매우 어렵게 만듦.
  • 대규모 신경망을 위한 학습 데이터가 충분하지 않거나 레이블을 만드는 작업에 비용이 많이 들 수 있음.
  • 학습이 극단적으로 느려질 수 있음.
  • 수백만 개의 파라미터를 가진 모델은 학습 할 때 과대적합 될 위험이 큼.
    • 특히, 학습 샘플이 충분하지 않거나 잡음이 많은 경우

그 중 레이블을 만드는 작업에 비용이 많이 소요되는데 레이블 된 데이터가 적을 때 어떤 방법을 이용할 수 있는지 알아보겠습니다.

🔸 해결방안. 전이 학습

  • 해결하려는 것과 비슷한 유형의 문제를 처리한 신경망을 재사용하는 것으로 해결하고자 하는 문제에는 정답 라벨이 적은데 비슷한 문제에 정답이 대량으로 존재할 경우 사용하는 지도학습 방법
  • 훈련 속도를 크게 높이고 필요한 훈련 데이터도 크게 줄어듦.
    • 규모가 매우 큰 모델을 처음부터 학습시키면 속도가 느린데 이미 학습된 비슷한 모델의 하위층을 가져와서 빠르게 만듦.
  • 보통 원본 작업에서 유용했더 특성과는 상당히 다르기 때문에 저수준 특성을 갖고 있는 하위 은닉층이 상위 은닉층을 재사용하는 것보다 더 유용함.
    • 작업이 비슷할수록 낮은 층부터 시작해서 더 많은 층을 사용.
    • 아주 비슷한 작업이라면 모든 은닉층을 유지하고 출력층만 교체 가능.
    • 재사용할 층 개수를 잘 선정하는 것이 필요.

image

출처: 인공지능 전이학습과 응용 분야 동향

  • 전이학습 방법
  1. 재사용하는 층 동결(가중치가 바뀌지 않도록 훈련되지 않는 가중치로 만듦.)
  2. 모델 학습 및 성능 평가
  3. 맨 위 한,두개의 은닉층의 동결을 해제하고 역전파를 통해 가중치를 조정하여 성능이 향상되는지 확인.
    • 학습 데이터가 많을수록 많은 층의 동결을 해제할 수 있음.
    • 재사용 층의 동결을 해제할 때는 가중치를 세밀하게 튜닝하기 위해 학습률을 줄이는 것이 좋음.
  4. 성능이 좋아지지 않고 학습 데이터가 적다면 상위 은닉층들을 제거하고 남은 은닉층을 다시 동결하며 재사용할 은닉층의 적절한 개수를 찾을 때까지 반복.
  5. 학습 데이터가 아주 많다면 은닉층을 다른 것으로 바꾸거나 추가할 수 있음.
    • 새로운 출력층이 랜덤하게 초기화되어 있으므로 큰 오차를 생성(적어도 처음 몇 에포크 동안)
    • 이는 오차 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 판별자를 이용하여 하위층을 재사용하고 그 위에 새로운 작업에 맞는 출력층을 추가한 후 지도학습으로 최종 네트워크 튜닝
    1. 비지도 학습 기법으로 레이블이 없는 데이터 또는 전체 데이터로 모델을 학습.
    2. 지도 학습 기법읈 사용하여 레이블된 데이터에서 최종 학습을 위해 튜닝.
      • 한 번에 하나의 층씩 동결시키며 학습할 수도 있고 전체 모델을 바로 학습할 수도 있음.
Autoencoder

image

Autoencoder 내용 참고

GAN

image
GAN 내용 참고

🔸 해결방안 2. 보조 작업에서 사전훈련

  • 레이블된 학습 데이터를 쉽게 얻거나 생성할 수 있는 보조 작업에서 첫 번째 신경망을 학습시키고 재사용
    • 첫 번째 신경망의 하위층은 두 번째 신경망에서 재사용될 수 있는 특성 추출기를 학습하는 것.
728x90