最近読んだ論文 2019/11/16
仕事や趣味で読んだ論文について、ごく簡単に紹介していくという記事です。 毎週は難しいかもしれませんが、ちょくちょく書いていきます。
今回は3本の論文を紹介します。
- Beyond Word Importance: Contextual Decomposition to Extract Interactions from LSTMs
- A Topological Loss Function for Deep-Learning based Image Segmentation using Persistent Homology
- SinGAN: Learning a Generative Model from a Single Natural Image
Beyond Word Importance: Contextual Decomposition to Extract Interactions from LSTMs
LSTMに入力されるトークン列の範囲が出力に対してどの程度の影響を持っているのかを分析する手法であるContextual Decompositionを提案しています。 "Beyond Word Importance"というタイトルどおり、token列に対するSentiment Analysis について、token単位での出力に対する貢献はもちろん、token列の任意の範囲の貢献も出すことができるという手法です。 いわゆる「説明可能なAI」の流れに属する手法ですが、LIMEのような近似的な線形モデルを構築するのではなく、内部を流れる値を各入力要素の貢献の和に分解することで説明しようという手法です。
Attentionを使った手法などで各tokenが出力(ネガティブ/ポジティブ)にどのように貢献しているのかを可視化する方法はありますが、本手法の特徴は、連続するtoken列の範囲に対して貢献を出力することができます。
手法の肝となるのは、LSTMのセル間を流れるとを、token範囲の効果とそれ以外の効果に分離するということです。
こんな分離どうやってやるの、という感じなのですが、LSTMの特性をうまく利用して頑張って分離しているようなのですが、ちょっと読んだ程度ではなかなか理解できません。
また、非線形の変換であるや シグモイド関数は、以下のような特性をもつ関数などを考えることで、各要素の和に対する変換を、各要素に対する返還の和へと分離します。
こんな便利な関数は実際には存在しませんので、は、入力された値に応じて動的に決まることになります。このような分離は、シャープレイ値の近似であると論文中では説明されています。
公式の実装がgithubで公開されていますが、対応しているPyTorchのバージョンが古く、最新のバージョンで動かすためには、少し変更する必要があります。 github.com
もっとも、本手法の後継論文の実装が2つ、別のリポジトリでActiveになっていますので、ちょっと触ってみてたいということであればこれらのほうが良いでしょう。 前者は、本論文で提案した手法をConv層やReLUなどにも使えるように拡張し、階層的な説明を可能にするというもの。後者は、Contextual Decompositionによって得られた説明に対して、修正を施すことで、モデルを改善できるという手法のようです。
- GitHub - csinva/hierarchical-dnn-interpretations: Official code for using / reproducing ACD (ICLR 2019) from the paper "Hierarchical interpretations for neural network predictions" https://arxiv.org/abs/1806.05337
- GitHub - laura-rieger/deep-explanation-penalization: Code for using CDEP from the paper "Interpretations are useful: penalizing explanations to align neural networks with prior knowledge" https://arxiv.org/abs/1909.13584
A Topological Loss Function for Deep-Learning based Image Segmentation using Persistent Homology
なんとなくタイトルから、面白そうだと思ったので読んでみた論文です。 本論文は、セグメンテーション結果に対して、パーシステントホモロジーを用いた正則化手法を提案しています。
真のセグメンテーション結果がわからない場合でも、トポロジカルな性質(Betti数)さえわかっていれば、セグメンテーションモデルの出力から計算できる微分可能な値であるPersistence barcodeのbirth/deathを用いて損失を計算できる、ということのようです。
実用例として、学習済みモデルの出力結果を補正するために使う方法と、半教師あり学習に使う方法が示されています。半教師あり学習に使うケースは、ラベルなしデータに対してトポロジカルな性質が事前にわかっているとし、現実的なユースケースではすべて同一であることが求められるようです。 このようなケースはやや特殊なドメイン(この論文では心臓の写真なので、必ず心室の壁がリング状になる)でのみ有効なようにも思いますが、ドメインによっては強力な正則化や後処理の手段になりそうです。
自分はトポロジーについて超ぼんやりとした理解しかしていないので、これから色々勉強していこうとしているところですが、以下のようなリポジトリ(論文もある)があったりして、道具は徐々に整備されてきているようです。
SinGAN: Learning a Generative Model from a Single Natural Image
ICCV2019のBest Paperに選ばれた論文です。 単一の画像で作るGANということで、どういうことなんだろうと思って読んでみた論文です。 今週、Qiitaに解説記事を書いてみましたので、詳しくはそちらを御覧ください。
モデル自体はそこまで複雑なところは無いのに、いろいろな応用があるというのが、非常に面白い論文でした。特にアニメーション生成はすごく面白いと思ったので、論文を読んだあとに公式リポジトリのサンプルを動かしてみました。教師データに用意する画像が一枚で済むこともあり、訓練時間は1時間程度ですし、GANを実際に動かしながら学びたいという人にとっての入り口としても良いと思いました。