- 저자가 수동으로 GPT-2와 유사한 트랜스포머 모델을 구축하여 간단한 시퀀스를 예측하고 트랜스포머와 주의 메커니즘에 대한 더 깊은 이해를 얻음.
- 트랜스포머는 기존 가중치를 사용하여 훈련되지 않았으며, 각 가중치는 수동으로 할당되었음.
- 트랜스포머에 선택된 작업은 "aabaabaabaab..." 시퀀스를 예측하는 것으로, 다음 출력을 결정하기 위해 이전 두 토큰을 조회하는 작업이 필요함.
- 저자는 'a'를 0으로, 'b'를 1로 나타내는 토큰화 체계를 사용함.
- 모델의 코드는 jaymody의 picoGPT GPT-2 구현을 기반으로 하며, 간소화를 위한 일부 수정이 이루어졌음.
- 모델의 차원에는 5의 컨텍스트 길이, 2의 어휘 크기, 8의 임베딩 크기가 포함됨.
- 저자는 임베딩 가중치를 설계하였으며, 첫 번째 5개 요소를 위치 1-핫 임베딩에, 다음 두 요소를 토큰 id 1-핫 임베딩에 사용함.
- 트랜스포머 블록은 q, k, v 행렬을 생성하고, 결과를 임베딩으로 다시 투영하며, 토큰 임베딩 가중치를 사용하여 그것을 다음 토큰 로짓 세트로 다시 투영하도록 설계되었음.
- 저자는 주의 헤드 디자인과 임베딩 공간으로의 투영에 대한 자세한 설명을 제공함.
- 마지막 단계는 트랜스포머 블록을 실행한 결과를 전치된 토큰 임베딩 가중치와 곱하여 최종 로짓을 얻는 것을 포함함.
- 모델은 훈련을 위해 소프트맥스 함수를 사용하며, 주어진 시퀀스에 대해 합리적인 완성을 생성할 수 있음.
- 모델은 모호하지 않은 컨텍스트로 테스트했을 때 100%의 성공률을 달성함.
- 저자는 독자들이 트랜스포머와 주의에 대한 더 직관적인 이해를 얻고, 자신의 모델을 만들어 보도록 권장함.
- 기사에는 numpy를 사용하여 계산하고 토큰화, 예측, 시퀀스 완성을 위한 함수를 정의하는 모델의 완전한 코드가 포함되어 있음.
- 저자는 컨텍스트 창을 축소하고, 퓨즈드 곱셈-덧셈, kv 캐싱 등의 기법을 사용함으로써 모델의 효율성을 향상시킬 수 있다고 제안함.
- 이 기사는 언어 모델 분야에서 특히 기계 학습과 AI에 관심이 있는 개인을 대상으로 함.