

확률부터 LLM까지 — 데이터 사이언스 자기주도 학습 플랫폼
포지셔널 인코딩은 순서를 모르는 Self-Attention에 각 토큰의 위치 정보를 명시적으로 주입하는 장치로, 토큰 임베딩에 위치 벡터를 더해 Transformer의 실제 입력을 만든다.
이 내용은 넘스탯의 임베딩 시뮬레이터에서 직접 실험으로 확인할 수 있습니다.
각 단계를 클릭하면 해당 학습 내용을 볼 수 있습니다
학습 진도 (완료한 단계)
0%
Self-Attention은 문장 안의 모든 토큰 쌍을 한꺼번에 비교하는 계산입니다. 그런데 이 계산에는 "몇 번째"라는 개념이 없습니다. 토큰들을 순서 없이 모아 놓은 집합처럼 다루기 때문에, 단어의 순서를 바꿔도 계산 결과의 내용이 달라지지 않아요. 언어에서 순서는 뜻을 좌우하므로("개가 사람을 문다" 대 "사람이 개를 문다"), 각 토큰이 몇 번째 자리에 있는지를 알려주는 위치 정보를 입력에 명시적으로 더해 줘야 합니다. 이것이 포지셔널 인코딩입니다.
문장: "고양이 가 물고기 를 먹었다" 토큰 임베딩만 보면: {고양이, 가, 물고기, 를, 먹었다} — 순서 없는 집합과 같음 → "물고기 가 고양이 를 먹었다"와 구분 불가! 위치 인코딩을 더하면: 입력[0] = 임베딩(고양이) + 위치벡터(0) 입력[1] = 임베딩(가) + 위치벡터(1) 입력[2] = 임베딩(물고기) + 위치벡터(2) ... 같은 단어 "고양이"라도 0번 자리와 2번 자리에서는 다른 입력 벡터가 되어, 모델이 "누가 먹었고 무엇이 먹혔는지"를 구분할 수 있습니다.
정답: Self-Attention은 모든 토큰 쌍을 순서와 무관하게 비교하는 집합 연산이어서, 입력 토큰의 순서를 바꿔도 스스로는 그 차이를 알지 못하기 때문입니다. 어순이 뜻을 바꾸는 언어를 다루려면 위치 정보를 입력에 명시적으로 넣어야 합니다.
정답: 토큰 임베딩 벡터와 그 토큰의 위치 인코딩 벡터를 같은 차원에서 원소별로 더해 만듭니다. 즉 입력 = 토큰 임베딩 + 포지셔널 인코딩입니다.
정답: 아닙니다. 토큰 임베딩은 같지만 자리마다 위치 인코딩이 다르므로, 더한 결과인 입력 벡터는 자리마다 달라집니다. 이 차이 덕분에 모델이 순서를 구분합니다.