안녕하세요
블레이즈 테크노트
블레이즈 입니다.
지난 2개의 포스팅에서
Attention is all you need 논문의 코드 중
transformer.py 의 앞부분을 살펴봤습니다.
https://blazetechnote.tistory.com/27
NLP 트랜스포머 코드 스터디 리뷰 (1) transformer.py
안녕하세요 블레이즈 테크노트 블레이즈 입니다. 트랜스포머 논문에 대해서는, 제가 지난 여러 포스팅에서 설명했습니다. 어텐션메커니즘1 어텐션메커니즘2 트랜스포머_포지셔널인코딩 트랜스
blazetechnote.tistory.com
https://blazetechnote.tistory.com/28
NLP 트랜스포머 코드 스터디 리뷰 (2) transformer.py
안녕하세요 블레이즈 테크노트 블레이즈 입니다. 지난 포스팅에서 Attention is all you need 논문의 코드 중 transformer.py 의 앞부분을 살펴봤습니다. 이번 포스팅에서는 transformer.py의 뒷부분을 살펴보
blazetechnote.tistory.com
이번 포스팅에서는 transformer.py의 전체 구조를 정리해보도록 하겠습니다.
원 코드는 아래의 링크를 통해 확인해보세요.
https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/models/transformer.py
제가 생각했을 때 transformer.py의 큰 구조는 아래 그림과 같습니다.
기본적으로 transformer.py 는 Transformer 클래스를 잘 정의하는 것에 그 핵심이 있습니다.
그리고 Transformer 클래스 중에서 body() 메서드가 가장 중요하다고 볼 수 있습니다.
body() 자체는 NLP 트랜스포머 코드 스터디 리뷰 (1) transformer.py 에서 자세히 봤습니다.
이 메소드의 역할을 크게 3단계로 구분지으면
input 준비, encoder, decoder 입니다.
input 준비는 features에 들어 있는 메타 데이터들을 할당하는 과정입니다.
encoder는 Transformer 클래스 내부의 encode() 메서드를 리턴합니다.
encode() 메서드는 transformer_layers 모듈의 transformer_encoder를 사용니
더 자세히 알려면 transformer_layers 모듈을 살펴봐야 할 것입니다.
다음으로 decoder는 Transformer 클래스 내부의 decode() 메서드를 리턴합니다.
decode() 메서드는 transformer_decoder()를 사용하는데 이 함수는
인코더 부분과 달리 transformer.py 하단에 정의되어 있습니다.
transformer_prepare_decoder(), transformer_self_attention_layer(),
transformer_decoder_layer(), transformer_decoder() 이렇게 순차적으로 정의가 되어 있는데,
self_attention_layer() 를 decoder_layer()가 사용하고
decoder_layer()를 decoder()가 사용하는
위계적 구성으로 되어있습니다.
그리고 self_attention_layer()의 경우 common_attention.multihead_attention() 과
common_layers.layer_preprocess() 를 사용하니 더 자세한 부분은 이 모듈의 코드를 직접 봐야 할 것 같습니다.
전체적인 구조를 한 번에 정리하면 아래의 그림과 같다고 볼 수 있습니다.
앞으로 차근차근
common_attention.py, common_layers.py도 리뷰할테니 기다려 주세요!
감사합니다.
NLP 트랜스포머 코드 스터디 리뷰 (1) transformer.py
NLP 트랜스포머 코드 스터디 리뷰 (1) transformer.py
NLP 트랜스포머 코드 스터디 리뷰 (1) transformer.py
'머신러닝(Machine Learning)' 카테고리의 다른 글
NLP 트랜스포머 다섯 번째, 여러 종류의 멀티헤드 어텐션과 피드 포워드 네트워크 FFN (0) | 2023.08.26 |
---|---|
NLP 트랜스포머 코드 스터디 리뷰 transformer_layers.py (0) | 2023.08.23 |
NLP 트랜스포머 코드 스터디 리뷰 (2) transformer.py (0) | 2023.08.19 |
NLP 트랜스포머 코드 스터디 리뷰 (1) transformer.py (0) | 2023.08.18 |
NLP 트랜스포머 모델 데이터셋 wmt14 다운로드하기 (0) | 2023.08.05 |