Model 앞서 구현한 Layers를 활용하여 Encoder와 Decoder의 class를 구현하고, 이를 합하여 Transformer class를 구현하였다. [목차] Encoder Decoder Transformer 1. Encoder Encoder에서는 Input Embedding과 Positional Encoding이 더해져 Encoder Layer에 입력되며 Encoder Layer는 N번 반복되었다. 논문에 따르면 Encoder Layer에 입력되기 전 dropout이 적용되었으며, Encoder Layer가 총 6번 반복되었다. 1.1. 알고리즘 순서 입력에 대한 input embedding, positional encoding 생성 add & dropout input embedding과 p..
Layers 먼저 구현한 Sub Layers와 PyTorch에서 제공하는 LayerNorm 함수를 활용하여 Encoder Layer와 Decoder Layer의 class를 구현하였다. 논문에서 mask는 Decoder Layer에서 한번 사용되었지만 padding token의 학습이 안되어도 됨으로 해당 내용을 추가하여 모든 Attention에서 mask가 사용되었다. [목차] Encoder Layer Decoder Layer 1. Encoder Layer Encoder Layer에서는 multi-head self-attention layer와 position-wise fully connected feed-forward network layer가 사용되었다. 논문에 따라 모든 Sub Layer의 out..
Embedding Transformer에서 사용되는 Embedding은 Input Embedding과 Output Embedding이 있으며, 이들과 더해지는 Positional Encoding이 있다. Input과 Output Embedding은 torch에서 제공하는 nn.Embedding을 사용하였으며, Positional Encoding은 논문에서 제시하는 수식을 따라 Positional Encoding class를 구현하였다. 1. Positional Encoding Positional Encoding은 시퀀스의 순서 (단어의 위치 정보) 를 알려주는 역할을 한다. Input과 Output Embedding이 입력될 때 Positional Encoding 정보가 더해져 Encoder와 Decod..
Sub Layers Encoder와 Decoder를 구성하는 Sub Layer로는 Multi-Head Attention과 Position-Wise Fully Connected Feed-Forward Network가 있다. Multi-Head Attention가 내포하는 Scaled Dot-Product Attention까지 총 3가지의 Sub Layer class를 구현하였다. [목차] Multi-Head Attention Scaled Dot-Product Attention Position-Wise Fully Connected Feed-Forward Network 1. Multi-Head Attention Multi-Head 이름은 입력된 Q, K, V 행렬을 Head의 수만큼 나누었기 때문에 붙여졌다...
Transformer 모델은 자연어 처리에서 가장 기본이 되고 있기 때문에, 한번 제대로 공부해 보고자 하는 마음에 논문부터 코드 구현까지 해보게 되었다. 코드는 hyunwoongko 님 깃허브 자료의 도움을 받았으며, Transformer 모델 구현부터 한영 번역 학습까지 진행하였다. 논문의 구성 요소들을 바탕으로 공부한 내용과 코드를 리뷰해 보았다. Date : 12월 9일 ~ 1월 15일 Paper: Attention Is All You Need Github Link: https://github.com/angiekim05/study/tree/master/Paper_Code_Practice/Transformer [ML/Transformer] - [딥러닝 / PyTorch] Transformer 구현 ..