1982년산 BBC Micro, 신경망을 돌리다!
1982년 출시된 BBC Micro에서 신경망(Neural Network)을 구동하는 데 성공
6502 어셈블리(Assembly)를 활용하여 성능을 최적화하고, 고정 소수점(Fixed-point) 연산을 사용
시그모이드 함수(Sigmoid Function)를 룩업 테이블(Lookup Table)로 구현하여 속도 향상
BBC Basic과 6502 어셈블리를 혼합하여 개발하는 BBC Micro의 유연성(Flexibility)을 강조
8비트 환경에서의 고정 소수점 연산
저자는 8비트 환경에서 신경망(Neural Network)을 구현하기 위해 고정 소수점(Fixed-point) 연산을 선택했다. 특히 Q4.11 방식을 사용하여 4비트는 정수, 11비트는 소수를 표현했다. 곱셈 연산(Multiplication)의 경우, 16x16→32비트 시프트-앤드-애드(Shift-and-Add) 루프를 통해 구현하고, 11비트 시프트를 통해 Q4.11 형식으로 정규화했다. 이러한 방식은 8비트 레지스터의 제약 속에서 정밀도(Precision)와 계산 범위(Calculation Range) 사이의 균형을 맞추기 위한 전략이다.
시그모이드 함수(Sigmoid Function) 최적화
성능 향상을 위해 시그모이드 함수(Sigmoid Function)를 룩업 테이블(Lookup Table)로 구현했다. BBC Basic으로 테이블을 생성하고, 6502 어셈블리에서 해당 테이블을 참조하는 방식으로 속도를 개선했다. 이는 계산 집약적인 연산(Computation-intensive Operation)을 미리 계산된 값으로 대체하여 실행 시간(Runtime)을 단축하는 전형적인 최적화 기법이다. 이러한 접근 방식은 8비트 환경의 제한된 자원을 효율적으로 활용하는 데 기여했다.
BBC Micro의 하드웨어적 특징 활용
저자는 BBC Micro의 BBC Basic과 6502 어셈블리(Assembly)의 혼합 사용을 통해 개발 효율성을 높였다. BBC Basic으로 구현하기 어려운 부분을 6502 어셈블리로 구현하여 성능을 향상시키고, Basic으로 구현해도 무방한 부분은 Basic을 사용하여 개발 시간을 단축했다. 이러한 유연성은 BBC Micro가 가진 강력한 개발 환경(Development Environment)의 장점을 보여준다. 특히, 하드웨어 접근성(Hardware Accessibility)이 뛰어난 BBC Micro의 특징을 잘 활용했다.
신경망 훈련 과정 분석
신경망 훈련은 전방향 패스(Forward Pass), 역전파(Backpropagation), 훈련 루프(Training Loop)로 구성된다. 전방향 패스(Forward Pass)는 가중 합과 바이어스를 계산하고, 역전파(Backpropagation)는 오차를 계산하여 가중치를 업데이트한다. 훈련 루프는 XOR 샘플을 반복적으로 사용하여 신경망을 학습시킨다. 이러한 과정은 8비트 환경에서도 신경망의 학습(Neural Network Training)이 가능하다는 것을 보여준다. 구체적인 구현 코드는 본문에 포함되지 않았다.