코잘 어텐션 부품
문장이 한꺼번에 여러 개 들어오면 어떻게 할까요?
먼저 조립
4강의 계산에 두 단계가 끼어듭니다
쿼리, 키, 값은 4강에서 만든 세 벡터입니다. 단어 벡터에 W라는 숫자 표를 곱해 만들고, W는 훈련하면서 고쳐 갑니다.
이 여섯 단계를 묶은 부품이 코잘 어텐션입니다.
입력
문장을 묶음으로 받습니다
실제 훈련에서는 문장을 여러 개씩 묶어 한 번에 넣습니다. 이 묶음을 배치라고 합니다. 실습은 같은 문장을 두 장 쌓았습니다.
출력
문장 수와 단어 수는 그대로입니다
문장마다 같은 계산을 따로 합니다. 문장끼리는 서로 보지 않습니다. 바뀐 것은 단어마다 숫자 수뿐이고, W의 크기에 따라 3개가 2개로 줄었습니다.
마스크는
훈련해도 바뀌지 않는 표입니다
W는 훈련으로 고쳐 가는 숫자이고, 마스크는 '뒤를 보지 않는다'는 규칙입니다. 그래서 부품에 붙여만 두고 훈련 대상에서 뺍니다.
코드에서는 이렇게 붙여 두는 고정된 표를 버퍼라고 부릅니다.
문장 길이가 달라도
큰 마스크 하나를 잘라 씁니다
받을 수 있는 가장 긴 길이로 한 번만 만들어 둡니다. 짧은 문장이 오면 왼쪽 위만 잘라 씁니다.
그림의 10은 예시입니다. 실제 모델인 GPT-2는 1,024입니다.
다음 편