본문으로 건너뛰기
실습하기

셀프 어텐션 (Self-Attention)

"나는 사과를 먹었다"라는 문장에서 “먹었다”라는 단어는 다른 단어를 어떻게 주목해야 할까요?

셀프 어텐션은 문장 속 단어들이 서로 어떤 관계를 맺고 있는지 스스로(Self) 비교하면서, 어떤 단어에 주목(Attention)해야 하는지 계산하는 방법입니다.

셀프 어텐션은 단어 간의 관계를 숫자로 계산해서, 각 단어가 다른 단어에 얼마나 집중해야 할지 결정합니다.

예를 들어 "먹었다"라는 단어가 각 단어에 주는 주목 점수는 다음과 같이 산출될 수 있습니다.

셀프 어텐션 예시
나는     → 0.1
사과를 → 0.8
먹었다 → 0.1

"먹었다"라는 단어는 "무엇을 먹었는지"가 중요하므로, "사과를"에 높은 점수를 부여합니다.

이러한 과정을 통해 트랜스포머는 문장 속 단어 간의 관계를 이해하고, 문맥을 파악할 수 있습니다.

단어주목해야 할 단어이유
나는없음 또는 사과를주어지만 큰 연결 없음
사과를먹었다목적어-동사 관계
먹었다사과를“무엇을 먹었다?”를 알려주는 단어

기존 RNN은 순차적으로 단어를 처리했기 때문에, 멀리 떨어진 단어끼리의 관계를 파악하기 어려웠습니다.

하지만 Self-Attention은 모든 단어 쌍을 한 번에 비교하면서, 문장 전체의 맥락을 고려합니다.

다음 수업에서는 이 Self-Attention을 여러 번 병렬로 사용하는 멀티헤드 어텐션 구조에 대해 알아보겠습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!