5. Neural Networks

앞 장에서는 고정 기저 함수들의 선형 결합으로 회귀와 분류를 하는 법을 알아보았다. 이는 차원의 저주에 대한 문제점이 있었다. 보조 벡터 기계는 학습 데이터를 중심으로 하는 기저 함수를 정의하고 학습 중 이들의 일부분을 선택함으로써 이를 해결한다. 이는 목적 함수가 볼록이라는 장점이 있지만, 확률적 모델이 아니다. 연관 벡터 기계는 보조 벡터 기계에 비해 희소한 해를 구하고, 확률적 모델이 되지만, 학습하는 목적 함수가 볼록이 아니다.

다른 접근법은 기저 함수의 수를 미리 고정하는 대신 이를 적응적으로 바꾸는 것이다. 즉, 기저 함수를 매개화하고 이 매개 변수가 학습 과정에서 변화하도록 한다. 이런 모델 중 가장 성공적인 모델은 신경망이다. 이는 역시 비볼록 학습이다. 이 장에서는 신경망과 오차 역전파, 혼합 밀도 망에 대해 알아본다.

5.1. Feed-forward network functions

우선적인 목표는 비선형 기저 함수의 선형 결합에 비선형 활성 함수를 적용시킨 모델 y(\mathbf{x}, \mathbf{w}) = f(\sum_{j=1}^{M} w_{j} \phi_{j}(\mathbf{x}))를 기저 함수를 매개변수에 의존적이도록 확장하는 것이다. 우선 입력에 대한 M개의 선형 결합 a_{j} = \sum_{i=1}^{D} w_{ji, 1} x_{i} + w_{j0, 1}을 만든다. 이를 활성이라 하고, 이는 미분 가능한 활성 함수 h를 통해 z_{j} = h(a_{j})로 변형된다. 이를 은닉 요소라 하고 이는 다시 다음 층의 활성화를 통해 a_{k} = \sum_{j=1}^{M} w_{kj, 2} z_{j} + w_{k0, 2}로 변환된다. 이것이 반복된다. 활성 함수에는 여러 선택이 있다. 이 과정을 전방 전파라 한다. 이는 내부 노드가 추계적 값이 아니라 결정론적 변수이기 때문에 확률적 그래프 모델이 아님을 유념할 필요가 있다. 신경망은 다층 퍼셉트론이라 불리지만 활성함수들이 미분가능하므로 실제로 퍼셉트론은 아니다. 활성 함수가 선형 함수로 선택될 경우 여러 층이 단일 층의 선형 변환으로 치환될 수 있으므로 의미가 없다. 신경망은 스킵 층을 가질 수도 있고, 희소할수도 있다. 신경망은 범용적 근사가 가능하다는 것이 알려져 있다. 즉, 충분한 은닉 요소가 있다면 어떤 연속함수든 어떤 정확도로든 근사할 수가 있다.

5.1. Weight-space symmetries

신경망의 특성은 가중치 벡터를 다르게 선택해도 입력에서 출력으로의 같은 변환을 낳을 수도 있다는 것이다.

5.2. Network Training

신경망을 학습시킬 때는 제곱오차를 최소화시킬 수도 있지만, 더 일반적인 접근법은 신경망의 출력을 확률적으로 표현하는 것이다. p(t | \mathbf{x}, \mathbf{w}) = \mathcal{N}(t | y(\mathbf{x}, \mathbf{w}), \beta^{-1})로 나타냈을 때 음의 로그가능도를 취하면 오차 함수 \frac{\beta}{2} \sum_{n=1}^{N} (y(\mathbf{x}_{n}, \mathbf{w}) - t_{n})^{2} - \frac{N}{2} \ln \beta + \frac{N}{2} \ln (2 \pi) 를 얻는다. 이를 최소화시키는 해를 \mathbf{w}_{MLE}라 하면, \frac{1}{\beta_{MLE}} = \frac{1}{N} \sum_{n=1}^{N} (y(\mathbf{x}_{N}, \mathbf{w}_{MLE}) - t_{n})^{2}를 얻는다. 대상 변수가 여럿일 때는 \frac{1}{\beta_{MLE}} = \frac{1}{NK} \sum_{n=1}^{N} \lVert \mathbf{y}(\mathbf{x}_{N}, \mathbf{w}_{MLE}) - \mathbf{t}_{n} \rVert^{2}가 된다.

