논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Learning Deep Architecture for AI (4)

[cite]10.1561/2200000006[/cite]

틀린 부분 지적 부탁드립니다.

4. Neural Networks for Deep Architectures

깊은 구조를 설명하기 앞서 깊은 구조를 적용하기 위한 몇가지 신명망 구조를 소개하고자 합니다.

4.1 Multi-Layer Nueral Networks

먼저 잘 알려진 다층신경망(Multi-layer neural networks)을 예로 들 수 있습니다. 여러 층으로 구성된 구조로 k번째 층은 이전 층의 출력 $h^{k-1}$을 입력으로 받아 $h^k$를 계산하여 출력합니다. 여기서 첫번째 층의 입력 $h^0$은 입력 데이터 $x$를 이용합니다.

$$h^k = \tanh( b^k + W^k h^{k-1} )$$

식에서 오프셋 벡터 $b^k$와 가중치 행렬 $W^k$는 파라미터입니다. tanh 함수는 각 층이 가지는 요소들에 대하여 개별적으로 계산되며, tanh 대신 $sigm(u) = 1 / (1+e^{-u}) = 0.5 (\tanh(u) + 1)$나 saturating non-linearities 성질을 갖는 다른 함수로 바꾸어 사용하기도 합니다. 모든 층에 대하여 계산을 이어나가 얻은 최상위 층의 출력 $h^l$은 입력에 대한 신경망의 예측 값을 만들어냅니다. 지도 학습에서는 이를 이용하여 손실 함수(loss function) $L(h^l, y)$를 계산하는데 사용하기도 합니다. 이를 위하여 마지막 층은 다른 층과는 다르게 Softmax 등의 non-linearity를 갖도록 구성하기도 합니다.

$$h^l_i = \frac{\exp(b^l_i + W^l_i h^{l-1})}{\sum_j \exp(b^l_j + W^l_j h^{l-1})}$$

Softmax의 출력 $h_i^l$$P(Y=i | x)$의 estimator로 사용되며 패턴 x가 부류 Y에 얼마나 속하는지를 나타내는 것으로 해석할 수 있습니다. Softmax를 사용할 경우, Negative conditional log-likelihood $L(h^l, y) = -\log P(Y=y|x) = - \log h^l_y$가 손실 함수로 사용됩니다.

4.2 The Challenge of Training Deep Neural Networks

깊은 구조를 훈련 시키는 것은 얕은 구조의 그것보다 훨씬 어려운 일입니다. 지난 2006년까지, 보통의 랜덤 초기화 방법을 이용하여 파라미터를 초기화하면 제대로된 일반화를 이끌어 낼 수 없으며 훈련 결과 또한 좋지 않아고 알려져왔습니다. Deep supervised 다층 신경망을 랜덤 초기화를 한 뒤 훈련 시키면 지역 최소점이나 플래토(plateaus)에 빠져버린다는 연구도 있었습니다. 결국 사람들은 방법을 찾아내고야 말았는데, 비지도 학습을 이용하여 미리 훈련시킨(pre-training) 레이어들을 사용하여 학습을 시작하면 좋은 결과를 얻을 수 있다는 것을 알게 되었습니다. 처음 사용된 모델은 RBM을 생성적 모델(generative model)을 사용한 것이었고, 이어서 auto-decoders에서도 같은 결과를 볼 수 있엇습니다.

이 연구들의 대부분은 greedy layer-wise 비지도 학습을 사용하였습니다. 이는 RBM이나 auto-encoder를 통해 낮은 층으로부터 시작하여 각 층에 별도로 비지도 학습을 적용하여 파라미터의 초기값을 계산하였습니다. 첫번째 층에서 파라미터를 얻고 난 뒤 그 출력을 다음 층의 입력으로 사용하여 다음 층의 파라미터를 계산하였습니다. 모든 레이어에서 초기값을 얻은 뒤에 그것을 초기값으로 지도 학습을 통하여 전체 신경망을 fine-tuning하였습니다.

RBMs과 auto-encoders에서 사용되는 공통된 학습 알고리즘은 layer-local unsupervised criteria입니다. 다시 말해 각 레이어에서 unsupervised training signal이 그 파라미터들이 그들 각자의 공간에서 좋은 영역으로 향하도록 유도합니다. 예를 들어 $(x, \tilde{x})$의 두 샘플을 이용하여 트레이닝 한다고 생각해봅시다. 이 둘은 이웃(같은 클래스)일 수도 있고 아닐 수도 있습니다. 각 레이어에서의 local training criterion은 레이어의 출력 $h^k(x)$, $h^k(\tilde{x})$을 생성하도록 유도하는데, 이 둘이 서로 이웃(같은 클래스)이냐 아니냐에 따라 표현이 서로 가까워지거나 혹은 멀어지도록 유도됩니다.

