훈련 가능한 셀프 어텐션
방금 만든 어텐션은 배우지 못합니다
이유 1
고칠 수 있는 숫자가 하나도 없습니다
점수가 단어 벡터끼리의 점곱으로 그대로 정해집니다. 어느 단어를 봐야 하는지를 데이터에서 배울 곳이 없습니다.
이유 2
점수가 양쪽으로 항상 같습니다
하지만 한 단어가 다른 단어를 참고해야 하는 정도는 방향에 따라 다를 수 있습니다.
해법
단어의 역할을 셋으로 나눕니다
쿼리와 키로 점수를 매기고, 섞을 때는 값을 씁니다.
검색에 견주면
검색어, 제목, 본문입니다
검색어와 제목을 맞춰 보고, 잘 맞는 문서의 본문을 더 많이 가져옵니다. 숫자는 예시입니다.
만드는 방법
단어 벡터에 행렬을 곱합니다
행렬은 숫자를 줄과 칸으로 늘어놓은 표입니다. 표의 숫자를 세 개씩 묶어 단어 벡터와 점곱하면, 묶음마다 숫자가 하나씩 나옵니다.
W는 처음에 무작위로 채우고 훈련하면서 조금씩 고칩니다. 어디를 볼지를 배우는 곳이 이 세 표입니다.
점곱은 4편에서 본 대로 자리마다 곱해서 더하는 계산입니다. 예제의 W는 묶음이 둘이라 숫자 3개가 2개로 줄어듭니다.
헷갈리기 쉬운 것
'가중치'가 두 가지입니다
W는 모델이 훈련으로 익혀서 갖고 있는 숫자이고, α는 문장이 들어올 때마다 새로 계산하는 비율입니다.
다음 편