├── .gitattributes ├── Review ├── Listen, Attend and Spell.pdf ├── Connectionist Temporal Classification.pdf ├── JOINT CTC-ATTENTION BASED END-TO-END SPEECH RECOGNITION.md ├── BERT_ Pre-training of Deep Bidirectional Transformers for Language Understanding.md ├── Attention-Based Models for Speech Recognition.md ├── SpecAugment_ A Simple Data Augmentation Method for Automatic Speech Recognition.md ├── Conformer.md └── Attention Is All You Need.md ├── LICENSE └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /Review/Listen, Attend and Spell.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/upskyy/Paper-Review/HEAD/Review/Listen, Attend and Spell.pdf -------------------------------------------------------------------------------- /Review/Connectionist Temporal Classification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/upskyy/Paper-Review/HEAD/Review/Connectionist Temporal Classification.pdf -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Sangchun Ha 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Paper-Review 2 | - Paper Review about Speech Recognition · NLP 3 | 4 | 5 | |Year|Paper|Links| 6 | |:---:|:---:|:---:| 7 | |`2006/06`|`Connectionist Temporal Classification: Labelling UnsegmentedSequence Data with Recurrent Neural Networks`|[Paper](https://www.cs.toronto.edu/~graves/icml_2006.pdf) [Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/Connectionist%20Temporal%20Classification.pdf)| 8 | |`2015/06`|`Attention-Based Models for Speech Recognition`|[Paper](https://arxiv.org/pdf/1506.07503.pdf) [Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/Attention-Based%20Models%20for%20Speech%20Recognition.md)| 9 | |`2015/08`|`Listen, Attend and Spell`|[Paper](https://arxiv.org/pdf/1508.01211.pdf) [Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/Listen%2C%20Attend%20and%20Spell.pdf)| 10 | |`2016/09`|`Joint CTC-Attention based End-to-End Speech Recognition using Multi-task Learning`|[Paper](https://arxiv.org/pdf/1609.06773.pdf) [Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/JOINT%20CTC-ATTENTION%20BASED%20END-TO-END%20SPEECH%20RECOGNITION.md)| 11 | |`2017/07`|`Attention Is All You Need`|[Paper](https://arxiv.org/pdf/1706.03762.pdf) [Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/Attention%20Is%20All%20You%20Need.md)| 12 | |`2018/10`|`BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding`|[Paper](https://arxiv.org/pdf/1810.04805.pdf) [Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/BERT_%20Pre-training%20of%20Deep%20Bidirectional%20Transformers%20for%20Language%20Understanding.md)| 13 | |`2019/04`|`SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition`|[Paper](https://arxiv.org/pdf/1904.08779.pdf) [Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/SpecAugment_%20A%20Simple%20Data%20Augmentation%20Method%20for%20Automatic%20Speech%20Recognition.md)| 14 | |`2020/05`|`Conformer: Convolution-augmented Transformer for Speech Recognition`|[Paper](https://arxiv.org/abs/2005.08100) [Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/Conformer.md)| 15 | 16 | -------------------------------------------------------------------------------- /Review/JOINT CTC-ATTENTION BASED END-TO-END SPEECH RECOGNITION.md: -------------------------------------------------------------------------------- 1 | # JOINT CTC-ATTENTION BASED END-TO-END SPEECH RECOGNITION USING MULTI-TASK LEARNING 2 | https://arxiv.org/pdf/1609.06773.pdf 3 | 4 | ### Abstract 5 | 6 | - CTC와 attention을 합친 새로운 end-to-end 음성인식 방법을 제안한다. 7 | 8 | ### 1. INTRODUCTION 9 | --- 10 | End-to-End 음성인식 방법은 두 가지로 나눌 수 있다. 11 | 첫 번째는 Connectionist Temporal Classification (CTC), 12 | 두 번째는 Attention-based encoder-decoder 방법 이다. 13 | 14 | 두 번째 방법으로 실시간 음성인식을 할 때, noise 때문에 alignment를 잘못 예측하기도 하고 15 | input sequence가 길 때, alignment를 잘못 예측하여 초기 학습이 어려울 때도 있다. 16 | 이러한 misalignment 문제를 해결하기 위해 joint CTC-attention model을 제안한다. 17 | 핵심은 CTC와 attention model이 encoder부분을 공유하고 있는 것이다. 18 | forward-backward 알고리즘을 사용하는 CTC loss를 통해 alignment 문제를 해결하여 성능을 높일 수 있다고 본 논문은 말하고 있다. 19 | 20 | ### 2. JOINT CTC-ATTENTION MECHANISM 21 | --- 22 | #### 2.1 Connectionist temporal classification (CTC) 23 | CTC의 핵심 아이디어는 blank와 반복되는 label을 통해 가능한 24 | 모든 label sequence 조합을 구하는 것이다. 25 | ![a](https://user-images.githubusercontent.com/54731898/104768730-78a77380-57b1-11eb-94ee-be13ae75fef6.PNG) 26 | P(y|x)가 최대가 되도록 모델을 학습한다. 27 | 더 자세한 내용은 [Connectionist Temporal Classification Paper Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/Connectionist%20Temporal%20Classification.pdf)를 참고하시면 좋을 것 같습니다. 28 | 29 | 30 | #### 2.2 Attention-based encoder-decoder 31 | ![b](https://user-images.githubusercontent.com/54731898/104768735-7a713700-57b1-11eb-9a2e-d4ab72d7257a.PNG) 32 | 전반적인 구조는 Encoder와 Attention-Decoder형태로, 2개의 RNN으로 구성되어 있다. 33 | Encoder에서 음성 정보에 집중하고, AttentionDecoder에서 문자에 대한 확률 분포를 생성한다. 34 | 더 자세한 내용은 [Listen, Attend and Spell Paper Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/Listen%2C%20Attend%20and%20Spell.pdf)를 참고하시면 좋을 것 같습니다. 35 | 36 | ![c](https://user-images.githubusercontent.com/54731898/104768737-7ba26400-57b1-11eb-9d2a-a652243a2c62.PNG) 37 | 다음과 같은 과정을 통해 attention mechanism을 구현하고, decoder에서 output을 뽑아낼 때 사용한다. 38 | 본 논문에서는 location-based 방법이라고 적혀 있지만, location-aware 이라고 더 많이 불린다. 39 | 이 방법이 음성인식 attention mechanism으로 많이 사용된다. 40 | 더 자세한 내용은 [Attention-Based Models for Speech Recognition Paper Review](https://github.com/hasangchun/Paper-Review/blob/main/Review/Attention-Based%20Models%20for%20Speech%20Recognition.md)를 참고하시면 좋을 것 같습니다. 41 | 42 | #### 2.3 Proposed model: Joint CTC-attention (MTL) 43 | ![d](https://user-images.githubusercontent.com/54731898/104768782-91b02480-57b1-11eb-9bbe-8f99e4e5e4db.PNG) 44 | 이 모델의 아이디어는 attention model encoder를 학습하는데 보조적으로 CTC loss 함수를 사용하는 것이다. 즉, 공유되는 encoder가 CTC와 attention model 둘 다에 의해 학습이 되는 것이다. 45 | 46 | CTC의 forward-backward 알고리즘이 단조로운 alignment를 강화함으로써 noisy한 상황에서 조금 더 robust 해진다고 말하고 있다. 또 다른 이점으로는 학습이 빠르게 진행된다는 것이다. 47 | 48 | 49 | ![e](https://user-images.githubusercontent.com/54731898/104768786-92e15180-57b1-11eb-9651-952dd8a8973f.PNG) 50 | loss 함수는 CTC loss 값과 attention loss 값을 적절하게 더해주어서 사용한다. 51 | λ는 하이퍼파라미터로 0 이상 1 이하의 값이다. 52 | 53 | 54 | ### EXPERIMENTS 55 | --- 56 | ![f](https://user-images.githubusercontent.com/54731898/104768794-94ab1500-57b1-11eb-8bb5-eb07f4910892.PNG) 57 | 본 논문 실험 결과에서는 λ값이 0.2 일 때 58 | CER(Character Error Rate)이 가장 낮은 것을 확인 할 수 있다. 59 | 60 | ![g](https://user-images.githubusercontent.com/54731898/104768799-95dc4200-57b1-11eb-913f-68e62d1dfd6a.PNG) 61 | CTC와 Attention 방법보다 MTL 방법이 더 빠르게 학습해나가는 것을 확인 할 수 있다. 62 | 63 | ![h](https://user-images.githubusercontent.com/54731898/104813032-d5566d00-5849-11eb-83d4-953a99d055a8.PNG) 64 | 65 | 보통 음성인식이나 음성합성의 경우 alignment가 일직선인 경우가 많은데 66 | Attention만 사용한 방법보다 MTL 방법이 더 잘 예측한 것을 확인 할 수 있다. 67 | 68 | -------------------------------------------------------------------------------- /Review/BERT_ Pre-training of Deep Bidirectional Transformers for Language Understanding.md: -------------------------------------------------------------------------------- 1 | # BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 2 | https://arxiv.org/pdf/1810.04805.pdf 3 | ![a](https://user-images.githubusercontent.com/54731898/109606223-b0078f00-7b69-11eb-8fea-a0562c4ab7c4.jpg) 4 | 5 | 6 | ## Abstract 7 | --- 8 | - 새로운 언어 모델 BERT(**B**idirectional **E**ncoder **R**epresentations from **T**ransformers)를 소개합니다. 9 | - 트랜스포머의 인코더로 이루어져 있습니다. 10 | - 레이블 되지 않은 데이터로 pre-train을 하고, 레이블 된 데이터로 fine-tuning을 합니다. 11 | - 모든 자연어 처리 분야에서 좋은 성능을 내고 있습니다. 12 | 13 | ## Introduction 14 | --- 15 | OpenAI GPT 같은 경우는 left-to-right 구조를 사용합니다. 즉, self-attention layers에서 이전 토큰의 정보들을 통해 다음 토큰을 예측합니다. 16 | 본 논문에서는 이러한 단방향성이 양방향의 정보들을 통합해야 하는 question answering 같은 태스크에 fine-tuning을 어렵게 한다고 말하고 있습니다. 17 | 따라서 masked language model(MLM)을 사용하여 단방향성의 제약을 해결합니다. 18 | MLM 방법은 input의 일부 토큰을 랜덤으로 마스킹하고 양방향의 토큰 정보들을 통해 마스킹 된 토큰의 id를 예측하는 방법입니다. 19 | 이외에도 next sentence prediction(NSP)방법을 사용합니다. 20 | 21 | BERT의 코드와 사전 학습된 모델은 [여기](https://github.com/google-research/bert)에서 확인하실 수 있습니다. 22 | 23 | ## BERT 24 | --- 25 | ![b](https://user-images.githubusercontent.com/54731898/109619922-a89db100-7b7c-11eb-96f2-b722bfd3d580.PNG) 26 | 27 | Pre-training과 fine-tuning, 2개의 스텝으로 나눌 수 있습니다. 28 | Pre-training에서는 unlabeled data로 학습을 합니다. 29 | Fine-tuning에서는 처음에 사전 학습된 모델의 파라미터로 초기화된 후, labeled data로 fine-tuning을 합니다. 30 | 31 | ### Model Architecture 32 | L : layer 개수 33 | H : 히든 디멘션 34 | A : 셀프 어텐션 헤드 개수 35 | 36 | ||L|H|A|Total Parameters| 37 | |:---:|:---:|:---:|:---:|:---:| 38 | |**BERT(base)**|12|768|12|1.1억| 39 | |**BERT(large)**|24|1024|16|3.4억| 40 | 41 | BERT(base) 같은 경우는 OpenAI GPT와 비교하기 위해 모델 사이즈를 같게 하였습니다. 42 | 43 | ### Input/Output Representations 44 | ![c](https://user-images.githubusercontent.com/54731898/109622145-22369e80-7b7f-11eb-8285-12539cbdb732.PNG) 45 | 46 | 모든 문장의 시작에는 항상 [CLS] 토큰을 사용합니다. 그리고 문장을 구분하기 위해서 두 가지 방법을 사용하는데, 47 | 첫 번째 방법은 문장 사이의 [SEP] 토큰을 사용하는 것입니다. 48 | 두 번째 방법은 A문장인지 B문장인지를 나타내주는 segment embedding을 추가하는 것 입니다. 49 | 따라서 input data는 토큰에 대한 임베딩 값과 세그먼트 임베딩 값과 위치를 알려주는 포지션 임베딩 값을 모두 더해서 표현해줍니다. 50 | 51 | 52 | 53 | ## Pre-training BERT 54 | --- 55 | ![d](https://user-images.githubusercontent.com/54731898/109630846-b9542400-7b88-11eb-8d63-63eda6384e0e.PNG) 56 | 57 | ### Task #1: Masked LM 58 | 랜덤하게 인풋 토큰의 몇 퍼센트를 마스킹하고, 마스킹 된 토큰을 예측합니다. 마스킹 된 토큰의 마지막 히든 벡터에 소프트맥스를 취하여 예측합니다. 본 논문에서는 15% 마스킹을 진행하였습니다. 59 | 60 | 61 | ### Task #2: Next Sentence Prediction (NSP) 62 | Question Answering(QA)과 Natural Language Inference(NLI) 같은 태스크들은 두 문장 사이의 관계를 이해하는 것이 중요합니다. 그런데 이러한 것들은 앞서 말씀드린 language modeling만으로는 조금 부족합니다. 그래서 다음 문장을 예측하는 태스크를 사전 학습 합니다. 63 | 예를 들어, 50% 정도는 IsNext로 레이블링 되어 실제 다음 문장이 들어가고 나머지 50% 정도는 NotNext로 레이블링 되어 랜덤한 문장이 들어갑니다. 64 | 65 | 66 | 67 | ## Fine-tuning BERT 68 | --- 69 | 사전 학습된 BERT 모델의 파라미터로 초기화하고, 각 태스크의 구체적인 인풋 데이터와 결과값으로 fine-tuning을 진행합니다. 70 | Pre-training과 비교했을 때, fine-tuning은 상대적으로 비용과 시간이 더 적게 걸립니다. 71 | 72 | 73 | ## Experiments 74 | --- 75 | ![e](https://user-images.githubusercontent.com/54731898/109631476-54e59480-7b89-11eb-8a17-7b4d0b7cebca.PNG) 76 | **G**eneral **L**anguage **U**nderstanding **E**valuation(GLUE) 벤치마크는 다양한 자연어 이해 능력을 평가하기 위해 고안 되었습니다. 77 | GLUE 테스트 결과, BERT base 모델과 BERT large 모델이 좋은 성능을 보이는 것을 확인 할 수 있었습니다. 78 | 특히, OpenAI GPT 모델과 BERT(base) 모델은 어텐션에서 마스킹을 제외하면 모델 구조와 파라미터 수가 거의 비슷하지만 BERT(base) 모델이 더 좋은 성능을 보이는 것을 확인 할 수 있었습니다. 79 | 80 | ## Conclusion 81 | --- 82 | Unsupervised pre-training은 데이터가 적은 태스크에 많은 도움을 주었습니다. 83 | 본 논문에서 제안한 양방향 구조의 BERT는 많은 NLP 태스크에서 좋은 성능을 보이고 있습니다. 84 | 85 | 86 | -------------------------------------------------------------------------------- /Review/Attention-Based Models for Speech Recognition.md: -------------------------------------------------------------------------------- 1 | # Attention-Based Models for Speech Recognition 2 | https://papers.nips.cc/paper/2015/file/1068c6e4c8051cfd4e9ea8072e3189e2-Paper.pdf 3 | 4 | ### Abstract 5 | 6 | - 기계 번역과 다르게 음성 인식에서는 input sequence가 길고 noisy가 많다. 7 | - 이러한 문제점들에 robust한 모델을 만들기 위해 location-awareness attention mechanism을 제안한다. 8 | 9 | 10 | ### General Framework 11 | --- 12 | ![general attention](https://user-images.githubusercontent.com/54731898/104130582-d94f3e80-53b4-11eb-99fc-c9450c1a5efb.PNG) 13 | (본 논문에서는 α를 alignment, attention weight, g를 glimpse라고 표현한다.) 14 | 일반적으로 attention mechanism을 이용해서 output sequence를 뽑아내는 과정이다. 15 | 위의 사진에 있는 Attend 함수를 통해 attention weights를 뽑아내고, 16 | encoder output과 곱해준 후 Generate 함수를 통해 output을 뽑아낸다. 17 | 18 | 19 | ![Attend 함수 내부](https://user-images.githubusercontent.com/54731898/104130630-216e6100-53b5-11eb-9872-8bb685c2a404.PNG) 20 | 위의 사진은 Attend 함수를 더 자세하게 표현한 사진이다. 21 | Score 함수를 통해 score를 구해주고 softmax 함수를 통해 normalizing 해준다. 22 | Score 함수는 여러 가지가 있는데, 23 | 본 논문에서 새로운 attention mechanism을 제안한다는 것은 새로운 Score 함수를 제안한다는 뜻이다. 24 | ### Content-Based Attention 25 | --- 26 | ![content-based attention](https://user-images.githubusercontent.com/54731898/104130645-2e8b5000-53b5-11eb-9a66-00255d7b0192.PNG) 27 | 본 논문은 실패한 방법부터 설명하고 있는데 그 중 첫 번째 방법이 content-based attention이다. 28 | 이 방법은 decoder output에 weight를 곱해주고, encoder output에 weight를 곱해주고 bias와 29 | 모두 더한 후 Hyperbolic tangent에 넣어준다. 30 | 그리고 나온 결과 값에 weight를 곱해주는 것이다. 31 | 이 방법은 이전의 attention weights를 고려해주지 않기 때문에 sequence에서 위치를 고려해주지 못한다. 32 | 이러한 문제점을 "similar speech fragments" 라고 한다. 33 | ### Location-Based Attention 34 | --- 35 | ![location-based attention](https://user-images.githubusercontent.com/54731898/104130647-2fbc7d00-53b5-11eb-97b1-dc128ec2096b.PNG) 36 | 37 | 두 번째 실패한 방법은 location-based attention이다. 38 | 이전의 attention weight와 decoder output을 고려해줌으로써 연속적인 음소사이의 거리를 예측할 수 있다. 하지만 encoder의 output을 고려해주지 않기 때문에 한계점이 존재한다. 39 | 40 | 41 | ### Hybrid Attention 42 | --- 43 | ![hybrid attention1](https://user-images.githubusercontent.com/54731898/104130658-4b278800-53b5-11eb-92c2-76b45d9c65d2.PNG) 44 | ![hybrid attention2](https://user-images.githubusercontent.com/54731898/104130659-4bc01e80-53b5-11eb-8d38-f519c7eeed7d.PNG) 45 | 위의 두 가지 방법을 섞어준 것이 hybrid attention이다. 46 | location-aware attention이라고도 불린다. 47 | 이전의 attention weight에 convolution을 취해주고 나온 결과값에 weight를 곱한 후 48 | content-based attention식에 있는 Hyperbolic tangent 안에 같이 더해주는 방법이다. 49 | 50 | 51 | ### Three potential issues about Score Normalization 52 | --- 53 | 첫 번째는 input sequence가 길 때, glimpse는 encoder output으로부터 관련 없는 noisy한 정보들을 받게 된다. softmax함수는 모든 정보들을 확률 값으로 표현하여 합이 1이 되도록 해야되기 때문에 54 | noisy한 정보들도 일부 확률 값을 가지게 되고, 그 결과 관련있는 정보들에 집중하기가 어려워진다. 55 | 두 번째는 input utterances가 길 때, 시간복잡도가 엄청나다는 것이다. output 길이가 T이고, 56 | decode할 때 각 시간당 L frames을 고려한다고 하면 시간복잡도가 O(LT)이다. 57 | 세 번째는 softmax함수가 single vector에만 집중하기 때문에 여러 개의 top-scored frames을 고려하기가 어렵다. 58 | 59 | ### Sharpening 60 | --- 61 | ![sharpening1](https://user-images.githubusercontent.com/54731898/104130666-5ed2ee80-53b5-11eb-8d26-4f96e089df0a.PNG) 62 | (β > 1) 63 | 첫 번째 문제점을 해결하기 위해 나온 방법이다. 64 | softmax함수에 inverse temperature β를 적용한 방법이다. 또 다른 방법으로는 top-k frames만 다시 re-normalizing 하는 것이다. 65 | 하지만 sharpening 방법도 시간복잡도가 O(LT)이어서 두 번째 문제점을 해결하지는 못한다. 66 | 그래서 windowing 기술을 제안한다. 이전 attention weight의 중간값을 기준으로 미리 정의된 window 사이즈만큼만 고려해주는 것이다. 이 방법을 사용하면 시간복잡도를 O(L + T)로 줄일 수 있다. 67 | 이 windowing 기술은 top-k frames만 고려하는 것과 비슷하다. 68 | 69 | ### Smoothing 70 | --- 71 | ![smoothing](https://user-images.githubusercontent.com/54731898/104130671-60041b80-53b5-11eb-8f2c-1ed524cc0390.PNG) 72 | sharpening 방법이 long utterances에서의 문제는 해결했지만, short utterances에서는 성능이 좋지 않았다. 그래서 모델이 여러 개의 top-scored frames중 선택하는 것이 좋다는 가설을 세웠다. 73 | 위의 식처럼 softmax함수 식에 sigmoid를 추가해준 방법이다. 74 | 75 | ### Results 76 | --- 77 | ![result](https://user-images.githubusercontent.com/54731898/104130672-61354880-53b5-11eb-8020-5f45ab89d00d.PNG) 78 | 79 | Convolution과 smoothing방법을 모두 사용한 것이 성능이 제일 좋았다. 80 | 81 | -------------------------------------------------------------------------------- /Review/SpecAugment_ A Simple Data Augmentation Method for Automatic Speech Recognition.md: -------------------------------------------------------------------------------- 1 | # SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition 2 | https://arxiv.org/pdf/1904.08779.pdf 3 | 4 | ## Abstract 5 | --- 6 | - 음성인식을 위한 data augmentation 방법을 제안합니다. 7 | - time warping 하는 것, frequency의 일부분을 가리는 것, time의 일부분을 가리는 것으로 augment 합니다. 8 | - Listen, Attend and Spell 구조에 적용하였습니다. 9 | 10 | ## 1. Introduction 11 | --- 12 | 딥러닝 모델들은 쉽게 오버피팅 되고, 많은 학습 데이터를 요구합니다. 13 | 그래서 학습 데이터를 더 많이 만들기 위해 Data augmentation 방법이 나온 것 입니다. 14 | 논문에서 제안하고 있는 specaugment는 오디오, 그 자체를 augmentation 하는 것이 아니라 15 | 오디오의 log mel spectrogram을 augmentation 하는 것 입니다. 16 | 3가지 변형 방법으로 SpecAugment를 합니다. 17 | 첫 번째는 time warping, 18 | 두 번째는 시간의 일부분을 마스킹하는 것, 19 | 세 번째는 주파수의 일부분을 마스킹하는 것 입니다. 20 | 21 | 22 | ## 2. Augmentation Policy 23 | --- 24 | ![a](https://user-images.githubusercontent.com/54731898/105640015-fdd00e00-5ebe-11eb-865a-698b3e1bffa7.PNG) 25 | 원본 log mel spectrogram, time warping, frequency masking, time masking 한 것을 위에서 부터 26 | 차례대로 나타낸 사진입니다. 27 | ### Time Warping 28 | 가로축을 시간축, 세로축을 주파수축으로 했을 때 임의의 한 점을 잡고 왼쪽이나 오른쪽으로 warping 하는 것 입니다. 29 | 조금 쉽게 말하면, log mel spectrogram을 이미지로 생각하고 약간 찌그러트리는 것 입니다. 30 | 31 | ### Frequency Masking 32 | 위의 세 번째 사진처럼 주파수의 일부분을 마스킹 하는 것 입니다. 33 | 34 | ### Time Masking 35 | 마찬가지 방법으로, 시간의 일부분을 마스킹 하는 것 입니다. 36 | 37 | ![b](https://user-images.githubusercontent.com/54731898/105640017-00326800-5ebf-11eb-91f3-74bdde4e3c14.PNG) 38 | - LB : LibriSpeech basic 39 | - LD : LibriSpeech double 40 | - SM : Switchboard mild 41 | - SS : Switchboard strong 42 | 43 | 데이터 셋과 마스킹 정도에 따라 다음과 같이 정의하고 있습니다. 44 | 위의 사진은 결과로 나온 파라미터들을 정리한 사진 입니다. 45 | 46 | ![c](https://user-images.githubusercontent.com/54731898/105640019-00cafe80-5ebf-11eb-97de-a0558826cd23.PNG) 47 | 위의 사진은 앞에서 말씀드린 마스킹 기법들을 섞어서 여러 개의 주파수 마스킹과 시간 마스킹을 적용한 LB, LD의 예시 입니다. 48 | 49 | 50 | ## 3. Model 51 | --- 52 | ### 3.1 LAS Network Architectures 53 | log mel spectrogram 인풋 데이터가 stride가 2인 max-pooling을 포함하여 2-layer의 CNN을 거쳐 양방향 LSTM encoder의 인풋으로 들어갑니다. 54 | 그리고 encoder의 아웃풋을 어텐션 기반의 2-layer decoder에 넣어 예측 시퀀스를 뽑아냅니다. 55 | 56 | ### 3.2 Learning Rate Schedules 57 | learning rate schedule은 성능을 결정하는데 매우 중요한 요소 라고 말하고 있습니다. 58 | 크게 ramp-up, hold, exponential decay 이렇게 3개의 구간으로 나눌 수 있습니다. 59 | 60 | 첫 번째는 learning rate 0부터 특정 값까지 급격하게 증가하는 ramp-up 구간이고 time step으로는 [0, Sr] 입니다. 61 | 두 번째에서 [Sr, Snoise]구간에서는 learning rate에 표준 deviation 0.075인 noise를 더해서 진행하고 [Snoise, Si]구간에서는 기존 learning rate를 hold해줍니다. 62 | 세 번째는 learning rate 최대 값의 1/100까지 급격하고 떨어뜨리는 exponential decay 구간이고, time step으로는 [Si, Sf] 입니다. 63 | 64 | ![d](https://user-images.githubusercontent.com/54731898/105640020-01fc2b80-5ebf-11eb-9b5f-2d003ec1b2bb.PNG) 65 | 논문에서 사용한 3개의 learning rate schedule 파라미터를 정리한 사진입니다. 66 | 67 | ### Label Smoothing 68 | label smoothing이란 hard vector를 soft vector로 바꾸어주는 것입니다. 예를들어, 올바른 label이 1 이였다면 0.9로 낮추어 조금 더 불확실하게 학습을 하는 것입니다. 69 | 데이터 정규화(regularization) 테크닉 중에 하나로, 간단한 방법이면서도 모델의 일반화 성능을 높여줍니다. 70 | 더 자세한 내용은 [When Does Label Smoothing Help?](https://arxiv.org/pdf/1906.02629.pdf) 논문을 참고하시면 좋겠습니다. 71 | 72 | 73 | ### 3.3 Shallow Fusion with Language Models 74 | ![f](https://user-images.githubusercontent.com/54731898/105640034-20fabd80-5ebf-11eb-85a5-0bf4428cb13b.PNG) 75 | Augmentation으로도 State-Of-The-Art 결과를 얻었지만 성능을 높이기 위해 augmentation 뿐만 아니라, Language Model도 함께 사용합니다. 76 | LAS 모델의 output과 language model의 output을 적절하게 고려해줍니다. 77 | 본 논문에서는 λ 값을 0.35로 진행하였습니다. 78 | 79 | ## 4. Experiments 80 | --- 81 | ![g](https://user-images.githubusercontent.com/54731898/105640036-22c48100-5ebf-11eb-946d-4cf1220416a5.PNG) 82 | 83 | ![h](https://user-images.githubusercontent.com/54731898/105640037-23f5ae00-5ebf-11eb-8833-1f1ed279b8cf.PNG) 84 | SpecAugment를 적용한 모델이 압도적인 성능을 보여주었습니다. 85 | 86 | 87 | ## 5. Discussion 88 | --- 89 | ### Time warping contributes, but is not a major factor in improving performance. 90 | time warping, time masking, frequency masking 중에서 time warping은 계산이 많은 것에 비해 성능 개선에는 영향력이 별로 없습니다. 따라서 모든 augmentation 방법을 할 수 없다면 time warping을 배제하는 것이 좋습니다. 91 | 92 | ### Label smoothing introduces instability to training. 93 | Label smoothing과 augmentation을 함께 사용했을 때 눈에 띄는 결과를 보여주었다고 합니다. 94 | 95 | ### Augmentation converts an over-fitting problem into an under-fitting problem. 96 | ![i](https://user-images.githubusercontent.com/54731898/105640038-2526db00-5ebf-11eb-89df-80f4e4707531.PNG) 97 | Augmentation을 가장 많이 적용한 LD를 보시면 Training set에서 오버피팅이 일어나지 않았고, Validation set에서는 WER이 가장 낮은 것을 확인할 수 있습니다. 즉, 여러가지 augmentation 방법을 통해 데이터셋을 늘려서 오버피팅 문제를 언더피팅 문제로 바꾸었습니다. 98 | 99 | ### Common methods of addressing under-fitting yield improvements. 100 | 언더피팅을 해결하기 위해서는 더 깊고 더 넓은 모델로 긴 learning rate schedule과 함께 학습을 오래시키면 됩니다. 101 | 102 | ## 6. Conclusions 103 | --- 104 | SpecAugment는 음성인식에서 오버피팅 문제를 언더피팅 문제로 바꾸었고, 105 | 큰 네트워크와 긴 학습 시간으로 좋은 결과를 얻었다. 106 | 107 | 108 | -------------------------------------------------------------------------------- /Review/Conformer.md: -------------------------------------------------------------------------------- 1 | # Conformer: Convolution-augmented Transformer for Speech Recognition 2 | https://arxiv.org/abs/2005.08100 3 | 4 | 5 | 6 | ## Abstract 7 | --- 8 | - 최근에는 트랜스포머와 CNN을 기반으로 한 모델들이 음성인식에서 좋은 성능을 보이고 있습니다. 9 | - 전체적인 의미를 잘 파악하는 트랜스포머와 부분적인 의미를 잘 파악하는 CNN을 결합한 **Conformer**를 제안합니다. 10 | - Conformer encoder + RNN transducer 구조 입니다. 11 | 12 | ## 1. Introduction 13 | --- 14 | 트랜스포머와 convolution은 각각의 한계점을 가지고 있습니다. 트랜스포머는 넓게 넓게 정보를 잘 파악하지만, 좁은 범위의 특징을 뽑아내는 것을 할 수 없습니다. 반면에 convolution은 좁은 범위의 정보들을 잘 뽑아냅니다. 15 | 그래서 위, 아래로 feed forward 모듈을 갖는 샌드위치 형태로, 트랜스포머와 컨볼루션을 새롭게 결합한 Conformer를 소개합니다. 16 | 17 | 또한 어텐션 헤드의 개수와 컨볼루션 커널 사이즈, activation 함수, feed-forward 레이어의 위치, 컨볼루션 모듈에 적용한 다양한 전략 등이 정확성 향상에 얼마나 영향을 미쳤는지 연구하였다고 본 논문은 말하고 있습니다. 18 | 이 부분은 아래쪽에서 좀 더 자세히 설명하겠습니다! 19 | 20 | 21 | ## 2. Conformer Encoder 22 | --- 23 | ![a](https://user-images.githubusercontent.com/54731898/110105271-865d9a80-7deb-11eb-99cf-4e1eb4f1065f.PNG) 24 | Conformer block은 4개의 모듈로 구성되어 있습니다. 첫 번째 feed-forward 모듈, self-attention 모듈, convolution 모듈, 그리고 두 번째 feed-forward 모듈로 구성되어 있습니다. 25 | 26 | 27 | 28 | ### 2.1. Multi-Headed Self-Attention Module 29 | --- 30 | ![mhsa](https://user-images.githubusercontent.com/54731898/110105279-88bff480-7deb-11eb-837d-2a13700cef00.PNG) 31 | 32 | Multi-headed self-attention (MHSA)는 [Transformer-xl: Attentive language models beyond a fixed-length context](https://arxiv.org/abs/1901.02860) 논문에서 제안한 relative positional encoding을 사용 하였습니다. 33 | Relative positional encoding 이란 말 그대로 절대적인 위치가 아닌 상대적인 위치 정보를 통해 인코딩하는 방식입니다. 34 | 또한, Relative positional encoding은 다양한 발화 길이를 좀 더 일반화 시켜줌으로서, 인코더를 robust 하게 만들어준다는 장점이 있습니다. 35 | Layernorm을 앞단에 주어 학습을 좀 더 원활하게 하도록 하였고, dropout을 통해 정규화를 해주었습니다. 36 | 37 | 38 | 39 | ### 2.2. Convolution Module 40 | --- 41 | ![b](https://user-images.githubusercontent.com/54731898/110105275-878ec780-7deb-11eb-8145-742562fd34d5.PNG) 42 | 43 | - #### Pointwise Convolution 44 | ![d](https://user-images.githubusercontent.com/54731898/110117323-0986ec80-7dfc-11eb-840b-8dbf9dd53fcd.PNG) 45 | 46 | 다른 말로는 1 x 1 Convolution으로 불리며, output의 크기가 변하지 않기 때문에 channel의 수를 조절하고 싶을 때 사용합니다. 47 | 48 | 49 | - #### GLU Activation 50 | ![e](https://user-images.githubusercontent.com/54731898/110118051-1d7f1e00-7dfd-11eb-9856-c429d547d54d.PNG) 51 | 이 함수는 입력의 절반에 시그모이드 함수를 취한 것과 나머지 입력의 절반을 가지고 pointwise 곱을 계산합니다. 52 | 따라서 출력 값의 차원은 입력 값의 차원의 절반이 됩니다. 53 | 54 | 55 | - #### Swish Activation 56 | ![f](https://user-images.githubusercontent.com/54731898/110118516-d5acc680-7dfd-11eb-9bb7-be6a204181ce.PNG) 57 | ![g](https://user-images.githubusercontent.com/54731898/110118690-14db1780-7dfe-11eb-932c-152440aaad24.PNG) 58 | 시그모이드 함수에 x를 곱한 식 입니다. 59 | 60 | 61 | - #### Depthwise Convolution 62 | ![h](https://user-images.githubusercontent.com/54731898/110119173-c2e6c180-7dfe-11eb-8136-161f39feea7c.PNG) 63 | 각 채널마다 필터가 존재하여, 각 채널 고유의 Spatial 정보만을 학습하게 됩니다. 64 | 또한 결과적으로 입력 채널 수 만큼 그룹을 나눈 Grouped Convolution과 같습니다. 65 | 66 | 67 | ## 2.3. Feed Forward Module 68 | --- 69 | ![ff](https://user-images.githubusercontent.com/54731898/110105282-89588b00-7deb-11eb-84d1-3670f99a55b1.PNG) 70 | 71 | 72 | 73 | ## 2.4. Conformer Block 74 | --- 75 | ![z](https://user-images.githubusercontent.com/54731898/110121200-72249800-7e01-11eb-9e9d-6a4f112b9014.PNG) 76 | 77 | 앞서 말씀드린 샌드위치 구조는 [Macaron-Net](https://arxiv.org/abs/1906.02762)에서 영감을 받았다고 합니다. 78 | 절반의 residual connection과 함께 샌드위치 구조의 feed-forward 모듈이 single feed-forward 모듈에 비해 더 좋은 성능을 보인다고 말하고 있습니다. 79 | 80 | 81 | ## 3. Experiments 82 | --- 83 | ![m](https://user-images.githubusercontent.com/54731898/110122656-3985be00-7e03-11eb-8eef-870a2d35843b.PNG) 84 | Decoder로는 single-LSTM을 사용하였고 small, medium 그리고 large 모델의 파라미터는 다음과 같습니다. 85 | 86 | ![n](https://user-images.githubusercontent.com/54731898/110122647-37bbfa80-7e03-11eb-84b6-47d1b281cdce.PNG) 87 | 현재 존재하는 모델 중에 word error rate(WER)가 가장 낮은 것을 확인 할 수 있습니다. 88 | 89 | 90 | ## Ablation Studies 91 | --- 92 | ### Conformer Block vs. Transformer Block 93 | 94 | ![X](https://user-images.githubusercontent.com/54731898/110124130-15c37780-7e05-11eb-9a70-3f4a98677cbd.PNG) 95 | 차이점들 중에, Convolution sub-block이 가장 중요한 차이라고 말합니다. 96 | 또한 swish activation 함수를 사용하여 더 빠른 수렴을 이끌었다고 말합니다. 97 | 표는 여러 가지 변화에 대한 영향을 보여줍니다. 98 | 99 | 100 | ### Combinations of Convolution and Transformer Modules 101 | ![Y](https://user-images.githubusercontent.com/54731898/110124133-16f4a480-7e05-11eb-83fd-8e877591023b.PNG) 102 | Depthwise convolution 대신에 lightweight convolution으로 바꾸어 보았습니다. 103 | 또한 convolution 모듈을 MHSA 모듈 전으로 이동해보았습니다. 104 | 마지막으로 인풋을 두 개로 나누어 하나는 MHSA 모듈로, 나머지 하나는 convolution 모듈로 보내고 결과값들을 합치는 방법으로 진행해보았습니다. 105 | 표는 세 가지 경우에 대한 결과 값입니다. 106 | 107 | 108 | ### Macaron Feed Forward Modules 109 | ![Q](https://user-images.githubusercontent.com/54731898/110124140-178d3b00-7e05-11eb-8ad1-b138d1fbf55a.PNG) 110 | Conformer와 single FFN 그리고 full-step residual의 결과 값들을 비교한 표 입니다. 111 | 112 | 113 | ### Number of Attention Heads 114 | ![bb](https://user-images.githubusercontent.com/54731898/110126079-65a33e00-7e07-11eb-9f1d-1e89e068acbe.PNG) 115 | Attention 헤드 수를 증가시키면서 실험한 결과, 16 까지는 accuracy가 증가하는 것을 확인 할 수 있습니다. 116 | 117 | 118 | ### Convolution Kernel Sizes 119 | ![cc](https://user-images.githubusercontent.com/54731898/110126085-663bd480-7e07-11eb-82a7-560b9adab040.PNG) 120 | 121 | Large 모델에서 커널 사이즈를 3, 7, 17, 32, 65로 하여 실험한 결과, 32가 가장 적합하다고 말하고 있습니다. 122 | 123 | 124 | ## Conclusion 125 | --- 126 | Conformer 구조에서 convolution 모듈을 포함한 것이 성능에 중요한 영향을 미쳤고, 더 적은 파라미터 수로 더 좋은 성능을 얻었다고 합니다. 127 | 128 | ## Reference 129 | https://hichoe95.tistory.com/48 130 | https://arxiv.org/abs/2005.08100 131 | -------------------------------------------------------------------------------- /Review/Attention Is All You Need.md: -------------------------------------------------------------------------------- 1 | # Attention Is All You Need 2 | https://arxiv.org/pdf/1706.03762.pdf 3 | 4 | ## Abstract 5 | 6 | - 복잡한 CNN과 RNN을 사용하지 않고 유일하게 attention mechanism만 사용하는 Transformer 구조를 7 | 제안한다. 8 | 9 | ## 1. Introduction 10 | --- 11 | Transformer는 recurrence를 아예 배제하고 전적으로 attention mechanism에만 의존한다. 12 | 그래서 더 병렬화하여 계산할 수 있고 그 결과 8개의 GPU로 12시간 학습하여 State-Of-The-Art (SOTA) 정도의 성능을 낼 수 있었다. 13 | 14 | 15 | ## 2. Background 16 | --- 17 | self-attention은 자기 문장 스스로에게 attention을 수행하여 문장의 표현들을 학습할 수 있도록 하는 것이다. intra-attention 이라고도 불린다. 18 | 최근에 나온 GPT나 BERT도 본 논문에서 제안한 transformer architecture를 따르고 있다. 19 | 20 | ## 3. Model Architecture 21 | --- 22 | ### 3.1 Encoder and Decoder Stacks 23 | ![a](https://user-images.githubusercontent.com/54731898/104893547-e83a8000-59b6-11eb-867f-9257e8d106ee.PNG) 24 | 위의 사진은 transformer model의 전체적인 구조를 표현하고 있는 사진이다. 25 | 26 | **Encoder** : RNN을 사용하지 않는 대신에 문장 내에 있는 단어들의 위치 정보를 encoding 해주기 위해서 input embedding size와 동일하게 하여 positional encoding 해주고 input embedding 결과값과 더해준다. 27 | Encoder는 동일한 6개의 레이어를 쌓은 형태이다. 각 레이어는 두 개의 서브 레이어로 이루어져 있는데 첫 번째는 multi-head self-attention이고, 두 번째는 feed-forward layer이다. 28 | 앞에 더해주었던 embedding vector를 query, key, value로 각각 복사해주고 multi-head self-attention을 진행한 후에 residual connection을 한 후 layer normalization을 한다. 29 | 나온 결과 값을 두 번째 서브 레이어로 넣어주어 feed forward 계산을 하고 residual connection을 진행한 후 layer normalization을 한다. 30 | multi-head attention은 인풋과 아웃풋 사이즈가 동일하다. 31 | 하지만 논문에서는 residual connection을 쉽게 하기 위해 embedding layer 뿐만 아니라 모델의 모든 서브 레이어의 사이즈를 512로 진행하였기 때문에 서브 레이어의 인풋과 아웃풋 사이즈가 모두 동일하다. 32 | 33 | **Decoder** : decoder에서도 encoder와 동일한 embedding 작업을 거친 후에 레이어의 넣어준다. 34 | Decoder 또한 동일한 6개의 레이어를 쌓은 형태이고 각 레이어마다 세 개의 서브 레이어를 가지고 있다. 35 | 첫 번째 서브 레이어는 지금까지 출력한 단어만 어텐션 할 수 있도록 하기 위해 뒤의 단어들에 마스크를 36 | 씌우고 multi-head self-attention, residual connection, layer normalization을 진행한다. 37 | 두 번째 서브 레이어에서는 encoder output이 key, value로 들어오고 이전 서브 레이어의 결과값이 query로 들어와서 마찬가지 과정을 진행한다. 38 | 세 번째 서브 레이어에서는 feed-forward layer과정을 거친다. 39 | 이렇게 동일한 6개의 레이어를 거친 후에 linear layer를 거치고 softmax 계산을 하여 아웃풋 확률 값을 얻을 수 있다. 40 | 41 | ![f](https://user-images.githubusercontent.com/54731898/104893643-056f4e80-59b7-11eb-91ee-21e6fda9f8fb.PNG) 42 | ![g](https://user-images.githubusercontent.com/54731898/104893692-16b85b00-59b7-11eb-9725-93be09df1cd8.PNG) 43 | 44 | Residual Connection을 하는 이유는 ? 45 | Residual Connection(다른 말로 skip connection)을 하면 y = x + F(x) 형태가 된다. 46 | 위의 사진 처럼 f2 레이어가 잘 작동하지 않아도 여러 가지 방법으로 그래디언트가 47 | 잘 전달 될 수 있기 때문이다. 만약에 Residual Connection을 하지 않았다면 f2 레이어가 잘 작동하지 48 | 않았을 때 그래디언트가 잘 전달 될 수 없었을 것이다. 이 처럼 Residual Connection을 사용하면 조금 더 49 | robust한 구조를 만들 수 있다. 50 | 51 | 더 자세한 내용은 Residual Networks Behave Like Ensembles of Relatively Shallow Networks 논문 52 | https://arxiv.org/pdf/1605.06431.pdf 을 참고하시면 좋을 것 같습니다. 53 | 54 | 55 | ![h](https://user-images.githubusercontent.com/54731898/104893694-17e98800-59b7-11eb-84d9-518cfc1f3bb8.PNG) 56 | Layer Normalization을 하는 이유는 ? 57 | 이미지와 다르게 자연어에서는 입력 시퀀스가 매번 다르기 때문에 Batch Normalization보다 58 | Layer Normalization을 해주는 것이 더 좋다. 59 | 둘을 비교 해보면 batch normalization보다 layer normalization이 파라미터 수가 더 적은 것을 알 수 있다. 60 | 또한 batch normalization을 사용했을 때, test sequence가 train sequence보다 길다면 문제가 발생할 수 있다. 61 | 하지만 layer normalization을 사용하면 문장마다 계산하기 때문에 길이가 더 긴 문장이 와도 문제가 발생하지 않는 것을 알 수 있다. 62 | 63 | 더 자세한 내용은 Layer Normalization 논문 https://arxiv.org/pdf/1607.06450.pdf 을 참고하시거나, 64 | 잘 정리된 이 [링크](https://zhangtemplar.github.io/normalization/)를 참고하시면 좋을 것 같습니다. 65 | 66 | 67 | ### 3.2 Attention 68 | ![b](https://user-images.githubusercontent.com/54731898/104893552-e96bad00-59b6-11eb-858f-504dcbb82749.PNG) 69 | 왼쪽은 Scaled Dot-Product Attention을 표현한 것이고, 오른쪽은 Multi-Head Attention을 표현한 것이다. 70 | 71 | #### 3.2.1 Scaled Dot-Product Attention 72 | ![c](https://user-images.githubusercontent.com/54731898/104893570-ee306100-59b6-11eb-9b33-e8b0cc58cffa.PNG) 73 | 위의 식은 scaled dot-product attention mechanism에서의 score 함수 식이다. 74 | 75 | 우선 query와 key를 Dot Product하여 유사도를 구한다. 그 다음 key dimension의 루트값으로 나누어준다. 76 | 나누어주는 이유는 값이 너무 커서 그대로 softmax에 넣어주면 그레디언트 값이 너무 작아 학습이 잘 되지 않는다. 따라서 학습을 안정화 시키기 위해서 나누어준다. 77 | 그 다음으로 softmax를 취해서 확률 값으로 바꾸어주고 계산 결과를 value와 곱해준다. 78 | 79 | 흔하게 사용되는 dot-product attention과 additive attention은 시간 복잡도가 비슷하지만 dot-product attention이 더 빠르고 메모리 사용이 효율적이라서 dot-product attention을 사용하였다고 말하고 있다. 80 | 그리고 위의 설명한 이유 때문에 key dimension의 루트값으로 나누었다고 말하고 있다. 81 | 82 | #### 3.2.2 Multi-Head Attention 83 | ![d](https://user-images.githubusercontent.com/54731898/104893634-02745e00-59b7-11eb-9cde-3e97334fd7e2.PNG) 84 | multi-head attention은 head를 여러개 사용하는 것이다. 예를 들어 query, key, value의 dimension이 512이고 head의 수가 8개라고 하면 각각의 head가 64 dimension을 가지고 병렬적으로 scaled dot-product attention을 진행하는 것이다. 85 | 나온 결과값을 합쳐주고 linear layer를 통과하여 아웃풋을 뽑아낸다. 86 | 87 | multi-head attention을 사용하는 이유는 어텐션 맵을 head 수만큼 만들 수 있기 때문이다. 88 | 어텐션 맵을 여러개 만들어 보는 것이 좋은 이유는 모델이 다양한 경우의 수를 고려해볼 수 있기 때문이다. 89 | 일종의 앙상블 개념으로 이해할 수 있다. 90 | 91 | #### 3.2.3 Applications of Attention in our Model 92 | 트랜스포머 구조에서 세 가지의 multi-head attention을 사용하고 있다. 93 | 첫 번째는 decoder의 두 번째 서브 레이어로, key와 value는 encoder의 아웃풋이 들어오고 94 | query는 decoder의 이전 레이어 결과값이 들어온다. 95 | 두 번째는 encoder에서 사용하고 있는 self-attention이다. self-attention은 같은 인풋에 각각 다른 weight가 곱해진 결과값이 query, key, value에 들어간다. 96 | 세 번째는 decoder에서 mask를 씌우고 진행하는 multi-head attention이다. 97 | 98 | ### 3.3 Position-wise Feed-Forward Networks 99 | ![e](https://user-images.githubusercontent.com/54731898/104893640-030cf480-59b7-11eb-8681-e7bbdc854aa2.PNG) 100 | linear layer를 거치고 ReLU activation 함수를 거친 후에 다시 linear layer를 거치는 것을 확인 할 수 있다. 101 | dimension은 크게 input과 output으로 보면 모두 512이지만, 내부적으로 2048 dimension으로 깊게 맵핑된 후 나오는 것을 확인 할 수 있다. 102 | 103 | ### 3.4 Embeddings and Softmax 104 | 일반적인 Seq2Seq 구조처럼 단어를 embedding dimension으로 맵핑해주는 과정을 거친다. 105 | 106 | ### 3.5 Positional Encoding 107 | RNN과 CNN을 사용하지 않기 때문에 위치에 대한 정보도 알려주어야 한다. 108 | 논문에서는 주파수가 다른 sin, cosine 함수를 사용했을 때와 109 | 학습된 positional embedding을 사용했을 때 성능 차이는 거의 없었다고 말하고 있다. 110 | 111 | 112 | ## 4. Why Self-Attention 113 | --- 114 | 첫 번째 장점은 layer 마다 전체적인 계산 복잡도가 줄어든다. 115 | 두 번째 장점은 recurrence를 아예 배제하여 병렬 처리가 가능하다. 116 | 세 번째 장점은 긴 문장에 대해서도 잘 처리할 수 있다. 117 | 118 | ![i](https://user-images.githubusercontent.com/54731898/104893699-191ab500-59b7-11eb-86a4-6c7a6c5b1661.PNG) 119 | 120 | n은 시퀀스 길이, d는 dimension, k는 convolution의 kernel size이다. 121 | 일반적으로 n이 d보다 작기 때문에 self-attention이 RNN보다 복잡도가 더 낮다. 122 | 또한 RNN은 순차적으로 하나하나씩 처리하기 때문에 시퀀스 길이만큼 필요하지만, 123 | 병렬적인 처리가 가능한 self-attention은 한번에 처리하는 것을 알 수 있다. 124 | 125 | 126 | ## 5. Training 127 | --- 128 | ### Residual Dropout 129 | residual connection을 하기 전에 서브 레이어 아웃풋에 dropout ratio 0.1을 적용하였다. 130 | 뿐만 아니라 positional encoding과 input embedding을 더한 값에도 dropout을 적용하였다. 131 | 132 | ### Label Smoothing 133 | label smoothing 값으로 0.1을 사용하였다. 134 | 즉, hard target을 soft target으로 바꾸는 것이다. 135 | 모델이 조금 더 불확실하게 학습하여 정확도를 향상시켰다. 136 | 137 | ## 6. Results 138 | ![j](https://user-images.githubusercontent.com/54731898/104893706-1a4be200-59b7-11eb-85a2-56e078225c22.PNG) 139 | 트랜스포머의 base model로도 State-Of-The-Art (SOTA) 정도의 성능을 낼 수 있었다. 140 | 또한 학습 시간이 훨씬 짧은 것도 알 수 있다. 141 | 142 | 143 | --------------------------------------------------------------------------------