오차 함수와 출력 활성 함수간에는 자연스러운 관계가 있다. 이것은 \frac{\partial E}{\partial a_{k}} = y_{k} - t_{k}으로 나타난다. 분류 문제에서 출력 함수가 로지스틱 시그모이드나 소프트맥스일 경우 오차 함수는 교차 엔트로피가 된다. 층이 2개인 신경망에서 첫 번째 층은 비선형 특성 추출로 볼 수 있다.

5.2.1. Parameter optimization

이제 목표는 E(\mathbf{w})를 최소화시키는 가중치 \mathbf{w}를 찾는 것이다. 오차 함수가 비볼록이기 때문에 이는 보통 경사 하강법으로 이루어진다.

5.2.2. Local quadratic approximation

경사를 근사할 때 오차 함수에 대해 국소적 이차 근사를 하는 방법도 있다. 이는 테일러 전개 E(\mathbf{w}) \simeq E(\hat{\mathbf{w}}) + (\mathbf{w} - \hat{\mathbf{w}})^{T} \mathbf{b} + \frac{1}{2} (\mathbf{w} - \hat{\mathbf{w}})^{T} \mathbf{H}(\mathbf{w} - \hat{\mathbf{w}})로 이루어진다. 이러면 \mathbf{b} = \nabla E \rvert_{\mathbf{w} = \hat{\mathbf{w}}}, \mathbf{H} = \nabla \nabla E라 할 때 \nabla E \simeq \mathbf{b} + \mathbf{H}(\mathbf{w} - \hat{\mathbf{w}})이 된다.

5.2.3. Use of gradient information

오차 함수의 경사는 역전파로 효과적으로 구할 수 있다. 국소적 이차 근사는 O(W^{3})이지만 이는 O(W^{2})이다.

5.2.4. Gradient descent optimization

경사 정보를 이용하는 가장 직관적인 방법은 경사 하강법 \mathbf{w}_{\tau + 1} = \mathbf{w}_{\tau} - \eta \nabla E(\mathbf{w}_{\tau})을 이용하는 것이다. 이 때 \eta는 학습율이다. 이는 여러 변형이 있지만 온라인 학습에서는 추계적 경사 하강법이 유용하다.

5.3. Error Backpropagation

이 장에서는 오차 함수의 경사를 구하는 효과적인 방법으로 역전파를 소개한다. 이를 위해선 첫째로는 가중치에 대한 오차 함수의 도함수를 구해야 한다. 둘째로는 이 도함수를 이용해 가중치를 얼마나 조정해야 할지를 구해야 한다.

5.3.1. Evaluation of error-function derivatives

역전파는 다음과 같이 요약할 수 있다.

  1. 신경망에 입력 \mathbf{x}_{n}을 적용하고 모든 은닉 요소들과 출력 요소들을 구한다.
  2. \delta_{k} = y_{k} - t_{k}를 구한다.
  3. \delta_{j} = h^{\prime}(a_{j}) \sum_{k} w_{kj} \delta_{k}를 이용해 역전파한다.
  4. \frac{\partial E_{n}}{\partial w_{ji}} = \delta_{j} z_{i}로 도함수를 구한다.

5.3.2. A simple example

위의 과정을 활성 함수가 tanh인 간단한 예에 적용해 볼 수 있다.

5.3.3. Efficiency of backpropagation

역전파의 장점은 전체 계산 복잡도가 O(W)가 된다는 점이다. 유한 차분법을 쓸 수도 있지만 이는 O(W^{2})이다. 그러나 이는 역전파가 제대로 되었는지 검증에 쓸 수는 있다.

5.3.4. The Jacobian matrix

