見出し画像

ジェフリー・ヒントン - 深層学習の最近の進展

23,236 文字

ほな、紹介の後やとがっかりさせちゃいそうやけど、よろしく頼みますわ。これはバンクーバーにあるIASでやる予定やった講演なんやけど、ここでまたやったらええやんって言われて来たんや。だから、深層ニューラルネットの基本的な話もちょっと入っとるんやけど、知ってる人もおるやろけど、知らん人は得する話やと思うで。

ニューラルネットワーク研究の歴史、特に特徴抽出層をようけ重ねたネットワークの歴史についてちょっと話すわ。で、音声認識システムでどうやって使われとるかについても簡単に触れるわ。ほんで、物体認識でうまくいくようにするにはどう拡張したか、どんな工夫がいるか、深層ニューラルネットの成功例をいくつか紹介して、最後は、音声認識システムの未来についてちょっと考えてみるわ。今のとは全然ちゃうシステムになると思うで。

パターン認識って、やり方はようわかるやろ?画像とか入力から特徴量を抽出して、どのクラスなんかを判断するのに特徴量にどんな重みをつけるかを学習するんや。これがパターン認識、統計的パターン認識って呼ばれとるやつや。問題は、特徴量をどこから持ってくるか、なんや。

手作業で特徴量を作るって方法もあるんや。ようけの人がやっとる方法や。ほんで、もう一つは、見た入力パターンとテストケースがどんだけ似とるかを測る方法があって、どの入力パターンを使うか賢く選んで、選んだやつに重みをつける賢い方法があって、これがサポートベクターマシンって呼ばれとるんや。サポートベクターマシンがバックプロパゲーションの前に発明されてたら、話はもっと簡単やったんやけどな。そっちの方が自然な順番やろ?残念なことに、バックプロパゲーションを早よ発明しすぎたんや。でも、サポートベクターマシンの後に発明したってことにしとくわ。そっちの方が話がスムーズにいくやろ?

で、最後の方法は、特徴量を学習で獲得するって方法や。80年代半ば、いや、実は70年代にPaul Werbosがバックプロパゲーションアルゴリズムを思いつくんやけど、誰も納得させられへんかってん。ほんで、80年代半ばに、Yann LeCunとかDavid Rumelhartと私、Ron Williamsとか何人かの人がまた開発したんや。バックプロパゲーションは、順伝播型ニューラルネットワークを使って、例えば分類したい画像を入力した時にネットワークから出てくんのんを、本来欲しい答えと比べて、その差を測って、ネットワークに逆方向に送り返して、連鎖律を使って、ネットワークのそれぞれの重みをどない変えたらええか計算するんや。ほんで、その差が小さくなる方向に重みをちょっとずつ更新していくんや。これが確率的勾配降下法って呼ばれとるやつや。

かなり原始的な最適化方法なんやけど、めっちゃでかいデータセットには、知ってる限りのどんなしゃれた最適化方法よりもよう働くねん。いくつか微調整も試したんやけどな。ほんで、バックプロパゲーションにはめっちゃ興奮したんや。特徴量をどこから持ってくるかって問題がついに解決したと思ったからな。多層ニューラルネットを作って、全部学習させたらええんや。滑らかな非線形性を持たせたら、ええ感じの微分もできるし、問題は解決や!って。でも実際には、ちょっとがっかりやったんや。

ほんで、なんでバックプロパゲーションがうまくいかんかっていう話ができあがったんやけど、これはちょっと前のスライドから持ってきた話やから、私が言っとった話なんやけどな。うまくいかんのは、ラベル付きの訓練データが大量に必要やのに、簡単に手に入るデータはほとんどラベルが付いてへんからやってん。だって、このネットを訓練するには正しい答えを知っとかなあかんやろ?正しい答えを知らんでもええ生成モデルを訓練した方がええやんって話になってん。

2つ目の理由は、学習時間がスケールしにくいってことや。隠れ層が1つやったら結構うまくいくんやけど、隠れ層が複数になると学習がめっちゃ遅くなってまうねん。ほんで、普通のやつやと、局所最適解にハマって抜け出せへんねん。高次元空間では何が起こってるかほんまに理解するのはめっちゃ難しいねん。もっとええ最適化手法を開発して、局所最適解やと思っとったやつ全部から下り坂になってて、実は局所最適解やなかったってことがわかるまでは、局所最適解にハマってるんかわからへんねん。

でも、この話は実は全部ウソやってん。バックプロパゲーションの問題点はそんなとこちゃうねん。ほんまの問題点は、ラベル付きのデータを十分に集めてへんかったってことなんや。音声認識の人らはやっとったんやけどな。あとは、コンピュータが十分に速くなかった。重みの初期化方法も賢くなかった。この3つの問題を解決したら、めっちゃうまくいくねん。

だから、少なくとも特徴量をどこから持ってくるか、とか、特徴量を得るもっともらしい方法はあるんかっていう問題への答えにはなっとるんや。人間の脳みそでは特徴量はちゃうとこから来とるかもしれんけど、コンピュータではこれでうまくいくねん。

80年代半ば以降、ラベル付きのデータセットがめっちゃでかくなったんや。最初は音声認識で、最近は画像認識でな。コンピュータもめっちゃ速くなった。特にGPUのおかげで、いきなり30倍速くなって、めっちゃ進歩したんや。ラベルなしデータを使って重みを初期化するええ方法も見つかった。その結果、ニューラルネットはいくつかのタスクでめっちゃ良くなったんや。特に、音声認識の音響モデリングがめっちゃ良くなったんや。

音声認識では、音素に対して隠れマルコフモデルを使うねん。この音素にはこの状態があって、次にこの状態があって、その次にこの状態があって…って感じでな。で、音波を見て、音波のこの部分は多分この音素のこの状態やな、って判断するねん。だから、音波から抽出した係数と、隠れマルコフモデルの個々の状態を結びつける何かが必要になってくるんや。もちろん、確実にわかるわけやないから、音波から抽出した係数を見て、確率で表すねん。例えば、「30%の確率でこの音素のこの部分」、「40%の確率でこっちの音素のこの部分」…って感じでな。これが今や深層ニューラルネットワークが普通に使われとる目的で、以前の方法であるガウス混合モデルに取って代わっとるんや。

ほな、重みの初期化についてちょっと話してみよか。歴史的に、これは深層ニューラルネットワークが役に立たんくて訓練できひんって信じられてたんを覆すのにめっちゃ重要やったんや。これはほんまに強い信念やったんやで。

ちょっと前に友達がICMLに論文を送ったら、査読者に「ICMLで採択されるべきやないで。ニューラルネットワークの話やから、ICMLにはふさわしくない」って言われたんや。実際、去年のICMLの論文を見ても、タイトルに「ニューラル」って付いてる論文はなかったんや。だから、ICMLの査読者はニューラルネットワークの論文を採択したらアカンってわけや。ほんの数年前の話やで。

