2P by GN⁺ | ★ favorite | 댓글 1개
  • 약 1,000만 파라미터의 decoder-only Transformer를 TinyShakespeare로 학습한 뒤, 자기 주의 이후 계산 결과가 어떻게 다음 토큰 확률로 바뀌는지 내부 상태와 실험으로 추적함
  • 핵심 가설은 각 Transformer 블록이 프롬프트를 학습 말뭉치의 특정 문자열 집합과 연결하고, 그 문자열들 뒤에 실제로 나온 토큰의 빈도 분포가 블록의 다음 토큰 예측에 가깝다는 것임
  • 구현한 근사 절차는 각 블록의 feed-forward network 출력과 비슷한 학습 문자열을 찾고, 뒤따른 문자 분포를 합산한 뒤 블록별 가중합으로 모델 출력을 재구성함
  • 20,000개 길이 10 프롬프트에서 근사 출력과 실제 Transformer 출력의 평균 Hellinger distance는 약 0.17이었고, 같은 구조를 다른 seed로 학습한 대체 모델들과 원 모델 간 거리는 약 0.11 ± 0.08이었음
  • 분석은 feed-forward 출력이 블록 변환에서 큰 비중을 차지하고 attention이 프롬프트를 올바른 학습 문자열 클래스에 매핑한다는 해석을 뒷받침하지만, 작은 모델 밖으로 일반화되는지는 알 수 없음

실험 대상 모델과 질문

  • 약 1,000만 파라미터의 Transformer를 Andrej Karpathy의 Let’s build GPT: from scratch, in code, spelled out를 따라 구현하고 학습함
    • 핵심 언어 모델 코드는 Karpathy의 작업이며, 내부 분석과 보조 코드는 별도 기여임
    • 관련 코드는 transformer-experiments에 있음
  • 모델은 6개 블록으로 구성된 decoder-only Transformer
    • 학습 데이터는 TinyShakespeare이며, Shakespeare 희곡 40,000줄을 포함함
    • RTX 4000 GPU에서 약 1시간 학습한 뒤 구조적으로 그럴듯한 가짜 Shakespeare 텍스트를 생성함
  • 토큰은 단어가 아니라 문자
    • 어휘 크기는 65개이며, 입력 프롬프트 다음에 올 문자 확률 분포를 예측함
    • 예를 들어 'my most gr' 다음 문자로 a를 0.819, e를 0.081, i를 0.059로 예측함
  • 핵심 질문은 자기 주의 자체가 아니라, attention 이후 결과가 어떻게 최종 다음 토큰 확률로 바뀌는지임

블록 구조와 feed-forward network의 비중

  • 각 Transformer 블록은 multi-head self-attention과 feed-forward network를 포함함
    • PyTorch 구조상 블록 출력은 x + self.sa(self.ln1(x)) 뒤에 x + self.ffwd(self.ln2(x))를 더하는 형태임
    • 중간 변수로 쓰면 블록 출력은 x + sa_out + ffwd_out으로 볼 수 있음
  • 분석 대상 모델에서 feed-forward network는 전체 학습 가능 파라미터의 65.71% 를 차지함
    • feed-forward 파라미터: 7,089,408개
    • 전체 학습 가능 파라미터: 10,788,929개
  • feed-forward network 출력은 블록 입력을 출력으로 바꾸는 주요 요인으로 보임
    • 이후 실험에서도 self-attention 출력만보다 feed-forward 출력이 최종 확률 분포에 더 큰 영향을 보임

