어떻게 중요한 데 집중하기, 어텐션
앞 레슨은 단어 하나에 좌표가 하나뿐이면 곤란할 때가 있다는 이야기로 끝났다. 'Apple'이라는 같은 단어도 옆에 'eat'이 오면 과일이고, 'stock'이 오면 회사다. 사람은 문장을 읽을 때 모든 단어를 똑같이 보지 않고, 지금 읽는 단어와 관계가 깊은 단어에 눈길을 더 준다. 기계에게도 이 솜씨를 가르쳐, 문장 속 다른 단어를 보고 단어의 뜻을 정하게 할 수 있어요. 이것을 어텐션이라고 한다.
중요한 단어에 더 집중해요
긴 문장을 읽을 때 우리는 단어마다 같은 힘을 들이지 않는다. 지금 읽는 단어를 이해하는 데 도움이 되는 단어를 골라 더 오래 본다. 예를 들어 'sat'이 무슨 일인지 알려면 누가 앉았는지 'cat'을 봐야 하고, 어디에 앉았는지 'mat'을 봐야 해요.
반면 관사나 전치사 같은 작은 단어는 이 물음에 별로 보태는 것이 없다. 중요한 단어에 더 집중하는 것, 이것이 어텐션의 첫걸음이다.
문장에서 단어 하나를 눌러 보자. 그 단어와 관계가 깊은 단어일수록 진하게 떠올라, 지금 단어가 어디에 집중하는지 보여요.
누르는 단어에 따라 진하게 뜨는 단어가 달라졌다. 진한 단어는 지금 단어에 중요한 단어이고, 흐린 단어는 별 상관이 없는 단어다. 사람도 글을 읽을 때 이렇게 해요.
그런데 기계는 무엇이 중요한지 어떻게 알까? 단어마다 좌표가 있으니, 지금 단어의 좌표와 다른 단어의 좌표를 견주어 관련도 점수를 매긴다. 어떻게 견줄지도 데이터에서 배운다. 무엇이 중요한지는 단어 혼자가 아니라 주변 단어와의 관계로 정해진다.
문맥이 뜻을 정해요
같은 단어인데 뜻이 달라질 때가 있다. 그 뜻을 정하는 것은 주변 단어, 곧 문맥이다. 'bank'라는 영어 단어를 보자. 옆에 'river'가 있으면 강둑이 되고, 'money'가 있으면 은행이 돼요.
단어 자체는 그대로인데 주변이 바뀌니 해석이 달라진다. 어텐션은 바로 이 주변을 살펴 뜻을 정한다.
가운데 단어는 그대로 두고, 옆에 붙일 문맥 단어를 눌러 바꿔 보자. 같은 단어인데 해석이 강가의 둑에서 돈을 맡기는 은행으로 바뀌어요.
옆 단어 하나를 바꿨을 뿐인데 해석이 통째로 달라졌다. 단어는 혼자서 뜻을 다 갖지 않고, 주변 단어와 어울릴 때 비로소 뜻이 또렷해진다.
그래서 지금 단어가 어느 단어에 집중하느냐에 따라 같은 단어가 다른 뜻으로 읽혀요. 이 성질이 가장 잘 드러나는 것이 뜻이 여럿인 단어, 다의어다.
다의어는 문맥 따라 좌표가 옮겨 가요
앞 레슨에서 단어는 의미 공간의 좌표라고 했다. 다의어는 그 좌표가 두 동네 사이에 걸쳐 있는 단어다. 'Apple'은 과일 동네에도 속하고 회사 동네에도 속해서, 혼자 있으면 어느 쪽인지 알 수 없어요.
그런데 옆에 'eat'을 붙이면 좌표가 과일 쪽으로 끌려가고, 'stock'을 붙이면 회사 쪽으로 끌려간다. 문맥이 흐릿한 좌표를 한쪽으로 정해 주는 셈이다.
'Apple' 옆에 'eat'이나 'stock'을 눌러 붙여 보자. 의미 좌표가 과일 동네와 회사 동네 사이를 오가요.
같은 'Apple'인데 옆 단어 하나로 자리가 확 바뀌었다. 어텐션이 하는 일의 핵심이 이것이다. 지금 단어의 새 좌표를 주변 단어들의 좌표를 섞어서 다시 만든다. 많이 집중한 단어의 좌표는 많이, 적게 집중한 단어의 좌표는 조금만 섞는다.
그렇다면 집중은 어떻게 나눌까? 옆 단어 모두에게 똑같이 나누지 않고, 관련도가 큰 쪽에 더 많이 준다.
관련도를 가중치로 나눠요
관련도 점수를 그대로 쓰지 않고, 모두 더하면 딱 1이 되는 몫으로 바꾼다. 이 몫을 가중치라고 부른다. 관련이 큰 단어일수록 더 큰 몫을 받아요.
합이 정해져 있으니 한 단어가 많이 가져가면 나머지는 그만큼 적게 가져간다. 집중할 수 있는 양은 한정돼 있고, 그것을 어디에 더 쓸지 골라 나누는 셈이다.
단어 막대를 눌러 집중을 더 줘 보자. 한 단어가 많이 가져가면 나머지가 줄어들어, 가중치를 모두 더한 값은 늘 1로 유지돼요.
한 단어에 집중을 몰아주자 나머지 단어들이 그만큼 몫을 내주었고, 합은 끝까지 1이었다. 이렇게 나눈 가중치가 어느 단어를 얼마나 볼지 정한다. 큰 가중치를 받은 단어일수록 지금 단어의 새 좌표를 자기 쪽으로 세게 끌어당겨요.
그래서 'Apple'의 좌표가 가중치가 큰 이웃 쪽으로 옮겨 간다. 실제 언어 모델은 이런 계산을 문장의 모든 단어에 대해 동시에 하고, 서로 다른 관점의 어텐션 여러 개를 나란히 돌린다.
정리
정리하면 이렇다. 문장을 읽을 때 모든 단어를 똑같이 보지 않고, 지금 단어에 중요한 단어에 더 집중한다. 관련도 점수를 모두 더하면 1이 되는 가중치로 바꾸고, 그 가중치만큼 주변 단어의 좌표를 섞어 지금 단어의 좌표를 새로 만든다.
그래서 문맥이 뜻을 정하고, 'Apple' 같은 다의어의 좌표가 문맥에 따라 과일 쪽이나 회사 쪽으로 옮겨 가요. 이것이 어텐션이다.
핵심을 차례로 눌러 되짚어 보자. (중요한 데 집중 → 문맥이 뜻을 정함 → 다의어 좌표 이동 → 가중치 합은 1)
이제 어텐션이 무엇인지 알았다. 단어를 다 똑같이 보지 않고 중요한 단어를 골라 집중한다는 단순한 생각 덕분에, 같은 단어도 옆 단어에 따라 다른 뜻으로 읽힌다. 기계가 단어를 문맥 속에서 읽게 된 것이에요.
어텐션을 여러 층으로 쌓은 구조를 트랜스포머라고 부른다. 오늘날의 거대 언어 모델, 곧 LLM은 이 트랜스포머 위에서 다음 단어를 맞히는 기계다. LLM이 어떻게 글을 만들어 내는지 다음 레슨에서 살펴본다.