NLP:深層学習（RNN～GPT3まで）モチベーションを整理する

## はじめに
近年では自然言語処理分野で深層学習を利用することがすっかり当たり前になりました。
ここではその歴史的な流れを**ざっくり**理解するべく代表的なネットワークの要点をまとめることにしました。

## ゴール
各深層学習のネットワークがどのような課題解決をするために提案されてきたかを把握することです。
以下項目を短く記述していきます。
* **提案年度**
* **モチベーション**
* **（例）**※イメージの補助として必要な場合に記載
* **元文献**
を記述していきます。
元論文へアクセスする際の一助になれば幸いです。

**※このネットワークも欠かせないよ！ここ間違っているよ！などありましたら教えて頂けますと幸いです！**

### ◆RNN(Recurrent Neural Network:再帰型ニューラルネットワーク)
* **提案年度**:1990
* **モチベーション**:時系列データ（文章、音声、センサーデータなど）を取り扱うため、過去情報を参照しながら学習し、予測で用いたい。
* **元文献**:[Finding Structure in Time](https://onlinelibrary.wiley.com/doi/abs/10.1207/s15516709cog1402_1)

### ◆LSTM(Long Short-Term Memory ,長・短期記憶)
* **提案年度**:1997
* **モチベーション**:RNNでは古い情報を保持することが出来なかった。そこでforget gateというゲートをネットワーク上に持たせ（厳密にはforget gate, input gate, output gateの3種類）、適度に忘れながら学習することで古いけど重要な情報を保持することが出来るようになった。
* **元文献**:[Long Short-Term Memory](https://direct.mit.edu/neco/article/9/8/1735/6109/Long-Short-Term-Memory)

### ◆GRU(Gated Recurrent Unit)
* **提案年度**:2014
* **モチベーション**:LSTMはパラメータ数が多い。そこで、LSTMの思想は継承しながら、update gate, reset gateの二つを用いてパラメータを削減し、計算時間を短縮した。
* **元文献**:[Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation](https://arxiv.org/abs/1406.1078)

### ◆Word2ve(continuous bag-of-words model, CBOW, continuous skip-gram model,SG,単語分散表現)
* **提案年度**:2013
* **モチベーション**:単語の周辺情報を用いて単語を固定長のベクトルで表現するために提案。これにより、単語同士の足し算、引き算などの計算が可能となった。
* **元文献**:[Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/abs/1301.3781)
* **例**:「パリ」- 「フランス」+ 「日本」= 「東京」、が行えるようになった。

### ◆Seq2Seq(encoder-decoderモデル)
* **提案年度**:2014
* **モチベーション**:RNNなどでは時系列情報を扱えるようになったが、機械翻訳や質疑応用などでは入力と出力で入力の長さが異なるタスク（以下例を参照）への対応が困難であった。そこで、encoder,decoderの大きく2部構成のネットワークを提案。encoder側で入力情報を固定長のベクトル(context vector,文脈ベクトル)に変換(encode)し、出力の形式に変換(decode)することで、入力と出力で入力の長さが異なるタスクにも対応できるようになった。
* **元文献**:[Sequence to Sequence Learning with Neural Networks](https://arxiv.org/abs/1409.3215)
* **例**:【機械翻訳タスク】入力文：I eat cake (3語)→ 出力文：私 は ケーキ を 食べる(5語)など）、に対応

### ◆Attention付Seq2Seq
* **提案年度**:2014
* **モチベーション**:前述のencoder decoderモデルでは、入力文が長かろうが短ろうが全て固定長の文脈ベクトルに情報を押し込んでおり、入力文が長くなると精度が落ちる課題があった。そこで、前述のencoder-decoderモデルにattention機構を加えることで、入力文中の単語と出力文中の単語の対応関係を”重み付け”により表現することが可能に。以下例のような単語の対応付けが可能となった。
* **元文献**:[Neural Machine Translation by Jointly Learning to Align and Translate](https://arxiv.org/abs/1409.0473)
* **例**:【機械翻訳タスク】入力文：I eat cake の時、「cake」という単語を「ケーキ」と翻訳する場合、入力文の「cake」の重みが大きくなる。ちなみに重みの値を可視化することで単語中の注目箇所のハイライトも可能となった。

### ◆Transformer
* **提案年度**:2017
* **モチベーション**:これまでの提案手法ではネットワーク内部に過去のデータを参照しながら学習する再帰型ネットワーク(LSTMなど)を持っている関係上、並列計算が行えない課題があった。そこで、再帰型ネットワークを取っ払い、attention(厳密にはself-attention, Target-Source‐Attention)のみを用いるencoder-decoderモデルを提案した。これにより並列計算が可能となり高速化が可能となった。精度面についても機械翻訳タスク（英語-フランス語）において高い性能を示す結果を示した。
* **元文献**:[Attention Is All You Need](https://arxiv.org/abs/1706.03762)

### ◆BERT
* **提案年度**:2018
* **モチベーション**:これまでの手法ではタスク毎に大量のデータセットを準備し、学習をする必要があった。そこで、Transformerのencoder部分を用いて、wikipediaなどの巨大なコーパスで事前学習モデルを構築し、タスク毎にデータセットでファインチューニング（転移学習）をすることで、11種類のタスクで当時最高性能を記録した。
* **元文献**:[BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding](https://arxiv.org/abs/2005.14165)

### ◆GPT-3
* **提案年度**:2020
* **モチベーション**:BERTでは転移学習で色んなタスクで高い性能を記録したが、転移学習用にデータセットを準備するのはコストがかかる。一方、人間は2,3のタスクのサンプルを示せば内容を把握し、問題が解くことができる。そこで、過去提の事前学習モデルから更にパラメータ数を増やした言語モデルを構築し、タスクの記述と2,3のサンプルを示すことで、そのタスクに対応するFew shot learning（転移学習は行わない）の言語モデルを提案。タスクによっては、転移学習には及ばない場合もあるが、人間に近い文章生成結果を出力することで話題に。
* **元文献**:[Language Models are Few-Shot Learners](https://arxiv.org/abs/2005.14165)

## 所感
歴史を俯瞰してみると、過去の課題に向き合い、着々と課題解決しながら進化を遂げている過程が見えてきた。とりわけ2014年付近で提案されてきた手法の課題が2017年のTransformerで解決の糸口が見つかり、更に2018年のBERTで一気に花開いた印象。今後更にどのようなモデルが提案されてくるのか楽しみである。

#### 参考文献
* [書籍:ゼロから作るDeep Learning2 自然言語処理編](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E7%B7%A8-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873118360)
* [書籍:ウェブデータの機械学習](https://www.amazon.co.jp/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%83%80%E3%83%8C%E3%82%B7%E3%82%AB%E3%83%BB%E3%83%9C%E3%83%AC%E3%82%AC%E3%83%A9/dp/4061529188)
* [論文:A Survey of the Usages of Deep Learning for Natural Language Processing](https://ieeexplore.ieee.org/document/9075398)
* [記事:自然言語処理の必須知識 Transformer を徹底解説！](https://deepsquare.jp/2020/07/transformer/)