こんにちは､ ディープラーニングの講座にようこそ｡
今日はいよいよステップ4､ 完全接続です｡
では､ このステップはいったい何なのでしょうか？
さて､ このステップでは､ 畳み込みニューラルネットワークに､ 人工ニューラルネットワーク全体を追加します｡
これまで行ってきたコンボリューションプーリングとフラットニングに､ さらに新たな要素を加えました｡
そしてその裏側には､ どのような激しさがあるのでしょうか｡
それはまさに､ 「何か」であり､ 「何か」であることは間違いないのです｡
ここでは入力層と､ 完全に接続されたLAN出力層がありますね｡
ところで､ 人工ニューラルネットワークの完全連結層ですが､ 以前は隠れ層と呼んでいましたが､
ここでは隠れ層ということで完全連結層と呼んでいます｡
しかし同時に､ 人工ニューラルネットワークにおける完全連結層である隠れ層の､ より特殊なタイプでもある｡
隠れ層は完全接続である必要はありませんが､ 畳み込みニューラルネットワークでは完全接続の層を使用します｡
そのため､ 一般に完全接続層と呼ばれています｡
基本的には､ 平坦化した後の出力の列やベクトル全体を､ 入力層に渡しているわけです｡
ここでは､ 説明のために非常に単純化した例を示します｡ 人工ニューラルネットワークの主な目的は､
特徴を組み合わせて､ クラスをよりよく予測するための属性を増やすことです｡
ですから､ 私たちはすでに､ 平坦化と平坦化された結果の出力のベクトルをもっているのです｡
そのベクトル内の数値にはいくつかの特徴がコード化されており､ それが犬か猫か､ 腫瘍かそうでないかなど､
見ているものがどのクラスなのかを予測するのに､ おそらくすでにかなり良い仕事ができるようになっているのです｡
しかし同時に､ 人工ニューラルネットワークという構造があることもわかっています｡
これは､ 属性を扱い､ 特徴を扱い､ 新しい属性を考え出し､ 属性を組み合わせて､ 予測しようとするものをさらにうまく予測することを目的として設計されたものです｡
そして､ それは前編でわかっていることです｡
では､ なぜそれを活用しないのか？
そして､ それこそが､ ここでの計画なのです｡
そこで､ その値を人工ニューラルネットワークに渡し､ さらに最適化させるというのはどうでしょう｡
というわけで､ これからが本番です｡
しかし､ これではちょっと単純すぎるので､ もっと現実的な例を見てみましょう｡
ここでは､ 入力に5つの属性を持つ､ より見栄えのする人工ニューラルネットワークを作成しました｡
そして､ 第1層に6つのニューロン､ 第2層（第2完全連結層）に8つのニューロン､ そして2つの出力､
1つは犬､ もう1つは猫を表す出力があるのです｡
ここで重要なのは､ なぜ2つの出力があるのか､ ということです｡
私たちは､ 人工ニューラルネットワークの出力が1つしかないことに､ なんとなく慣れています｡
1つの出力は､ 数値を予測するとき､ 回帰のような問題を実行するときに使用します｡
しかし､ 分類を行う場合は､ クラスごとに出力が必要です｡ 例外は､ クラスが2つしかない場合です｡ 例えば､
ここでは犬と猫の2つのクラスがありますが､ 1つの出力を行ってバイナリ出力にし､
1は犬､ 0は猫というようにすればよかったのです｡
それで全く問題なかったのです｡
そして実際に､ 実践的なチュートリアルの中でその方法を見ることができ､ そのように構成されています｡
しかし同時に､ 例えば犬､ 猫､ 鳥のように2つ以上のカテゴリーがある場合､ すべてのカテゴリーごとにニューロンを用意しなければならないのです｡
そのため､ この例では2つのカテゴリーで練習し､ カテゴリーが2つ以上になったときのことを想定しています｡
それで､ これからどうなるのでしょうか？
つまり､ すでにすべての下準備を終え､ 畳み込み､ プーリング､ フラットニングを行った上で､
今度は人工ニューラルネットワークを経由して情報が流れていくわけです｡
では､ どのような仕組みになっているのか､ 見ていきましょう｡
画像が処理される瞬間から情報が流れていて､ 次にカンクン､ プール､ フラット化､
そして人工ニューラルネットワークを経て､ 4つのステップを経ています｡
そして､ ある予測がなされるのですが､ これがどのように行われるかは､ これから見ていくことにしましょう｡
とてもとても面白いことになりそうです｡
でも､ とりあえず予言はしておこう｡
例えば､ 8割は犬だと思ったのに猫だと判明して､ 誤差を計算するわけです｡ 人工ニューラルネットワークでは､
以前はコスト関数と呼んでいましたが､ そこでは平均二乗誤差を使いますし､ 畳み込みニューラルネットワークでは､
平均二乗誤差を使います｡
損失関数と呼ばれるものですが､ これにはクロスエントロピー関数を使います｡ クロスエントロピーと平均二乗誤差について説明します｡
別のチュートリアルで､ そのすべてがどのように行われるかを説明します｡
しかし､ とりあえず､ ネットワークのパフォーマンスを教えてくれる失われたタイプの関数があり､ その関数を最適化､
最適化､ 最小化することでネットワークを最適化しようとしているとしましょう｡
つまり､ 誤差が計算され､ それがネットワークを通じて逆伝播されるのですが､ これは人工ニューラルネットワークでいうところの逆伝播にあたります｡
そして､ パフォーマンスを最適化するために､ ネットワークで調整されるものもあります｡
そして､ 調整されるのは､ 例によって人工ニューラルネットワーク部分のウェイトです｡
つまり､ ここに見える青い線がシナプスです｡
それからもうひとつ､ 特徴検出器も調整しています｡
しかし､ もし間違った機能を探しているとしたらどうでしょう？
もし､ これがうまくいかなかったら？
機能が正しくないからです｡
そして､ 特徴検出器､ つまり､ 3×3の行列がありましたが､ それを調整して､
次回はもっとよくなるかもしれない､ どうなるかな､ というようなことをやっているのです｡
もちろん､ 背景には多くの科学と数学があり､ すべては逆伝播法を用いた勾配降下法で行われます｡
つまり､ 単なるランダムな摂動ではないのです｡
実は､ そのやり方はとてもよく考えられているんです｡
しかし､ それでも､ 特徴検出器を調整し､ 重みを調整し､ この一連の作業が再び行われる｡
そしてまたエラーが逆伝播され､ これが延々と続くのです｡
そして､ そうやって私たちのネットワークは最適化されているのです｡
私たちのネットワークは､ そうやってデータをトレーニングしているのです｡
ここで重要なのは､ データがネットワーク全体を最初から最後まで通過して､
その誤差を比較することです｡
そこで､ 誤差を計算し､ 逆伝播しているのです｡
つまり､ 人工ニューラルネットワークと同じ話なのですが､ 最初の3つのステップのために､ 少し長くなっています｡
さて､ ここからは面白いところ､ 本当に面白いところを見ていきましょう｡
この2つのクラスはどのように機能するのでしょうか？
なぜなら､ あるいはこの2つの出力ニューロンがどのように働いているのか？
というのも､ 以前は出力ニューロンが1つしかなかったんです｡
2人になったらどうなるんだろう？
この画像の分類という状況は､ どのように展開されるのでしょうか｡
では､ まず一番上のニューロンから見ていきましょう｡
まずは犬から｡
主な目的は､ まず､ 犬につながるすべてのシナプスにどのような重みを与えるかを理解し､
前のニューロンのうちどれが犬にとって実際に重要であるかを知ることです｡
そして､ それがどのように行われているかを見てみましょう｡
では､ 仮に前の層､ 前の完全連結層､ 最後の完全連結層にこれらの数値があるとしましょう｡
そしてまた､ この数字は絶対に何でもありなのです｡
どんな数字でもいいというわけではありません｡
しかし､ 議論のために､ ここでは0から1までの数字に限定して考えることにしよう｡
だから､ こういうことを主張すると､ 理解しやすいんです｡
そして､ 1というのは､ そのニューロンがある特徴を見つけたことに非常に自信があったということです｡
そして0は､ そのニューロンが探している機能を見つけられなかったことを意味します｡
結局のところ､ これらのニューロンは､ この左側から他のものと同じように､ 画像の特徴を見ているに過ぎないからです｡
これはすでに非常に高度な処理をしていますが､ それでも画像上のある特徴､ あるいは特徴の組み合わせを検出しているのです｡
コントロールステップの直前には､ プールステップの特徴的な部分がありました｡
認識しにくくなり､ 平坦化された画像ではさらに認識しにくくなり､ そして合成され､
といった具合に｡
しかし､ それでも､ 私たちがここで話しているのは､ 画像に存在するある種の特徴､ あるいはその組み合わせについてです｡
つまり､ 一時停止しているもの､ これが重要なのですが､ 犬と猫の両方の出力ニューロンに同時に渡されているのです｡
つまり､ 私たちの議論では､ この神経細胞が発火していることを意味します｡
その機能を高速で検知しているのです｡
それは眉毛かもしれませんね｡
また､ わかりやすくするために､ この眉毛を検出しているのかもしれません｡
そして､ それを犬の神経細胞に伝えているのです｡
猫の神経細胞が､ 眉毛が見える､ 眉毛が見えると言っているのです｡
そして､ その意味を理解するのは､ 犬や猫のニューロン次第なのです｡
そうですね｡
それで､ この場合､ どの神経細胞が発火しているのか？
この3つの神経細胞が眉毛を発火させているのです｡
そして､ 鼻が言っているとしましょう､ 大きな鼻が見えて､ 耳がペタペタしているのが見えるのです｡
だから､ 犬にも猫にも､ そして犬にも言っているんです｡
そして､ これが犬であることがわかるのです｡
つまり､ 犬の神経細胞は､ 答えが実際に犬であることを知っているのです｡ なぜなら､ 私たちは最後に絵と比較するか､
絵のラベルと比較して､ 犬であることを知っているからです｡
つまり､ 犬の神経細胞は､ 「ああ､ この場合は私が引き金になるはずだ」と言うわけです｡
つまりこれらは
私のニューロン
彼らは､ 私と犬と猫の両方に送っている信号が､ 実は私にとってそれが犬であることを示しているのだと言っているのです｡
そして､ このような繰り返しが何度も繰り返されると､ 犬は､ その特徴が犬のものであるときに､
これらのニューロンが確かに発火することを学習するようになります｡
一方､ 猫の神経細胞は､ それが猫ではないことを知っています｡ この機能が発火して､ この神経細胞が､
ペラペラの耳､ ペラペラの耳､ ペラペラの耳が見えるが､ 同時に猫でもないことを私に伝えていることを知ることができるのです｡
つまり､ 私にとっては､ この神経細胞は無視したほうがいいという信号なのです｡
そして､ そうなればなるほど､ 猫の神経細胞は､ この耳が垂れているという神経細胞を無視するようになるのです｡
そして､ 基本的には､ このようなことが頻繁に起こる場合は､ たくさんの反復を経てそうなるのです｡
つまり､ これはほんの一例なのです｡
でも､ これが頻繁に起こるなら､ 1でも0でもいいかもしれない｡ 8, 0. 9､ もしかしたら発射されない時もあるかもしれない｡
しかし､ 全体として平均すると､ この神経細胞は非常に頻繁に点灯しているのです｡
それが本当に犬であれば､ 犬の神経細胞はこの神経細胞をより重要視するようになる｡
そして､ こうなりました｡
それは､ そういう意味での符号化です｡
この3つのニューロンは､ 何度も何度もサンプルとエポックを繰り返しながら､
記憶していくのです｡
サンプルとはデータセットの行のことで､ エポックとはデータセット全体を何度も何度も繰り返し見ることです｡
何度も何度も繰り返されます｡
この犬の神経細胞は､ この眉毛の神経細胞､ この大きな鼻の神経細胞､ このペラペラの耳の神経細胞､ これらすべてが､
探しているものが何か､ どれが犬なのかを分類するのに､ 本当によく貢献しているようだと学びました｡
そういうことなんですね｡
繰り返しますが､ これらの耳や鼻､ 眉毛は､ 非常に近似しているか､ 非常に遠い例です｡ この段階では､ この畳み込みニューラルネットワーク全体では､
何を探しているのか､ まったく認識できないのですから｡
しかし同時に､ 犬や猫など､ 分類しているものの特徴にあるものです｡
そして､ そうして次に進みましょう｡
今度は猫の神経細胞を見ますが､ これらの重みは犬を整理したものだと覚えておいてください｡
つまり､ 犬は他のニューロンを無視しているようなものです｡
1､ 2､ 3､ 4､ 5｡
しかし､ この3つの神経細胞が何を言っているのかに､ 本当に注意を払っているのです｡
さて､ 猫は何を聴いているのでしょう？
まあ､ 実際に猫であるときはいつでも､ ですね｡
これは......実は猫である場合の例です｡
だから､ この3つのニューロン､ 0. 9, 0. 9と1､ 何か言ってますね｡
犬にも猫にも何か言っている｡
そして､ これがまた､ 重要なことなのです｡
この出力信号が双方向になるわけです｡
同じでしょう？
しかし､ そのシグナルを考慮して学習するかどうかは､
犬や猫次第なのです｡
そして､ 犬にも猫にも､ これが写真であることがわかる｡
本来ならここに猫の写真を載せるべきなのですが､ 基本的には猫の写真を想像してください｡
犬も猫も､ これが実は猫であることがわかる｡
だから､ 基本的に犬は､ ああ､ そうか､ このヒゲと､ このとんがった三角形の耳と､ この小さいサイズか､
ああ､ このタイプか､ 猫には目にこういうのがあるよね？
その目はまるで小さい｡
円ではなく､ その線というか､ そういうものです｡
猫の目のように｡
基本的に､ このキャットアイ､ 私には絶対無理です｡
この神経細胞が光るたびに､ 私が求めている予測とは違うことが起こるので､ 予測を助けてはくれないのです｡
一方､ 猫は､ ふーん､ 面白いね､ という感じです｡
これが点灯するたびに､ あるいはほとんどの場合､ 点灯するんです｡
私の期待に応えてくれる｡
私が求めているものと合致しています｡
なるほど｡
それならこの人の話をもっと聞いてみようかな｡
こちらも同じです｡
毎回点灯するか､ ほとんどの回数が点灯する｡
たまたま予想が当たったから報われる｡
それは猫です｡
なるほど､ じゃあもっと話を聞いてみようかな｡
あのね､ この人は私には役に立たないの､ だって彼は実際に彼とは違うんだもの｡
点火していない
猫なんだけど､ 火をつけないんだよね｡
だから､ その逆が起きているのです｡
そして､ こちらも同様に｡
猫なのに､ 火がつかない｡
だから､ 彼の話には耳を貸さないことにしている｡
しかし､ この人は､ 彼が......これは何だ？
目です｡
猫の目が光る｡
猫であることがわかる｡
ほとんどの場合､ マッチします｡
だから､ それを見習って､ この3人の話を聞くことが多くなった｡
つまり､ 猫はこの3つの音を聞いていて､ 他の5つの音は無視しているのです｡
そして､ この最終的なニューロンが､ 完全に接続された最終層のどのニューロンの話を聞けばいいのかを､ こうして学ぶのです｡
つまり､ 出力ニューロンは､ 完全接続と最終的な完全接続のどちらを学習するかということです｡
聞くべきは彼らの神経細胞｡
そして､ そうやって理解するのです｡
基本的には､ そうやって特徴をネットワークに伝搬させ､ 出力に伝えていくわけです｡
そのため､ 耳やひげのように､ その特徴にそれほど意味がなくても､
同時に､ その特定のクラスの特徴として､ 何らかの特徴があるのです｡
バックプロパゲーションの過程で､ 特徴検出器を調整することもありますから｡
なぜなら､ これは1日や2日で起こることではなく､ 何千回､
何万回と繰り返されることだからです｡
ですから､ 時間とともに､ ネットワークにとって無用な機能は無視され､ 有用な機能に置き換えられていくのです｡
そして､ 最終的には､ このニューロンの最終層で､ 画像から犬と猫を代表する､ あるいは説明するような特徴､
あるいは特徴の組み合わせをたくさん得ることができるのです｡
そして､ ネットワークがトレーニングされると､ このように応用されるようになります｡
だから､ これは次のステップで､ もうトレーニングしたようなものなんです｡
それでは､ このネットワークを適用するとどうなるのか､ 見てみましょう｡
そこで､ 犬の画像を渡すとします｡
その値がネットワークを通じて伝播することで､ ある一定の値を得ることができます｡
で､ 今回の犬と猫のニューロンは知らんぷり｡
ここには犬のイメージはないそうです｡
犬や猫であることを知らないのです｡
彼らはそれが何であるかはわからないが､ ここで示されていることに耳を傾けることを学んだのだろう？
彼らは､ 犬の神経細胞はこの3つの神経細胞の声を聞き､ 猫の神経細胞はこの3つの神経細胞の声を聞くことを学びました｡
そして､ 犬の神経細胞は1から3を見て､ 「あぁ､ これはかなり高いな」と言います｡
だから､ 犬である確率が高くなるんです｡
猫の神経細胞はこの3つを見て､ よし､ これはかなり高いな､ でもこれはかなり低いな､
と言います｡
面白いですね｡
だから､ 私の確率は0になる｡ 05.
そして､ そして､ そして､ そこで予想がつくのです｡
そうすると､ このニューラルネットワークの最初の選択肢は犬､ 2番目の選択肢は猫ということになりますね｡
といったところでしょうか｡
だから､ 答えは犬です｡
また､ 猫の画像を渡しても同じことが起こり､ 新しい値が得られ､ これは高いけれども､ これは低いということがわかります｡
そして､ 猫の場合は､ こっちが高く､ こっちが高く､ こっちがちょっと低い｡
ですから､ ここでの確率は以前ほど大きくないかもしれません｡
それでも79％の猫であることはおわかりいただけると思います｡
そのため､ ニューラルネットワークは「猫だ」と投票することになります｡
そうすると､ 基本的にニューラルネットワークはすべて「猫だ」と結論づけることになるんです｡
投票とはこいつらのためにあるような言葉だ｡
つまり､ 最後の完全連結層にあるこれらのニューロンは､ 投票することができ､ これが彼らの票となるのです｡
また､ ここでは議論のために､ 0と1の間の値を入れているだけです｡
これはどんな価値観でもいいのですが､ 投票してもらって､ その投票の重要性を重み付けしています｡
つまり､ この紫色の重みは､ 犬の神経細胞が自分の票をどう見ているかを示しているのです｡
これらの神経細胞や投票にどれほどの重要性を持たせているのか｡
そして､ 猫の神経細胞は､ これらへの投票をどれだけ重要視しているかということである｡
そして､ これらのニューロンは､ 学習した重みに基づいて犬と猫に投票する｡
聴く人を決めて､ 予想を立てて､ ホールドするのです｡
ニューラルネットワークは､ これは､ この場合､ 猫であると結論付けている｡
そして､ それが､ そして､ それがあなたの結論です｡
そうすると､ このようにチーターがいて､ 高い確率でチータークラスがあるようなイメージになるわけです｡
つまり､ これがネットワークが予測した確率です｡
そしてこれらは最低ラインですが､ これらはまだ小さな可能性のようなものなので､ まだ存在しています｡
他のニューロンも有権者の声に耳を傾けて､ ああ､ 実はヒョウなのかもしれない､ と言っている｡
そして､ ここでは新幹線がとてもとても確率が高いのです｡
ハサミの神経細胞､ ハサミの神経細胞､ 出力､
この神経細胞は､ 投票者の声を聞いて､
全体として優勢な票を獲得していました｡
そうそう､ そうなんです｡
それが､ フルコネクションの仕組みであり､ このあり方です｡
これらすべてが一体となって展開されるのです｡
本日のチュートリアルを楽しんでいただければ幸いです｡
こちらもまとめにまとめて､ また次回お会いしましょう｡
それまでは､ ディープラーニングを楽しんでください｡