역전파의 원리를 이용해 자코비안 행렬도 구할 수 있다. 이는 J_{ki} = \frac{\partial y_{k}}{\partial x_{i}} = \sum_{j} w_{ji} \frac{\partial y_{k}}{\partial a_{j}}, \frac{\partial y_{k}}{\partial a_{j}} = h^{\prime}(a_{j}) \sum_{l} w_{ij} \frac{\partial y_{k}}{\partial a_{l}}로 구할 수 있다. 역시 이는 유한 차분법으로 검증할 수 있다.

5.4. The Hessian Matrix

역전파를 이용하여 헤시안도 구할 수 있다. 헤시안은 다음의 역할을 한다:

  1. 비선형 최적화 알고리즘에서 오차 함수의 2차 특성을 고려할 때.
  2. 학습 데이터에 작은 변화만이 있을 때 재학습을 할 때 기반이 됨.
  3. 헤시안의 역을 이용해서 가장 중요도가 떨어지는 가중치를 쳐낼 때.
  4. 라플라스 근사를 할 때.

헤시안을 구하는 복잡도는 대개 O(W^{2})이다.

5.4.1. Diagonal approximation

헤시안의 역행렬에만 관심이 있을 때에는 헤시안에 대한 대각 근사를 수행하기도 한다. 이는 \frac{\partial^{2} E_{n}}{\partial a_{j}^{2}} = h^{\prime}(a_{j})^{2} \sum_{k} w_{kj}^{2} \frac{\partial^{2} E_{n}}{\partial a_{k}^{2}} + h^{\prime \prime}(a_{j}) \sum_{k} w_{kj} \frac{\partial E_{n}}{\partial a_{k}}로 근사할 수 있다.

5.4.2. Outer product approximation

르벤버그-마르카르트 근사 또는 외적 근사에 대한 헤시안은 \mathbf{H} \simeq \sum_{n=1}^{N} \mathbf{b}_{n} \mathbf{b}_{n}^{T}로 주어진다.

5.4.3. Inverse Hessian

헤시안의 역행렬도 순차적 업데이트를 할 수 있다. 이는 다음과 같다.

\mathbf{H}_{L+1}^{-1} = \mathbf{H}_{L}^{-1} - \frac{\mathbf{H}_{L}^{-1} \mathbf{b}_{L+1} \mathbf{b}_{L+1}^{T} \mathbf{H}_{L}^{-1}}{1 + \mathbf{b}_{L+1}^{T} \mathbf{H}_{L}^{-1} \mathbf{b}_{L+1}}

5.4.4. Finite differences

이계도함수는 유한 차분법으로 근사할 수도 있다. 다음과 같다.

\frac{\partial^{2} E}{\partial w_{jk} \partial w_{lk}} = \frac{1}{2 \epsilon}[\frac{\partial E}{\partial w_{ji}} (w_{lk} + \epsilon) - \frac{\partial E}{\partial w_{ji}} (w_{lk} - \epsilon)] + O(\epsilon^{2})

5.4.5. Exact evaluation of the Hessian

헤시안을 정확하게 구하는 법은 다음과 같다.

\frac{\partial^{2} E_{n}}{\partial w_{kj, 2} \partial w_{k^{\prime} j^{\prime}, 2}} = z_{j} z_{j^{\prime}} M_{k k^{\prime}}

\frac{\partial^{2} E_{n}}{\partial w_{ji, 1} \partial w_{j^{\prime} i^{\prime}, 1}} = x_{i} x_{i^{\prime}} h^{\prime \prime}(a_{j^{\prime}}) I_{j j^{\prime}} \sum_{k} w_{k j^{\prime}, 2} \delta_{k} + x_{i} x_{i^{\prime}} h^{\prime} (a_{j^{\prime}}) h^{\prime}(a_{j}) \sum_{k} \sum_{k^{\prime}} w_{k^{\prime} j^{\prime}, 2} w_{k j, 2} M_{k k^{\prime}}

\frac{\partial^{2} E_{n}}{\partial w_{ji, 1} \partial w_{k^{\prime} j^{\prime}, 2}} = x_{i} h^{\prime}(a_{j})[\delta_{k} I_{j j^{\prime}} + z_{j^{\prime}} \sum_{k^{\prime}} w_{k^{\prime} j, 2} M_{k k^{\prime}}].