ある有名なジャーナルでは、ニューラルネットワークの論文は査読せずに送り返すって公式方針やったんや。ほんまに強い信念やったんや。証拠がなかったわけでもないんやけどな。

ほな、ラベルなしでネットワークの重みを初期化する方法を紹介するわ。まず、入力変数の構造の生成モデルを学習するんや。その方法の一つは、入力変数と1層の潜在変数を持つ、ちっちゃい生成モデルを使うことや。対称的な接続があるから、これは実際には2部グラフみたいなマルコフ確率場みたいなもんやねん。潜在変数同士の接続がないから、めっちゃ楽になるんや。

で、この最大尤度訓練アルゴリズムはかなり複雑なんやけど、めっちゃ荒い近似であるContrastive Divergenceって呼ばれるめっちゃ簡単な方法があるねん。今日は時間がないから詳しくは話されへんけど、データがあれば、Restricted Boltzmann Machinesって呼ばれるこのネットを訓練するめっちゃ簡単な方法があるねん。最大尤度でも最適でもないんやけど、速くてそこそこええ仕事をしてくれるねん。

つまり、ここにピクセルを見せて、速く訓練して、ピクセル間の相関を捉える特徴検出器をここに作れるってことや。ほんで、ほんまの工夫は、その後やねん。この隠れユニットの活動ベクトルをデータとして扱って、もう一度同じことをするねん。今度はこれをデータとして、2層目を学習するんや。ほんで、また同じことを繰り返せるんや。好きなだけ繰り返せるんやで。

この方法のめっちゃええところは、こういうモデルを積み重ねて訓練したら、全部まとめて一つの大きなモデルにできるってことなんや。隠れ層を追加する度に、データの対数確率に対する上限が変わるねん。モデルを深くしていくと、その上限が良くなっていくんや。つまり、隠れ層を追加することで、訓練データの対数確率の下限という意味で、絶対的に良くなるねん。だから、そういう意味では正しいことなんや。進歩しとるってことや。

もちろん、証明には色々条件があるんやけどな。それぞれのRestricted Boltzmann Machineで最大尤度学習をしとかなあかんとか、層が狭くなってはアカンとか。ほんで、この証明の条件をいつも平気で破っとるんやけど、それでも証明はめっちゃ重要なんや。なぜかっていうと、ある条件下で、層ごとの学習ってのが学問的にちゃんとしてるってことを示してくれるねん。ある種のバンドが改善しとるから、合理的なんやって。完全にヒューリスティックやないんや。この証明のおかげで、ちゃんと研究を進められるんや。論文を普通に却下されることもないで。

ほな、音声認識器でどうやって使ったか説明するわ。この緑色の列は、音波から抽出した係数のフレームなんや。実際、一番ええんは、音声の場合はフィルタバンク出力を使うことなんや。もっと複雑なMFCC係数ってのも開発されたんやけど、それはガウス混合モデルってアホな方法でもデータをモデル化できるように、相関をなくしたり次元を減らしたりするためやったんや。ガウス混合モデルは、基本的には滑らかなテーブルルックアップみたいなもんやねん。Restricted Boltzmann Machineを使えば、入力の前処理を減らせるんや。つまり、どんな特徴量を抽出したいか自分で決められるようになるんや。もっと長い時間枠の係数を見れるようになる。入力としてより長い時間を見れるようになるんや。これらは後で実数値になるんやけど、特別な種類のBoltzmann Machineを使うねん。入力は実数で、こっちは2値確率変数ってやつやな。

ほんで、ラベルなしデータでこのモデルを学習したら、この活動ベクトルをコピーして、それを訓練データとして扱って、別のモデルを学習するんや。ほんで、またコピーして、別のモデルを学習するんや。全部のモデルを学習したら、今度は全部まとめて、データの生成モデルにするねん。つまり、入力はどんな感じかっていうモデルなんや。この生成モデルから生成したら、データみたいな感じのものができるってことや。

この大きなモデルから生成する方法は、めっちゃ意外なんやけど、一番上の2層をずーっと行ったり来たりさせるねん。ほんで、ずーっと行ったり来たりさせた後、今度はこっちにドンドンって行くねん。つまり、こっちは上から下への有向接続なんやけど、こっちは対称接続なんや。対称なものをこんな風に繋げたら、めっちゃでかいBoltzmann Machineになるんちゃうかって思うやろ?でも、ならへんねん。なんでならへんかは論文を読んでな。今説明するのは無理や。何回も説明したけど、誰も納得させられへんかったんや。だから、論文を読んでな。

これができるようになったんや。つまり、ラベルを知らんでも、データを層ごとに学習して特徴量を学習して、全部まとめて、複数層の特徴量を持つ、よりええ生成モデルを作る方法がわかったんや。で、全部できたら、今度は理論は全部捨てて、重み行列を逆方向に使って、めっちゃでかいニューラルネットとして扱うねん。一番上にクラスラベルを付けて、ここで学習した結果を使って重みを初期化して、バックプロパゲーションアルゴリズムで訓練するんや。

以前のバックプロパゲーションとの大きな違いは、ラベルなしデータを使って特徴検出器を全部初期化しとるってことや。特徴量発見の問題はラベルなしデータで解決されとるんや。ええ感じの特徴検出器を複数層で見つけとるんや。だから、上の層では、かなり複雑な特徴検出器が、ラベルなしデータだけで見つかっとるんや。ラベル付きデータがちょっとしかなくても、このネットにバックプロパゲーションを適用して訓練したら、ラベル付きデータだけで全部のネットを訓練するよりも、めっちゃうまくいくねん。ラベル付きデータは、教師なし学習で見つけた特徴量をちょっとだけ変えとるだけで、特徴量を設計する必要がないんや。

でも、この話の残念なところは、ラベル付きデータがめっちゃある場合は、こんなこと全部必要ないねん。重みのスケールをちゃんと初期化するだけでええんや。でも、それに気付いたんは、こんなこと全部やって、深層ネットを学習できるってことがわかってからやってん。それまでは、重みの初期化を間違えたら学習できひんから、深層ネットは学習できひんって信じられてたんや。

こんなこと全部やった後、論文を送る直前に、学生に「もしかしたら、重みのスケールを全部試してみたら学習できるんちゃうか?」って調べさせたことがあったんや。だって、うちのシステムがめっちゃきれいに学習しとるグラフがあったんやけど、重みをランダムに初期化したら全然学習できひんかったからな。ほんで、重みのスケールを全部試してみたら、恐ろしいことがわかったんや。スケールをちゃんと設定したら、深層ネットは結構うまく学習できるねん。事前学習ほどやないけど、ほぼ同じくらい学習できるんや。ラベル付きデータが十分にあれば、それで十分なんや。