이 알고리즘을 사용하였을 때 테스트 오차가 줄어드는 이유가 optimization의 영향인지, 아니면 regularization 때문인지 의문이 들 수 있습니다. 이러한 부분은 기존의 optimization, regularization의 경우와는 정확하게 맞아들어가지 않습니다.

여러 실험에서 regularization의 효과가 크다고 주장하고 있습니다. 이러한 연구에서는 비지도학습에 의한 선행 훈련이 어떠한 regularizer로써 해를 탐색할만한 파라미터 공간을 제한하는 효과를 가져와, 선행 학습했던 파라미터의 결과 부근에서 해를 찾도록 유도한다고 주장합니다.

반면에 또 다른 연구에서는 regularization이 오히려 악영향을 가져온다고 주장하고 있습니다. 최상위 은닉층이 작은 값을 갖도록 제한(constraint)을 걸었을 때 좋지 않은 결과를 가져온다거나, 최상위 은닉층에 오히려 제한을 걸지 않아도 트레이닝 셋에 맞는 표현을 갖기에 충분하다고 하였습니다.

한편으로는 비지도 선행학습을 수행하면 가장 아래의 층은 좀더 좋은 최적화를 가져오며, 최상위 층에서 낮은 트레이닝 오차와 함께 더 좋은 일반화를 얻을 수 있습니다. 랜덤 초기화는 비지도 선행학습보다 나쁜 학습 결과를 보여주었습니다.

일반적으로 2개의 층을 가진 네트워크가 잘 학습된다는 것은 잘 알려진 사실입니다. 깊은 신경망의 마지막 층은 일반적으로 convex 최적화 문제를 띄도록 수정됩니다. 마지막 2개의 층만을 최적화하는 것은 설령 convex 문제가 아니더라도 깊은 네트워크를 한꺼번에 최적화 하는 것보다는 쉬운 문제입니다.

만약 상위 은닉 층에 충분한 유닛이 있다면, 낮은 층이 제대로 훈련된 상태가 아니더라도 트레이닝 오차가 낮아져버립니다. 하지만 이는 나쁜 일반화를 가져오게 될 것입니다. 즉 트레이닝 오차가 낮아지나 테스트 오차는 높아져 과적합(overfitting) 문제가 발생하는 것입니다. 비지도학습에 의한 선행 학습이 테스트 오차를 낮추는 것은 일종의 데이터에 종속적인 regularizer라고 볼 수도 있을 것입니다. 비지도학습에 의한 선행학습이 regularizer와 비슷하게 작동하는 사례는 또 있습니다. 만약 표현력(capacity)이 충분하지 않는다면 일반화를 깨트리는 경향이 있습니다. 트레이닝셋이 적어지면 테스트 오차가 낮아지더라도 트레이닝 오차는 높아질 것입니다.

많은 트레이닝 샘플과 낮은 층의 좋은 초기화와 함께 학습을 시작한다면, 트레이닝 오차와 일반화 오차는 충분히 낮아질 수 있습니다. 잘 학습된 깊은 신경망에서의 은닉 층은 데이터의 좋은 표현을 가지고 있으며 이는 곧 좋은 예측으로 이어집니다. 만약 하위 층이 제대로 초기화되지 않는다면 그 상위 표현들은 엉망이 되고 일반화에 실패할 것입니다. 따라서 비지도 학습에 의한 선행 학습 초기화 방법을 사용하면 낮은 층에서의 더 나은 파라미터의 튜닝을 통하여 일반화에 도움을 줍니다. 트레이닝 오차가 줄어들지라도, 모든 층이 제대로 튜닝되었다면 더 나은 일반화를 얻을 수 있을 것입니다.

다른 어떤 연구에서는, 비지도 학습에 의한 선행 학습이 regularization와 비슷하게 작용하여 더 나은 일반화를 이끈다고 설명하는 사람도 있습니다. 이것은 낮은 층에서부터 입력 분포의 어떠한 규칙성(regularities)를 포착하도록 유도됩니다.

