XLNetの動作確認と、AllenNLPを使った開発の紹介

arXivTimes
4 min readAug 1, 2019

--

7/29のarXivTimes輪講では、XLNetの論文の確認と、AllenNLPを使った開発方法の共有を行いました。

XLNet: Generalized Autoregressive Pretraining for Language Understanding

XLNetについてメンバーが書いた記事をベースに読み進めていきました。XLNetは自己回帰的(Autoregressive的)ですがBERTはAuto Encoder的、つまりノイズを抜く形式になっています。BERTではMaskを掛けることでノイズを入れていますが、実際にはノイズが入らないため予測時に問題がある・・・というのがXLNetが指摘している問題です。これを解決するため、XLNetでは単純に単語を予測するよう学習します。ただし、予測する際に使用するContextは順序を入れ替えたもの(Permuteされたもの)になっています。「次の単語を予測するけど使用するコンテキストは様々な位置のもの」という工夫を行っている点が、XLNetの肝になっています。Contextは通常のSelf Attentionで作成しますが、予測に使用できるのは予測箇所以外にマスクを掛けたものになります。前者がContext Stream、後者がQuery Streamとなっています(多分)。このあたりの動作を把握するのが結構難しかったです。

AllenNLPを使った開発

直近の研究でAllenNLPを使ったメンバから、AllenNLPを使った開発の方法を共有してもらいました。AllenNLPを使うメリットは以下2点です。

  • 様々なモデルが実装されているので、モデル構築が楽
  • ハイパーパラメーターが外だしできるので楽(jsonnet)

実際の構築では、DatasetReaderでデータのロード+前処理を実装し、Modelでモデルを構築します。Optimizerなどは外のConfigから指定します。Modelから指定された通りのレスポンスを出力すると、Configの設定に従って最適化してくれるというイメージです。ConfigはWebのUIから作成できます(GUIがある)。

かなり至れり尽くせりで、すごい便利な感じでした。単純に開発が楽になるのではなく、運用が楽(ハイパーパラメーターの外出しなど)になるのが魅力かと思います。ただ、カスタマイズはまだまだしにくい面があり、以下の方が自由度は高そうでした。

At the End

arXivTimesでは、論文輪講のメンバ及びarXivTimesへの投稿をお待ちしております(投稿上でのディスカッションなどもできればと思っています)。興味をお持ちの方は、Twitterのメンションでぜひご連絡ください。

--

--

arXivTimes

機械学習論文の勉強会「arXivTimes」のアカウントです。 機械学習/自然言語処理/コンピュータビジョンに関する最新情報をツイートしています。 興味のある方、フォローお待ちしております。