본문 바로가기

IT/Paper

[Deeplearning] BinaryConnect: Training Deep Neural Networks with binary weights during propagations

이번 포스팅은 해용님과 진행한 BinaryConnect에 대한 논문을 리뷰하려고 합니다.


논문

BinaryConnect: Training Deep Neural Networks with binary weights during propagations


구현체

BinaryConnect


읽다보니까 BinaryConnect는 weights만 quantization을 수행하지만, Binarized Neural Network는 weight와 activation을 둘다 quantization하는 논문이고, 이전에 했던 포스팅인 Binarized Neural Network 논문 저자와 같아서 BinaryConnect 논문의 후속이 Binarized Neural Network라는 인상이 강하게 들었습니다. 덕분에 논문 읽는데 빠르게 읽긴감도 없지 않아있습니다. (그런데도 너무 어렵네요...ㅠㅠ)

1. Abstract

요약은 그냥 당연한 이야기들입니다. 기존의 딥러닝이 GPU에서 가속화되서 돌아가서 쓸 수 있었는데, 이걸 모바일 디바이스 같은 작은 디바이스에서 돌리기에는 연산속도, 발열, 전력효율의 이슈가 있으니까 Multiplication operation을 줄여서 해결할 수 있지 않을까에 대한 이야기를 하고, 이를 MNIST, CIFAR-10, SVHN 데이터셋에서 증명했다는 이야기입니다.


2. Introduction


이부분도 Abstract와 겹치는 내용이 많습니다. 눈여겨볼 부분은 아래 내용입니다.


연구한 부분에서 중요한 2가지 내용은 다음과 같다고합니다.


  • Binarized Nerual Network에서도 포스팅한 내용이지만, SGD가 noisy step이 있는데, 이러한 noisy step자체가 EBP(Expected Back Propagation)으로 인해서 각 noise들이 average out되서 global minima에 근사한다는 이야기입니다.
  • DropoutConnect라는 논문에서 Weights에다가 Noise를 줘서 정규화를 했는데, weight를 quantization하는 것은 information loss가 하나의 noise로 볼 수 있고, DropoutConnect에서 noise를 가우시안 노이즈나 이런걸 이젠 양자화 노이즈로 대체해도 정규화에 도움이 될거라는 가정입니다. 해용님이 여기서 인상깊게 봤다는 구절이 only expected value of the weight needs to have high precision이라는 구문인데, 해용님과 저는 noise step으로 인해서 어디로 왔다갔다 하던지 결국 expected value가 있기 때문에 이에 도달하게 되고 그래서 high precision을 가질거라 상관없다는 이야기로 이해했습니다.

3. BinaryConnect


Binarized Nerual Network와 똑같이 weights를 양자화하는 방법과 activation, propagation과 update 알고리즘을 소개합니다.


3-1. +1 or -1

DNN에서 weights를 {+1, -1}로만 구성시키게 되면, 실제로 매트릭스 연산에서 모든 곱셈연산들은 부호만 바꾸는 연산으로 변경되어 곱셈연산이 필요없이지고, add 연산만 필요해지게 됩니다. 그러면 매트릭스 곱 연산이 조금 더 가벼워진다는게 핵심입니다.


3-2. Deterministic vs stochastic binarization


이부분은 Binarized Neural Network에서 소개했습니다. 

해당 포스팅을 참고하시면 될 것 같습니다.


Binarized Neural Network 포스팅



3-3. Propagations vs updates

네트워크 Forwarding 연산과 Updates는 아래의 알고리즘 식과 같습니다.

여기서 특징은 weights를 binarize하고나서 forward 후, gradient까지 계산하면 Back propagation에서는 더 이상 quantization작업을 하지 않는 것입니다. 즉 진짜 weights만 quantization한거 외엔 딱히 다른게 없는?...




좀 의아한 부분은 식 4번인데, 다음과 같이 표기되어있습니다.



여기서 는 noisy estimator이며 수식적 표현은 다음과 같습니다.





noisy estimator에서 분자는 (입력,정답)의 비용함수이고, 분모는 이전의 weights값을 이야기하며, 마지막으로 양자화된 weights값입니다.



결국 이상적인 Binary weights값은 각 노드에서 학습한 모든 epoch와 batch들의 누적된 Gradient를 합한 후, 그에 대한 부호만 판단을 하면 이상적인 Binary Weights가 된다는 이야기로 해석을 했는데, 실은 실수기반의 DNN을 고려했을 때, 이상적인 binary weight에 대한 식은 다음과 같아야하는거 아닌가라는 생각을 했습니다.



이 파트 뒷부분에서 저자는 양자화 잡음들은 layer들의 수많은 multiplication operation과 weighted sum 연산을 통해서 average out이 일어나게 되고, SGD랑 같이 형태로 원하는 ideal weights에 convergence할 수 있다고 이야기하고있습니다.


3-4. Clipping


binary network에서는 real-value의 weight값이 magnitude가 1이상 커져도 양자화하는데 전혀 영향을 주지 않기 때문에, 이를 정규화하기 위해서 가중치를 업데이트하고 난 직후에 실수 가중치 값을 [-1, 1]사이의 값으로 Clipping하게 됩니다.