歴代の自然言語処理モデルのスコア推移

# 概要
2013年から2022年に公開された歴代の自然言語処理モデルをGLUEスコアに沿って整理します。

# 背景
過去に生み出された革新的な技術は、日々、新しいアイデアや技術が公開される現在でも使われています。これまで、自然言語処理界において、ターニングポイントとなったであろう技術を時系列に振り返ろうと思いました。

# 自然言語処理モデルについて
#### 自然言語処理モデル活用例
一概に自然言語処理モデルと言っても、それが一体何ものなのか理解し難いと思います。
現代社会で自然言語モデルが活用されている事例には以下のようなものがあります。
* **自動翻訳**　　　：ブラウザの翻訳機能などで、自動的に翻訳してくれます。
* **文章自動生成**　：文章を自動で要約したり、適当な文章を生成してくれます。
* **チャットボット**：企業の問い合わせサイトなどで、質問した内容に答えてくれます。

<!--
自動翻訳は、2018年頃からでしょうか。Chromeはかなり精度が高くなった記憶があります。
自動生成は、2020年頃から急激に精度が高くなりました。これから社会へ適用されていくでしょう。
チャットボットは、一般企業の精度はまだまだですね。GAFA並みに学習コストをかけないと精度が高くならない気がします。
-->

自然言語処理モデルとしては、直接、翻訳精度上げるようなモデルもあれば、単語一つ一つの理解度を高めるような細かな技術まであります。今回取り上げる自然言語モデルは、特に制約を設けずに、過去に取り上げられた有名どころを中心に振り返ります。

# 最先端モデルのスコア変遷
これまでのモデルのスコアをグラフ化しました。
時系列にグラフ化することで技術の進歩が良く分かります。

###### グラフの前提
* スコアは**GLUEスコア**を使用しています。**GLUE**（**General Language Understanding Evaluation**) は、英語の理解度を測る標準的なベンチマークとして以前より使われています。比較用として、**人間**をGLUEで評価した際の**スコアは89.452**とのことです。
* 日付は論文の初版が公開された日付を使用しています。

![自然言語処理モデルのスコア.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276223/7520001c-d720-594b-2edc-f195d252db49.png)

### モデルの紹介
#### Word2Vec
2013年に**Tomas Mikolov**によって**Word2Vec**が公開されました。ここから**自然言語処理界の技術革新**が活発化しました。背景として以下2点があります。
* **大量の文章データ**をインターネットから**自由に取得**できるようになった。
* **メモリ**等、高スペックの**マシン価格が安く**なった。

大量の文章データは、例えばWikipediaなどから一括でダウンロードできます。日本語Wikipediaであれば数十GB程度のサイズです。また、メモリについても数十GBであれば個人が手の届く価格になっています。

※ちなみに、20年以上前に私が最初に買ったノートPCは20万円程度でしたが、HDDが4GBでした。メモリなんて32MBだったと記憶しています。。。

Word2Vecは高スペックマシンでなくても動作しますが、その後のモデルはGPUを活用することで学習速度に大きな違いが出ます。

なお、Word2Vecを生み出した**Tomas Mikolov**は天才的な発明者です。30歳くらいでWord2Vecを世の中に公開し、その後の言語処理の発展に大きな貢献をしています。**fasttext**にも関わっており、旧**Facebook**だけでなく、**Google**や**Microsoft**の研究員もやっていたということなので、業界屈指の人気者です。


#### Transformer
グラフには載せていませんが、2017年に**Transformer**という業界の革命児が「**Attention Is All You Need**」というセリフとともに誕生しました。

「**Attentionさえあれば良いですよ。**」という意味なのですが、そもそも「Attention」というのは、2014年にドイツのJacobs大学によって発明された技術で、分かりやすく簡単に言うと「本当に必要な単語に注意を向ける」ための技術です。

長い文章の中で、例えば翻訳に必要なのは対となる単語（例：エンジン=engine）であり、この**必要な単語により注意を向ける技術**です。Transformerでは、この技術だけを使っても高精度を実現できたという成果を残しています。