5.4.6. Fast multiplication by the Hessian

우리는 대개 헤시안 그 자체보다는 특정 벡터에 헤시안을 곱한 값에 관심이 있다. 이를 O(W) 시간에 구하는 법을 알아보자. \mathbf{v}^{T} \mathbf{H} = \mathbf{v}^{T} \nabla (\nabla E)임을 알고, \mathcal{R} 연산자를 \mathbf{v}^{T} \nabla라 하자. 이러면 다음이 성립한다.

\mathcal{R}(a_{j}) = \sum_{i} v_{ji} x_{i}

\mathcal{R}(z_{j}) = h^{\prime}(a_{j}) \mathcal{R}(a_{j})

\mathcal{R}(y_{k}) = \sum_{j} w_{kj} \mathcal{R}(z_{j}) + \sum_{j} v_{kj} z_{j}

\mathcal{R}(\delta_{k}) = \mathcal{R}(y_{k})

\mathcal{R}(\delta_{j}) = h^{\prime \prime}(a_{j}) \mathcal{R}(a_{j}) \sum_{k} w_{kj} \delta_{k} + h^{\prime} (a_{j}) \sum_{k} v_{kj} \delta_{k} + h^{\prime} (a_{j}) \sum_{k} w_{kj} \mathcal{R}(\delta_{k})

\mathcal{R}(\frac{\partial E}{\partial w_{kj}}) = \mathcal{R}(\delta_{k}) z_{j} + \delta_{k} \mathcal{R}(z_{j})

\mathcal{R}(\frac{\partial E}{\partial w_{ji}}) = x_{i} \mathcal{R}(\delta_{j})

5.5. Regularization in Neural Networks

신경망에서 과적합을 막기 위한 보편적인 방법은 정규화자를 추가하는 것이다. 가장 쉬운 정규화자는 \tilde{E}(\mathbf{w}) = E(\mathbf{w}) + \frac{\lambda}{2} \mathbf{w}^{T} \mathbf{w}이다. 이는 평균이 0인 가우시안 사전분포의 음의 로그함수로도 볼 수 있다.

5.5.1. Consistent Gaussian priors

위 식의 단점은 가중치 스케일링에 있어 불변이 아니라는 점이다. 그래서 그 대신에 정규화자 \frac{\lambda_{1}}{2} \sum_{w \in \mathcal{W}_{1}} w^{2} + \frac{\lambda_{2}}{2} \sum_{w \in \mathcal{W}_{2}} w^{2}를 사용한다. 이는 사전분포 p(\mathbf{w} | \alpha_{1}, \alpha_{2}) \propto e^{-\frac{\alpha_{1}}{2} \sum_{w \in \mathcal{W}_{1}} w^{2} - \frac{\alpha_{2}}{2} \sum_{w \in \mathcal{W}_{2}}w^{2} }에 대응한다. 이는 표준화가 불가능하다는 것을 유념하자. 이 방법은 k개의 그룹으로 확장시킬 수 있다.

5.5.2. Early stopping

또 다른 정규화 방법으로는 이른 중단이 있다. 이는 검증 데이터에 대해 오차가 가장 작아지는 지점에서 학습을 멈추는 것이다.

5.5.3. Invariances

학습하는 함수는 수평 변환이나 크기 변환 등에 불변이어야 함을 보장해야 할 때가 있다. 이는 대개 다음의 방법들로 이루어진다.

  1. 학습 데이터를 증강한다.
  2. 입력에 대한 변환을 징벌하는 정규화자를 추가한다.
  3. 변환에 불변인 특성을 전처리 과정에서 추출한다.
  4. 신경망의 구조에 불변 특성을 추가한다.

5.5.4. Tangent propgation

입력에 대한 변환을 징벌하는 정규화자를 추가하는 방법으로 접선 전파가 있다. 이는 \Omega = \frac{1}{2} \sum_{n} \sum_{k} (\frac{\partial y_{nk}}{\partial \xi} \rvert_{\xi = 0})^{2}일 때 \tilde{E} = E + \lambda \Omega를 이용하는 것이다.