一般的に事前学習が意味を持つ理由は、ラベルなしデータで特徴検出器を全部訓練できるからなんや。全部のモデルをまとめた後、推論はめっちゃ簡単なんや。順伝播型ネットやからな。近似推論やけど、正確な近似推論なんや。つまり、Explaining Awayって現象が起こる普通の有向グラフィカルモデルを使うよりも、めっちゃ速く特徴検出器を全部推論できるってことや。Explaining Awayってのは、推論をめっちゃ複雑にする現象なんや。

残念なことに、事前学習はネットの最適化を簡単にして過学習を減らすんやけど、重みの初期化方法がわかってしまったら、ラベル付きデータがめっちゃあれば、適切なスケールに重みを初期化して、ラベル付きデータでバックプロパゲーションで訓練するだけでうまくいくねん。事前学習した方がちょっとだけうまくいくけど、ちょっとだけやで。でも、ラベル付きデータがあんまりない場合は、層ごとに事前学習するんは、やっぱりめっちゃ価値があるんや。

ほんで、これが初めてほんまにうまく使われたんは、音声認識器の音響モデルやってん。私がおらん間に、私の学生2人が音響モデルにこの技術を試したんや。一人はAbdul-Rahman Mohamedってめっちゃ優秀な音声認識の学生で、もう一人はGeorge Dahlってめっちゃ優秀なニューラルネットと学習の学生やってん。2人は、隠れ層が8層もあるめっちゃ深いネットで、めっちゃうまく動作させることに成功したんや。ほんで、2人はIBMとMicrosoftにインターンシップに行って、別の学生はGoogleに行ったんや。それぞれの会社で、めっちゃでかいデータセットと広い語彙に適用して、めっちゃうまくいったんや。

今では、GoogleもMicrosoftもIBMも、ガウス混合モデルはもう使っとらんで。このめっちゃ深いネットを使っとるんや。だって、そっちの方がめっちゃ性能ええからな。単語エラー率が劇的に減って、30%くらいエラーが減ったんやで。30%のエラーが消えたんや。4つのグループが書いたええ感じのレビュー論文があるんやけど、今日は、その成功を物体認識でもうまくいくようにするにはどうしたらええかについて話したいねん。

画像中の物体を認識するんは、音声認識よりもはるかに難しいみたいやねん。音声の音響モデルは、そんなこと知らんでもええねん。数百万個の接続で、音波から音素のかけらについての賭け方を知っとったら十分なんや。でも、画像中の物体を汎用的に認識するんやったら、物体がどんな感じかについて、めっちゃよう知っとかなあかんねん。音声システムでは、それは「言語モデル」って呼ばれる部分に入っとるんやけど、うちはそこには触れへんかってん。フロントエンドだけ置き換えたんや。

コンピュータビジョンのコミュニティは、深層ニューラルネットは自分らの方法には勝てへんって、かなり確信しとったんや。自分らの方法が年々どんどん汚くなっていくにもかかわらずな。最初は、David Loweが博士論文でやったみたいに、幾何学を尊重して、ある物体に一貫して関連する特徴量をいっぱい見つけて物体を認識しようとする、ちゃんとした方法で始まったんや。3次元幾何学を考慮した、ちゃんとした方法やったんやで。

でも、思ったほどうまくいかなかったから、最終的には一番アホな機械学習に頼ることになったんや。画像をただのビジュアルワードの袋として扱って、空間的な関係は無視するんや。ただし、いくつかの単語はこっちにあって、いくつかの単語はあっちにあるってことは考慮するんやけどな。そっちの方がうまくいくってことがわかってん。で、「うまくいくのはええけど、間違っとるやろ」って言うんじゃなくて、「よし、じゃあみんなそっちに切り替えよ」って言うたんや。

これが大きな間違いやったんやないかな、と私は思うんやけどな。みんなそっちに切り替えて、「うちはそれでうまくいっとるから、あんたらのはアカンねん」って言うようになったんや。で、実際、そっちの方がうまくいっとったんや。訓練データセットがめっちゃ小さくて、手作業で作った特徴量、実際にはDavid Loweが手作業で作った特徴量をちょっと変えて、名前を変えて、パラメータをちょっと調整するだけでよかったからな。そのためには、小さなデータセットがあれば十分やったんや。

でも、最終的には大きなデータセットが出てきたんや。120万枚の高解像度画像のデータセットが出てきて、1000種類の物体クラスを識別するタスクができたんや。それぞれの画像にはラベルが付けられとるんやけど、画像にはいくつかものが写ってるから、必ずしもどんなラベルになるかわからへんねん。だから、ルールとしては、5つの候補を挙げられて、人が画像に付けたラベルが上位5つに入っとったら勝ち、そうでなかったら負けってわけや。

ほんで、何個かコンピュータビジョンのチームがこのコンペに参加したんやけど、OxfordのAndrew Zissermanのグループとか、Xerox Europeと共同研究してるフランスの国立研究所INRIAとか、めっちゃええチームも参加しとったんや。ほんで、結果を見てみると、コンピュータビジョンのシステムは全部、ええやつでも26%とか27%とか、もっと悪いのもあったんやけど、うちは同じデータで16%やったんや。もっとデータを使ったら15%になったんや。あいつらはもっとデータを使われへんかったんやけどな。同じデータセットで16%までいったんや。10%の差はめっちゃでかいで。音声認識で最初に差を付けた時よりも、はるかに大きな差や。

ほんで、Googleに売って、講演終わり!…って、まだ続けなあかんのやろ?そうやんな。ほな…

テストセットの画像の例をいくつか紹介するわ。レーザーポインター…誰かちゃんと動くレーザーポインター持っとる人おらん?…これを見ると、スクーターがあるのがわかるやろ?でも、画像には他にも色々写ってるんやで。ラベルには人のラベルは含まれとらへんから、普通は人に注目するんやろうけど、この画像にはラベルが付いてへんねん。でも、スクーターはちゃんと認識されとるんや。セグメンテーションに対応できひんって言うのは無理があるやろ?ちゃんとスクーターを見つけてるんやからな。

こっちは、私は「でっかい赤いオープンカー」って答えるんやけど、正解は「グリル」やってん。2番目に「グリル」って答えてるし、他の答えもかなりもっともらしいやろ?最後のは、アホなネットワークは「ダルメシアン」って答えてるけど、明らかに正解は「チェリー」やろ?ネットワークは他にも「イチゴ」とか「ブドウ」とか「エルダーベリー」とか「カラント」とかって答えてるんやけど、レッドカラントって考えると、かなりレッドカラントっぽく見えるやろ?でも、これはネットワークが間違えた例なんや。間違えた例をうまく選んだんやけどな。

