No bad local minima: Data independent training error guarantees for multilayer neural networks
今まで「3行で」コーナーやってたけど、「概要でよくね?」という気がしてきたし、なんとなく馬鹿らしくなってきたのでやめる。
"No local bad minima"というタイトル見た瞬間面白そうだと思ったので読もうと思った。
概要
ニューラルネットの学習誤差をネットワークの構造によって解析的に評価しようという内容。
凸最適化ならば勾配法で最適化できることが保証されるが、非凸最適化の場合は極小値にトラップしてしまい、最適な学習ができない可能性がある。
しかし、非凸な誤差関数でも学習誤差を抑えることができることを示している。
前提として誤差関数を勾配法で最小化する学習を想定しているので、誤差関数の微分可能な極小値(DLM; Differentiable Local Minimum)における解析を行う。
隠れ層1層の場合は意外とシンプルな解析で評価できるので、そのアナロジーで隠れ層の層数が一般の場合に拡張し、極小値における安定性を議論している。
隠れ層数が1の場合
まず、教師データを、第層の活性化要素を、出力を、全体の推定誤差を、ニューラルネットの総層数をとして以下のように定式化する。
活性化関数は非線形の関数(シグモイド関数等)が用いられることもあるが、ここでは線形の関数およびその組合せで書ける関数(ReLU, max-pooling等)に限定する。このように制限すると、活性化の定式化を上記のように行列演算を用いて行うことができ、解析の都合上楽になる。
最近の結果では、特にCNN等複雑な構造になればなるほど、下手に非線形関数を活性化関数に用いるよりも、ReLUを用いた方が高精度な識別器が得られることが多い。
例えばReLUの場合、
- (の場合)
- (otherwise)
を実現するには
- (の場合)
- (otherwise)
で十分。
次に、誤差関数(MSEを用いる)の定式化は
となる。ただし、は訓練データ数である。
隠れ層数1としてMSEの式をもう少し整理すると
となる。活性化行列が対角成分しか持たないので、もその対角成分しか寄与しない。
ニューラルネットのパラメータ行列をまとめてと書くと、
となる。シンプルな形になった。
さて、極小点ではパラメータ行列に関する微分係数が0、すなわち
である。もう少し具体的に書き下すと、
である。紛らわしいのだが、やに関する上付き添字は個々の訓練データのインデックスである。
これをクロネッカー積*1を用いて次のような行列を定義する。
(余談だが、クロネッカー積という単語を見たときはじめはクロネッカーのデルタと関係があるのかと思ったが、想像以上に関係無かった。テンソル積の行列だった。詳細はWikipediaを参照されたい)
すると、極値条件はシンプルに記述できる。
ややこしく見えるが、先程の極値条件を成分ごとに分解し、「各成分=0」という条件式を並べたのが最後のになる。
さて、この条件はと言い換えられる。核空間の次元はだが、もし仮に行列がフルランクだったとすると核空間の次元は0になるので、、すなわちMSEが0になる。
ところで、先程のクロネッカー積による表示は、一般にはKhatari-Rao積といい、Khatari-Rao積に関するいくかの事実を適用すると、のときにMSEが0になることがいえる。
この結果自体は、パラメータ数が訓練標本数よりも多いことが条件として課されているので、MSEが0になるのはある意味で当然であるように感じられるが、グローバルな最小解だけでなくローカルな極小解にトラップしてもMSEが0に収束することが保証されているという意味で価値があるのだろう。
隠れ層数が一般の場合
式を追うのに疲れたので割愛するが 基本的には1層の場合と同様の解析手法を適用することができる。
ただし隠れ層間の依存関係があるので、最後の2層以外はパラメータを固定し、最後の2層に同じ議論を適用するといった工夫が必要だ。
Learning Multiagent Communication with Backpropagation
果たしてこのシリーズが続くのか、はたまた3日坊主になるのか。
(まあ流石に毎日やるつもりはないのだけど)
3行で
- マルチエージェントシステムに関して
- 相互に通信するようなニューラルネット(CommNNと呼ばれている)を用いて制御
- 交通渋滞回避などに応用できそう
概要
マルチエージェントシステムは元々生体の形態形成に触発されて提唱された計算パラダイムで、個々の個体(computational particleとか、または普通にエージェントとか呼ばれるみたい)はすべて同様のプログラムで動いていて、システム全体として見ると計算が行われるようなシステムのことを指す。
エージェントは自分のglobalな位置を知ることはできず、半径r内近傍のエージェントとの距離や、自身の状態を知ることのみ許されている。
具体的な例としては、ハーバード大学で開発された群ロボットであるKilobotが有名だろう。
マルチエージェントシステムは、分散計算やロボティクス等の分野での応用が期待されている。
今回は、マルチエージェントの制御にニューラルネットを用いるという研究である。
エージェントにどのように動くべきか予めプログラムを与えずに、環境からの報酬を元に最適な挙動を学習する、所謂強化学習を行う。
提案手法
ニューラルネットとしてのマルチエージェントシステム
まず、各エージェントの挙動について、
- 個々のエージェントが自身のプログラムに従って動作する
- マルチエージェントシステム全体をモデルとして見做し、モデルがエージェントを同時に制御する
という2つの見方ができる。今回は後者の見方を採用する。
するとこのモデルとして、全エージェントの報酬・位置・状態を入力として受け取り、各エージェントの行動を出力するニューラルネットを考えることができる。
通信モデル
エージェントの状態は次の関係で決まるとする。
ここで、上付き文字は回目の通信ステップ、はニューラルネット、はエージェント数を表す。
各イテレーションでは各エージェントが他のエージェントからメッセージを受信し、それ()を用いて自身の状態を計算する。
(図は論文より引用)
Figure 1はが隠れ層なし1層のニューラルネット、すなわち活性化関数のみのニューラルネットの場合を図示化したものだ。
強化学習ではエージェントは状態から次に取るべき行動を選択する。
これは、ニューラルネットの入力を
のようにして得る。はエンコーダ関数であり、問題に依存する。同様に出力は
のようにして得る。
モデルの拡張
上記で定式化した通信モデル(ConnNN)にいくつかの拡張を加える。
まず、Local Connectivityを導入する。冒頭でマルチエージェントシステムは「各エージェントが近傍の他のエージェントの状態しか知り得ない」と触れていたが、上記の定式化ではglobalにエージェントの情報を知ることができる。
勿論モデルとしては近傍半径とすれば妥当ではあるのだが、応用問題を考えたときに不適当である。
そこで、エージェントは集合に含まれるエージェントとしか通信できないものと制限する。
このような制限を加えると、の更新式は
と変更される。はシステムの遷移とともに変化する。
次に、先程提示したとに関する漸化式の添字は各通信ステップに関する添字だったが、時間遷移として見做すことができる。
すると、モデル全体が時間再帰型のNN、つまりRecurrent Neural Networkとしてみなせる。論文中の実験ではLSTMを用いて実装も実験の一例として行っている。
最後に、入力を常にニューラルネットの入力として与えると便利らしい。
Skip Connectionsと呼ばれている。
応用例
応用例としていくつか上げられているが、個人的に渋滞緩和の例(5.2.1)が最も面白かったので、それを取り上げる。
(図は論文からの引用である)
Figure 2の左図のように、このシミュレーションでは交差点の各方向から一定の確率で車がランダムに出現する。
出現した車は交差点でいずれかの方向に進み、その過程で
- (gas) 自分の進行ルート上を1マス進む
- (brake) その場で止まる
のいずれかの動作を行う。
車の衝突とは、不幸にも同タイミングで同セルに2つ以上の車が存在してしまうことである。このシミュレーションでは、衝突しても報酬の変化以外には何も影響を与えない(衝突しても無視して進み続ける)。
交差点に現れてから出て行くまでに各車は
だけの報酬を得ることになる。ただしは衝突回数、は交差点上に存在した時間ステップ数、、はそれぞれ衝突と時間経過における報酬である。報酬とはいえども、どちらも負の値なのでどちらかと言えばペナルティである。
つまり、この強化学習では「できるだけ衝突せずに速く交差点を通過する」ことを目的とする。
詳細なニューラルネットの構成については論文を参照してただきたい。結論としては、エージェント間の通信を行うことによって大幅に衝突率を下げることができるということだ。
これは単なるシミュレーションなので実際に活用できるかどうかについては疑問が残るが、自動運転技術の実用化が視野に入りつつある中、興味を惹かれる内容だった。
シミュレーションの様子は動画もあり、論文中にYouTubeへのリンクがある。
(一応URLを知っている人のみのアクセス制限がかかっているようなので、ここからの直接リンクは遠慮しておく)
Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
大学の4年生ともなるので、"ちゃんと"論文を読み込んでストックしたいと思い、ブログに読んだ論文を簡単にまとめていきたい。
巷では「百本読むまで人権無し」とも言われるそうなので、できるだけある程度の頻度でアウトプットしていければなと思っている。
(そういうことはないよう努力は尽くすが)間違っていることもあるだろうから、読まれる方はぜひ鵜呑みにせず、遠慮無くご指摘いただきたい。
3行で
- 3層のニューラルネットを用いて
- Word Hashingと呼ばれる次元削減手法で効率的に
- 文章の潜在意味が学習できた
概要
de:code 2016にてMicrosoftの女子高校生風会話エージェント「りんな」のバックエンドについてのセッションがあったのは記憶に新しい人も多いだろう。
http://internet.watch.impress.co.jp/docs/event/20160526_759214.htmlinternet.watch.impress.co.jp
見てみると「DSSM + RNN-GRU」で実現されているらしい。
RNNは「まあそうだよな」という一方、「DSSMってなんだ?」という疑問があったので、元論文を読んでみた。
それが今回の論文で、Microsoftが2015年にpublishした論文だ。
元々はWeb検索において、検索クエリとクリックしたページ(Clickthrough Data)の組をベースにして、文章の潜在意味を学習したいというのが動機だ。
文章の潜在意味解析としてはpLSA (probabilistic Latent Semantic Analysis)やLDA (Latent Dirichlet Allocation)が有名なのだが、いかんせん前者は巨大行列の演算、後者は確率分布の推定のためコストが非常に大きい。
Web検索のバックエンドとしてはリアルタイム性が要求されるだろうから、これらのモデルを素朴に用いるのは難しい。
本論文で提案されたのは、3層のDeep Neural Networkであり、最初の1層は非線形活性化関数なしの次元削減層(Word Hashing)だ。
これにより、従来のモデルより精度を上昇させることができたという。
関連研究
潜在意味解析の分野では、昨今2種類の研究がなされている。
1つ目は潜在意味モデルで、よく知られている例が共起行列の特異値分解だ。
共起行列を特異値分解すると、直感的には2つの単語の共起の強さが特異値として求まる。
この共起の強さを意味の類似度と考えることができ、セマンティクスによるクラスタリング等ができる。
2つ目はDeep Learningである。Hinton自身がやっていたらしいのだが、Deep RBMで元クエリを復元できるよう訓練し、中間層で最も次元を落とした層の出力をセマンティクスと捉えるという手法だ。
しかし、どうもクエリの復元には適しているものの、セマンティクスとして捉えるには不適当なのか、従来のモデルに比べ精度が出ないらしい。
さらに、普遍的な自然言語を扱うと単語数が爆発するが、この手法では高々2000words程度しか扱えない。これを超えると計算終了できない。
この論文では、ある意味で両者の折衷案を取ったことになる。
提案手法
(図は論文から引用)
この論文ではDeep Structured Semantic Models; DSSMというモデルを提案している。
Deepという語を冠する通り、基本的にはDeep Neural Networkだ。隠れ層数は3層である。
ただし、1層目は非線形活性化関数を出力にかけない。他の層の活性化関数はだ。
さらに、は訓練しない。本文中ではn-gramベースの変換と表現されている。
元の入力クエリはone-hotベクトルとして与えられる。当然one-hotなので、次元数は非常に大きい。事実、Figure 1では50万次元で与えられている。
ここでn-gramを用いて次元削減する。例えば
というクエリが与えられた場合、one-hotでは(latent=1, semantic=1, analysis=1, otherwise=0)というベクトルになるが、2-gramの場合
#l, la, at, te, en, nt, t_, _s, ... , is, s#
となる。実装では3-gramを使っていて、入力次元数が50万の場合、3-gram変換によって3万次元まで落ちるそうだ。
3-gramの場合、素朴には"#"と空白とアルファベット26文字と数字10文字の計38文字の順列なのでで、3万次元という結果にもうなずけるのだが、2-gramの場合はで、Table 1では1607次元まで落ちるとあるが残りの150次元はどこから降ってきたんだという気がする(?)
DNNを経て得られた128次元の潜在意味出力間で、今度はコサイン類似度をとる。
これでクエリとクリックしたページの関連性が得られるので、ドキュメントの特徴として捉えられた。
最後にクエリからドキュメントが生成される事後確率をsoftmax関数で得る。
実験
実験で用いられたデータは、サーチエンジンの16510個のクエリログだ。平均的に各々のクエリは15個のドキュメントと紐付いている。
そしてなんと、クエリとドキュメントの関連度を0〜4の5段階で人間がラベリングしたらしい。
その労力も然ることながら、恣意性はどうなんだという気もするが、これがまだまだ教師付き学習における課題なのだろう。