어텐션이 뭐예요?
어텐션(그리고 트랜스포머)을 다음 콩을 고를 때 쟁반 위 모든 콩을 훑어보고 관련 있는 콩을 더 오래 보는 앵무새의 눈길 이야기로 풀어봤어요.
헷갈리는 낱말인데, 앵무새가 헷갈리지 않고 맞혔어요.'은행'은 돈 은행일 수도, 나무 열매일 수도 있어요. 앵무새는 멀리 있는 '강가'를 보고 골랐어요. 어떻게요?
옛날 앵무새는 바로 앞 콩 몇 개만 봤어요. 멀리 있는 콩은 잊었어요.콩을 순서대로 하나씩만 읽으면, 처음 콩은 끝에 가서 흐려져요. 그래서 '강가'를 잊고 '돈 은행'을 골랐어요.
어텐션은 다음 콩을 고를 때 모든 콩을 한 번씩 훑어보고, 관련 있는 콩을 더 오래 보는 거예요.쟁반 위 콩들 사이 선 굵기가 눈길이에요. 이 눈길을 겹겹이 쌓은 앵무새 머리가 트랜스포머예요 — 요즘 앵무새는 다 이렇게 생겼어요.
층마다 다른 눈길을 봐요. 번호표가 붙어 있어서 콩 순서도 알아요.한 번에 모든 콩을 보면 순서를 모를 것 같죠? 그래서 콩마다 번호표를 붙여요. 한 층 안에도 눈길 여러 갈래(헤드)가 있어서 여러 관련을 동시에 봐요.
관련을 잘 재는 것과 이해는 달라요. 그리고 눈길은 공짜가 아니에요.콩이 2배면 콩끼리 선은 4배예요. 그래서 긴 쟁반은 비싸고 느려요 — 콩을 아끼는 이유가 여기 있어요. 앵무새가 여전히 뜻은 모른다는 건 첫 이야기에서.
어텐션 = 다음 콩을 고를 때 쟁반 위 모든 콩을 한 번씩 훑어보고, 관련 있는 콩에 눈길을 더 주는 것. 이 눈길을 겹겹이 쌓은 앵무새 머리가 트랜스포머예요. 콩이 늘면 눈길 계산은 제곱으로 늘어요.
Attention. 시퀀스의 각 토큰이 다른 모든 토큰과의 관련도(쿼리·키 내적)를 계산해 가중합을 만드는 연산이에요. 자기 자신 시퀀스 안에서 하면 셀프 어텐션, 여러 갈래로 나누면 멀티헤드. 위치 정보는 positional encoding 으로 따로 붙여요. 이 층을 쌓은 구조가 트랜스포머이고, 비용이 시퀀스 길이의 제곱이라 긴 컨텍스트가 비싸요.
어른들은 이렇게 불러요
- 어텐션
Attention - 앵무새의 눈길. 다음 콩을 고를 때 모든 콩을 훑고, 관련 콩을 더 오래 봐요.
- 트랜스포머
Transformer - 눈길을 겹겹이 쌓은 머리. 요즘 앵무새는 거의 다 이 머리예요. GPT의 T가 이거예요.
- 셀프 어텐션
Self-attention - 쟁반 위 콩끼리 서로 보기. 밖이 아니라 같은 문장 안 콩끼리 눈길을 주고받아요.
- 층 · 헤드
Layer · Head - 눈길 층과 눈길 갈래. 층은 위로 겹겹이, 헤드는 한 층 안에서 여러 갈래. 층마다 갈래마다 다른 관련을 봐요.
- 위치 정보
Positional encoding - 콩마다 붙인 번호표. 한꺼번에 보면 순서를 모르니까 번호표를 붙여요.
- 제곱 비용
Quadratic cost - 콩 2배면 눈길 4배. 콩끼리 전부 선을 잇기 때문이에요. 긴 쟁반이 비싼 이유.
- 컨텍스트 창
Context window - 쟁반. 눈길이 닿는 콩은 쟁반 위 콩뿐이에요. → 앵무새 앞의 쟁반
- LLM
LLM - 책 산더미 앵무새. 이 눈길 머리로 책을 읽은 새예요. → 책을 산더미로 읽은 앵무새