머신러닝의 기초
Transformer에서 사용되는 셀프 어텐션(자기 주의 메커니즘)에 대한 설명으로 적절한 것은?
- A시퀀스의 요소를 앞에서부터 하나씩 차례로 읽어 들이고, 이전 요소의 은닉 상태를 다음 요소로 넘기면서 시퀀스 전체의 정보를 모아 간다
- B각 토큰의 쿼리와 모든 토큰의 키의 유사도로부터 가중치를 구하여 밸류의 가중합을 취하므로, 시퀀스의 모든 위치의 계산을 병렬로 수행할 수 있다
- C각 토큰에 대해 이웃한 정해진 수의 토큰만 보는 합성곱을 여러 층 쌓고, 떨어진 토큰과의 관계는 다루지 않도록 한다
정답과 해설 보기
정답: B. 각 토큰의 쿼리와 모든 토큰의 키의 유사도로부터 가중치를 구하여 밸류의 가중합을 취하므로, 시퀀스의 모든 위치의 계산을 병렬로 수행할 수 있다
셀프 어텐션에서는 각 토큰의 벡터로부터 쿼리(Q), 키(K), 밸류(V)를 만들고, 쿼리와 모든 키의 내적을 소프트맥스 함수로 가중치로 바꾸어 밸류의 가중합을 구합니다. 어느 토큰이든 떨어진 토큰의 정보를 직접 받아들일 수 있는 데다, 계산은 행렬 곱으로 정리되고 RNN처럼 이전 시점의 결과를 기다릴 필요가 없으므로, 학습할 때 시퀀스의 모든 위치를 병렬로 계산할 수 있습니다. 이 계산 자체에는 어순 정보가 포함되지 않으므로, 위치 정보를 더하는 위치 인코딩을 조합합니다. 한편 계산량은 시퀀스 길이의 제곱에 비례하여 늘어납니다.