Edited at

自然言語処理の代表的なモデル・アルゴリズム時系列まとめ


はじめに

これまでに提案されてきたNLPモデル一つ一つについて詳しく知りたかった&改良の歴史を知りたかったため、特に有名だと思われるものをまとめました。MikolovらによるRNNLM以降を対象としています。

注)提案年については主にarXivのSubmission historyを参照しています。詳細な日付まで分からなかったものもあります。


代表的なNLPモデル・アルゴリズム一覧


RNNLM


  • 提案年:2010

  • 提案者:Tomáš Mikolov1,2, Martin Karafiát1, Lukáš Burget1, Jan “Honza” Černocký1, Sanjeev Khudanpur2

  • 提案者所属:



  • 1Speech@FIT, Brno University of Technology, Czech Republic

    2Department of Electrical and Computer Engineering, Johns Hopkins University, USA

  • 提案論文:Recurrent neural network based language model

    ※RNNLM自体はもっと前からあったように取れるが、注目されはじめたのはこの論文から?

    参考文献には、RNNによる言語モデルは2010年にMikolovらに提案されたと書いてあった。

Recurent Neural Network based Language Model。RNN自体は1900年代からあったが、それをNLPの領域に活用したものを特にRNNLMと呼ぶ。

参考文献

ゼロから作るDeep Learning ❷ ――自然言語処理編


Word2Vec

単語ベクトルを獲得する隠れ層一層のモデルが提案されている。

Word2Vecの名前が有名だが、Word2VecというのはOSS実装のツール名であり実際にはCBOW(Continuous Bag-of-Words)モデルとSkip-gramモデルの二つ。

CBOWは周辺語からその間にある単語を推測するタスク、Skip-gramはある単語からその周辺の単語を推測するタスクを解かせることで、結果的に得られたニューラルネットワークの重みベクトルを単語ベクトルとしている(モデル自体を使うわけではない)。

経緯としては、上記のRNNLMで獲得できる単語ベクトルの質の改善として提案された。

参考文献

Mikolovのword2vec論文3本(2013)まとめ - こんな夢を見た

Google Code Archive - Long-term storage for Google Code Project Hosting.


Doc2Vec

Word2Vecは単語ベクトルしか獲得できなかったが、入力に文書IDを追加することでそれに加えて文書ベクトルを獲得可能にしたモデル。Doc2Vecというのもおそらくツール名。

CBOWの改良版であるPV-DM(Distributed Memory version of Paragraph Vector)とSkip-gramの改良版であるPV-DBOW(Distributed Bag of Words version of Paragraph Vector)が提案されている。

後述するSCDVの論文ではいくつかのタスクで性能が極めて低い結果となっている。

参考文献

【論文紹介】Distributed Representations of Sentences and Documents


Attention

従来のEncoder-Decoderモデルの弱点である、「Encode結果が固定長であるために、長文を入力すると情報量が圧縮されすぎる」という問題を解決するための機構。

これ以降に登場した様々なモデルに採用されることになる。

参考文献

Seq2Seq+Attentionのその先へ - Qiita

seq2seq で長い文の学習をうまくやるための Attention Mechanism について - Qiita


GloVe


  • 提案年:2014/10

  • 提案者:Jeffrey Pennington1, Richard Socher1, Christopher D. Manning1

  • 提案者所属:1Computer Science Department, Stanford University, Stanford, CA 94305

  • 提案論文:GloVe: Global Vectors for Word Representation

単語ベクトルを獲得する手法。共起行列を用いたカウントベースの手法と、Word2Vecのような推論ベースの手法を合わせた手法で、3つのタスクでWord2Vecを上回る結果になった。

参考文献

論文メモ: GloVe: Global Vectors for Word Representation

Pennington, Socher, and Manning. (2014) GloVe: Global vectors for word representation

stanfordnlp/GloVe: GloVe model for distributed word representation


seq2seq

系列(例えば、文章など)を系列に変換するモデル。

Encoder-Decoderモデルとも呼ばれる。入力→Encoder→Decoder→出力の流れで学習されるが、このときEncoderとDecoderは中間層のみを共有しており、Encoderは入力データの圧縮、Decoderは出力データの生成に特化していることが特徴。

この論文ではEncoder、Decoder共にLSTM(Long Short-Term Memory)が使用されている。

英語ーフランス語間の翻訳タスクで高精度を出した。

これがあってのAttentionだと思っていたが、こっちの方が世に出たのが遅い??

参考文献

今更ながらchainerでSeq2Seq(1) - Qiita

ゼロから作るDeep Learning ❷ ――自然言語処理編


fastText

Mikolov氏がFacebookに移って開発した単語ベクトル獲得モデル。その名の通り、Word2Vecより学習が早い。subwordという概念を取り入れており、未知語に強い。

Word2Vecと比較すると、対象の単語の一部が含まれる単語が高い類似度となるので、タスクによっては悪い影響を及ぼす可能性あり。

例)javascriptの類義語

Word2Vec: jquery, jsx, dom, ajax,...

fastText: javascripts, coffeescript, ecmascript, vimscript,...

参考文献

facebookresearch/fastText: Library for fast text representation and classification.

word2vec, fasttextの差と実践的な使い方 - にほんごのれんしゅう


SCDV

文書ベクトルの獲得を目的としたモデル。これまでのモデルと比較してかなり高い精度を出している。

SCDVのアルゴリズムは大きく3ステップで成り、ざっくり説明すると以下の通り。


  1. Skip-Gramで得られた単語ベクトルをGaussian Mixture Models(GMM)でソフトクラスタリング

  2. 単語ベクトルを各クラスタに所属する確率を考慮し補正、結合して文書ベクトルに変換

  3. 文書ベクトルの要素のうち0に近いものを0に変換(スパースにする)

単語ベクトル→文書ベクトル変換は、結局足しているだけっぽいのでGMMの箇所がキモなのだと思われる。

参考文献

文書ベクトルをお手軽に高い精度で作れるSCDVって実際どうなのか日本語コーパスで実験した(EMNLP2017) - Qiita


GNMT


  • 提案年:2016/9/26

  • 提案者:Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V. Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, Jeff Klingner, Apurva Shah, Melvin Johnson, Xiaobing Liu, Łukasz Kaiser, Stephan Gouws, Yoshikiyo Kato, Taku Kudo, Hideto Kazawa, Keith Stevens, George Kurian, Nishant Patil, Wei Wang, Cliff Young, Jason Smith, Jason Riesa, Alex Rudnick, Oriol Vinyals, Greg Corrado, Macduff Hughes, Jeffrey Dean

  • 提案者所属:Google(おそらく全員)

  • 提案論文:Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation

Google翻訳の中身(今も?)。

seq2seqのでかいバージョンだと思われる。

参考文献

論文解説 Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation (GNMT) - ディープラーニングブログ


Transformer


  • 提案年:2017/6/12

  • 提案者:Ashish Vaswani1, Noam Shazeer1, Niki Parmar2, Jakob Uszkoreit2, Llion Jones2, Aidan N. Gomez3, Lukasz Kaiser1, Illia Polosukhin

  • 提案者所属:1Google Brain, 2Google Research, 3University of Toronto

  • 提案論文:Attention Is All You Need

「Attention Is All You Need」という挑戦的な論文タイトルが話題となった。

これまでは、Attention機構はRNNの一部として使用されることが一般的だったが、本論文で提案されるTransformerはAttentionのみを使用している。

参考文献

論文解説 Attention Is All You Need (Transformer) - ディープラーニングブログ

作って理解する Transformer / Attention - Qiita


ELMo


  • 提案年:2018/2/15

  • 提案者:Matthew E. Peters1, Mark Neumann1, Mohit Iyyer1, Matt Gardner1, Christopher Clark2, Kenton Lee2, Luke Zettlemoyer2

  • 提案者所属:1Allen Institute for Artificial Intelligence, 2Paul G. Allen School of Computer Science & Engineering, University of Washington

  • 提案論文:Deep contextualized word representations

Embeddings from Language Models。

単語ベクトルを獲得する手法。Word2Vecと異なり、文脈を考慮した単語ベクトルを獲得できる。

例えば「日」という単語は、文脈によって太陽を表したり日付を表したりする。Word2Vecはそこを一緒くたに「日」と学習させていたが、ELMoは文脈によって異なる単語として学習できる。

モデルはbidirectional LSTMが使われている。

これ以降、セサミストリートの登場キャラクター名を冠したモデルが少し流行した。

参考文献

文脈を考慮した単語表現を獲得するELMo - Technical Hedgehog


GPT

Generative Pre-Training。

ラベルなしデータを学習させたモデルを転移学習させることで各タスクにおける性能が向上した。

参考文献

Improving Language Understanding by Generative Pre-Training · Issue #790 · arXivTimes/arXivTimes · GitHub


BERT

近年の大きなブレイクスルーであり、非常に有名なモデル。

GPTと同じく、ラベルなしデータを転移学習させることでタスクを解くが、多くのタスクにおいてState-Of-The-Artを更新したため、汎用的に利用できる言語モデルとして注目されている。

モデルはbidirectional Transformerが使われている。

事前学習では、入力のうちいくつかの単語をマスクし、マスクした単語を予測するタスクを解かせる。

参考文献

汎用言語表現モデルBERTを日本語で動かす(PyTorch) - Qiita


MT-DNN

Multi-Task Deep Neural Network。

ロジック自体はBERTも参考にしており、性能はBERTを上回る。

BigBirdと呼ばれていたこともあるそう。

参考文献

MT-DNN:BERTを凌駕するMicrosoftの新しいNLPモデル │ WebBigData


GPT-2

GPTの後継版。

あまりに自然な文章生成を行えるため、フェイクニュースなどへの悪用を懸念し、OSS化はされておらず大規模データで学習したモデルも公開されていない。

このことは各種ニュースサイトにも取り上げられ話題となった。

2019/8に中規模モデルが公開された。

参考文献

GitHub - openai/gpt-2: Code for the paper "Language Models are Unsupervised Multitask Learners"

「危険すぎる」と言われたAIの自動文章作成ツール「GPT-2」のモデルが新たに公開へ - GIGAZINE


ERNIE

BERTを中国語に特化させたバージョン。

参考文献

ERNIE/ERNIE at develop · PaddlePaddle/ERNIE · GitHub

BERTに続け、バイドゥが発表した中国語における問題に対処したERNIEとは? | AI-SCHOLAR


XLNet

BERTの事前学習方法を改良したモデル。

タスクの結果だけ見るとBERTの上位互換的な性能をしている。

参考文献

GitHub - zihangdai/xlnet: XLNet: Generalized Autoregressive Pretraining for Language Understanding

XLNet論文をサーベイしてみた - Qiita


roBERTa


  • 提案年:2019/7/26

  • 提案者:Yinhan Liu2, Myle Ott2, Naman Goyal2, Jingfei Du2, Mandar Joshi1, Danqi Chen2, Omer Levy2, Mike Lewis2, Luke Zettlemoyer2, Veselin Stoyanov2

  • 提案者所属:1Paul G. Allen School of Computer Science & Engineering,
    University of Washington, Seattle, WA, 2Facebook AI

  • 提案論文:RoBERTa: A Robustly Optimized BERT Pretraining Approach

BERTの事前学習方法(パラメータチューニング)を改良したモデル。

XLNetより高い性能を出している。

読みはロベルタ?ロバート?

参考文献

RoBERTa: A Robustly Optimized BERT Pretraining Approach · Issue #1329 · arXivTimes/arXivTimes


ALBERT

GLUE Benchmarkにおける2019/10/10現在のSOTA。

BERTを改良して軽量化&性能向上した。


おわりに

新たに様々なモデルが登場し、高い性能を示しているのはわかりますが、「結局モデルがでかいだけじゃん」感が拭えない気もします。Word2Vec並みに軽量で、そこそこ高い性能を示すモデルが登場すれば爆発的に流行しそうですが、そっち方面の研究って無いんでしょうかね。とか言ってたらBERTの軽量版であるALBERTが出ました(それ以前にもBERTの軽量化や蒸留モデルはあったみたいです)。

まだそれぞれについてざっくりとしか理解できていないので、今後はそれぞれの論文をきちんと読み、記事に反映させていきたいと思います。

誤り、また他に押さえておくべきモデルがあればコメント頂けると幸いです。