ほな、このタイプの物体認識が実際に実用化されるんはいつになるんやろかっていう質問やけど、答えは先週なんや。Google+に行ったら、自分の写真をアップロードして、検索できるんや。検索できる単語は結構あるんやけど、タグ付けされてない自分の写真の中から、その単語の例を見つけてくれるねん。これはWebから持ってきたやつやから、何もリークしてないで。もうWebに載ってるやつや。

これは誰かの写真コレクションで「ジュエリー」で検索した結果なんやけど、全部ジュエリーなんや。バイクも含めてな。これは明らかに宝石でできたバイクやろ?右のは「ヘビ」で検索した結果で、全部ヘビなんや。だから、かなりうまくいっとるんや。Alan Eustaceが言うには、コンシューマーレベルやねんて。ええって意味なんやと思うけどな。

うまく動作させるには、いくつか工夫が必要やったんや。まず、Yann LeCunに20年かけてもらって、どうやったらうまくいくか考えてもらうって方法やな。めっちゃええ方法やったわ。畳み込みニューラルネットをどんどんうまく動作させる方法をいっぱい考えてくれて、それを全部使ったんや。

もう一つの工夫は、画像から大きなパッチを切り取って、それを動かすことで、データを変換するだけで平行移動に対応できるようにすることなんや。これはめっちゃアホな方法で、間違っとるはずなんや。ビジュアルワードの袋とほぼ同じくらいアホやねん。視点の変化の影響は、コンピュータグラフィックスでやってるみたいに、視点が物事にどう影響するかを理解することで対応するべきなんや。あらゆる可能な視点からものを見るだけで視点に対応できるなんて考えるのは、ほんまにアホやねんけど、今のネットはそうやってんねん。ほんで、うまくいっとるんや。これは、もっとうまくできるはずやってことを示しとるんや。

もう一つの工夫は、標準的なロジスティックニューロンを使わへんかったことや。ニューラルネットは、ロジスティック関数みたいな入出力非線形性を持つニューロンを使うねんけど、ほとんどの人はニューラルネットワークはそういうもんなんやと思っとるみたいやな。あれを考えたんは私やから、ええ理由がないんは知ってるんやけどな。だから、他の方法を試したんや。Yann LeCunも他の方法を試したんや。

例えば、全部同じ入出力の重みを持つけど、しきい値がちょっとずつちゃうロジスティックユニットがいっぱいあったらどうなるか試してみたんや。さっき説明するって言うたやつやな。

ほんで、ステップ状のバイアスを持つロジスティックユニットの和がどうなるか見てみると、黒い曲線で示されとるlog(1+exp(x))とほぼ同じになるんや。ロジスティック関数は指数関数族なんやけど、log(1+exp(x))はちゃうねん。でも、この和の極限をとって積分にしてみると、ちょうどlog(1+exp(x))になるんや。

だから、log(1+exp(x))はロジスティック関数の集まりみたいな感じで振る舞うんやけど、1つのロジスティック関数よりも強力なんや。だって、上で飽和せえへんから、ダイナミックレンジがめっちゃ広くなるんや。で、それを見て、「ほんまにlogとxが必要なんか?入力と0の最大値だけでもええんちゃうか?」って思うやろ?それでもうまくいくねん。ロジスティックユニットからの導出は好きやけど、最終的には導出は捨てて、先に進むんや。

ロジスティックユニットよりもめっちゃ学習が速くて、容量もちょっと多いから、深層ニューラルネットをやってる人のほとんどは、このRectified Linear Unitを使うようになってるんや。

次はどんなユニットが出てくるんやろかって思うやろ?モントリオールの人たちは、Rectified Linear Unitは線形ユニットか0の大きい方やってん。だから、それを一般化して、プールの中に線形ユニットをいっぱい入れて、一番大きい出力を持つユニットを選んだらええんちゃうかって考えたんや。面白い非線形性やろ?で、場合によっては、それがちょっとだけうまくいくってことを示したんや。一般的に優れとるんか、それともたまに優れとるんか、まだようわからへんけど、ちゃんとした考え方やと思うで。

ロジスティックユニットを長年使ってきたのに、もっと簡単な、めっちゃうまくいく方法があるってことは、もっとうまくいく変種がいっぱいあるってことなんや。これは、ネットの設計において、めっちゃ保守的すぎたってことなんやないかな。もっと複雑な関数、でもちゃんとした関数を色々考えてみるべきやねん。脳みそからヒントを得ることもできるかもしれへんな。

ニューラルネットで「層」って呼んどるんは、実は大脳皮質の領域なんや。それぞれの領域にはミニカラムがあって、このミニカラムは次の領域に送る前にかなり複雑な計算をしとるんや。だから、ニューラルネットも、次のレベルに行って、次のレベルでかなり複雑な計算をして、再帰を含んで、何回か反復して、それを次のレベルに送るようにした方がええんちゃうかな。

リカレントネットでもバックプロパゲーションはできるから、こんなこと全部バックプロパゲーションできるんや。バックプロパゲーションに必要なのは、モジュールがあって、何かを入れたら何かが出てくるってことがわかってることだけやねん。だから、順方向の関数があって、上の出力に対する誤差関数の微分を送ったら、下の入力に対する誤差関数の微分を得られるってことがわかっとったらええねん。バックプロパゲーションに必要なのはそれだけなんや。もっと色々試してみるべきやねん。Yann LeCunは長年そう言い続けてるんや。

だから、もっと大脳皮質のカラムに近づけるかもしれへん。脳みそからヒントを得るんやったら、脳みそに似せることで性能が向上する場合に限ると思うねん。Henry Markramみたいに、「10億ドルくれれば脳みそみたいなもんを作るで」って言う人はようけおるんやけど、Henry Markramは実際にはどうやって動かすんかわからへんねん。ただ、脳みそにどんどん似せていく方法だけ知ってて、実際に動かす方法は知らんねん。それはちゃうやろ。

ちゃんと動くものを、脳みそに似せることで、もっとうまく動くようにするべきやねん。特に、脳みそに似せることで役立つ場合に注目するんや。脳みそに似せても性能が悪くなるんやったら、似せる意味ないやろ?

ほな、最近までニューラルネットでできへんかったことについて話そうか。機械学習のコンペに参加したことある人やったら知ってると思うけど、コンペで勝ちたいんやったら、いろんなモデルを訓練して平均化する必要があるねん。いろんなモデルを平均化するんは、過学習を防ぐのにめっちゃ効果的な方法なんや。基本的には委員会みたいなもんやな。大学では何も進まへんけどな。でも、経済学者はこれを知っとるんや。ちゃんとした経済学者が次に経済で何が起こるか予測したい時は、専門家を15人くらい集めて、平均をとるねん。