다시 비지도 학습을 이용한 선행 학습을 사용할 때의 최적화 vs regularization의 이야기로 돌아가봅시다. 전체 네트워크의 관점에서는, 트레이닝 오차를 낮게 만드는 것은 어렵지 않습니다. 상위 2개 층에 집중해서 고려하면 되기 때문입니다. 하지만 낮은 층들을 하지만 그보다 낮은 층들을 튜닝하는 문제나 그것의 magnitude를 고려한다면 최적화의 어려움을 이야기하게 될 것입니다. 최적화와 regularization을 조화롭게 하기 위하여 트레이닝 셋의 반복이 아닌 무한으로 들어오는 샘플를 이용하는 truly oneline setting을 생각해볼 수 있습니다. 이러한 겨우, online 그래디언트 디센트가 일반화 오차(generalization)의 stochastic optimization을 수행하게 됩니다. 만약 비지도 학습을 이용한 선행 학습이 온전히 regularization에 의한 효과라면, 가상의 무한 트레이닝 셋에서 선행 학습이 있거나 없거나 같은 수준으로 수렴한 온라인 오차를 기대할 수 있습니다. 하지만 여기서 제안한 가설이 맞다면 비지도학습에 의한 선행학습을 사용한 것이 더 좋은 결과를 가져올 것입니다.

이를 실험하기 위해 무한 MNIST 데이터셋을 사용하였습니다. 숫자 이미지를 랜덤하게 위치를 변경시키고 회전시키고, 크기 또한 변경시켜 만든 이미지를 생성하였습니다. 실험 결과, 3개 은닉 층을 가지는 신경망은 선행 학습이 되었을 때 상당히 적은 에러로 수렴하였습니다. 이것은 regularizer뿐 아니라 최적화 조건의 최저점을 찾는 역할까지 하는 것입니다. 이것이 regularization의 효과가 아니라고 이야기할 수는 없습니다. 지역 최저점 때문인데, 지역 최저점에 빠지더라도 샘플이 무한으로 들어옴에 따라 regularization 효과는 계속되어 오차가 줄어들게 됩니다. 한편으로는, 지역 최저점에 도달하게 되면 그 뒤로 들어오는 데이터들은 더이상 새로운 정보를 주지 못한다는 반증이기도 합니다.

아래 층의 최적화가 어려운 이유는 상위 층으로부터 확산되는 그래디언트가 아래 층으로 갈 수록 파라미터를 좋은 해 쪽으로 움직이기 충분하지 않는 이유로 보여집니다. 아래 층의 파라미터들은 상대적으로 작은 그래디언트로 인하여 지역 최적점이나
아래 층이 최적화 하기가 더 어렵다는 것을 설명하기 위해서는, 확산되는 그래디언트가 아래 층의 파라미터를 좋은 해 쪽으로 움직이기에는 충분하지 않기 때문입니다. 이 이론에 따르면 아래층 레벨의 파라미터들은 작은 그래디언트 값으로 인하여 로컬 미니멈이나 플래토(plateau)에 빠지게 됩니다. 상위 층만 관찰하면 잘 훈련이 되고 있는 것처럼 보이지만 하위로 갈 수록 점점 그래디언트 정보가 사라져 아래층으로 전달되는 변화가 적어집니다. 따라서 지역 최적점에서 빠져나올만한 그래디언트를 얻기가 힘들어집니다.

한편 깊은 컨볼루셔널 신경망(Deep convolutional neural networks)는 훈련시키기가 쉬운데, 각 레이어마다 스파스(sprase)한 연결성을 가지기 때문에 그런 것으로 보여집니다. 전파되는 그래디언트가 약해지는 문제는 순서 개념을 갖는 긴 샘플을 이용한 recurrent neural networks에서 나타나는 현상과 연결지을 수 있습니다.

4.3 Unsupervised Learning for Deep Architectures

앞에서 살펴보았듯 층 단위로 이루어지는 비지도 학습(layer-wise unsupervised learning)은 깊은 구조의 아래 층으로부터 시작하여 위까지 학습을 시키는데 중요한 역할을 합니다. 출력층에서 정의되는 그래디언트 기준이 점점 쓸모가 없어진다고 한다면, 각 층마다 비지도 학습에 의한 기준을 이용하여 원하는 방향으로 파라미터를 이동시키는 방법은 일리가 있어보입니다. 각 층에서는 그 층에 입력된 데이터의 통계적인 규칙성을 잡아내어 표현으로 나타내도록 한다고 생각할 수 있습니다. 이를 위한 알고리즘으로 PCA나 ICA의 변형 등을 사용하는 것은 입력보다 출력의 수가 많은 overcomplete한 특성 때문에 부적절한 것으로 보여집니다. 이를 극복하기 위하여 많은 확장 연구들이 있었고 이들을 단독 층 비지도 학습 알고리즘에 적용한 사례도 있지만, 여전히 선형 변환을 여러개 쌓아도 선형 변환이기에 깊은 구조에는 적당하지 않습니다.

