blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2017.07.05 イベントレポート

ICLR2017読み会を開催しました

by Yusuke Uchida

#AI

はじめに

こんにちは、AIシステム部の内田(@yu4u)です。 大分時間が経ってしまいましたが、先日、深層学習に関する論文が多数発表された国際学術会議、International Conference on Learning Representations (ICLR'17) の論文読み会をSakuraカフェにて開催したのでその報告です。 ICLRは、オープンレビューを採用しているので、リジェクトされたものも含め全ての論文およびレビューを読むことができるので、こういう読み会には丁度良いかもしれません。

ICLR'17ウェブサイト

オープンレビューサイト

読み会のConnpass

読み会のTogetter

当日の様子

懇親会の様子

背景

私自身はコンピュータビジョンが専門ですが、その中で利用するニューラルネットのモデルやその学習方法、モデル圧縮等に興味があり、ICLRの論文は良く読んでいました(ICLRの論文を読むというよりは、気になる論文を読んでいたらそれがICLRの論文であるケースがあるという方が正確)。

そんな折、同僚がICLRに参加するらしいということでふと調べてみると、ICLRに関しては過去国内で読み会が開催されていない (to the best of my knowledge) ことに気づき、使命感(?)から開催を企画する運びとなりました。 Twitterで発表者を募ったところ、Connpassでは発表者の募集ができないくらい多くの方に手を上げて頂けたので、当初15時くらいから開催しようかと思っていたのですが、半日フル開催というボリュームにすることができました。

感想とか

こういう勉強会の企画・運営は初めてだったのですが、会場はもとより、コーヒーブレークや懇親会まで会社的にフルバックアップしてもらえたので、スムーズに開催することができました。あとConnpassは良いサービスですね!

発表者の方々がその道のプロばっかりだったので、発表内容のクオリティが高かったのが凄かったです。当日はずっと司会だったのですが、内容がかなり学術的であることもあり、たまに質問が途切れると専門ではない内容でも質問をしなければという使命感から、学会の座長をしている気分でした。おかげで、実はコンピュータビジョンとか個別の分野よりも、こういうより抽象的なレイヤーの研究のほうが面白いのではないかと思い始めてきました。

機会があれば、またこういう勉強会は企画してみようと思います。あと、来年のICLR読み会も開催したいと思います。

当日の発表内容

以降の内容は当日の各発表の解説です。当日何となく理解したつもりになった発表も、厳密に分かっていないところもあるので、結局元の論文を読み返したりしてしまいました。専門ではない内容も多いため、間違いがあればご指摘ください!

ICLR2017紹介

最初の発表では、PFNの宮戸さんにICLR2017を俯瞰できるようなご講演をして頂きました。 実は大学の研究室の先輩であるPFNの @sla さんから、宮戸さんがICLRで発表されるということを聞き、ICLRという会議自体を俯瞰できるようなご講演をお願いしたところ、ご快諾頂きました。 現場の盛り上がりを感じられる内容で、ポスター会場の混み具合はもとより、夜は企業がパーティーみたいな場を設けているということで、もはやお祭りですね。 本会議の採録率は39%らしく(去年は28%)、間口を広げる方向にシフトしているのかもしれません。来年は是非発表者として参加してみたいですね。

医療データ解析界隈から見たICLR2017

次に、理化学研究所の川上さんに、医療データ解析をされている立場からICLRという会議を振り返って頂きました。 川上さんは医師免許を持っておられるお医者さんでもあり、同僚の @pacocat がICLRの現地でお会いした際に読み会に興味を持って頂けたとのことで、なかなか聞けない切り口でご講演頂けるのではと思いお願いさせて頂きました。 弊社もヘルスケア事業にも力を入れており、医療領域における機械学習の活用は非常に興味があります。個人的にはパーソナライズドな医療に期待しています。 論文の実験の再現性が低いという話があり、再現しなかったからと言って直ちに間違っているということも言えないので、なかなか新しい手法が出てきて一気に変化が起こるような領域ではないのだろうと考えさせられました。 自分の分野だと、話題の手法はあっという間に再実装や追試がされていくので、対照的だと感じました。最近だと、例えばSELUs (scaled exponential linear units) という手法が話題になって、あっという間に追試された結果が色々Twitterに流れてきたのは印象的でした。

Data Noising as Smoothing in Neural Network Language Models

@Quasi_quant2010 さんのご発表。 これまでn-gramを用いた言語モデル (language modeling) では、Kneser-Neyに代表されるスムージングが非常に重要な役割を果たしていた。他方、RNNによる言語モデルでは、単語(列)の頻度を明示的に扱っているわけではないので、そのようなスムージングを直接的に行うことはできなかった。 そこで、n-gramから導出される確率を利用して、RNN言語モデルを学習する訓練データに対し、単語を置き換えたりするノイズを加えることで、スムージングと同様の正則化を実現することを提案し、経験的にperplexityが低下することを示した。

レビューでも経験的と言われていますが、アイディアは面白いですね。画像でいうと、ちょっと賢いData Augmentationをしているようなイメージでしょうか。 ちなみにKneserの発音は「k N AI z uh r」らしいです。

http://d.hatena.ne.jp/tkng/20100426/1272266900

On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima

石黒さん(みらい翻訳/NTTドコモ)のご発表。 DNNは多数のlocal minimumがあり、それらの局所解はどれもglobal minimumと遜色ないと言われている。この論文では、そのlocal minimumにはsharp minimumとflat minimumがあり、大きなバッチサイズを使うとsharp minimumに、小さなバッチサイズを使うとflat minimumに収束すると主張している。 Flat minimumは、局所解から多少パラメータを変動させても、ロスがあまり増加しないような局所解であり、訓練データとテストデータの分布の違いによりロス関数がずれたとしても、あまり精度が変わらない汎化された理想的な局所解と定義される。

大きいバッチサイズと小さいバッチサイズそれぞれで得られたパラメータを結ぶ直線上にあるパラメータを内挿・外挿により求め、ロスを算出することで、sharp minimumとflat minimumを可視化しているのが面白く、説得力があります。 ちなみにその後、バッチサイズの大小ではなく、SGDのパラメータ更新回数こそが重要であるという主張の論文が出ています。

論文: https://arxiv.org/abs/1705.0874

解説: https://www.slideshare.net/JiroNishitoba/20170629

Q-Prop: Sample-Efficient Policy Gradient with An Off-Policy Critic

@Reiji_Hatsu さんのご発表。 強化学習において最適な方策を見つける手法は、直接方策をモデル化する方策ベースの手法と、状態の価値をモデル化する価値ベースの手法に大別できる。 方策ベースの手法は、現在推定している方策と学習に利用しているサンプルが同じである方策オン型であり、安定した学習が可能である一方、方策がアップデートされるとこれまでの学習サンプルが利用できないためサンプル効率が悪い。 価値ベースの手法(Q学習)は、常に価値が最大となる方策を選択するため、サンプルの方策とは異なる方策に基づく方策オフ型である。このため、任意の方策でサンプリングされたデータで学習できる一方、学習が安定しない、複数ステップ法への拡張が難しいという問題がある。 この論文では、これらの手法のいいとこ取りをするというのがポイントである。具体的には、方策勾配の関数に、criticのTaylor展開したものを加えて数式コネコネすると、actor-criticの手法に似たアップデートの式が出てきて、criticが方策オフ型で学習できるようになる。

何となく雰囲気は分かるが、導出がトリッキーなので、時間があるときにAppendix Aの数式を追ってみたいです。上記のいいとこ取りという観点では、同じくICLR'17に下記のような論文もあります。 PGQ: Combining Policy Gradient And Q-learning

論文: https://arxiv.org/abs/1611.01626

解説: https://www.slideshare.net/sotetsukoyamada/pgq-combining-policy-gradient-and-qlearning

Tying Word Vectors and Word Classifiers: A Loss Framework for Language Modeling

@icoxfog417 さんのご発表。 機械学習である単語を表現する場合には、その単語のIDに該当する次元が1でそれ以外が0となるone-hotなベクトルが利用される。学習時のロスもこのone-hotなベクトルをベースに計算されるので、推論結果が、正解の単語とほぼ同じような単語であろうと全く違う単語であろうと同じロスが発生する。 本論文では、これに対し、単語間の類似度に基づき、正解をone-hotではなく広がりのある分布として表現し、その分布を用いてロスを計算することを提案している。 具体的には、元々のone-hotのベクトルと、単語の埋め込みベクトル間の内積により算出される類似度をsoftmax通すことで作られるベクトルの重み付き和により、この広がりのある分布を定義している。 また、one-hotのベクトルをdenseなベクトルにする埋め込み行列Lについても、出力時の射影Wと本質的に対応しているべきであり、それらを個別に学習しないような手法を提案している。具体的には、LがWの転置であるという制約を導入している。

読み会では、LとWの対応について逆行列で求めているのかという質問がありましたが、フルランクではないのでどのようにしているのかと思いましたが、論文を読むと上記のように転置であるという制約を入れているようです。

Stochastic Neural Networks for Hierarchical Reinforcement Learning

奥村さん(DeNA)のご発表。 迷路を解くような問題では、報酬がゴールにたどり着いた時にしか発生しない(報酬がsparse)。このようなケースでは、探索時にゴールに全く辿り着かずに学習が進まないという問題がある。これに対し、中間的なタスクを設定し、そこで汎用的なスキルを身に付けさせることで、報酬がsparseである問題を解決しつつ、身につけた汎用的なスキルを他の問題にも適用できるようにできれば嬉しいよねという問題提起。 本論文では、迷路を解く問題に対し、取り敢えず移動するというタスク(蛇のような関節モデルを想定しており、移動すらランダムだと難しい)を設定し、更に様々な方向に移動する多様性もあるように学習させるために、確率的ニューラルネットの利用と、色々な動きをした際に報酬にボーナスを与える相互情報量ボーナスを導入している。

やっていることは理解できるのですが、背景でなるべく中間タスクはhandcraftedにならないようにと言っている割に、えらくタスクに依存する手法となっているのがちょっとモヤモヤします。

Optimization as a Model for Few-Shot Learning

@_hokkun_さんのご発表。 Deep learningは大量の訓練データが存在する場合には威力を発揮するが、例えば鳥というクラスの中で細かい鳥の種類を分類するようなfine-grainedなタスクなどにおいて、各クラスに十分な訓練データが準備できないケース(few-shot learning)がある。そのようなケースでも高精度な認識をするための手法。 SGDの更新式ってLSTMのセルの更新式に似ているよねという発想から、SGDのパラメータの更新の方法をLSTMで学習するというメタ学習を提案している。

枠組みとしては通常の学習でも活用できそうな気がしますが、自動的にドメイン特化した更新式を獲得する枠組みがポイントなので、ドメインが決まっている通常の学習では単に学習率とかを色々単純に試したほうが良いかもしれません。 つまり、問題設定として、メタ学習データでメタ学習を行い、メタテストデータで先ほど獲得した学習方法を利用して学習を行う(ややこしいがメタテストデータに学習データとテストデータがさらに存在する)という前提があり、そもそも学習データで学習率を調整できない(ドメインが変わるので意味がない)のでこのようなアプローチが重要になるのだと思います。

Autoencoding Variational Inference for Topic Models

@nzw0301 さんのご発表。 Latent Dirichlet Allocation (LDA) をNeural Variational Inference (NVI) で行う(明示的にDirichlet分布は利用していないのでLDAと言うのは語弊がある?)。VAEではガウス分布のパラメータをニューラルネットが出力し、そのガウス分布からサンプルを生成する。この際、backpropができるような計算グラフを構築するreparameterization trickを利用する。LDAでは、ディリクレ分布のパラメータを生成し、多項分布(トピック分布)を生成したいが、そのままでは上記のtrickは利用できない。そこで、事後分布をガウス分布で近似するLaplace近似を利用し、ガウス分布からのサンプルにsoftmax(σ())を適用することで、多項分布をサンプルすることを可能とする。 上記のトピック分布θとトピック毎の単語生成確率行列σ(β)との積によって、最終的な文書の単語分布が得られる。ここで、σ(β)は、トピック毎の多項分布であり、最終的な単語分布はそれらのθによる重み付き和となる。このようなケースでは、生成される単語分布は、トピック毎の単語分布よりシャープにならず、幾つかのトピックにおいて主観品質の悪い結果をもたらすことがある。これに対し、本論文では、得られる単語分布をσ(βθ)とするProdLDAを提案している。この場合、βは多項分布であるような正規化がされていないため、上記の問題を解決できるとしている。また、学習方法もBNとDropoutを利用するなど工夫しているらしい。

とても勉強になりました。σ(βθ)としてしまうのは乱暴なようだけど、この定式化でもσ(β)はちゃんとトピック毎の単語性生成行列になるのですね。下記の論文のように、reparameterization trickにもいろいろな種類があって面白いです。

https://arxiv.org/abs/1611.00712

Variational Lossy AutoEncoder

@crcrpar さんのご発表。 VAEでは、潜在変数の事前分布p(z)を正規分布に、事後分布p(z|x)をガウス分布とすることが多い。このような単純な分布は表現能力が低く、真の事後分布にうまくfitしない問題が発生する。この問題に対し、Normalizing Flow、Inverse Autoregressive Flow (IAF) といった、より複雑な事後分布を生成できる手法が提案されている。これらの手法では、単純な分布を徐々に複雑な分布にする可逆変換を利用している。本論文では、IAFで事後分布を複雑な分布にするのではなく、Autoregressive Flow (AF) を用いて事前分布を複雑な分布にすることを提案し、AF事前確率とIAF事後確率のエンコーダ処理は同一であることを示した。

AFを事前確率に入れるほうがIAFを事後確率に入れるより表現能力が高いという主張が良く分かりませんでした。事前知識が足りず、normalizing flow辺りの論文から理解しないといけないですね。

Semi-Supervised Classification with Graph Convolutional Networks

関谷さん(DeNA)のご発表。 隣接行列で表現される重み付き無向グラフが与えられ、各ノードには特徴信号が紐付いている。一部ノードにはクラスラベルも付いており、残りのノードにはクラスラベルは付いていない。このような前提で、クラスラベルの付いていないノードのクラス分類を行う、graph-based semi-supervised learningの問題をグラフ畳み込みネットワークで解く手法。 グラフに対する畳み込みは、各ノードの特徴信号を並べたベクトルに対し、グラフラプラシアンの固有ベクトル行列を利用してグラフフーリエ変換を行うことでフーリエドメインに変換し、そこで畳み込みカーネルとの要素積を行い、最後に逆フーリエ変換する処理として定義される。 上記の処理は行列演算と固有値分解の計算量が大きいため、畳み込みカーネルをグラフラプラシアンの固有値の関数と定義し、1次までのチェビシェフ近似を用いることでノード数に線形なグラフ畳み込みを行うことを提案している。

チェビシェフ近似の辺りから、何でそれで良いのか理解が難しいです。ちなみに特徴ベクトルは独立に周波数ドメインに変換されて畳み込みが行われるようですが、次元間の関係をうまく捉えるような拡張とかできないかな、と思いました。

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。