5.5.5. Training with transformed data

입력에 변환을 주었을 경우 이를 직접 오차함수에 적용하는 방법도 있다. 변환이 없을 때의 오차 함수는 다음과 같다: E = \frac{1}{2} \int \int (y(\mathbf{x}) - t)^{2} p(t | \mathbf{x}) p(\mathbf{x}) d \mathbf{x} dt 이 때 변환 \mathbf{s} (\mathbf{x}, \xi)를 적용한 경우 테일러 전개를 이용하면 이는 다음과 같이 근사된다. (\lambda = \mathbb{E}[\xi^{2}]

\tilde{E} = E + \lambda \Omega

\Omega = \frac{1}{2} \int [y(\mathbf{x}) - \mathbb{E}[t | \mathbf{x}]](   (\mathbf{\tau}^{\prime})^{T} \nabla y(\mathbf{x}) + \mathbf{\tau}^{T} \nabla \nabla y(\mathbf{x}) \mathbf{\tau} + (\mathbf{\tau}^{T} \nabla y(\mathbf{x}))^{2}   ) p(\mathbf{x}) d \mathbf{x}

\mathbf{x} \to \mathbf{x} + \mathbf{\xi}의 특이 케이스를 티코노프 정규화라 한다.

5.5.6. Convolutional networks

신경망의 구조에 불변 특성을 추가하는 방법도 있는데, 이는 컨볼루션 신경망의 기반이 된다. 컨볼루션 신경망에는 크게 3가지 특성이 있다: 1) 국소적 수용 영역, 2) 가중치 공유, 3) 부분샘플링.

5.5.7. Soft weight sharing

가중치가 큰 신경망의 복잡도를 줄이는 방법 중 하나는 특정 그룹의 가중치를 공유하도록 하는 방법이 있다. 여기서는 특정 그룹의 가중치를 공유하는 대신 비슷한 값을 가지도록 하는 약한 가중치 공유에 대해 알아본다. 이는 사전분포를 가우시안의 혼합 p(\mathbf{w}) = \prod_{i} p(w_{i}), p(w_{i}) = \sum_{j=1}^{M} \pi_{j} \mathcal{N}(w_{i} | \mu_{j}, \sigma_{j}^{2})로 나타내어 얻을 수 있다. 이 경우 정규화자는 \Omega(\mathbf{w}) = -\sum_{i} \ln(\sum_{j=1}^{M} \pi_{j} \mathcal{N}(w_{i} | \mu_{j}, \sigma_{j}^{2}))로 나타내어진다.

\gamma_{j}(w) = \frac{ \pi_{j} \mathcal{N}(w | \mu_{j}, \sigma_{j}^{2})   }{\sum_{k} \pi_{k} \mathcal{N}(w | \mu_{k}, \sigma_{k}^{2})}으로 둘 때 전체 ㅗㅇ차 함수의 여러 도함수는 다음과 같이 얻어진다.

\frac{\partial \tilde{E}}{\partial w_{i}} = \frac{\partial E}{\partial w_{i}} + \lambda \sum_{j} \gamma_{j}(w_{j}) \frac{w - \mu_{j}}{\sigma_{j}^{2}}

\frac{\partial \tilde{E}}{\partial \mu_{j}} = \lambda \sum_{i}  \gamma_{j}(w_{i}) \frac{\mu_{j} - w_{i}}{\sigma_{j}^{2}}

\frac{\partial \tilde{E}}{\partial \sigma_{j}} = \lambda \sum_{i} \gamma_{j}(w_{i}) ( \frac{1}{\sigma_{j}} - \frac{(w_{i} - \mu_{j})^{2}}{\sigma_{j}^{2}})

이제 \pi_{j} = \frac{e^{\eta_{j}}}{\sum_{k=1}^{M} e^{\eta_{k}}}로 나타내면

\frac{\partial \tilde{E}}{\partial \eta_{j}} = \lambda \sum_{i} (\pi_{j} -\gamma_{j}(w_{i}))가 된다.

5.6. Mixture Density Networks