비슷한 feed-forward 출력으로 문자열 찾기

  • 근사 절차는 프롬프트와 학습 말뭉치 문자열의 feed-forward 출력 유사도를 이용함
    1. 프롬프트를 모델에 넣고 각 블록의 feed-forward network 출력을 저장함
    2. 각 블록마다 학습 말뭉치에서 feed-forward 출력이 비슷한 문자열을 찾음
    3. 해당 문자열들 뒤에 온 토큰의 빈도 분포를 합산함
    4. 블록별 분포를 가중합하고 정규화해 확률 분포를 만듦
  • 데모 프롬프트 'And only l'에서는 1번 블록의 feed-forward 출력과 cosine similarity 0.95 이상인 길이 10 문자열 94개를 찾음
    • 찾은 문자열들은 hat only l, \nMy only l, I dearly l, ng Henry l, And only l처럼 대체로 y l 또는 ly l로 끝남
    • 이 문자열들 뒤에 온 문자들의 정규화 빈도 분포는 실제 모델의 다음 문자 예측과 매우 유사했음
  • 'And only l' 예시에서 근사와 실제 모델 예측은 가깝게 맞아떨어짐
    • 모델: i 0.437, o 0.204, a 0.195, e 0.160
    • 근사: i 0.389, o 0.250, a 0.222, e 0.139
    • Hellinger distance는 0.0711
  • 단일 블록만으로는 실패하는 경우도 있음
    • 프롬프트 'hing tremb'에서 1번 블록만 사용하면 모델은 l 0.999를 예측하지만 근사는 e 0.543, l 0.343이 되어 Hellinger distance가 0.6305
    • 전체 블록을 반영하면 같은 예시에서 근사가 l 0.997을 예측하고 Hellinger distance가 0.0233으로 낮아짐

계산 규모와 수동 튜닝

  • 효율을 위해 모든 분석은 주로 길이 10 문자열로 수행함
    • 학습 말뭉치는 1,115,394자이고, 고유 길이 10 부분 문자열은 858,923개임
    • feed-forward 출력은 384차원 float32 벡터이며, 6개 블록에서 하나씩 나옴
  • 20,000개 길이 10 문자열을 무작위로 골라 실험 프롬프트로 사용함
    • 각 프롬프트와 858,923개 고유 부분 문자열 사이의 블록별 cosine similarity를 미리 계산해 디스크에 저장함
    • 관심 있는 매칭은 cosine similarity 0.7 미만에서 나타나지 않았기 때문에, 0.7 이상만 사전 필터링함
  • 블록별 similarity threshold는 수동 튜닝으로 정함
    • 블록 0: 0.95
    • 블록 1: 0.94
    • 블록 2: 0.85
    • 블록 3: 0.76
    • 블록 4: 0.81
    • 블록 5: 0.89
  • 블록별 빈도 분포를 합칠 때도 수동 가중치를 사용함
    • 사용한 가중치는 [0.01, 0.01, 0.1, 1.5, 6, 0.01]
    • 딥러닝 방식으로도 가중치 탐색을 시도했지만 수동 튜닝보다 나은 결과를 얻지 못함

20,000개 프롬프트 평가

  • 전체 20,000개 프롬프트에 대해 근사 분포와 모델 출력 분포의 Hellinger distance를 계산함
    • 평균: 0.1677
    • 표준편차: 0.1215
    • 최솟값: 0.0013
    • 최댓값: 0.9994
  • Hellinger distance는 확률 분포 간 겹침을 측정하며, 0은 동일, 1은 겹침 없음임
  • 근사 품질을 비교하기 위해 같은 아키텍처를 다른 random seed로 3번 더 학습함
    • 원 모델 seed: 1337, 추정 training loss 0.9334, validation loss 1.5063
    • Alternate 1 seed: 1442, training loss 0.9293, validation loss 1.5038
    • Alternate 2 seed: 88, training loss 0.9294, validation loss 1.4991
    • Alternate 3 seed: 99999, training loss 0.9339, validation loss 1.4941
  • 원 모델과 대체 모델들의 평균 Hellinger distance는 약 0.11 ± 0.08
    • Original vs Alternate 1: 0.1064 ± 0.0823
    • Original vs Alternate 2: 0.1057 ± 0.0817
    • Original vs Alternate 3: 0.1053 ± 0.0828
  • 근사와 모델의 평균 거리 0.17은 대체 모델 간 거리 0.11보다 높지만, 표준편차 범위 안에 있어 근사가 꽤 좋다는 판단 근거가 됨

