Graph Convolutionを自然言語処理に応用する Part7(End)

piqcy
programming-soda
Published in
6 min readFeb 5, 2019

本記事は、Graph Convolutionを自然言語処理に応用する連載の最終回になります。最終回ではこれまで行なった検証とその結果、そこから導かれる考察をまとめたいと思います。項目は以下の通りです。

  1. 検証の背景(仮説)
  2. 仮説に関連する研究の調査
  3. 仮説を証明するための実験
  4. 実験結果を受けての考察
  5. 振り返り

検証の背景

「Graph Convolutionを使用することにより、よりリッチな分散表現を得られないか?」という仮説が本検証を始めたきっかけでした。

この仮説の背景には、Self-Attentionを利用したTransformerで高い精度/転移性能が得られていることがありました。Self-Attentionは、自ノードから他ノードへの接続(重み)を持つグラフ的な構造を持っています。そのため、ここにグラフを扱うためのネットワーク(Graph Convolution)を組み込めばより良い性能が得られることを期待しました。

仮説に関連する研究の調査

調査は、以下2つに分けて行いました。

そして、これらのサーベイを元に検証方針を作成しました。

ただ、この方針は途中でちょっと変えています。当初は転移性能を得たいというのが主目的でしたが、転移は高い精度あってこそなので、まずはその点を検証しました。

仮説を証明するための実験

仮説を証明するための実験として、以下の実装を行いました。

実装は以下になります。

実験の結果、Graph Convolutionによりベースラインと同等の結果を得ることはできました。しかし、上回るわけではありませんでした。また、既存の研究で良しとされていた係り受け/単語類似度によるグラフより、単純に前の単語に接続を行うようなシンプルなモデルの方が精度が高いという結果でした。

実験結果を受けての考察

最終的な考察は、以下の記事にまとめています。

  • TransformerのSelf-Attentionのように、自然言語処理においてグラフ的な機構が有用な場合はある。しかし、そのこととGraph Convolutionが有効なことは等価ではない。
  • Graph Convolutionが有効なのは、ノード分類/グラフ構造分類のタスクに落とし込めるケース。文脈情報を獲得したいというモチベーションと、Graph Convolutionの得意領域とはあまり合致しない。
  • Graph Convolutionを自然言語処理で使うならば、「大規模かつHeterogeneousなグラフで、ノード分類の問題に帰着できる」ケースが適していると思われる。

振り返り

「グラフが有効=Graph Convolutionが有効」ではないという点に早めに気付ければよかったかなという思いはあります(How Powerful are Graph Neural Networks?がなかったら気づいてないかも)。ここに気づけていたら、Part6に割と早い段階で行けたのではないかと。

ただ、実際に自分で手を動かして実装、実験をするというのはやはり良いものでした。最近本業では文書作成の方が多いので、今後もこうしたサーベイは続けていきたいと考えています。ほぼ週一ぐらいのペースでやることにこだわりましたが、見返すとだいぶ記事があり驚きました。やはり継続は力なりと思います。

本連載が、Graph ConvolutionをNLPで使って見たい方の参考になれば幸いです。

--

--

piqcy
programming-soda

All change is not growth, as all movement is not forward. Ellen Glasgow