ランダムに専門家を1人選ぶよりも、そっちの方がええんや。多分、一番ええ専門家を選ぶよりは悪いんやろうけど、誰が1番ええ専門家なんか、わからへんからな。最近まで、いろんなモデルを平均化する方法は、決定木を使うことやったんや。これはLeo Breimanが考えた技術なんやけど、決定木はデータへの適合がめっちゃ速くて、テスト時もめっちゃ速いねん。だから、いっぱい適合させる余裕があるし、テスト時もいっぱい実行できるんや。

決定木はかなり弱いモデルで、ニューラルネットワークほど強力やないけど、速く適合できるし、テスト時も実行できるから、ランダムフォレストって呼ばれて、結構うまくいくねん。で、ニューラルネットでランダムフォレストみたいなことをしたいねん。ニューラルネットをいっぱい適合させて、テスト時に平均化したいねん。問題は、計算量が多すぎるってことなんや。

うちのネットを1つ訓練するのに、でかいやつやと、GPUで1週間くらいかかるねん。物体認識のやつとかやと。で、テスト時にそんなでかいネットをいっぱい実行したくないやろ?めっちゃ高くつくからな。だから、ニューラルネットでモデル平均化みたいなことはできひんように見えるんやけど、実はそうでもないねん。めっちゃ簡単な方法があるんや。

その方法を紹介する前に、2種類のモデル平均化について説明しとくわ。どっちもちゃんと機能して、どっちもカルバック・ライブラー情報量に関してええ感じの保証があるんや。つまり、モデルの平均はランダムに1つのモデルを選ぶよりも性能がええってことが示されとるんや。

1つ目は、一番わかりやすい方法で、モデルAとモデルBがあって、クラスが3つあるとしたら、それぞれのモデルが予測した確率分布を平均化するだけなんや。だから、モデルを組み合わせる時は、出力確率を平均化するんや。2つ目は、出力確率の幾何平均をとる方法や。掛け合わせるだけやねん。

そうすると、合計が1にならん数字になるから、合計で割って正規化する必要があるんや。この2つのモデル平均化の方法には、いくつか重要な違いがあるんや。1つ目の方法では、例えば、平均モデルは個々のモデルよりも常に曖昧になるんや。平均モデルは、個々のモデルの中で一番正確なモデルよりも正確になられへんねん。エントロピーが高くなるんや。幾何平均をとる場合は、エントロピーが高くなる場合もあるし、低くなる場合もあるんや。だから、そういう意味では、もっと強力やと言えるかもしれへんけどな。

とにかく、これはモデルを平均化する2つの方法なんや。ほな、ニューラルネットでこの幾何平均をめっちゃ効率的に計算する方法を紹介するわ。隠れ層が1つあるニューラルネットを考えて、訓練データを見せる度に、隠れユニットの半分を消去するねん。つまり、いろんなモデルアーキテクチャからサンプリングしてるんや。でも、残ったユニットは、残ってる時は常に同じ重みを持つねん。だから、隠れユニットがH個あるとしたら、2のH乗個の可能なアーキテクチャからランダムにサンプリングしてるってことになるんや。ほとんどのアーキテクチャはサンプリングされへんけどな。

このアーキテクチャはめっちゃ重みを共有しとるから、訓練されるアーキテクチャはほんの一部なんや。訓練データごとに1つやな。でも、このめっちゃ重みを共有しとるってのが、L2正則化とかL1正則化よりも、はるかに過学習を防ぐ効果があるねん。重みが0に引っ張られるんじゃなくて、他のモデルが望む値に引っ張られるからな。だから、単なる縮小やないねん。

ほんで、このめっちゃいっぱいあるモデルの集合、指数関数的に大きいモデルの集合が、重みを全部共有して、めっちゃうまくいくってことがわかったんや。問題は、テスト時になにをするかってことや。指数関数的にいっぱいあるモデルを全部実行するんか?ここでめっちゃええ方法があるんや。テスト時には、ユニットを確率1/2で消去する代わりに、出力の重みを半分にするねん。そうすると、期待値は同じになるんやけど、テスト時には分散がなくなるんや。だから、ユニットは全部使うんやけど、強さが半分になるんや。

で、これが2のH乗個のモデル全部の平均を計算することと全く同じになるってことがわかったんや。幾何平均を計算することになるんや。だから、タダで手に入るようなもんやな。テスト時には、訓練時に実行した個々のネットの2倍の大きさのネットを1つ実行するだけで、幾何平均が計算できるんや。これで、訓練時にめっちゃいろんなモデルを効率的に訓練して、テスト時に効率的に組み合わせることができるようになったんや。

隠れ層がもっとある場合は、ドロップアウトを繰り返すだけや。50%くらい残せばええねん。…ちょっと待ってな。…もしもし?…もしもし?…ああ、大丈夫や。…それぞれの層でユニットの約50%を残して、テスト時には…

これは、モデル全部の幾何平均を計算と全く同じにはならへんけど、かなり近い近似で、ちゃんと機能するんや。入力も消去できるんやけど、それも役に立つんや。その技術は、モントリオール大学のPascal Vincentと共同研究者たちがすでに発明してて、全然ちゃう方法でたどり着いたんやけど、入力、ランダムな入力を消去するんも、めっちゃええ正則化方法なんや。

機械学習に詳しい人やったら、よう知ってる技術やと思うけど、ナイーブベイズとロジスティック回帰を比べてみると、ロジスティック回帰では入力を全部使うけど、ナイーブベイズでは1つ以外全部消去するやろ?データがあんまりない場合は、1つ以外全部消去して、いろんなモデルを訓練して、平均化した方がええねん。だから、ナイーブベイズは入力に対するめっちゃ簡単なドロップアウトなんや。

ドロップアウトはめっちゃうまくいくんや。ほとんどのニューラルネットで、過学習してる場合はエラー率がめっちゃ減るんや。過学習してへん場合は、もっとでかいニューラルネットを使うべきやねん。どれだけデータがあっても、過学習するようなニューラルネットを常に使うべきやねん。それが正しいやり方なんや。ほんで、正則化するんや。

統計学者がどんな状況におるかというと、主な正則化はパラメータが足りひんってことなんや。統計学者のデフォルトは、訓練データが1000個でパラメータが50個みたいな感じやな。それやったら安心するんや。それになれてるんや。「訓練データが1000個でパラメータが100万個やったらどないなん?」って聞いたら、「アホなこと言うな」って言うやろな。でも、ドロップアウトを使えばそれができるんや。

人間はどうやろかって考えると、人間は約10の9乗秒生きるから、1秒あたり10個の訓練データがあるとしたら、それは動画のええモデルではないけど、とりあえずそれで計算してみると、10の10乗個の訓練データになるやろ?でも、パラメータは10の14乗個とか10の15乗個あるんや。だから、訓練データ1個あたり1万個とか10万個のパラメータがあることになるんや。これは、訓練データよりもパラメータの方がめっちゃ多いって状況やな。