대상 분포가 가우시안 분포가 아닌 경우엔 가우시안 등 여러 분포의 가중치 혼합으로 이를 근사한다. 가우시안의 혼합인 경우엔 p(\mathbf{t} | \mathbf{x}) = \sum_{k=1}^{K} \pi_{k}(\mathbf{x}) \mathcal{N}(\mathbf{t} | \mathbf{\mu}_{k}(\mathbf{x}), \sigma_{k}^{2} (\mathbf{x}))이 된다.

매개변수를 \pi_{k}(\mathbf{x}) = \frac{e^{a_{k}^{\pi}}}{\sum_{l=1}^{K} e^{a_{l}^{\pi}}}, \sigma_{k}(\mathbf{x}) = e^{a_{k}^{\sigma}}, \mu_{kj}(\mathbf{x}) = a_{kj}^{\mu}로 나타냈을 때 오차함수의 이들에 대한 도함수는 다음과 같다.

\frac{\partial E_{n}}{\partial a_{k}^{\pi}} = \pi_{k} - \gamma_{nk}

\frac{\partial E_{n}}{\partial a_{kl}^{\mu}} = \gamma_{nk} \frac{\mu_{kl} - t_{nl}}{\sigma_{k}^{2}}

\frac{\partial E_{n}}{\partial a_{k}^{\sigma}} = \gamma_{nk}(L - \frac{\lVert \mathbf{t}_{n} - \mathbf{\mu}_{k} \rVert^{2}}{\sigma_{k}^{2}})

이를 이용해 혼합 밀도 망을 학습했다면, 이로부터 입력 벡터에 대한 대상 벡터의 조건부 밀도함수를 예측할 수 있다. 이의 평균은 \sum_{k=1}^{K} \pi_{k}(\mathbf{x}) \mathbf{\mu}_{k}(\mathbf{x}), 분산은 \sum_{k=1}^{K} \pi_{k}(\mathbf{x})[\sigma_{k}^{2} (\mathbf{x}) + \lVert \mathbf{\mu}_{k}(\mathbf{x}) - \sum_{l=1}^{K} \pi_{l}(\mathbf{x}) \mathbf{\mu}_{l}(\mathbf{x})\rVert^{2}]이 된다.

5.7. Bayesian Neural Networks

이제 베이지안 신경망을 알아보자.

5.7.1. Posterior parameter distribution

사후분포 p(\mathbf{w} | \mathcal{D}, \alpha, \beta) \propto p(\mathbf{w} | \alpha) p(\mathcal{D} | \mathbf{w}, \beta)는 라플라스 근사를 통해 근사할 수 있다. 이 결과는 \mathcal{N}(\mathbf{w} | \mathbf{w}_{MAP}, \mathbf{A}^{-1}), \mathbf{A} = \alpha \mathbf{I} + \beta \mathbf{H}이다.

예측분포 p(t | \mathbf{x} , \mathcal{D} , \alpha, \beta)의 근사는 \mathcal{N}(t | y(\mathbf{x}, \mathbf{x}_{MAP}), \sigma^{2}(\mathbf{x})), \sigma^{2}(\mathbf{x}) = \beta^{-1} + \mathbf{g}^{T} \mathbf{A}^{-1} \mathbf{g}이다.

5.7.2. Hyperparameter optimization

초매개변수의 추정값은 다음과 같다.

\alpha = \frac{\gamma}{\mathbf{w}_{MAP}^{T} \mathbf{w}_{MAP}}

\gamma = \sum_{i=1}^{W} \frac{\lambda_{i}}{\alpha + \lambda_{i}}

\frac{1}{\beta} = \frac{1}{N - \gamma} \sum_{n=1}^{N} (y(\mathbf{x}_{n}, \mathbf{w}_{MAP}) - t_{n})^{2}.

5.7.3. Bayesian neural networks for classification

위의 예를 이진 분류에 적용했을 때 사후예측분포는 다음과 같다.

p(t = 1 | \mathbf{x}, \mathcal{D}) = \sigma(\kappa(\sigma_{a}^{2})a_{MAP})

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중