Transformer 내부 동작 해석

  • 모델은 임베딩 이후 여러 단계의 공간 변환으로 볼 수 있음
    • 6개 Transformer 블록은 384차원 임베딩 공간 안에서 입력 임베딩을 출력 임베딩으로 변환함
    • 마지막 LayerNorm과 linear layer는 임베딩 공간을 65차원 logit 공간으로 바꾸고, softmax가 다음 토큰 확률을 만듦
  • 블록 내부 변환은 벡터 덧셈으로 볼 수 있음
    • 블록 출력은 입력 x, self-attention 출력 sa_out, feed-forward 출력 ffwd_out의 합임
    • 분석에서는 feed-forward 출력 벡터들이 self-attention 출력보다 대체로 norm이 크고, 블록별로 두 출력이 대체로 비슷한 방향을 가리키는 패턴을 관찰함
  • feed-forward 출력만 더해도 최종 출력 벡터와 방향이 대체로 비슷함
    • feed-forward만 사용한 출력은 norm은 작지만 방향은 원래 출력과 가까움
    • 최종 LayerNorm 때문에 norm 차이는 최종 linear layer 입력에서 크게 중요하지 않음
  • 이 결과가 self-attention 계산을 제거해도 된다는 뜻은 아님
    • feed-forward network는 ffwd_out = self.ffwd(self.ln2(x + sa_out))처럼 self-attention 출력을 입력에 포함하므로, self-attention을 제거하면 feed-forward 출력 자체가 달라짐

토큰 subspace 가설

  • 특정 임베딩은 모델이 특정 토큰을 거의 확실하게 예측하게 만들 수 있음
    • 예를 들어 최종 블록 이후 LayerNorm과 linear layer에 들어갈 임베딩을 학습해 token a 확률이 거의 1이 되도록 만들 수 있음
    • Transformer 가중치는 고정하고 임베딩 텐서만 최적화함
  • 각 토큰에는 하나의 임베딩만 있는 것이 아니라 여러 임베딩이 존재함
    • 이를 각 토큰에 대응하는 복잡한 비선형 임베딩 subspace로 해석함
    • 각 토큰에 대해 수천 개의 고유 임베딩을 쉽게 학습할 수 있었음
  • subspace를 정확히 수학적으로 구하지는 못했지만, 최종 단계에서는 선형 근사가 잘 동작함
    • 각 토큰에 대해 학습한 임베딩들을 쌓고 SVD를 수행함
    • 첫 번째 right singular vector 하나가 해당 토큰 subspace의 1차원 선형 근사로 잘 작동함
  • 여러 토큰의 subspace 근사 벡터를 선형 결합하면 여러 토큰에 확률을 분산하는 임베딩을 만들 수 있음
    • ab의 근사 벡터를 더하면 두 토큰에 확률이 배분된 분포가 나옴
    • 단, 근사 오차, subspace 벡터의 비직교성, 토큰별 logit 크기 차이 때문에 완전한 50:50 분포가 되지는 않음

feed-forward 출력과 토큰 subspace의 대응

  • feed-forward 출력은 특정 토큰 subspace 쪽으로 블록 출력을 조정하는 것으로 해석됨
    • 그 토큰들은 근사 절차가 예측한 토큰, 즉 비슷한 feed-forward 출력을 만드는 학습 문자열 뒤에 나온 토큰과 일치함
  • 예시 med me Aut에서 마지막 블록만 보면 근사는 o를 가장 유력한 다음 토큰으로, h를 그다음으로 예측함
    • 같은 feed-forward 출력 벡터를 토큰 subspace 근사에 투영하면 가장 유사한 토큰도 o, h, i, u, y 순서였음
  • 예시 if and thy에서도 비슷한 대응이 나타남
    • 근사는 space, s, newline을 주요 예측 토큰으로 잡음
    • feed-forward 출력과 가장 정렬된 subspace도 space, s, newline 순서에 가까웠음
  • 전체 20,000개 프롬프트에 대해 임의 기준을 세워 집계함
    • 기준은 “근사 예측에서 확률 질량 90%를 차지하는 토큰들의 subspace가 feed-forward 출력과 cosine similarity 순위 상위 절반에 들어가는가”임
    • 최종 블록 기준으로 16,357개, 즉 81.78% 가 기준을 만족함

