이진 분류와 다른 개념
출력 클래스가 두 개인 이진 분류와 가중치가 두 값인 이진 신경망은 다르다. 이진 신경망도 여러 클래스의 분류에 사용할 수 있다. 어떤 층까지 이진화하는지와 입력, 누산기, 정규화 연산의 정밀도는 구현마다 구별해야 한다.
부호 내적의 계산
−1과 +1 벡터를 같은 부호면 1, 다른 부호면 0이 되는 비트 비교로 표현할 수 있다. 길이 n에서 일치 개수가 m이면 내적은 2m−n이다. 예를 들어 (1,−1,1,−1)과 (1,1,1,−1)은 세 곳이 일치하므로 내적이 2×3−4=2다. 이 관계가 비트 연산으로 곱셈을 대체하는 근거다.
부호 함수의 학습 문제
부호 함수는 거의 모든 곳에서 미분값이 0이므로 그대로 역전파하면 학습 신호가 막힌다. 학습에서는 실수 가중치를 유지하면서 순전파에 이진값을 사용하고 역방향에 대리 기울기를 사용하는 방법이 있다. 예를 들어 일정 구간 안에서는 기울기를 통과시키고 바깥에서는 0으로 두는 규칙을 쓴다. 이는 부호 함수의 정확한 미분과 구별한다.
저장과 실행의 현실
이상적인 이진 가중치 하나는 한 비트로 나타낼 수 있지만 학습 상태 전체가 한 비트라는 뜻은 아니다. 실수 누적값, 통계량, 일부 비이진층과 출력 처리에는 추가 저장과 연산이 필요할 수 있다. 비트 묶음과 전용 커널이 없는 환경에서는 기대한 가속이 나타나지 않을 수 있으므로 정확도와 실제 실행 비용을 측정한다.