모델 매개변수의 초기화
업데이트:
모델 매개변수의 초기화
DNN(Deep Neural Network)의 loss function은 convex하지 않기 때문에, local minima에 빠질 수 있다. 따라서, 모델 파라미터들의 초기 값은 Gradient descent에 의한 학습에서 중요한 역할을 한다. 책에 이것을 최소화하는 방법을 제시하고 있다.
사전 학습(pretraining)
실제 DNN 모델 훈련에 들어가기 전, 모델의 파라미터를 초기화하는 과정을 사전 학습(pretraining) 이라고 한다.
방법은 2가지가 있다.
- 단일 은닉층을 사용해서 문제에 대한 간단한 모델을 학습하고, 은닉층을 점점 추가하여 모델의 복잡성을 점차적으로 증진시키는 것이다.
- 간단하게 모델을 학습한 후, 학습된 모델의 파라미터들을 실제 모델의 학습 시 초기 파라미터 값으로 선택하는 것이다.
사전 학습의 장점은 다음과 같다.
- 가우시안 정규 분포를 따르는 등의 임의의 초기화로는 접근할 수 없는 파라미터 공간의 적절한 영역으로 모델의 파라미터들의 초기값을 이끌어준다.
- 사전 학습을 통해 학습한 모델은 보다 일관되고 일반화 성능이 향상된다.
공부하면서 생각한 것이지만.. 이건 MLP만을 위한 방법인 것 같기도 하다.
지도 사전 학습(supervised pretraining)
지도 사전 학습은 한번에 하나의 은닉층을 추가하여 ANN모델을 점진적으로 층을 쌓아가며 학습하는 것을 의미한다. 방법은 다음과 같다.
- 은닉층이 하나만 있는 축소된 ANN모델로 학습을 시작한다.
- 모델에 은닉층을 추가하고 경사 하강법을 적용하여 추가된 은닉층의 파라미터들을 학습하되, 이전의 파라미터들은 고정시킨다.
- 2번을 쌓고 싶은 층까지 계속해서 반복한다.
- 모든 층의 파라미터들을 초기화했으면, 이제 최종 모델의 모든 층을 묶어서 경사 하강법을 적용해 업데이트를 한다.
비지도 사전 학습(unsupervised pretraining)
지도 사전 학습은 모델의 효과적인 초기화를 위해 레이블이 지정된 학습 데이터들이 충분히 많아야한다. 그럼 레이블이 없는 데이터들만 있으면 어떻게 해야할까? 해결책이 바로 비지도 사전 학습이다.
비지도 사전 학습의 기본 아이디어는 레이블이 없는 데이터의 잠재적 구조를 포착하는 방식으로 ANN 모델을 초기화하는 것이다. 비지도 사전 학습은 입력 데이터들의 분포를 배우는 것이 분류 모델을 배우는데 간접적으로 도움이 된다고 가정한다. 비지도 사전학습의 목표는 입력 데이터를 가장 잘 설명할 수 있는 특징을 찾는 것이다.
오토인코더(Autoencoder)의 사용
그림 1. 오토인코더 |
비지도 사전 학습의 간단하고 일반적인 사용법 중 하나는 오토인코더로 알려진 비지도 ANN모델을 사용하는 것이다.
오토인코더는 feature x를 latent feature c에 매핑한 다음, c를 다시 feature 공간으로 투영시켜 입력 데이터의 재구성을 학습하기 위해 재구성 $\hat{x}$를 만든다. 학습 중의 loss function MSE를 사용하여 $\hat{x}$를 원래 데이터 x로 복구시키는 것이 목표다. optimizer로는 똑같이 SGD를 사용한다.
여기서 핵심은 입력 데이터들로부터 핵심 정보들을 추출하는 것이므로, latent features c는 입력 데이터보다 차원이 작아야 한다!
오토인코더도 여러 종류가 있는 듯 하다. 책에는 2개가 나와있다.
- Stacked 오토인코더 : 은닉층이 여러 개가 있는 오토 인코더
- 잡음 제거 오토인코더 : 입력 데이터에 임의로 노이즈를 추가시키고, 오토인코더로 원래의 입력 데이터를 복구시킨다. 이것은 강력한 정규화 기능을 제공하고, 은닉 노드가 많은 경우에도 복잡한 기능을 학습하는데 자주 사용된다.