카테고리 없음

Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1

SciomageLAB 2024. 10. 20. 16:31
반응형

8bit, 4bit, 2bit을 넘어서 binary로 모델을 학습/표현하는 BNN이라는 개념을 제안한 2016년 논문이다.
현재 인용 수 1935회인 굉장한 논문이다. 논문 pdf는 arXiv에 있다. 많은 블로그와 공개된 스터디, 유튜브 자료를 활용했고 출처는 맨 아래 있다.

bnn_jay.pngGitHub에 있는 잘 그려진 그림이 있어서 갖고 왔다. 바이너리로 네트워크가 구성됨을 잘 보여주는 것 같다.

  • BNN은 Quantization의 극단적인 형태로 Weight를 1ibt(-1 또는 1)으로 나타내는 네트워크이다.
  • Memory Size는 32x 줄었고, Memory Access time도 32x 줄었다.

Deterministic vs Stochastic Binarization

이 논문 컨셉 자체가 바이너리로 표현을 하는 것이다 보니 바이너리가 아닌 값을 바이너리로 표현하는(Binarization) 방법에는 두 가지 Binarizaiton 방법이 있다. (0과 1이 아니라 왜 +1과 -1이지? 라고 생각할 수 있지만 1비트로 표현할 수 있는 두가지 표현 이라는 것이라 생각하는게 좋다.)

Deterministic Binarization(결정론적 이진화)

그냥 부호에 따라서 0보다 크면 1, 작으면 0으로 구분하는 것이다.
여기서 Sign(x) 함수는 그냥 부호에 따라 +1이나 -1이 되는 함수이다.

우리말로 부호함수라고 한다. 간단 한 건데 이름은 참 멋있다.

Stochastic Binarization (확률 이진화)

본 논문에서는 Deterministic Binarization을 사용했다. (Stochastic Binarization은 나중에 자세히..)

Feed forward은 어떻게 하는지?

딥러닝에서 학습을 하려면 Backpropagation(역전파)를 해야 한다. 근데 이 논문처럼 부호함수를 쓰면 Feedforward(순전파)는 괜찮은데 Backpropagation(역전파)과정에서 하는 미분에 문제가 생긴다. (위 함수 모양을 보면.. 미분이 안된다.) 그래서 Backpropagation(역전파) 할 때 STE(Straight-Through Estimator)라는걸 쓴다고 한다.

An)image위 이미지에서 가장 오른쪽에 있는 게 STE 함수인데, 그 왼쪽에 있는 hard tanh의 미분형 이라고 한다. 이렇게 STE 함수를 쓰면 -1< x < 1 인 값에 대해서만 BackPropagation이 발생한다.

디테일

조금 복잡해 보이지만 pseudo code를 자세히 보면 Feedforward 할 때는 W와 a 모두 sign()함수로 이진화 하고 있고, Backpropagation 할 때를 보면 -1 ~ +1로 클리핑 한 값을 쓴다.

더 직관적인 그림으로 자세히 설명을 하자면 위와 같다.

....

학습이 오래 걸린다..

참고자료

반응형