트랜스포머 블록의 구조
부품 네 가지를 어떤 순서로 이어야 할까요?
두 주역
참고하는 부품과 다듬는 부품
어텐션은 다른 토큰에서 정보를 모아 오고, 피드 포워드는 모은 정보를 토큰마다 따로 다듬습니다. 블록은 이 둘을 차례로 거칩니다.
토큰은 글을 잘게 나눈 조각이고, 벡터는 숫자 여러 개를 한 줄로 묶은 것입니다.
앞 절반
맞추고, 참고하고, 더합니다
들어온 값을 층 정규화로 고르게 맞춘 뒤 어텐션에 넣습니다. 어텐션에서 나온 값에는 처음 들어온 값을 그대로 더합니다.
층 정규화는 숫자들의 크기를 비슷하게 맞추는 계산입니다. 옆으로 돌아가는 길이 숏컷 연결입니다.
뒤 절반
같은 틀로 한 번 더
어텐션 자리에 피드 포워드가 들어갈 뿐, 맞추고 계산하고 더하는 틀은 똑같습니다.
블록 하나
맞추기, 계산, 더하기를 두 번
트랜스포머 블록 하나는 이 두 묶음입니다. 아래로 들어간 값이 두 묶음을 차례로 지나 위로 나옵니다.
왜 이 순서인가
층 정규화는 부품 앞에 둡니다
부품에 넣기 전에 눈금부터 맞추는 방식입니다. 처음 나온 트랜스포머는 부품 뒤에 두었는데, 그러면 훈련이 어려워지는 일이 많았습니다.
앞에 두는 방식을 사전 층 정규화, 뒤에 두는 방식을 사후 층 정규화라고 부릅니다.
하나 더 · 드롭아웃
더하기 직전에 값을 조금 끕니다
드롭아웃은 훈련할 때 값의 일부를 무작위로 0으로 만드는 장치입니다. 모델이 몇몇 값에만 기대지 않게 합니다. 블록에서는 두 부품 바로 뒤에 하나씩 들어갑니다.
이 모델은 열에 하나꼴로 끕니다. 5강에서 어텐션 안에 넣었던 것과 같은 장치입니다.
다음 편