지도학습 기준에 의한 부작용을 막아주는 장점 외에도 비지도 학습에 의한 선행 학습은 다른 장점을 가집니다. 그것은 문제를 자연스럽게 레벨의 추상화 문제를, 각각의 레벨로 따로 분리된 하위 문제로 볼 수 있게 해준다는 것입니다. 비지도학습 알고리즘은 입력 분포에서 가장 두드러진 정보를 추출해내어 distributed representation으로 표현합니다. 1개 층으로 이루어진 비지도 학습 알고리즘은 용량의 한계로 인하여 낮은 수준의 특징이 추출된다고 할 수 있습니다. 그 위 층에서 추출된 특징들은 낮은 수준의 특징들을 기반으로 하여 더 높은 수준의 특징이 추출된 것입니다.

4.4 Deep Generative Architecture

깊은 구조에서의 비지도 학습은 선행 훈련 단계에서 사용되는 용도 외에도 샘플의 분포을 학습하거나 그 분포로부터 샘플을 생성을 하는데도 사용될 수 있습니다. 생성적 모델(generative model)은 보통 그래프 모델(graphical model)을 사용해서 표현되는데, 랜덤 변수를 노드로, 랜덤 변수간의 종속 관계를 아크로 표현합니다. 모든 변수들의 joint distribution은 그래프에서의 노드와 그 이웃간의 곱으로 표현됩니다. 방향이 있는 아크의 경우, 부모 자식 관계의 조건적인 종속 관계를 나타냅니다.

2006년 이전에 연구되던 Sigmoid belief networks는 생성적 다층 신경망입니다. 이 신경망은 각 층의 노드가 하위 노드에는 독립적이기 때문에 상위 층에 대해서만 종속적인 특성을 가지고 있습니다. 이 조건부 분포는 뉴런 활성화 함수(neuron activation equation)와 비슷하게 파라미터화(parametrization)되어있습니다.

$$P(h_i^k=1| h^{k+1}) = \text{sigm}(b_i^k + \sum_j W_{i,j}^{k+1} h_j^{k+1})$$

$h^{k}$는 k번째 은닉 층의 노드 값을 요소로 갖는 벡터를 의미하고, $h^0$는 입력 벡터 x를 나타냅니다. $P()$는 모델의 확률 분포를 나타냅니다. 트레이닝셋에 의한 실험적인 분포는 $\hat{P}()$로 나타냅니다. 즉 트레이닝 샘플을 이용하였을 때, 생성되는 분포입니다. 결국 가장 아래에 있는 최하위 층은 상위 층에 영향을 받아 입력 공간에서의 벡터 x를 생성하게 됩니다. 따라서 우리는 전체 모델이 트레이닝 데이터에 대해 높은 확률을 갖도록 만들고자 하는 것이 목표입니다. 수식을 여러 층에 대해 모두 고려해보면 아래와 같습니다.

$$P(x, h^1, \dots, h^l) = P(h^l) (\prod_{k=1}^{l-1} P(h^k|h^{k+1}))P(x|h^l)$$

사실 marginalization항으로 $P(x)$가 있으나, 실질적으로는 다루기가 힘들어 생략하였습니다. Sigmoid belief networks에서는 최상위 층의 prior은 $P(h^l) = \prod_i P(h_i^l) $으로 분리되어있습니다. 각 층의 노드들은 $P(h_i^l = 1)$을 위한 한개의 Bernoulli 파라미터가 필요로 합니다.

Deep Belief Networks는 Sigmoid belief networks와 비슷하나 상위 2개 층을 구성하는 파라미터들이 조금 다릅니다. 아래의 식과 같이 최상위 두 층은 Restricted Boltzmann Machine (RBM)으로 이루어져 있습니다.

$$P(x, h^1, \dots, h^l) = P(h^{l-1}, h^l) (\prod_{k=1}^{l-2}P(h^k|h^{k+1})) P(x|h^1)$$

