Learning Deep Architectures for AI (6)
[cite]10.1561/2200000006[/cite]
6. Greedy Layer-Wise Training of Deep Architectures
6.1 Layer-Wise Training of Deep Belief Networks
l개의 층으로 구성된 DBNs(Deep Belief Networks)는 관측 벡터 $x$와 l개 은닉 층의 변수 $h^k$사이의 joint distribution을 모델링합니다.
$$P(x, h^1, \dots, h^l) = (\prod_{k=0}^{l-2} P(h^k | h^{k+1})) P(h^{l-1}, h^l)$$
여기서 관측 벡터 $x=h^0$이고 $P(h^{k-1}|h^k)$는 DBN의 레벨 k에 있는 RBM의 visible-given-hidden conditional distribution 을 뜻합니다. $P(h^{l-1}, h^l)$는 최상위 RBM의 joint distribution 입니다.
Conditional distribution $P(h^k | h^{k+1})$와 마지막 층의 joint distribution $P(h^{l-1}, h^l)$은 생성적 모델(generative model)을 정의하게 되고, 이제부터 그것을 $Q$로 표시하고자 합니다. 두가지로 사용할 것인데 하나는 exact posterior로 inference에 사용되며 나머지는 training에 사용되는 approximate posterior입니다.
DBN을 greedy layer-wise 방법으로 훈련시킬 때는 아래 알고리즘을 이용하여 훈련시킵니다.
- for k=1 to l do
- 파라미터 초기화 $ W^k=0, b^k = 0, c^k=0$
- while 종료 조건에 도달할 때 까지 do
- $\hat{P}$로부터 $h^0=x$를 샘플링
- for i=1 to k-1 do
- mean_field_computation을 사용한다면,
- $h^i_j$을 $Q(h^i_j=1|h^{i-1})$을 할당, $h_i$와관계된 모든 j에 대하여
- 사용하지 않으면,
- $h^i_j$을 $Q(h^i_j|h^{i-1})$로부터 샘플링, $h_i$와관계된 모든 j에 대하여
- 5~9를 반복
- RBMUpdate
- 종료조건까지 4~11을 반복
- 모든 층에 대하여 2~12를 반복
각 레이어는 RBM으로 초기화되어있으며 $Q(h^k, h^{k-1})$는 초기화에 사용된 미리 학습된 k번째 RBM입니다. $P(...)$는 DBN에 의한 확률을 나타냅니다. 우리는 $Q(h^k | h^{k-1})$을 $P(h^k | h^{k-1})$의 추정 값으로 사용할 것입니다. 계산도 쉽고 샘플링도 쉽기 때문입니다. 또한 이 $Q(h^k | h^{k-1})$는 입력 벡터 x의 표현을 만들어내는데 사용될 수 있습니다. posterior의 추정값이나 모든 레벨의 표현형을 얻으려면 다음 과정을 거치면 됩니다.
먼저 첫번째 레벨의 RBM에서 $h^1 \sim Q(h^1|x)$을 샘플링합니다. 혹은 mean-field approach를 사용하여 $\hat{h}^1 \sim E[h^1|x]$를 사용하여도 됩니다. 이는 RBM 분포 $Q(h^1|x)$의 기대값인데, 이것은 은닉 변수 출력의 확률 값을 가지는 벡터이므로 보통은 binomial unit $\hat{h}_i^1 = \text{sigm}(b^1 + W_i^1x)$를 갖습니다. 이렇게 두번째 RBM으로의 입력을 생성하면, 같은 방식으로 마지막 층까지 이를 반복합니다. DBN의 훈련이 끝나면 각 층의 파라미터 $W^i$과 $c^i$는 deep multi-layer neural network의 초기값으로 사용됩니다. 그리고 이들 파라미터는 다른 기준에 따라 fine-tuned될 수 있습니다.
벡터 x에 대한 DBN 생성적 모델은 다음과 같이 얻을 수 있습니다.
- 최상단 RBM에서 $h^{l-1}$을 샘플링합니다. 이것은 5.3.1에 나온 Gibbs 체인을 이용해서 얻어질 수 있습니다.
- k=l-1 to 1에 대해서 계속적으로 $h^k$이 주어진 상태에서 $h^{k-1}$을 샘플링합니다.
- 결과적으로 $x=h^0$ 이 DBN의 샘플입니다.
6.2 Training Stacked Auto-Encoders
Auto-Encoders는 깊은 다층 신겸망을 초기화하거나 구성하는데 사용되어 왔습니다. 학습 과정은 DBNs와 비슷합니다.
- 첫 층을 auto-encoders로 훈련시켜 raw 입력에 대하여 reconstruction 오류를 최소화하도록 합니다.
- auto-encoders의 출력인 은닉 유닛들의 값을 다른 층의 입력으로 사용합니다. 다음 auto-encoder를 훈련시킵니다.
- 2의 과정을 남은 층에 대해서도 모두 수행합니다.
- 마지막 층의 출력을 지도 학습 층에 입력으로 사용하고 그 파라미터들을 초기화합니다.
- 이제 깊은 구조가 갖는 모든 파라미터를 지도학습 기준에 따라 fine-tune 합니다. 다른 방법으로는, 모든 auto-encoder를 unfold하여 깊은 auto-encoder를 만든 뒤 전체 reconstruction 오류에 대하여 fine-tune하는 방법도 있습니다.
여기서도 앞에서처럼 pre-training 과정에서 모든 층의 파라미터들을 좋은 지역 최적점 근처로 옮겨지길 바라는 것입니다. Auto-encoder를 사용한 좋은 연구로 Stacked Auto-Encoders가 있습니다. 기본적인 이론은 앞의 DBNs에서와 같지만 auto-encoder를 사용함으로써 RBM보다 나은 점이 있습니다. CD-k의 경우 reconstruction 오류의 그래디언트보다는 log-likelihood 그래디언트에 가까운데, reconstruction 오류의 그래디언트는 CD-k보다 낮은 분산을 갖습니다. 두가지 조건을 통합하는 것은 좋은 방법이 될 수 있습니다. 또 다른 강점은 거의 모든 종류의 파라미터화를 할 수 있다는 점입니다. 단점으로는 이렇게 만들어진 구조는 생성적 모델과는 관련이 없다는 것입니다.
6.3 Semi-Supervised and Partially Supervised Training
Stacked Auto-Encoders나 DBNs을 사용할 경우 2개 종류의 트레이닝 학습 신호를 관측하는 것이 가능합니다. 한가지는 지역 layer-wise 비지도학습 신호이고 한가지는 전체 지도 학습 신호입니다. 앞의 알고리즘에서는 신호들이 순서대로 나타나게 됩니다. 즉, 비지도학습 단계에서 먼저 나타나고 지도학습을 통한 fine-tuning 하는 단계에서 두번째로 나타납니다. 또한 둘의 조합도 가능합니다.
둘을 하나로 합치는 방법 중 하나는 부분 지도 학습(partially supervised training)이라 불리는 것인데, true 입력 분포 $P(X)$는 $P(X|Y)$와 크게 관계가 없다고 생각될 때 유용하다고 합니다.
Semi-supervised learning의 깊은 구조로 일반화된 것으로 self-taught learning 이라는 것이 있습니다. 이것은 labeled class대신, 원하는 클래스에서 나올만한 unlabeled 샘플들을 이용하는 것입니다. 이것은 일반적인 semi-supervised 경우보다 더 현실적인데 특정 물체에 대하여 관심이 있다면 웹과 같은 곳에서 해당 샘플들을 이용할 수 있기 때문입니다.