古典的言語モデルのお勉強

午前5時半からメール処理。4時くらいに起きても若干身体がしんどく、6時前後にならないとすっきり起きられないのだが、なんでだろうか……。

午前中は古典の論文紹介。

  • Rada Mihalcea and Paul Tarau. TextRank: Bringing Order into Texts. ACL 2004.

これは PageRank自然言語処理に持ち込んだ論文として有名で、重要語抽出と文書要約(重要文選択)タスクでその効果を検証している。リンク解析の初歩について解説したりしながら説明したので実験のところは詳しく見られなかったが、重要語抽出には色々なヒューリスティックスが入っていたり、文書要約では評価尺度が ROUGE-1 でいいのかという問題があったり(重要度順に抽出すると抽出文の重複があるので、劣モジュラ最適化などの最適化問題にして解くのがその後流行った)するが、コアとなるアルゴリズムはシンプルで、いい論文である。

午後は研究会。今日から大学院生による自然言語処理に関するチュートリアルで、それぞれが資料を作成して新入生向けになにか話してもらうというものである(資料を作成することも勉強なので、誰かの資料を使って説明だけする、というのは認めていない)。今回は

  • Byte Pair Encoding (SentencePiece)
  • Self attention (Transformer)
  • 言語モデル

という3つのトピックについて解説してもらう。

BPE はニューラル機械翻訳で用いられる前処理の一つで、単語よりも小さい単位に単語を分割することで未知語の問題を解消しようとするものだが、日本語や中国語のように単語境界が明確ではない言語ではまず単語分割からしてよく分からないので、SentencePiece という手法が提案された、という経緯と手法の詳細について説明してもらう。SentencePiece のアルゴリズムをちゃんと把握していなかったので、今回チュートリアルをしてもらって大変勉強になった。これ、形態素解析や日本語入力に関連する知見というか洞察が詰まっていて、工藤さんならではの研究だな〜と思ったりする。自分は以下の研究を思い出した。

BPE や SentencePiece のような単語分割の話、(せっかく情報理論の授業を6年も教えているので)情報理論的にきれいに解けるといいと思っているのだが、なかなかうまく行かない(深層学習における最適な単語分割の問題、3年取り組んでいて、まだすっきり解けていない)。

Self attention の話はニューラル機械翻訳発祥のものだが、エンコーダ・デコーダモデルでエンコーダ側の情報を単純にデコーダ側でアテンションとして利用するのではなく、エンコーダ側でアテンションを張って利用する、というようなアイデア。計算が重たいという問題はあるのだが、精度は高いし、エンコーダ・デコーダモデルに限らずエンコーダだけしか使わないようなタスクでもそれなりに使い勝手があるという利点もある。このあたり、もう少し掘り下げてみたい。

言語モデルについては深層学習の登場でそれまでの言語モデルの研究がいったん古典になってしまったという問題はあるが(もうみんな RNN でやってしまっているような)、それこそ言語モデル情報理論やデータ構造には美しい関係があるので、ニューラル全盛のこの時代こそしっかり古典的な内容も抑えてほしい。(というか、ソフトウェアエンジニアとして就職したら必要になる知識は、深層学習の知識ではなくこういう基盤的なレイヤーのスキルだと思うのだが)