$$P(h^{l-1}, h^l) \propto e^{b'h^{l-1} + c'
h^l + h^{l}{'} W h^{l-1}}$$

RBM 때문에 학습 알고리즘을 다르게 사용하여야 합니다. 한번에 한 층씩 greedily하게 학습하여, 입력 x에 대하여 각 층에서의 $P(h^k|x)$에 해당하는 추상 표현을 점진적으로 학습하게 됩니다.

4.5 Convolutional Neural Networks

비지도 학습을 사용하지 않는한, 깊은 지도 학습 신경망을 학습하기 힘들다고 하였지만 한가지 예외가 있습니다. 바로 컨볼루셔널 신경망(Convolutional neural networks)입니다. Convolutional nets는 인간의 시각 시스템의 구조에서 영감을 받아 구성되었습니다. 뉴런들간의 지역적인 연결에 기반하여 계산이 이루어지며, 계층적으로 이미지의 변환이 이루어집니다. 하위 층에 각 위치에 대하여 같은 파라미터를 이용한 패치를 적용함으로써 위치 이동에 대한 불변성을 얻을 수 있습니다. LeCun은 이 아이디어를 바탕으로 그래디언트 오차를 기준으로 학습하는 Convolutional networks를 설계하였고, 이는 패턴 인식에서 가장 성능이 좋은 시스템을 차지하고 있습니다.

여기서 다룰 컨볼루셔널 신경망은 5~7개의 층으로 구성되고 그 중에서도 완전히 연결된 신경망(fully connected neural networks)을 사용하고 있어, 앞에서와 같은 이유로 랜덤 초기화로는 학습하기가 쉽지 않습니다.

LeCun의 컨볼루셔널 네트워크는 2개 종류의 층으로 이루어져 있습니다. 바로 컨볼루셔널 층(convolutional layer)와 서브샘플링 층(subsampling layer)입니다. 각 층은 topographic 구조를 가지고 있습니다. 한 뉴런은 그 뉴런에 반응하는 이전 층의 사각형 모양 패치인 2차원 receptive field를 가집니다. 각 층은 으로부터 상위 그 뉴런에 반응하는 이전 층에 입력 이미지에서의 2차원 receptive field를 가집니다. 각 층에서 같은 가중치를 공유하는 패치들이 다른 위치의 각 뉴런들에 적용됩니다.

테스트는 되지 않았지만, 각 뉴런으로 연결되는 상대적으로 작은 fan-in은 많은 층을 통하며 그래디언트가 확산되어버리는 현상을 줄이는데 도움이 되는 것으로 보고 있습니다. 이것이 Convolutional networks의 좋은 성능을 설명하기엔 충분하지 않습니다. DNN에서의 random sparse connectivity는 좋은 결과를 내놓지 못했기 때문입니다. 그럼에도 적은 fan-in의 효과는 그래디언트 확산에 영향을 주는 것은 확실한 것으로 보입니다.

또 다른 한가지는, 지역적으로 국한된 연결성을 가지는 구조가 비전(vision)관련한 태스크에 강력한 prior로 작용한다는 것입니다. 전체가 아닌 일부의 관심 영역의 파라미터들은 그래디언트 기반의 최적화 방법으로도 잘 학습됩니다. 심지어 첫번째 층에서 랜덤하게 가중치를 초기화하여도 잘 학습되었습니다.

최근 컨볼루셔널 구조를 RBMs와 DBNs에 넣은 사례도 있습니다. DBNs에서는 생성적인 버전의 pooling 서브샘플링 유닛을 사용하였습니다. 특히 각 레벨에서 생성된 특징을 살펴보면, 깊은 구조에서 우리가 기대하는 여러 단계의 추상화를 확인할 수 있습니다. 다시 말하자면, 낮은 레벨에서의 에지부터 높은 레벨의 물체의 각 부분별까지의 특징이 자연스럽게 생성되는 것을 확인할 수 있습니다.

4.6 Auto-Encoders

Auto-encoder는 특별한 종류의 신경망입니다. Auto-encoder를 훈련시키는 것은 RBM을 Contrastive Divergence를 이용하여 훈련시킨 결과를 근사하지만 훈련하기는 더 쉽습니다. 다라서 깊은 네트워크를 훈련 시키기 위해서 RBM 대신 사용되기도 합니다.

Auto-encoder는 입력 벡터 x를 어떤 다른 표현 c(x)로 나타내도록 하는 것인데 이 표현은 다시 입력으로 복원될 수 있도록 하여야 합니다. 따라서 auto-encoder의 입력은 auto-encoder의 출력으로 그대로 사용됩니다. 만약 한개의 은닉 층이 있고 mean squared error를 기준으로 하여 auto-encoder 네트워크를 훈련시킨다면, k개의 은닉 유닛은 입력된 x를 k개의 principal components의 스팬으로 표현하도록 학습될 것입니다. 은닉 층이 비선형일 경우엔, PCA와는 다르게 입력 분포의 multi-modal 형태로 표현될 것입니다. 학습에는 mean squared error 기준을 이용하여 reconstruction 오차의 negative log-likelihood를 주로 사용합니다. 이것은 코딩된 encoding c(x)가 주어졌을 경우 아래와 같이 표현할 수 있습니다.

$$RE = -\log P(x|c(x))$$

만약 $x|c(x)$가 가우시안이라면 우리에게 친숙한 squared error를 복원하고자 할 것입니다. 또한 입력 $x_i$가 binary이거나 binomial 확률을 가지면 loss function은 다음과 같습니다.

$$-\log P(x|c(x)) = - \sum_i x_i \log f_i(c(x)) + (1-x_i) \log (1- f_i c(x)))$$

함수 $f(c(x))$는 decoder로써 코딩된 표현을 원래의 입력 벡터로 복원하는 기능을 합니다. 앞의 binary 혹은 binominal을 사용하는 경우, 복원된 벡터는 (0,1) 사이의 값을 갖는 요소들로 구성될 것입니다. 우리가 하고자 하는 것은 코딩된 $c(x)$가 distributed representation 으로 표현되게 함으로써 데이터 variation의 주 성분을 추출해내고자 하는 것입니다. Auto-encoder의 $c(x)$는 입력 x의 손실 압축된 것으로 불 수 있기 때문에 모든 x에 대해서 항상 좋은 압축을 하는 것은 불가능합니다. 따라서 학습은 트레이닝 샘플에 대해서만 특별히 좋은 압축률을 보이도록 작동할 것입니다. 일반화에 의해 트레이닝 샘플과 비슷한 입력에 대해서도 그렇게 작동하도록 유도될 것이지만 그렇다고 해서 모든 입력에 대해서 이것이 성립하는 것은 아닙니다.

Auto-encoder에는 심각한 이슈가 있습니다. n차원의 입력을 받고 n개 이상의 차원으로 엔코딩하는 auto-encoder에 다른 제한조건을 주지 않았을 경우, 그 입력 자신을 학습해버려 의미가 없는 학습을 해버릴 가능성이 있습니다. 하지만 놀랍게도 stochastic gradient descent를 이용하여 입력 보다 많은 은닉 유닛을 사용하는 비선형 auto-encoders에서 좋은 표현을 얻은 연구가 있습니다. 이 결과는 early stopping을 적용하한 stochastic gradient descent가 l2 regularization과 비슷한 작용을 하였을 것이라 추측됩니다. Regularization은 큰 가중치를 갖는 해를 만들기 어렵도록 하기 때문에 optimization 알고리즘은 입력 트레이닝셋과 비슷한 샘플에 대해서만 잘 작동하도록 유도할 것입니다. 즉, 트레이닝 셋에서 나타나는 입력 그 자체가 아닌 statistical 규칙성을 갖도록 표현이 생성된다는 뜻입니다. 그리고 바로 그것이 우리가 원하는 일입니다.

입력보다 많은 은닉 유닛을 가질 때, 입력에 대한 유용한 표현을 구하면서도 입력 그 자체를 가지지 않도록 훈련하는 많은 방법들이 있습니다. 그중 대표적으로 encoding 결과에 노이즈를 더하는 것으로 regularization을 대신하거나 거기에 추가적인 연산으로써 추가하는 방법이 있습니다. 참고로 이는 RBM에서는 필수적으로 행해지는 일입니다. 또, 코드에 sparsity 제한을 가하는 방법도 있습니다.

Sparsity와 regularization은 표현 능력(capacity)을 줄어들게하므로 입력 그 자체가 학습되는 것을 피할 수 있습니다. RBM이 큰 표현 능력을 가지지만 입력 자체를 학습하지 않는 것은 입력을 encoding할 뿐만 아니라 입력의 확률적인 구조(statistical structure)에 주목하고 있기 때문입니다.

생성적 모델의 likelihood를 최대화하는 기준을 auto-encoder에 적용한 denoising auto-encoder도 있습니다. 이는 입력의 stochastically corrupted transformation으로부터 입력을 reconstructing 하는 문제를 기준으로 오차를 최소화하고자 하는 방법입니다. 이는 곧 생성적 모델에서 log-likelihood의 lower bound를 최대화 하는 것과 동일합니다.


Add a Comment Trackback