Feedback Alignment – 역전파 (backpropagation)을 대신하는 알고리즘

지금까지 machine learning이 발전하고, 유용히 쓰이는데 역전파 (backpropagation) 알고리즘은 큰 역활을 했다. Data의 error를 통해 neural network의 neuron을 간편하게, 빠르게, 그리고 유동성 있게 업데이트하며 network를 train하는데 도음을 준다. 하지만 backpropagation의 문제점은 두뇌에서 일어나는 학습과 일치하지 않는 점이다. 물론, practice에서 backpropagation이 잘 작동하는걸 이미 수차레 관찰했지만, 두뇌에서 일어나는 learning과 다르다는 점에서 더 좋은 옵션이 존재할까라는 의문점을 생기게한다. 특히, Backpropagation은 error를 propagate하는데 있어 위 neuron의 weight를 알아야한다 (이 문제는 웨이트 운송 문제라고 부른다). 다르게 말해서, 밑에 뉴런들이 위 뉴런들의 정보를 정확히 알아야한다는것이다. 하지만 뇌과학의 연구 결과, 뇌에서는 위와 같이 밑에 뉴런들이 위 뉴런들의 정보를 모른다. 따라서, 뇌에서 neuron을 조정하는 방식은 backpropagation과 조금 다르다는것을 의미한다.

오늘 소개하는 알고리즘은 backpropagation보다 뇌에서 neuron을 조정하는 방식과 조금 더 비슷하다. 아주 간단한 예시로 설명하겠다. Three layer linear network을 고려해보자. Network의 output은 $\mathbf{y} = \mathbf{W} \mathbf{h}$이며 $\mathbf{h} = \mathbf{W}_0 \mathbf{x}$ 이다. 여기서 $\mathbf{x}$는 input (데이터) 이다. 또한, $\mathbf{y}^*$ 를 ground-truth이라 생각했을때 error는 $\mathbf{e} = \mathbf{y}^* – \mathbf{y}$ 이며, network는 loss $\mathcal{L} = \frac{1}{2} \mathbf{e}^T \mathbf{e}$ 를 minimize한다. 자, 여기서 backpropagation을 적용했을때, 우리는 다음과 같은 업데이트를 얻는다:
$\begin{align}
\Delta \mathbf{W} &= \frac{\partial \mathcal{L}}{\partial \mathbf{e}} \frac{\partial \mathbf{e}}{\partial \mathbf{y}} \frac{\partial \mathbf{y}}{\partial \mathbf{W}} = – \mathbf{e} \mathbf{h}^T \\
\Delta \mathbf{W}_0 &= \frac{\partial \mathcal{L}}{\partial \mathbf{h}} \frac{\partial \mathbf{h}}{\partial \mathbf{W}_0} = -\mathbf{W}^T \mathbf{e} \mathbf{x}^T
\end{align}$
위에 서술했던 weight transport problem은 $\mathbf{W}_0$ 를 조정할때 $\mathbf{W}$ 의 정보를 알아야한다는 의미이다. Feedback alignment는 이 문제를 해결하기 위해 $\mathbf{W}$ 를 propagate하는 대신에 랜덤한 matrix $\mathbf{B}$ 를 사용한다. 따라서, $\mathbf{W}$ 의 업데이트는 동일한 반면, $\mathbf{W}_0$ 의 업데이트는 다음과 같다.
$\begin{align}
\Delta \mathbf{W}_0 = \mathbf{B} \mathbf{e} \mathbf{x}^T
\end{align}$

출처: [1]

위에 figure를 보면 backpropagate (b) 알고리즘은 $\mathbf{W}$ 를 propagate하지만 feedback alignment (c) 는 대신 random matrix를 이용한다. 따라서, 밑에 뉴런이 위에 뉴런의 정보를 알지 않아도 되기 때문에 backpropagate보다 뇌과학적으로 plausible한 알고리즘이다. 또한, backpropagte의 빠름과 정확성을 유지하며 동시에 update가 simple하게 만들어진다.

이 알고리즘을 처음 접하면 다음과 같은 질문이 생긴다.
1. Random matrix $\mathbf{B}$ 는 어떻게 정하지?
답: 어떤 matrix도 다음의 condition을 맞으면 가능하다: on average, $\mathbf{e}^T \mathbf{W} \mathbf{B} \mathbf{e} > 0$. 쉽게 말하자면, random matrix의 방향의 대략 backprop와 일치해야한다는점이다.
2. $\mathbf{B}$도 train해야 할까?
답: 최적의 training speed을 가지려면 $\mathbf{B}$ 가 $\mathbf{W}^T$ 와 비슷 (align)해야 한다는점이다. 따라서, $\mathbf{B}$ 를 training 하는 것도 한 방법이다. 하지만 authors들은 $\mathbf{B}$ 를 조정하는 대신에 $\mathbf{W}$ 를 조정해도 된다고 주장한다.

출처: [1]

놀랍게도 figure a 를 보면 linear network에서 feedback alignment의 performance는 backprop의 performance와 비슷하다. b를 보면 $\mathbf{B}$ 는 $\mathbf{W}^T$ 와 비슷하게 acting 하기 시작한다.

출처: [1]

또한, non-linear MNIST classification task에서도 위와 비슷한 결과를 보여준다. 참고로, non-linear 실험은 three layer neural network를 사용했음으로 두 random matrices $\mathbf{B}_1$ 와 $\mathbf{B}_2$ 를 사용한다.

이론적으로는 linear network case에서 $\mathbf{W}^T$ 가 moore-pseudo inverse으로 converge하는 걸 증명했다. 다음 post에서는 조금 더 이론적인 결과와 더욱 간단한 direct feedback alignment을 소개하겠다.

출처:
[1] Lillicrap, T. P., Cownden, D., Tweed, D. B., & Akerman, C. J. (2016). Random synaptic feedback weights support error backpropagation for deep learning. Nature communications, 7(1), 1-10.

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

Site Footer

Sliding Sidebar

%d 블로거가 이것을 좋아합니다: