Technical Hedgehog

機械学習と気になる技術を語るはりねずみ

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

文脈を考慮した単語表現を獲得する深層学習手法のELMoを紹介します。「アメ」は「Rain」と「Candy」どちらの意味か?それを文脈から考慮させるのがこの手法です。

f:id:kamujun:20180706171450p:plain

機械学習で取り組まれている複雑なタスクは、部分問題を解決する技術を組み合わせて実現されます。例えば文書分類というタスクに取り組む場合、文書特徴を獲得するために単語分割や単語表現などの手法を用いた上で、SVMやナイーブベイズといった分類器を用いる方法があります。部分問題を解決する技術は特定のタスクだけではなく、様々な問題で利用することができます。単語分割は文書分類にだけではなく質問応答など自然言語処理において幅広く利用されます。

上記のように部分問題は様々なタスクで用いられるため、部分問題の性能向上は様々なタスクの性能向上に寄与できる可能性があります。部分問題がうまく解決できていないと、それらを組み合わせて実現する応用タスクも望んだ結果が得られない恐れがあるためです。単語分割でいうと、単語がうまく区切れないまま文書分類を行ったとしても結果は芳しくないであろうという事は直感的に理解してもらえると思います。

今回は単語表現という部分問題において、文脈を考慮した表現を獲得するELMoと呼ばれる深層学習手法を紹介します。近年、単語を分散で表現する方法である単語埋め込み(word embedding)が注目されていますが、手法の多くは1単語毎に1つの表現しか得ることができません。これは「bank」という単語は「銀行」と「土手」という複数の意味を持ちますが、どちらか一方しか表現できていない可能性があります。ELMoではどの意味で用いられているのかを文脈から汲み取った上で、単語の表現を獲得することができていると主張されています。

本記事ではELMoの手法と、論文中で行われている複数の実験のうち「他手法との性能比較」と「文脈を考慮した表現獲得の確認」について紹介します。

ELMo

ELMoは事前学習によって文脈を考慮した単語表現方法を獲得する手法です。Allen Institute for Artificial IntelligenceMatthewらがNAACL 2018において発表し、ベストペーパー の一つにも選ばれています。

この手法の注目すべき点は、文脈を考慮した単語表現が獲得できる点です。このことは語義曖昧性解消(Word Sense Disambiguation)の助けとなると言えると思います。word embeddingは様々なタスクや手法でよく用いられるため活用シーンは多くあります。論文では6つのタスクにおいてELMoを既存手法で用いた結果、性能を上乗せできることを確認しています。

手法概要

この手法は双方向言語モデル(bidirectional language model。以降biLMと呼ぶ)を大量なコーパスを用いて獲得する事で実現されます。論文では1B Word Benchmarkを用いて事前学習させたそうです。

f:id:kamujun:20180706154428p:plain

双方向を用いる理由としては、順方向だけでなく文を逆方向からも読み進めることで語義を正しく捉えられる可能性があるためだと思います。例として「A bank is a financial institution that accepts deposits from the public and creates credit.」という文において「bank」の表現を獲得しようとした場合、順方向からは「A」だけの情報しか用いることができませんが、逆方向からだと「financial」や「deposit」、「credit」など金融に係る情報を利用することができます。

ELMoのアーキテクチャとしてはbi-directional LSTM(biLSTM)を複数層重ねた物となっています。論文の実験では2層のもので行われています。この手法の工夫としては各層の重みを調整(学習)させることでタスク特有の問題に適合させていると説明されています。

獲得された表現は他の単語表現と組み合わせることによって利用すると論文では説明されています。他の単語表現ベクトルと接続(concatenate)してモデルのインプットとします。このことは一般的な表現(ELMo)を活かしつつ、タスク依存となるドメイン固有の表現(word embedding)を利用することを目指しているのではないかと思います。

f:id:kamujun:20180706154530p:plain

6つのタスクにおける性能評価

論文中では様々なタスクに対して性能評価を行っています。取り組むタスクは質問応答(Question answering)、テキスト含意(Textual entailment)、意味役割付与(Semantic role labeling) 、(Coreference resolution)、固有表現抽出(Named entity extraction)、感情分析(Sentiment analysis)の6種類です。

実験では各タスク毎に用意したベースライン手法に対してELMoの有無で性能差がどれくらいであるか評価を行っています。また、ELMoを適用したベースライン手法と最先端手法(state-of-the-art:SOTA)の比較も行っています。

f:id:kamujun:20180706154649p:plain

ELMo適用有無による性能比較はいずれのタスクにおいても適用後のほうが優れています。また、SOTAとの比較においてもすべて上回っています。この実験によりELMoは多様性を含み幅広いタスクにおいて有用であるモデルだと論文で主張されています。

ELMoは文脈を考慮した表現を獲得できたのか?

各タスクにおいて性能向上に寄与していることは上記の通り確認しています。一方で、論文中では以下の3つの実験から文脈を考慮した単語表現を獲得していることを確認しています。

f:id:kamujun:20180706154709p:plain

1つ目の実験はELMoと他の単語埋め込み手法であるGloVeにおいて、似ている単語表現を持つ単語の比較です。ここでは「play」という単語が例として挙げられています。GloVeではざっくりと意味が似ている単語(「playing」や「game」など)が似た表現として取れています。一方で、ELMoでは文脈を考慮してスポーツを競技する「play」と、劇を演じる「play」は分けて表現できていると提示されています。

GloVeでは1単語から1つの単語表現を得るので、意味が似ている単語が多くなるのは想定通りなのかなと感じます。一方でELMoは文を与えて各単語の表現を得ており、用いる情報が多いためアドバンテージがあるためのではと思います。

f:id:kamujun:20180706154749p:plain

2つ目の実験では語義曖昧性解消(Word sense disambiguation)の実験です。ここではELMoではなく用いる言語モデル(2層biLM)の各層別々を対象として、他の手法と比較を行っています。結果(Table 5)を見ると2層目のbiLMが性能良く、教師あり学習手法のSOTAであるIacobacciらに迫っていると確認されています。

3つ目の実験は品詞タグ付け(POS tagging)の実験です。こちらの実験結果(Table 6)も同様に言語モデル(2層biLM)の各層別々を対象としており、1層目のbiLMがSOTAであるLingらに近づいています。

これらの実験によりELMoは文脈を考慮した表現が獲得できるていると説明されています。

個人的疑問点

ここで個人的な疑問点として、上記の実験だけでELMoは文脈を考慮した表現を獲得できたと言えるのかが気になりました。1つ目の実験ではELMoとGloVeの比較を例に文脈を考慮した単語が獲得できた例が挙げられましたが、なぜか2,3つ目の実験ではELMoではなく中で用いている言語モデルであるbiLMの各層を用いて実験していました。ELMoは各層の重みをタスクごとに学習することができるので各層の性能は参考にすることはできると思いますが、ELMo全体としての結果を見てみたいと思いました。

また、性能向上したのは文脈を考慮した表現が獲得したからと言えるのかという点も気になります。チームで話題にした際、ELMoは10億単語を超える大量のコーパスを用いて学習しているため、タスクで利用する際には未知語が少なくなっているのではないかという仮説が挙げられました。未知語が少ないほど性能が向上する可能性があるため、他の手法においても同程度の学習データを用意して実験したほうが良かったかもしれません。「文脈を考慮できた=各タスクで性能向上に寄与できた」というのは少し論拠が弱いかもと感じました。

おわりに

文脈を考慮した単語表現であるELMoを紹介しました。実験でも確認できたように性能向上の助けとすることができる事が確認できました。ELMoが良いなと思った点としては、大規模なコーパスから汎用的で文脈を考慮した表現を獲得できる点ではないかと思います。学習させるデータを毎回用意するのは手間がかかるため、事前に他のコーパスで事前学習しておくことができる点は利用シーンを広げることができるのではないかと思います。

次回はELMoを使った簡単な実験を記事にしようかと思います!
よろしければTwitterのフォローやいいねをお願いします。

参考