シナプスは経験よりもめっちゃ安いからな。1秒の経験にはめっちゃエネルギーが必要やけど、シナプスは生涯コストがそれに比べたらほぼゼロなんや。だから、統計学者とは全然ちゃう状況におるんや。

ドロップアウトを別の言い方で言うと、セックスみたいなもんやな。有性生殖には謎があって、うまく適合した遺伝子を全部持ってるのに、誰かと交尾して子供を作ると、うまく適合した遺伝子の半分が消えてまうねん。それって、なんか損してるみたいやろ?自分のクローンを作った方がええんちゃうかって思うかもしれへん。実際、環境が全然変わらへんかったら、自分のクローンを作った方がええと思うで。

でも、環境が急に変わるかもしれへんって場合は、うまく適合した遺伝子を1つだけ持ってるんはめっちゃあかんねん。環境が変わったら、全部がうまく機能せえへんかもしれへんからな。いろんな小さな遺伝子のセットを持ってる方がええねん。例えば、アルカイダで働いてるんやったら、大きな陰謀を1つ企てるよりも、小さな陰謀をいっぱい企てた方がええねん。だって、テスト時の状況は訓練時とちゃうかもしれへんやろ?小さな陰謀をいっぱい企ててたら、いくつかはうまくいくやろ。私はカナダ人やからな。

ほな、他の例をいくつか紹介しようか。時間は大丈夫かな?…ほな、他の例をいくつか紹介するわ。レシピはこうや。深いネットを作って、ラベル付きの訓練データがあんまりない場合は事前学習するんや。ラベル付きの訓練データがいっぱいある場合は、事前学習はせんでええねん。重みをちゃんとした値に初期化して、バックプロパゲーションした時に微分が消えたり爆発したりせんようにするんや。Rectified Linear Unitを使って、ドロップアウトで正則化して、訓練データよりもはるかに多いパラメータを使えるようにするんや。データに空間構造がある場合は、フロントエンドで畳み込みを使うねん。これがレシピや。このレシピで全部の問題が解決するんや。

Kaggleってサイトがあるんやけど、そこでは機械学習のコンペが開催されとって、最近まで全部のコンペでアマチュアが勝っとったんや。機械学習のプロにとってはめっちゃ恥ずかしいことやったやろ?でかい機械学習グループは、賞金が結構あったにもかかわらず、コンペに参加してへんかったんや。理由の一つは、ランダムフォレストがずっと勝っとったからなんや。ランダムフォレストはそういうコンペで結構うまくいくねん。でも、最近は、うちのレシピがランダムフォレストに勝つってことを示したんや。かなり安定して勝つんやで。

ええ例としては、分子の記述子から分子の活性を予測するってのがあるんや。Merckがコンペを開催して、約11000個の分子の記述子があって、それぞれのタスクでそのうち3000個から9000個の記述子を使うねんけど、全部同じ記述子のプールから抽出されとるんや。で、その分子が何かによく結合するかどうかを予測するねん。それをいろんな分子で測定してるんやけど、だいたい数千個の分子でしか測定されとらんねん。だから、入力の次元数が訓練データの数とほぼ同じって問題になるんや。

Georgeがこれで標準的なバックプロパゲーションネットを訓練してみたんやけど、問題は、隠れユニットを30個以上使うと、L2正則化を使っても、めっちゃ過学習してしまうねん。だって、データ点よりもパラメータの方が50倍くらい多いんやから。でも、ドロップアウトを使ったら、隠れユニットを500個とか、複数層とか使っても大丈夫なんや。訓練データよりも数百倍多いパラメータを使っても、めっちゃうまくいくねん。

もう一つできることは、いろんなタスクをまとめて、全部の問題を解決する1つのネットを訓練することなんや。Merckのコンペでは、ターゲットが15個あって、1つの分子のセットを渡して、このターゲットにどれくらいよう結合するかを聞いて、別のセットを渡して、こっちのターゲットにどれくらいよう結合するかを聞いて…って感じで、全部を処理する1つの大きなネットを訓練するんや。記述子がない場合は、入力のドロップアウトとして扱うねん。

GPUで訓練するだけなんや。めっちゃ簡単やろ?Georgeが訓練したら、めっちゃうまくいくねん。だって、Georgeはこういうのを訓練するのがめっちゃ得意やからな。ほんで、そのニューラルネットだけでコンペに勝てたんや。実際には他の方法と平均化したんやけど、後でニューラルネットだけでも勝てたんちゃうかって気付いたんや。

もう一つコンペの例を紹介するわ。イギリスの求人広告のタイトルと本文と場所が与えられて、給料を予測するねん。ほんで、私の別の学生のVlad Mnihが全く同じ技術を使って、かなり余裕で勝ったんや。2位になった人もニューラルネットを使っとったんや。だから、今では少なくともこういうアホなコンペに勝てる技術があるんや。多分、もっといい方法がすぐ出てくるんやろうけど、今のところはええ感じやな。

最後は、音声認識についてちょっと話して終わりたいねん。今の音声認識システムは、いろんなコンポーネントで構成されとるんや。次の単語を予測しようとする言語モデルとか、よう聞こえへんかった時のために予測で補うやつやな。音素をモデル化する隠れマルコフモデルとか、音波から抽出した係数を隠れマルコフモデルのビットの確率にマッピングする音響モデルとか。

これらは最初、別々に訓練されて、全部まとめられるんや。で、ほんまにええ性能を出したいんやったら、最後に全部まとめて識別的に訓練するんやけど、いろんな方法のごちゃ混ぜ状態なんや。で、ちょっと成功したから、うちの帝国主義的な傾向が明らかになってきてな。音声システム全体を、1つの大きなリカレントニューラルネットだけでやりたいねん。つまり、音波から文字列に変換するのがタスクなんや。文字列は、スペースを含む文字の列なんや。だから、音波を入力して、文字列を出力したいねん。

なんでそんなん無理やと思うかもしれへんけど、ええ理由は、言語モデルは単語についてようけ知っとかなあかんし、次の単語を予測できなあかんねん。うちは文字レベルで動作するもんで、それをやろうとしとるんや。それは無理があるやろ?発音辞書も別に作らへんし、強制アライメントで音響ターゲットを訓練するんやないんや。

普通、こういう深層ネットを訓練する時は、まずアホな昔ながらのモデルを訓練して、隠れマルコフモデルを入力データにアライメントさせて、それを使ってしゃれたニューラルネットをブートストラップするねん。原爆を使って水爆を爆発させるみたいなもんやな。原爆なしでは水爆は爆発させられへんねん。国土安全保障省が聞いとるといいんやけどな。

ほんで、Alex Gravesがめっちゃ時間をかけて研究して、オンライン手書き文字認識で最高のシステムをすでに持っとったんや。リカレントネットなんやけど、隠れ層を複数持つリカレントネットにすることで、さらに発展させたんや。時間で深いんやけど、空間でも深いんや。TIMITデータベースでは、以前の最高結果は18.9%くらいやったんやけど、今は18.7%まで下がったんや。めっちゃ頑張って、さらに良くなって、17.7%ってめっちゃすごい改善なんや。めっちゃ意外やったわ。

