구현과 정리
셀프 어텐션은 코드로 몇 줄일까요?
답
여섯 줄입니다
q = x @ W_q쿼리k = x @ W_k키v = x @ W_v값scores = q @ k.T점수weights = softmax(scores / √dk)가중치context = weights @ v문맥 벡터
지금까지 본 내용이 한 줄씩 그대로 들어 있습니다.
x는 단어 벡터 표, .T는 표를 눕힌 것, @는 표끼리 곱하는 기호입니다. 파이토치라는 도구의 코드를 읽기 쉽게 줄여 썼습니다.
묶으면
여섯 줄을 묶으면 부품이 됩니다
프로그램에서는 이런 묶음을 클래스라고 부릅니다. LLM은 이 부품을 여러 층으로 쌓아서 만듭니다.
구현 방식
W 표를 만드는 방법이 두 가지입니다
기성 부품은 W의 처음 숫자를 훈련이 잘되도록 골라서 채워 줍니다. 그래서 실제로는 기성 부품을 씁니다.
nn.Parameter와 nn.Linear는 파이토치에 들어 있는 도구의 이름입니다. 이름은 몰라도 됩니다.
확인
두 방법의 출력이 다른 이유
계산이 달라서가 아니라 처음에 채운 숫자가 달라서입니다. W를 그대로 옮겨 넣으면 출력이 똑같아집니다.
4강 정리
여기까지 온 길
다음 강의