Hidden state extraction · ELI5

답을 쓰게 한 게 아니라, 읽는 동안의 메모 복사했습니다.

같은 문제를 다섯 가지 문장으로 보여준 뒤, Qwen이 문장을 읽으며 각 층에서 만든 숫자 묶음인 hidden state를 꺼냈습니다.

정답을 새로 생성하지 않았습니다. 프롬프트만 읽히는 forward pass를 한 번 수행했습니다.

KO상관계수를 계산하세요
MIX1correlation coefficient를 계산하세요
MIX2상관계수를 calculate하세요
MIX3correlation coefficient를 calculate하세요
ENCalculate the correlation coefficient
층별 내부 메모
37개 지점 × 4,096개 숫자

실제로 한 일은 다섯 단계입니다.

같은 문제를 준비

EN, KO, MIX1, MIX2, MIX3을 한 묶음으로 준비했습니다.

모델 형식으로 포장

Qwen이 평소 대화할 때 쓰는 chat template을 똑같이 적용했습니다.

단어를 token으로 자름

어떤 token이 자연어와 바뀐 표현에 해당하는지 정확한 위치를 기록했습니다.

문장만 읽힘

output_hidden_states=True로 36개 층과 첫 embedding의 상태를 받았습니다.

층별 벡터를 저장

필요한 token을 평균내고 정규화한 뒤 표본별 압축 파일로 저장했습니다.

문장 전체를 통째로 보관하지 않고,
세 군데의 요약 메모만 남겼습니다.

모든 token의 모든 벡터를 저장하면 파일이 너무 커집니다. 그래서 각 층에서 연구 질문에 필요한 부분만 평균냈습니다.

평균

자연어 전체

질문이나 지시문에 속한 token을 모두 평균낸 대표 벡터입니다. 코드와 스키마는 모델이 읽지만 이 평균에는 넣지 않았습니다.

자연어 마지막 token

자연어 지시문의 마지막 지점에서 모델이 가지고 있던 벡터를 따로 저장했습니다.

부분

실제로 바뀐 표현

‘상관계수’와 ‘correlation coefficient’처럼 치환된 span의 token만 골라 평균냈습니다.

그다음 숫자 묶음끼리 거리를 비교했습니다.

KO와 MIX가 얼마나 다른지, MIX가 KO보다 EN에 가까워졌는지를 각 층에서 계산했습니다.

주의: EN에 가까워졌다는 사실만으로 지식 전이가 일어났다고 말할 수는 없습니다. 영어 단어가 겹쳐서 가까워진 부분도 포함될 수 있습니다.
KO → MIX → EN

Alignment gain
KO–EN 거리에서 MIX–EN 거리를 뺀 값입니다. 양수면 MIX가 EN 쪽에 조금 더 가깝습니다.

조금 더 정확히 보면
실행 모델은 revision을 고정한 Qwen3-8B입니다. 다섯 조건을 같은 batch에 넣고, 각 hidden vector를 L2 정규화한 뒤 cosine distance를 계산했습니다. 정오답 정보는 이미 끝난 benchmark 결과에서 가져와 hidden-state 지표와 연결했습니다. 즉, hidden state를 얻기 위해 답변 생성이나 채점을 다시 실행하지 않았습니다.

실제 구현: scripts/colab_full_representation_alignment.py
span 위치 계산: scripts/colab_representation_forward.py