이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 딥러닝(Deep Learning) — 인공 신경망의 세계 → 순환 신경망 및 시퀀스 모델 — 순서가 있는 데이터 다루기 → 트랜스포머(Transformers)
다중 헤드 어텐션, 레이어 정규화(layer norm), 피드포워드를 포함한 완전한 transformer 인코더 블록을 조립합니다.
트랜스포머의 전체 구조를 한눈에 파악해볼게요.
2017년 바스와니 등이 "Attention Is All You Need"에서 제안한 이 모델은 자연어처리를 완전히 재편했어요.
핵심 아이디어는 순환 신경망 없이 어텐션만으로 시퀀스를 처리한다는 거예요.
그림 왼쪽을 보세요. 인코더 스택이 보이시죠? N개의 동일한 레이어를 쌓은 구조예요.
원논문에서는 N이 6이에요. 각 인코더 레이어에는 셀프 어텐션과 피드포워드 네트워크, 두 개 서브레이어가 있어요.
그림 오른쪽의 디코더 스택을 보면, 여기는 서브레이어가 세 개예요.
마스크드 셀프 어텐션, 크로스 어텐션, 피드포워드 네트워크 순서로 배치돼요.
가운데 파란 점선 화살표 보이시죠? 이게 크로스 어텐션의 핵심이에요.
인코더가 만든 키와 밸류를 디코더가 참조하는 거예요. 시퀀스 투 시퀀스 모델의 어텐션과 같은 원리죠.
각 서브레이어 뒤에 초록색 Add and LayerNorm 박스가 보이시나요? 이게 잔차 연결의 역할이에요.
잔차 연결 덕분에 레이어를 깊게 쌓아도 기울기가 안정적으로 흐를 수 있어요.
인코더는 입력 전체를 양방향으로 본다는 게 핵심이에요. 모든 위치가 다른 모든 위치를 참조할 수 있죠.
반면 디코더는 마스크드 셀프 어텐션으로 미래 토큰을 못 보게 해요. 왼쪽에서 오른쪽으로만 보는 거죠.
오른쪽 위 초록 박스를 보세요. 디코더 출력이 리니어 레이어와 소프트맥스를 거쳐 확률 분포가 돼요.
이 확률 분포에서 가장 높은 확률의 토큰을 선택하면 그게 모델의 예측이에요.
원논문의 주요 하이퍼파라미터를 정리하면, d_model이 512, 헤드가 8개예요.
피드포워드 네트워크의 은닉 차원 d_ff는 2048이에요. d_model의 4배죠.
왜 순환 신경망 대신 트랜스포머를 쓸까요? 핵심은 병렬 처리예요.
순환 신경망은 시퀀스를 한 토큰씩 순서대로 처리해야 하지만, 트랜스포머는 모든 토큰을 동시에 처리해요.
게다가 셀프 어텐션은 시퀀스 길이에 관계없이 모든 토큰 쌍의 관계를 직접 계산할 수 있어요.
이것이 장거리 의존성 문제를 해결한 핵심 메커니즘이에요.
이제 각 구성 요소를 하나씩 자세히 분석해볼 거예요.
선생님: 트랜스포머가 순환 신경망을 대체한 가장 핵심적인 이유가 뭘까요?
학생: 병렬 처리가 가능해서요? 순환 신경망은 순차적이라 느렸잖아요.
선생님: 맞아요! 그리고 셀프 어텐션으로 멀리 있는 토큰도 직접 참조할 수 있어요. 그런데 인코더와 디코더의 서브레이어 수가 왜 다를까요?
학생: 디코더에는 크로스 어텐션이 추가로 필요하니까요! 인코더가 이해한 내용을 참조해야 하잖아요.
선생님: 정확해요. 크로스 어텐션이 인코더의 키와 밸류를 가져와서 디코더가 적절한 출력을 생성할 수 있게 해주는 거예요.