1989년 매킨토시에서 구현된 트랜스포머 신경망
1989년 Macintosh SE/30의 하이퍼카드(HyperCard) 환경에서 트랜스포머 신경망을 온전히 구현한 'MacMind' 프로젝트가 공개되었습니다. 1,216개의 파라미터를 가진 이 모델은 현대 LLM과 완전히 동일한 수학적 원리(셀프 어텐션, 역전파 등)를 사용하여 빠른 푸리에 변환(FFT)의 초기 단계인 비트 역순 정렬을 스스로 학습합니다. 이 프로젝트는 거대 AI 모델의 작동 방식이 마법이 아니라 이해 가능한 수학임을 시각적으로 증명하며 AI의 기본 원리 교육에 큰 가치를 지닙니다.
MacMind: 1989년 Macintosh의 HyperCard에서 구현된 완전한 트랜스포머 신경망
MacMind는 Macintosh SE/30에서 학습되고, 전적으로 HyperTalk로 구현된 완전한 트랜스포머 신경망입니다. MacMind는 1,216개의 파라미터를 가진 단일 레이어, 단일 헤드 트랜스포머로, 무작위 예제로부터 고속 푸리에 변환(FFT)의 첫 번째 단계인 '비트 역순 정렬(bit-reversal permutation)'을 학습합니다. 이 신경망의 모든 코드는 행렬 연산이 아닌 인터랙티브한 카드 스택을 만들기 위해 1987년에 설계된 스크립팅 언어인 HyperTalk로 작성되었습니다. 이 모델은 토큰 임베딩, 위치 인코딩(positional encoding), 스케일드 닷-프로덕트(scaled dot-product) 스코어를 사용한 셀프 어텐션, 교차 엔트로피 손실(cross-entropy loss), 완전한 역전파(backpropagation), 그리고 확률적 경사 하강법(SGD)을 포함합니다. 컴파일된 코드도, 외부 라이브러리도, 블랙 박스도 없습니다. Option 키를 누른 채 버튼을 클릭하면 실제 수학 공식을 읽을 수 있습니다.
왜 이것이 존재하는가 MacMind를 학습시킨 근본적인 과정(순전파, 손실 계산, 역전파, 가중치 업데이트, 반복)은 오늘날 존재하는 모든 대규모 언어 모델(LLM)을 학습시킨 과정과 동일합니다. 차이점은 종류가 아닌 규모입니다. MacMind는 1,216개의 파라미터를 가지지만, GPT-4는 대략 1조 개의 파라미터를 가집니다. 수학은 완벽하게 동일합니다. 우리는 AI가 거의 모든 사람에게 영향을 미치는 시대에 살고 있지만, 실제로 AI가 어떻게 작동하는지 이해하는 사람은 거의 없습니다. MacMind는 그 과정을 알 수 있다는 것, 역전파와 어텐션이 마법이 아니라 수학이라는 것, 그리고 그 수학은 TPU 클러스터에서 실행되든 1987년의 68000 프로세서에서 실행되든 상관하지 않는다는 것을 보여주는 시연입니다. 모든 것을 검사하고 수정할 수 있습니다. 학습률 변경, 학습 작업 교체, 모델 크기 조정 등 모든 것을 HyperCard의 스크립트 에디터 내에서 수행할 수 있습니다. 이 프로젝트는 보닛을 연 채 공개된 자동차 엔진과 같습니다.
무엇을 학습하는가 비트 역순 정렬은 각 위치 인덱스의 이진법 표현을 뒤집어 순서를 재배열합니다. 8개 요소 시퀀스의 경우: 위치: 0 1 2 3 4 5 6 7 이진법: 000 001 010 011 100 101 110 111 뒤집기: 000 100 010 110 001 101 011 111 매핑: 0 4 2 6 1 5 3 7 따라서 입력 [3, 7, 1, 9, 5, 2, 8, 4]는 [3, 5, 1, 8, 7, 2, 9, 4]가 됩니다. 이 정렬 방식은 컴퓨팅에서 가장 중요한 알고리즘 중 하나인 고속 푸리에 변환(FFT)의 첫 번째 단계입니다. 모델은 규칙을 전혀 알려주지 않습니다. 셀프 어텐션과 경사 하강법을 통해서만 순수하게 위치 패턴을 발견하며, 이는 대규모 모델이 언어를 이해하도록 가르치는 것과 동일한 과정을 크게 확장한 것입니다. 학습 후 Card 4의 어텐션 맵을 보면 FFT의 버터플라이 라우팅 패턴이 나타납니다. 이 모델은 Cooley와 Tukey가 1965년에 발표한 것과 동일한 수학적 구조를 독립적으로 발견했습니다.
스택 구성 MacMind는 5개의 카드로 구성된 HyperCard 스택입니다:
- Card 1 (제목): 프로젝트 이름 및 크레딧
- Card 2 (학습): 모델을 학습시키고 실시간으로 학습 과정 관찰
- Card 3 (추론): 학습된 모델을 8자리 숫자 입력으로 테스트
- Card 4 (어텐션 맵): 8x8 어텐션 가중치 행렬 시각화
- Card 5 (정보): 모델이 수행하는 작업에 대한 텍스트 설명
학습 (Card 2) 'Train 10'을 클릭해 10번의 학습 단계를 거치거나, 'Train to 100%'를 클릭해 모델이 샘플에서 완벽한 점수를 얻을 때까지 학습시킬 수 있습니다. 더 깊은 학습을 위해서는 'Train 10'을 반복해서 실행하거나 'Train to 100%'를 다시 클릭하면, 중단된 시점부터 학습이 이어집니다. 더 오래 실행하려면 Message Box(Cmd-M)를 열고 trainN 1000을 입력하여 1,000단계를 연속으로 학습시키십시오. 각 단계에서 무작위 8자리 시퀀스가 생성되고, 전체 순전파가 실행되며, 교차 엔트로피 손실이 계산되고, 모든 레이어를 통해 기울기가 역전파되며, 1,216개의 모든 가중치가 업데이트됩니다. 진행률 표시줄, 위치별 정확도 및 학습 로그가 실시간으로 업데이트됩니다. 참고: 학습 로그 필드는 30,000자 제한(HyperCard의 제약)이 있습니다. 약 900단계 이후에는 로그가 가득 차서 HyperCard에 오류가 표시됩니다. 이를 지우고 계속하려면 Message Box(Cmd-M)를 열고 다음을 입력하세요: put "" into card field "trainingLog" 그런 다음 trainN 500(또는 원하는 단계 수)을 입력하여 학습을 재개합니다.
추론 (Card 3) 학습 후 'New Random'을 클릭하여 테스트 입력을 생성한 다음 'Permute'를 클릭하여 학습된 모델을 실행합니다. 출력 행은 모델의 예측을 보여주고 신뢰도 행은 각 위치에 대한 모델의 확신 정도를 보여줍니다. 결과를 확인하려면