Transformer에 대한 이해

김회정·2023년 7월 8일
0

머신러닝

목록 보기
3/7

1. Query, Key, Value

트랜스포머 구조는 입력 시퀸스 내의 아이템 간의 연관성을 파악하기 위해 attention을 사용한다. 자연어 처리의 맥락에서 말을 하자면 시퀸스는 문장이 되고 아이템은 단어(토큰)이 될 것이다. attention은 각 단어가 다른 단어와 얼마나 연관성이 있는지 나타내는 지표이다. 이러한 attention을 구하기 위해서 query, key, value라는 개념을 사용한다.

query, key, 그리고 value는 모두 벡터로 표현되며, 쉽게 이해하기 위해서는 query는 각 아이템이 어떠한 정보를 찾고있는지를 나타낸다고 생각하고 key는 각 아이템이 어떠한 정보를 담고있는지 나타내고 있다고 생각해볼 수 있다. 그래서 query와 key의 행렬곱은 시퀸스 내에 존재하는 각 아이템들이 다른 아이템으로부터 얻을 수 있는 정보에 대한 유용도 점수라고 이해할 수 있다. 따라서 점수가 높을 수록 특정 아이템이 한 아이템에 대해 유용한 정도가 높다고 이해할 수 있다.

query와 key의 행렬곱으로 계산된 attention score에 대한 행렬은 softmax를 적용하여 각 아이템의 차원에 따라 값을 모두 더했을 때 1이 되도록 정규화 된다. attention score 행렬은 다시 value 행렬과 곱해진다. attention score와 value의 행렬곱은, 한 아이템을 기준으로 했을 때, 한 아이템에 대해 다른 아이템들이 가지는 유용도를 기준으로 다른 아이템들이 가지고 있는 정보를 가중합하는 것으로 이해할 수 있다. 즉, 한 아이템에 대한 다른 아이템의 유용도가 클 수록 해당 아이템이 가지고 있는 정보가 더욱 크게 반영된다는 의미로 해석할 수 있다.

예시를 통해 알아보자. query 벡터와 key의 행렬곱으로 계산된 attention score는 softmax를 적용하면 열에 따라 값을 모두 더했을때 1이 되는 가중치 값으로 변한다.

attention score와 value의 행렬곱으로 생성된 값을 첫번째 행을 중심으로 살펴보자. 행렬곱의 첫번째 행의 값은 attention score에 따라 value 벡터의 시퀸스에서 첫번째 행의 값은 0.0095의 비중만큼 참고하고, 두번째 행의 값은 0.0653의 비중만큼 참고하고, 세번째 행의 값은 0.0940의 비중만큼 참고하고, 마지막 아이템의 값은 0.8313의 비중만큼 참고했다는 의미이다.

이러한 이해를 바탕으로 decoder에서 softmax를 적용하기 이전의 attention score 값에 mask를 적용해 시퀸스에서 개별 아이템을 기준으로 이후 아이템에 대한 값을 음의 무한대 값으로 설정해주는 것은 자신보다 늦게 등장하는 아이템에 대한 정보를 반영하기 위한 조치로 볼 수 있다. 마스킹된 영역을 매우 작은 값으로 설정하면 softmax를 적용했을 때 0이라는 점수가 나오기 때문이다.

encoder는 시퀸스 전체의 의미를 파악하는 것을 목적으로 하기 때문에 앞서 언급한 마스크를 적용하지 않는다. 따라서 encoder에서는 시퀸스 상의 순서와 상관없이 시퀸스 내의 각 아이템들이 모든 아이템들에 대하여 attention score를 구한다.

profile
안녕하세요

0개의 댓글