※Transfomer本家にはGLUEスコアがなかったのですが、その後のモデルの基礎になっています。

<!--
Transformerは、Attentionさえあれば良いと言っている中、従来のLSTM方式も活用して頑張っていたのが、2018年に公開されたELMoです。（スコアはGPTの論文から引用）
残念ながら、RNNやLSTMは今ではどこまで使われているのか不明です。
-->

#### BERT
次のターニングポイントは、2018年に登場した**BERT**でしょう。

BERT（Bidirectional Encoder Representations from Transformers）は、Transformer技術をベースにしており、**難しい穴埋め問題を解く**ような学習を加えることで精度が向上し、当時、自然言語系の様々なタスクで高精度を獲得しました。

また、学習にあたっては、**文章を双方向から（文頭から、文末から）学習する**というのも特徴です。

この結果、**多義語**についても判断する精度が向上しました。例えば、与えられた文章内に含まれる「高い」が、物理的な位置の高さなのか、価格の高さなのかを判断する精度が向上しました。

詳細は、以前、私が公開した記事をご参照ください。（「[BERTを使った単語の分散表現（ベクトル表現）の獲得](https://qiita.com/artisanbaggio/items/2e8784918563ea8153f0)」)



余談ですが、モデルの名前に**ELMo**や**BERT**、**ERNIE**という名前が存在しています。これらの名前の由来をご存じでしょうか。実は、セサミストリートのキャラクターの名前から名づけられています。
BERT関連の系譜と合わせて、イメージ図を紹介します。（[系譜イメージ](https://github.com/artisanbaggio/PLMpapers#introduction)）


#### BERT以降
BERT以降のモデルでは、BERTをベースにしたモデルが多数登場し、**自然言語モデル界の戦国時代に突入**しました。スコアも人間を超えるようになっています。ただ、あまり大きな差が出にくくなっており、混沌としている感じもします。

特筆すべき点としては、ほとんどのモデルが、Googleをはじめとした米国のチームが発明していますが、**ALBERT**については、**Toyota Technological Institute at Chicago**（**豊田工業大学シカゴ校**）が関わっています。こちらは、**トヨタ自動車**の補助金を得て、**シカゴ大学**の敷地内にある大学院とのことです。実際には米国扱いになってしまうのかもしれませんが、気になるポイントです。

なお、2022/3/28現在では、シドニー大学、武漢大学、北京航空天文学大学による**Vega v1**というモデルがGLUE最高スコアを達成しています。


# 補足１（グラフの補足）
* GPT-3は、GLUEスコアが公開されていないのでSuper GLUEスコアを使っています。
* ERNIEのグラフにある日付は、最初の論文の日付(2019年4月)を採用しています。一方、スコアは、その後に改良が加えられた最新版スコアを使用しています。これは、当時のスコアをもう見れないためです。

# 補足２（技術的な紹介）
少し踏み込んで、最も単純な**Word2Vec**モデルについてだけ、その仕組みを簡単に紹介します。

Word2Vecには、大きく2つの方式があります。1つは**CBOW**でもう1つは**skip-gram**です。
今回グラフに採用したのは、スコアが公開されていたCBOW（continuous bag of words）の方です。（skip-gramのスコアは見当たらなかったのですが、CBOWよりは高いはずです。）

このCBOWはどういう方式かというと、以下のような文があった時、単語ごとに分割し、数値化し、各単語を推論させるような学習をするモデルです。

```
私は飛行機でロンドンに行った。
```

これだけでは分からないと思いますので、順を追って説明します。

##### １．単語分割
まず、単語に分割します。

```
私
は
飛行機
で
ロンドン
に
行った。
```
※単語分割は、英語だとスペース区切りなので単純ですが、日本語だと形態素解析器が必要ですね。

ここで、説明を分かりやすくするため、一旦、助詞や句点を除去します。

```
私
飛行機
ロンドン
行った
```

##### ２．単語の数値化
これは、幾つかの方法があると思いますが、機械が理解できるように0と1で表現します。
単語の位置情報を表現するには、単語のベクトル表現（分散表現）言います。

例えば、1次元目を「私」、2次元目「飛行機」、3次元目「ロンドン」、4次元目「行った」とすると、以下のような表現になります。

```
1,0,0,0 (私)
0,1,0,0 (飛行機)
0,0,1,0 (ロンドン)
0,0,0,1 (行った)
```

##### ３．学習
分かりやすさのため、単語のままで説明し、かつノイズも復活させます。
各単語の穴埋め問題を解きます。

```
私は飛行機で〇に行った。
```

さて、〇には何が入るでしょう。
人間であれば、〇には地名が入ることが推測できます。
機械はこれを学習・推論によって導き出します。
Word2Vec（CBOW）の場合は、両隣の単語から学習します。

```
学習する単語：飛行機、行った
答え　　　　：ロンドン
```

つまり、「飛行機」と「行った」という単語が来たら、答えは「ロンドン」だと学習するのです。
こうすることで、次に同じ問題が出た時は、ロンドンだと答えやすくすることが出来ます。

でも、その学習方法ですと、ロンドン以外の場所には行けませんよね。
その通りです。
ロンドン以外の場所に行くには、文章をどれだけ多く学習できるかにかかっています。
以下のように３つの文を学習した場合、ロンドンが答えになる確率は33%です。

```
飛行機でロンドンに行った
飛行機でパリに行った
飛行機で沖縄に行った
```

機械が答えを導くというのは、確率を提示するだけです。
もっとも高い確率の答えを採用するかどうかは、人間の判断によります。


このモデルの学習では、副産物として単語の分散表現を得られます。この分散表現について、距離が近い単語が、実は意味的にも近かったということが分かり、発明者のTomas Mikolovも驚いたそうです。これが大きな発明でした。


# 補足３（発明者一覧）
補足として、モデルを発明したチーム/主な発明者を下表に示します。
なお、正確なチーム名は、Facebook AI ResearchやGoogle Brain,Google Researchのようになっていますが、分かりやすさのためFacebookやGoogleと表記しています。ご了承ください。

| 年月日     | モデル           | 発明チーム/発明者                                                            | 
| ---------- | ---------------- | ---------------------------------------------------------------------------- | 
| 2013年1月  | Word2Vec（CBOW） | Tomas Mikolov                                                                | 
| 2014年5月  | Doc2Vec          | Quoc V. Le、Tomas Mikolov                                                    | 
| 2014年9月  | Attention        | Jacobs大学（ドイツ）                                                         | 
| 2014年10月 | Glove            | Stanford大学（米国）                                                         | 
| 2016年7月  | fasttext         | Facebook（米国）                                                             | 
| 2017年6月  | Transformer      | Google（米国）                                                               | 
| 2018年2月  | ELMo             | アレン人工知能研究所（米国）                                                 | 
| 2018年6月  | GPT              | OpenAI（米国）                                                               | 
| 2018年10月 | BERT             | Google（米国）                                                               | 
| 2019年2月  | GPT-2            | OpenAI（米国）                                                               | 
| 2019年4月  | ERNIE            | Baidu（中国）                                                                | 
| 2019年6月  | XLNet            | Carnegie Mellon大学（米国）、Google（米国）                                  | 
| 2019年7月  | RoBERTa          | Facebook（米国）、ポールアレンスクール（米国）                               | 
| 2019年9月  | ALBERT           | Google（米国）、豊田工業大学                                                       | 
| 2019年10月 | T5               | Google（米国）                                                               | 
| 2020年3月  | ELECTRA          | Stanford大学（米国）、Google（米国）                                         | 
| 2020年5月  | GPT-3            | OpenAI（米国）                                                               | 
| 2020年6月  | DeBERTa          | Microsoft（米国）                                                            | 
| 2021年12月 | Turing NLRｖ5    | Microsoft（米国）                                                            | 
| 2022年1月  | Vega v1          | シドニー大学（オーストラリア）、武漢大学（中国）、北京航空天文学大学（中国） | 



以上、最後までお読みいただき、ありがとうございました。
また、誤り等ございましたら、ご指摘いただければ幸いです。