논문 원본 : https://arxiv.org/abs/2110.06804
A comprehensive review of Binary Neural Network
Deep learning (DL) has recently changed the development of intelligent systems and is widely adopted in many real-life applications. Despite their various benefits and potentials, there is a high demand for DL processing in different computationally limite
arxiv.org
2. Binary Neural Network
- BNN은 기존 CNN과 동일한 구조를 가지지만, 모든 가중치와 활성화 값을 1bit로 변환하여 연산을 단순화한 모델
2.1 What is BNN?
- BNN에서는 이진 연산 (Binary Operation, XNOR + popcount)을 활용하여 계산량을 대폭 줄일 수 있음
- XNOR 연산 : 두 값이 같으면 1, 다르면 0을 반환하는 이진 논리 연산
- popcount 연산 : 1이 몇 개 있는지를 계산하는 연산
- CNN & BNN 연산
2.2 Forward & Backward Propagation
- 하지만, 1bit 가중치와 활성화 값만으로 학습을 수행하는 것은 쉽지 않음
- 역전파 과정에서 문제가 발생함
- 문제점 : 활성화 함수를 이진화(sign function)하면, 미분 값이 0이 되어 기울기 소실 문제 발생
- 해결책 : STE 기법을 사용하여, 실제 연산에서는 1비트 값만 사용하되, 학습 중에는 부동소수점 값을 유지하여 가중치를 업데이트
3. Binary Neural Network Optimization
3.1 Quantization Error Minimization
- 32bit 값을 단순히 ±1 값으로 변환하면 너무 많은 정보가 사라짐
- 변환 과정에서 원래의 가중치와 활성화 값 크기에 대한 정보가 사라져 모델 성능이 떨어짐
3.1.1 Scaling Factor
- XNOR-Net(2016)에서는 채널별 scaling factor (α, β) 를 추가하여 정보 손실을 보완
- XNOR-Net ++ -> 활성화와 가중치의 scaling factor를 하나로 통합하여 최적화
- DA-BNN -> 데이터에 따라 자동으로 조정되는 적응형(Adaptive) scaling 방식 도입
3.1.2 Quantization Function
- 기존 Sign 함수 대신 더 나은 변환 방법을 사용하여 성능 향상
- SI-BNN (2020): 활성화는 [0,1] 범위로, 가중치는 [-1,1] 범위로 변환하여 성능 향상
- [0,1]의 장점
- 기존 CNN과 유사한 구조 (ReLU는 음수를 모두 0으로 바꿈)
- [0,1]의 장점
- AdaBin (2022): 레이어마다 최적의 이진 가중치 세트를 자동으로 찾는 방법 제안
- SI-BNN (2020): 활성화는 [0,1] 범위로, 가중치는 [-1,1] 범위로 변환하여 성능 향상
3.1.3 Activations / Weights distribution and Others
- 양자화를 수행하기 전에 가중치와 활성화 값의 분포를 조정하여 정보 손실을 줄이는 방법
- 기존 방법은 이진화 과정에서 중요한 정보가 너무 많이 손실됨
- 이진화하가 전에 분포를 조정하면 더 좋은 결과를 얻을 수 있음
- ReCU (2021): 양자화 오류를 최소화하기 위해 가중치 분포를 정규화하는 기법 적용
- 가중치 분포를 정규화 후 이진화
- ReCU (2021): 양자화 오류를 최소화하기 위해 가중치 분포를 정규화하는 기법 적용
3.2 Loss Function Improvement
- BNN은 이진화(1bit 표현)로 인한 정보 손실 때문에, 실수값 (32bit) 네트워크보다 정확도가 떨어질 수 있음
- 기존의 cross entropy loss에 추가적으로 네트워크의 출력 분포가 일정한 형태를유지하도록 도와주는 분포 손실(distribution loss)이나 정규화 항(regularization)을 추가
3.3 Gradient Approximation
- sign 함수의 미분 값은 0이기 때문에, 역전파 과정에서 가중치가 업데이트되지 않는 문제가 발생
- 이를 해결하기 위한 방법 중 하나가 바로 STE로, sign 함수의 기울기를 근사하는 기법
- 하지만 STE를 사용하면 -1과 +1의 경계 근처의 가중치 학습이 어려워져 역전파의 업데이트 능력이 크게 저하
- STE 문제를 해결하기 위해 다양한 기울기 근사 기법이 연구
- Sigmoid 근사 기법
- BNN-RBNT(2018)에서 제안
- 경계 근처에서 기울기가 작아지므로, 불필요한 업데이트가 줄어듦
- 다항식 근사 기법
- Bi-Real-Net(2018)에서 제안
- sign 함수의 기울기를 다항식 형태로 조정
- 경계 근처에서 기울기 감소 -> 불필요한 업데이트 방지
- 동적 기울기 조정
- IR-Net(2020)에서 제안
- 학습 과정 중 기울기 크기를 동적으로 변화
- 중앙에서는 기울기를 1를 유지하지만, 경계 근처에서는 점진적으로 감소하도록 설계
- Sigmoid 근사 기법
3.4 Network Topology Struct
- BNN 모델의 성능을 개선하기 위해 기존 네트워크 (ResNet 등)를 수정한 연구들이 많음
- BNN에 맞는 새로운 네트워크 구조를 설계
- ex) ReActNet
- ReAct Sign 함수
- 학습 가능한 binary 임계값 추가 (T)
- ReAct PReLU
- Leaky ReLU의 한 변형으로, 음수를 입력 받을 때 학습 가능한 a 계수 추가
- ReAct Sign 함수
3.5 Traing Strategy and Tricks
6. Binary Neural Network Applications (Image Classification)
6.1 CIFAR-10 Dataset
6.2 ImageNet Dataset
6.3 Unsupervised and Semi-supervised Learning