【輪読会メモ】深層学習による自然言語処理#3
【概要】
- 「深層学習による自然言語処理」の輪読会をしています
- 輪読会第3回目は4章が範囲でした
【目次】
はじめに
講談社MLPシリーズの「深層学習による自然言語処理」の輪読会をしています。 輪読会の範囲で気になったことや資料のリンクなどをまとめていきます。
輪読会のリンクはこちらです。
「深層学習による自然言語処理」のほか、輪読会を定期開催しているので、気になった方はグループメンバーになってもらえるとうれしいです。 また、Slackのwork groupを用意しているので、参加したい方は何らかの方法で私に連絡ください(輪読会参加してなくてもwelcome)。
輪読会記録
資料リンク
勉強会で利用した資料のリンクを貼ります。発表担当は私でした。 なお、輪読会中に書き込んだメモなどがそのまま残っているので、一部見づらい箇所があるかもしれません。。。
第4章の概要
4章では、深層学習ベースの自然言語処理に特有の工夫が3点解説されています。
3点というのは、「注意機構(Attention mechanism)」、「記憶ネットワーク(momory network)」、「出力層の高速化」です。今現在では、Attention機構を利用したモデルが高い精度を叩き出している状況です。Attentionを利用するというのがデファクトスタンダードになりつつあるのかなと思います。
注意機構
注意機構(attention mechanism)をざっくりと表現すると、出力の生成時に必要な入力情報の重みを含めて学習する仕組みということになります。
通常の系列変換モデルが入力情報を全て一つのベクトルにEncodeしていることから、長い系列を扱うのは現実的に難しそうな感じがするという問題に対してのアプローチとなっているようです。わかりやすいかどうかは置いておいて、上記のスライドで図解しようと努力した跡が残っているのでよければ見てもらえればと思います。
注意機構という仕組みを導入していることでネットワークが複雑になっているように見えますが、結局のところ足し合わせる関数が一つ増えたと見れば、全てまとめて合成関数の微分を利用して勾配を計算できそうだなと理解できます(導出はしていないですが)。全てをニューラルネットワークで表現できるように行列積で表現できるというポイントを押さえておくと、怖く感じないような気がしました。
記憶ネットワーク
記憶ネットワークとは、記憶情報(文書をベクトル化したもの)を保持しておき、出力の生成時に必要な記憶情報の重みを含めて学習する仕組みということになります。書籍では、「直接的に記憶の仕組みをモデル化する研究の一つ」と書かれています。
注意機構とかなり似ている表現をあえてしたのですが、結局end-to-endに学習するモデルは、注意機構と同じような構成になるようです。
出力層の高速化
特に文書生成問題は語彙集合の中から単語を一つ選択する問題、つまり巨大な分類問題となります。そこで出てくるのが巨大なsoftmax関数なのですが、巨大なsoftmax関数の計算量を少なくするためのアプローチについて紹介がされています。
以下の3つの分類に分かれるのかなと思っています。
- 近似計算(少数のサンプルだけを使って計算):重点サンプリング
- 確率モデルを別の形に変形: NCE、負例サンプリング、ブラックアウト
- ソフトマックス関数を小さなソフトマックス関数の積でおきかえる:階層的ソフトマックス
その他:語彙の削減について
「出力層の高速化」では、語彙が多くなることで生じる問題をどう解決するかという取り組みでした。輪読会の議論の中で、「そもそも語彙を小さくすることで高速化の問題をクリアするという考えもあるよね」という話題になり、以下の文献を紹介してもらいました。
トークナイズフリーなモデルというのが最近出てきているという話は聞いていたのですが、そういったアプローチの一つです。
おわりに
ということで、「深層学習による自然言語処理」輪読会第3回目の記録でした。
4章では、今現在多く利用されている「注意機構」を扱いました。仕組み自体は気持ちを理解すると自然な構成でわかりやすく、また効果もあるだろうなということが理解できるかなと思います。
私の個人的なモチベーションとして、注意機構を理解したいというのが大きくありましたので、その仕組みを理解できたので満足です。
次回も楽しみ