詳しくは彼の講演で聞けるんやけど、IASPやったからな。でも、Webで検索したら見れるで。IASPで論文発表してるんや。TIMITは語彙が少ないから、リカレントネットで言語モデルを学習させるって問題を回避しとるんや。言語モデルは物体認識みたいなもんやな。ほんまにええ言語モデルになるには、人が知ってること全部知らなあかんねん。それはちょっと無理があるやろ?

でも、そこそこええ言語モデルになるには、やっぱりようけ知らなあかんねん。人の名前とか、場所とか、いろんな変な外国語とか。文字レベルで動作するちっちゃなリカレントネット、いや、でかいリカレントネットでも、言語をモデル化するのは無理があるように思えるやろ?だから、ちょっと考えを変えるような話を最後にしようか。

Ilya Sutskeverが、約800万パラメータのリカレントニューラルネットを訓練して、テキストの次の文字を予測したんや。パラメータはそんな多くないで。テキストはWikipediaから持ってきて、変な文字は全部消したんや。フランス語のアクセントとかも全部消したんやけど、それはちょっとずるいかもしれへんな。で、86文字まで減らしたんや。数字とアルファベットと大文字と小文字は区別するんやけどな。

ほんで、Wikipediaの5億文字を100文字の文字列に分割したんや。それでも500万個あるんやけどな。で、リカレントネットは最初の11文字を見て、予測を開始するねん。次の文字を予測するように訓練するんや。その方法にはちょっとした工夫があるんやけど、それは置いといて、基本的には800万パラメータのリカレントネットで、次の文字を予測するように訓練されとるんや。

問題は、これは正気なんか?ってことや。言語は単語、少なくとも形態素でできとるって知ってるのに、文字レベルまで下げるんは頭おかしいんちゃうかって。もちろん、フィンランド語みたいな膠着語にはめっちゃええんやけどな。フィンランド語は単語が15個くらいの形態素でできとるから、単語をモデル化するのは無理やねん。

すごいことに、めっちゃうまくいくねん。彼のリカレントネットは、文字認識の最先端とほぼ同じで、ちょっとだけ悪いくらいやったんや。でも、括弧を30文字後まで覚えてて、ちゃんと閉じることができたんや。実際、開き括弧を2つ渡したら、ちょっと焦って、すぐに1つ閉じるねん。必ずしも正しい数の括弧を閉じるわけやないけどな。

ほんで、GPUでめっちゃ長時間訓練したんやけど、どれくらいうまくいったんやろか?まず、単語については何も教えてへんのに、英単語を学習するんやろか?それとも、「ゴイグ」みたいな文字列を生成するんやろか?ほな、1文字ずつ生成したテキストを見てみよか。

モデルからテキストを生成する方法は、まず最初の文字列を与えて、次の文字の確率分布を出力させるんや。で、Xが出る確率が100分の1やったら、100分の1の確率でXをサンプリングして、出力として生成して、言語モデルに「次の文字はXやったで。次はなにを予測する?」って伝えるねん。そうやって、どんどん予測を出力させるんや。

面白いことに、ここに非単語は1つもないんや。つまり、英単語を十分に生成したら、もう1つしか選択肢がないから、矛盾する文字をほとんど予測せえへんねん。非単語を生成することもあるんやけど、非単語は「ephemeral」とか「coned」みたいなやつや。「continged」は英単語やないけど、「continued on knowing」って考えると、あり得るかもしれへんな。

ユーモアもあるみたいやな。地中海地域のIrish intelligence agenciesが好きみたいやな。文を超えた一貫性はないんやけど、構文はようけあるし、意味もようけあるやろ?かなり浅い意味やけどな。単語が何かを学習するのに苦労してへんし、短距離の構文を学習するのも苦労してへんねん。だから、このリカレントネットは、かなりええ言語モデルを学習できるんや。まだ単語全体の言語モデルほどええわけやないけど、全部を1つのリカレントネットにまとめられるんちゃうかって思わせるには十分な性能やな。

だから、最後に、Wikipediaから5億文字を読んだら、事前知識なしで、つまり、事前知識は800万個の接続を持つニューラルネットと、勾配降下法で訓練するってだけで、こんなんを生成できるってことを示して終わりたいねん。ほな、哲学的な質問やねんけど、もしこれが事前知識で、Wikipediaから5億文字の文字列を見たら、人生の意味がわかるようになると思う?

人生の意味が42やったら、つまらんやろな。だって、Wikipediaに載ってるからな。Wikipediaを読んだ後に自分で生成したものが人生の意味やったら、もっと面白いやろ?ほな、やってみよか。うまくいくといいんやけどな。

「人生の意味は」って入力して、文字を生成させるんや。面白いゲームやろ?42って答えるんちゃうかって期待してたんやけど、それはアホな期待やなって思ったんや。だって、当たり前すぎるやろ?だから、最初に訓練したあんまり性能がよくなかったモデルで、3回目くらいの試行で、「人生の意味は文学的認識です」って答えた時は、めっちゃ感動したわ。

ほんで、Ilyaがもう1ヶ月訓練して、もっとええモデルを作って、10回実行したんや。ピリオドが出るまで実行して、10個の中で一番ええのを選んだんや。だから、ちょっと選択はしてるんやけど、ほんのちょっとやで。

ほんで、これが「人生の意味は」の続きや。「人生の意味は、人間の生活のあらゆる側面に影響を与えることです。」…もうちょっとで「人生の意味」って出力できそうやったのにな。

…ほな、これで終わりです。

…質問の時間やな。

質問者1: 最初の教師なし学習の部分と、PCAみたいな教師なし次元削減って、なんか関係あるん?

ヒントン: あんまりないな。多くのシステムでは、パラメータが多すぎたり、計算量が多すぎたりするのを避けるために、入力の次元を削減しようとするんや。PCAは情報を捨ててることが多くて、運が良ければその情報はマイナーコンポーネントのノイズなんやけど、一般的に、このネットは入力を増やした方がうまくいくねん。例えば、画像の場合は、最初の隠れ層はピクセル数よりも多くなるんや。だから、次元削減で正則化しようとしてるわけやないねん。次元削減にも同じ方法を使えるんやけど、それが主な目的やないねん。

質問者2: このモデルは人間の脳みそで使われとる皮質処理の方法と似とると思う?それとも全然ちゃう?で、今後20年で答えはわかるんかな?