블록별 aggregate 결과와 chance 비교

  • 각 블록 위치에서 학습한 subspace 근사를 사용했을 때 기준 만족률은 뒤쪽 블록일수록 높음
    • 블록 6: 16,357개, 81.78%
    • 블록 5: 10,142개, 50.71%
    • 블록 4: 7,760개, 38.80%
  • 최종 단계의 subspace 근사를 모든 블록에 적용하면 더 나은 결과가 나옴
    • 블록 6: 81.78%
    • 블록 5: 68.26%
    • 블록 4: 58.15%
    • 블록 3: 57.34%
    • 블록 2: 52.02%
    • 블록 1: 49.71%
  • 무작위 cosine similarity로 기준이 우연히 만족될 가능성도 시뮬레이션함
    • 블록 6: 20.76% ± 0.25%
    • 블록 5: 20.55% ± 0.26%
    • 블록 4: 18.37% ± 0.24%
    • 블록 3: 18.20% ± 0.24%
    • 블록 2: 17.04% ± 0.23%
    • 블록 1: 16.31% ± 0.23%
  • 결과는 chance보다 훨씬 높지만, 측정 노이즈와 subspace 근사의 한계 때문에 결정적 증거로 보기는 어려움

self-attention의 역할

  • 이 해석에서 좋은 예측은 프롬프트를 학습 말뭉치의 올바른 문자열 클래스에 매핑하는 데 달려 있음
  • 그 매핑을 담당하는 축이 self-attention
    • attention layer는 프롬프트 토큰들 사이의 패턴을 식별함
    • 패턴은 끝부분의 y l 같은 단순한 문자열 패턴일 수도 있고, 특정 위치의 모음이나 대문자 같은 더 일반적인 토큰 종류일 수도 있음
  • attention head의 학습된 가중치는 어떤 패턴에 반응할지 결정함
    • attention head 출력이 feed-forward network를 거치면, 비슷한 학습 문자열 뒤에 나타난 토큰 분포 정보를 담은 임베딩 공간 표현이 됨
  • 분석 모델은 6개 블록과 블록당 6개 attention head를 가지므로, 한 프롬프트를 여러 잠재 패턴에 대해 평가할 수 있음

결론과 한계

  • 근사 절차와 실제 Transformer 출력이 유사하다는 증거는 강함
  • 근사 절차가 실제 Transformer 내부 계산과 대응한다는 증거는 덜 명확하지만, 적어도 부분적으로 맞을 가능성을 시사함
  • 작은 Transformer 하나에서 얻은 결과가 더 큰 모델이나 다른 데이터셋으로 일반화되는지는 알 수 없음
  • 이 프로젝트는 모델 내부에 질문을 던지고 실험을 설계하는 과정이며, 언어 모델의 “마법”을 단순한 메커니즘으로 환원하기보다 그 복잡성을 더 잘 보게 함

댓글과 토론