ヒントン: これくらいちゃうと思うな。今後20年で答えはわかるかもしれへんな。ずっとそう思っとるんやけど、今後5年から10年で、脳みそがこういう計算をどうやってやっとるんか、もっとようわかるようになると思うで。10年以内の方がええんやけどな。で、最終的には脳みその仕組みがわかるようになって、めっちゃ面白くなると思うで。技術にも役立つやろうし、教育にも役立つかもしれへんな。

でも、脳みそはなんらかの方法でやっとるはずやし、かなり効率的なんや。こういう技術がどんどん良くなっていくと、脳みそがなにをしとるんか、理解するためのええ方法になると思うで。

私が期待しとるのは、ちゃんと動くものを、脳みそに似せることで、もっとうまく動くようにしていくことなんや。そうやっていけば、脳みそが実際になにをしとるんか、わかるようになると思うで。Henry Markramよりも1000年くらい速く答えにたどり着けると思うで。

質問者3: 教師なし学習で作った生成モデルの可能性に興味があるんやけど、それは私がほんまに信じとる方法なんや。この識別的な訓練方法は、うまくいくんが恥ずかしいわ。ほんまに本気なんかどうか、知りたいんやけど…とにかく…で、プレゼンテーションの最初の方で、教師なしデータを使った初期化を見せてくれて、生成方向に動作する深いネットができたんやけど、それは、例えば、斬新でリアルなものを生成するためのええモデルなんかな?その方向の最近の研究動向について教えてくれへん?

ヒントン: うん、最終的にはそっちの方がええ方法やと思うで。でも、結果は正直やからな。今は、識別的な方法がめっちゃうまくいっとるから、そっちで頑張れるんや。でも、人間の場合は、ラベル付きのデータセットはでかくないねん。でかいのは、入力の相関や。単語と物体とかな。でも、それは入力の相関でしかないねん。だから、最終的には、生成モデルの方がええって完全に確信しとるんや。画像認識をするには、逆コンピュータグラフィックスをする必要があって、ちゃんとしたグラフィックスモデルが必要なんや。そうすれば、視点の問題も簡単に解決できるはずや。そっちが進むべき方向やな。

質問者4: うーん、質問はそれにちょっと関係しとるんやけど、提示されたモデルは、ドメインの抽象化とか構造をなんらかの形で学習するんやけど、もちろん、その構造をネットワークから抽出するのは難しいんや。でも、もしほんまに正しい抽象化、名詞とか動詞とかを学習しとるんやったら、ワンショット学習みたいなことができるはずやろ?だから、「これはフロッピーです」って言ったら、Googleみたいに「フロッピー」って単語を含むテキストをいっぱい用意せんでも、使い方を学習できるはずなんや。それで、ワンショット学習をどうやって実現するかについて、なんか考えはある?

ヒントン: 最後の質問と関係しとるんやけど、ええ生成モデルを作れたら、コンピュータグラフィックスの人が「正しい」って表現するような内部表現が得られるんや。つまり、物体の面白い部分があって、その部分と他の部分との空間的な関係とか、その部分と物体全体との空間的な関係とかがわかるんや。そうすれば、ワンショットで、「ああ、これは見たことある部分が違う配置になっとる物体やな」とか、「ああ、全然ちゃう視点やけど、同じ部分が同じ配置になっとる物体やな」とか、わかるようになるんや。

視点とか照明が大きく変わっても、ワンショットで汎化するには、それが唯一の希望やと思うで。で、その方法は…

質問者4: それは学習されると思う?それとも、最初に手作業で組み込んで、それから…

ヒントン: いや、学習されると思うで。でも、手作業で組み込むのは、例えば、座標変換は線形演算やっていう知識やな。だから、このネットワークに、「線形演算の列でこれを処理するんや」って強い制約を組み込めるんや。ほとんどのものは線形演算やないからな。全然ちゃう視点に外挿するには、全部が載ってる線形多様体を見つけなあかんねんけど、今の方法は、線形演算でモデル化できるものを、非線形性の多層構造を使って処理しとるんや。それは頭おかしいやろ?だって、外挿できるのは線形なものだけやねん。全然ちゃう視点に外挿することはできひんねん。線形多様体を見つけなあかんねん。それがやらなあかんことなんや。

質問者5: Markramの言うことももっともなんやけど、一方で、モデルで実験して、ある部分を無効にしたらどうなるかとか、どの部分が重要なんかとか、そういうこともできるんちゃうかな。だから、何百万個ものノードを持つネットワーク、何兆個ものノードを持つネットワークで、それらの重みが実際になにを表してるかを見ることは可能なんかな?

ヒントン: ある程度は可能やな。GoogleのJeff DeanとAndrew NgとQuoc LeがYouTubeの動画のフレームから教師なし学習をした研究では、ネットワークの何層か上では、教師なし学習を使って、ほんまに猫を表すニューロンが出てくるってことを示したんや。全部線形システムやったら、重みを全部掛け合わせたら、受容野が猫っぽいってことがわかるんやけど、実際には線形システムやないからな。

もっとええ方法は、システムの奥深くにあるニューロンを持ってきて、入力を持ってきて、「このニューロンをどんどん喜ばせる方向に入力を変えていこか」ってやって、このニューロンが発火するように入力画像を最適化するんや。そうすると、少なくとも始めた場所から見て、なにが一番好きなんかがわかるんや。で、それは猫で、めっちゃ説得力のある猫なんや。他には、人の顔とか。

だから、ちょっと作業すれば、内部のものがなにをしとるんかわかるようになるんや。10億個の接続を持つ教師なし学習の大きなネットが、少なくとも一部のニューロンは、よく知られた物体クラスを認識することを学習しとったんは、めっちゃ明らかやったな。

質問者6: リカレントネットと非リカレントネットについて話してくれたけど、リカレントネットは積み重ね方向にも深かったんかな?それは重要なん?

ヒントン: ええ質問やな。最近まで、リカレントネットが積み重ね方向に深いってどういう意味かっていうと、接続が欠けてるってことやろって思っとったんや。隠れ状態があって、次の隠れ状態に完全に接続されとるんやったら、ブロックを消し始めたら、リーキーシステムになるやろ?だから、「なんで完全に接続せんのやろ?」って思っとったんや。

音声の場合は、音声認識をリカレントネットでうまく動作させるために、Alexは両方向のネットを使わなあかんかったんや。オフラインで、順方向にも逆方向にも動作させるんや。それぞれの層でそうするんや。だから、4層ネットワークでは、順方向と逆方向に4回ずつ処理するんや。未来と過去から情報を広げて、それがめっちゃ役に立つんや。だから、実際には、層状にして、それぞれの層で完全な順方向と逆方向の処理をするんがめっちゃ役に立ったんや。隠れマルコフモデルの意味での順方向と逆方向やないで。リカレントネットを両方向に実行するんや。それが、24%から17.7%にまでエラー率を下げたんや。だから、こういうのを層状にするのは、革新的なことやったんや。

いいなと思ったら応援しよう!