Hacker News 의견들
  • 부모 글의 몇몇 주제는 https://people.math.harvard.edu/~ctm/home/text/others/shanno...를 읽은 사람에게는 크게 놀랄 일이 아니어야 함
    자기 분야의 기초 문헌을 읽지 않으면, 이미 정리된 작업의 자연스러운 결과로 생기는 현상까지 설명 안 되는 신비처럼 보이게 됨
    그래도 실험은 첫눈에 봐도 꽤 철저해 보이고, 들어간 세부 작업량은 높이 평가함
    기존 이론을 배우는 것과 처음부터 다시 유도해보는 것 사이에는 어려운 절충이 있음. 전통적 기반이 없으면 새 발견이 가능하지만, 기반이 있으면 특정 현상을 더 깊게 이해할 수 있음
    여기 댓글에서, 데이터가 주어졌을 때 시퀀스의 로그 가능도를 최대화하는 모델이 추론 시에는 마법처럼 그 행동에서 벗어나지 않는다고 놀라는 사람이 여럿 보임. 이건 밀도 추정 모델인데, 허공에서 Shakespeare를 낭송하길 바라는 건가 싶음
    기본으로 돌아가야 이런 실험이 훨씬 더 잘 이해됨. 이미 이를, 그리고 이른바 창발 현상을, 설명하는 매우 명확한 수학적 기반이 있음
    더 구체적으로는 여러 층위가 있고, Shannon의 에르고딕 시스템 다루기가 좋은 출발점임. 여기서는 약간 어긋나는 부분이 있지만, 전체 동역학을 이해하는 데는 충분히 가까운 대응으로 보임

    • 아주 똑똑한 정보이론 연구자들이 몇 년 전부터 정보이론 관점으로 신경망을 보고 유명한 논문도 냈지만, 신경망의 많은 부분을 설명하지는 못했음. 그래도 흥미롭긴 했음
      똑똑한 사람들이 “이 수학적 구조가 저 아이디어와 비슷하다, 구조 몇 개만 더하거나 빼면 전부 설명된다”고 말하는 건 드문 일이 아님. 하지만 실제로는 모르는 게 많음
      이 분야 이론가들이 이론을 들고 와서 새로운 것을 만들거나 유용한 예측을 내놓는 건 본 적이 없음. 보통은 이것저것 시도해보고 작동하면 나중에 왜 됐는지 그럴듯한 설명을 붙이고, 안 되면 묻어두는 식임
      최근 올라온 transformer를 커널 평활화로 보는 글도 있었음: https://arxiv.org/abs/1908.11775
    • 말하는 바는 이해하지만, 서로 다른 깊이의 대안적 경로를 통해 수렴한다는 것 자체도 신호임
      반복적 재발견이 꼭 낭비는 아니고, 여러 도달 경로가 있는 깊은 진실을 확인하고 검증하는 과정일 수도 있음
    • 인접한 다른 스레드에서는 신경망이 훈련 데이터에 일정 오차 범위로 맞춰지는 것이 저작권에 어떤 의미가 있는지 이야기하고 있음
      정보이론 교과서 상당수는 이미 이런 네트워크의 내용 주소화(content-addressable) 성질을 짚고 있고[1], 이 목적 때문에 압축 같은 응용에도 쓰임[2][3]
      그래서 NYT가 OpenAI 모델에 자기 기사 몇 단락을 프롬프트로 넣었을 때 거의 그대로 재현된 것도 놀랄 일이 아님
      [1] https://www.inference.org.uk/itprnn/book.pdf
      [2] https://bellard.org/nncp/
      [3] https://pub.towardsai.net/stable-diffusion-based-image-compr...
    • 그렇다면 왜 Shannon은 GPT를 못 만들었나 싶음
  • Google이 같은 단어를 계속 반복하라고 하면 ChatGPT가 훈련 데이터를 그대로 토해내게 만들 수 있다고 지적한 것[0][1]을 보고 정확히 같은 아이디어를 떠올렸음. 누군가 실제로 구현해줘서 반가움
    여기서 추가 질문이 두 가지 생김

    1. 이 “AI야, AI를 잡아줘” 접근이, 경사하강법 역전파로 훈련 데이터를 모델에 압축한 뒤 전용 AI 보조 프로세서에서 돌리는 것보다 에너지 효율적일까?
    2. 이 결과가 OpenAI와 Stability AI를 상대로 진행 중인 소송에서 증거가 될까?
      [0] 예전에는 가능했음. OpenAI는 이제 문맥 창을 한 단어로 채우면 생성을 차단함
      [1] https://arxiv.org/abs/2311.17035
    • 이 접근은 원래 모델을 실행하는 것보다 효율적일 수 없음. 원래 모델을 돌려 활성값을 얻고, 그 활성값과 비슷한 문자열을 말뭉치에서 찾아 다음 토큰 통계를 계산해야 하기 때문임
      건너뛰는 단계가 많지 않고, 오히려 추가 작업이 많이 붙음
      모델 훈련용 말뭉치와 비슷한 활성값 문자열 검색용 말뭉치를 완전히 분리해도 거의 같은 결과가 나올 것 같음. 어려운 부분은 애초에 다음 토큰 통계가 비슷한 문자열에 대해 비슷한 활성값을 만들도록 하는 것이기 때문임
      층별 가중치 [0.01, 0.01, 0.1, 1.5, 6, 0.01]에서 가장 중요한 건 마지막 바로 전 층이고, 이때 입력은 이미 많이 변환된 상태임. 그래서 이걸로 transformer를 훈련 데이터에 대한 단순 grep으로 대체할 수 있다고 기대하면 안 됨
      마지막 바로 전 층 가중치가 최종 층보다 훨씬 큰 이유는 유도 헤드 때문일 것 같음. https://transformer-circuits.pub/2021/framework/index.html에서처럼 입력의 반복 문자열을 복사하는 기능을 구현하고, 마지막 바로 전 층이 무엇을 찾을지 정하며 최종 층이 복사를 수행하는 구조일 수 있음
    • LLM 출력이 훈련 데이터에 기반한 다음 토큰 확률에 따른다는 아이디어를 말하는 거라면, 그건 잘 알려진 기본 사실이라 이 결과가 증거가 될 가능성은 낮아 보임
      이 글의 기여는 저자가 말하듯 transformer 자체에 초점을 맞춘 “어떻게 구현하나?” 글들과 달리, 직접 GPT를 만드는 기술 독자에게 그 점을 보여준 데 있음
    • 차단되기 전에 해본 경험으로는, 실제 훈련 데이터처럼 보이는 것을 환각했음
      자세히 보면 존재하지 않고 앞뒤도 안 맞는 GitHub README, 아무 내용 없는 안내 브로셔, 무작위 대화 같은 식이었음
    • 링크한 arXiv 논문에서 이를 공격, 윤리, 책임 있는 공개로 다루는 점이 흥미로웠음
      그런데 이런 모델을 훈련시키려고 인터넷 전체를 긁어가는 일은 절대 공격이라고 부르지 않음
    • 어떤 저작물에 저작권이 있다면 그 저작물의 zip 파일에 대한 권리도 당연히 갖는 셈임
      그렇다면 그 저작물 안의 문자 확률분포에도 권리가 있다고 보면 안 될 이유가 뭘까?
  • Andrej Karpathy의 NanoGPT를 알게 되자마자 러시아어판 War and Peace로 훈련해봤는데, 겨우 3MB 모델인데도 러시아어 문법을 거의 파악한 점이 흥미로웠음
    러시아어는 복잡한 종합·굴절 구조를 갖고 있음. 예를 들어 전치사 “na”(“upon”) 뒤에는 대격 명사가 와야 하고, 이는 생물 남성 명사에는 -a, 무생물 명사에는 무어미, “soft consonant”로 끝나는 명사에는 -ia, 여성 명사에는 -u 등으로 나타남
    또 “사용하다”라는 동사는 도구로 쓰이는 명사가 뒤따르면 조격을 요구함
    완벽하지 않고 실수도 있었지만, NanoGPT가 단 3분 훈련으로 특정 복잡한 규칙을 추론했다는 점이 흥미로웠음. 생성한 정확한 예문을 원문에서 찾아봤지만 그대로 일치하는 것은 없었음
    다만 문법은 어느 정도 이해해도, 의미적으로는 완전한 헛소리였음

    • 어미 변화는 훈련 텍스트에서 가장 흔한 토큰에 속할 테니 아주 놀랍지는 않음
  • 같은 시스템을 보여주는 좋은 3D 시각화가 있었고, 함께 읽으면 효과가 클 것 같음
    LLM Visualization (https://bbycroft.net/llm)
    https://news.ycombinator.com/item?id=38505211

    • 이 시각화에 들어간 노력은 고맙지만, 신경망을 9년 다룬 입장에서는 도움이 되기보다 훨씬 더 헷갈렸음
      모든 항목을 한꺼번에 보여주려 한 탓이고, 추상 개념으로 미루지 않아서 그런 것 같지만 확신은 없음
  • 좋은 프로젝트지만, 분석 대상 모델은 크기와 훈련 데이터 양 모두에서 사실상 장난감 모델
    그래서 이 모델은 더 단순한 모델, 아마 n-gram 언어 모델로도 근사될 수 있겠지만, 더 큰 언어 모델이 작동하는 방식을 대표한다고 보긴 어려움

    • 아마 맞는 말임. 더 작은 모델을 만들면 그 작동 방식에 대해 훨씬 더 단순한 설명도 만들 수 있을 것 같음
  • 저자가 LLM이 마르코프 연쇄 텍스트 생성기라고 주장하는 건지 궁금함
    즉 생성되는 다음 토큰의 확률분포가 훈련 데이터에 있는 해당 토큰 시퀀스의 확률과 같다는 뜻인가?
    그렇다면 원래 훈련 데이터로 마르코프 연쇄를 “그냥” 만들면 LLM과 비슷한 성능을 얻을 수 있다는 뜻일까?

    • LLM은 다음 의미에서 마르코프 연쇄임
      상태는 문맥 길이만큼의 토큰 벡터이고, 모델은 전이 행렬을 기술함. 주어진 문맥 길이 크기의 토큰 벡터에 대해 다음 문맥 길이 크기의 토큰 벡터 확률을 내놓는 식임
    • 아님. LLM은 같은 텍스트를 그냥 복사하는 게 아니라, 자기어텐션으로 텍스트를 “분류”한 다음 단순한 마르코프 연쇄를 적용하는 것에 가까움
      어려운 부분은 어떤 훈련 데이터 텍스트가 프롬프트 텍스트와 “비슷한지”를 아는 분류임
      블로그 글의 예를 들면 다음과 같음
      Original string: 'And only l'
      Similar strings: 'hat only l' 's sickly l' ' as\nthey l' 'r kingly l'
    • 글에는 “transformer가 한다고 제안하는 일을 명령형 코드로 구현했고, transformer와 매우 비슷한 출력을 만든다”고 되어 있음
      이는 transformer를 우회하고 같은 결과를 얻는 방법이 있을 수 있음을 뜻함. 더 효율적인지 궁금함
      예를 들어 기반 모델이 주어졌을 때 다른 무언가를 훈련해 훨씬 작은 기기에서 실행하는 식이 가능할 수도 있음
  • 저자가 정확히 무엇을 보였다고 주장하는지 이해하기가 꽤 어려움
    “Interpretation: Why Does the Approximation Work?” 절을 몇 번 읽었지만 transformer 단계의 기계적 설명처럼 느껴짐. 핵심 주장이 뭔지 모르겠음

  • 어텐션과 FF 변위가 대체로 같은 방향을 가리키는 현상이 알려져 있는지 궁금함
    층을 가로질러 같은 잠재 공간에 있다는 것부터 좀 놀라움. FF 네트워크는 임의의 회전을 할 수도 있지 않나? 뭔가 잘못 이해한 것 같음

    • 매우 고차원 벡터를 2D로 표현한 것임
      뭔가는 빠질 수밖에 없고, 고차원 공간에서의 임의 회전을 정확히 묘사하는 것도 빠지는 것 중 하나임
    • 어텐션 덧셈을 스케일링으로 바꿔서 확인해보는 게 좋겠음