こんにちは､ ディープラーニングの講座にようこそ｡
今日は､ 人工ニューラルネットワークの基本構成要素であるニューロンについてお話します｡
では､ さっそく始めましょう｡
以前､ このような画像を見たことがありますが､ これは実際の神経細胞をグロスの上に塗り､
少し色をつけて､ 顕微鏡で観察したものです｡
だから､ こんな風に見えるんですね｡
見ての通り､ 非常に面白い構造をしていて､ 本体と､ そこから枝のように出ているたくさんの異なる尾があります｡
そして､ これは非常に興味深いのですが､ 問題は､ それをどうやって機械で再現するかということです｡
なぜなら､ 深層学習の目的は､ 人間の脳の働きを模倣することであり､
そうすることで何か素晴らしいものが生まれると期待しているからです｡
機械が学習できるようにするために､ 素晴らしいインフラを作るつもりです｡
そして､ なぜそれを望むのでしょうか｡
人間の脳は､ 地球上で最も強力な学習学習ツールの一つであり､ 地球上の学習メカニズムのようなものだからです｡
そして､ それを再現すれば､ それに匹敵するような素晴らしいものができるのではないかと期待するばかりです｡
つまり､ 人工ニューラルネットワークを作るための最初のステップは､ 神経細胞を再現することなのです｡
では､ どうすればいいのか｡
さて､ まずは実際にどんなものなのか､ 詳しく見てみましょう｡
この画像は､ 1899年にスペインの神経科学者サンティアゴ・ラモン・カハルが初めて作ったもので､ 彼が行ったのは､ 実際の脳組織の神経細胞を死滅させて､
顕微鏡で観察することでした｡
そして､ それを見ながら､ 実際に見たものを絵にしていったのです｡
そして､ 彼が見たものはこれだ｡
彼は､ 上部に2つのニューロン､ あるいは2つの大きなニューロンがあり､ そこから上部に向かって枝が出ているのを見たのです｡
そして､ その一つひとつに､ 棒のような､ 糸のようなものが､ とても長いものが下の方に向かって出ていて､ そう､ それが彼の見たものだったのです｡
そして現在､ 技術はかなり進歩し､ 神経細胞をより近くで､ より詳細に見ることができるようになり､ 実際にドラマチックにその姿を描くことができるようになりました｡
では､ その様子を見てみましょう｡
これが神経細胞です｡
これはサンチャゴ・ラモンが描いたものと非常によく似ています｡ この神経細胞には､ 神経細胞の主要部分である本体と､
樹状突起と呼ばれる上部の枝があることがわかります｡
また､ 軸索という､ 神経細胞の長い尾を引く部分があります｡
では､ 樹状突起は何のためにあり､ 軸索は何のためにあるのでしょうか？
さて､ ここで理解していただきたいのは､ 神経細胞単体ではほとんど役に立たないということです｡
まるでアリみたいでしょう？
アリが一匹で｡
5匹のアリが一緒にいるようなことはあまりできない｡
何か拾えるかもしれない｡
しかし､ 繰り返すが､ 彼らは蟻塚を作ることができないのだ｡
コロニーを作ることができないのです｡
巨大な生物として一緒に働くことができないのです｡
しかし､ 同時に､ たくさんの広告があれば､ 例えば100万匹のアリがいれば､ コロニー全体を作り､
蟻塚を作ることができます｡
ニューロン単体でも同じことです｡
そんなに強くないんです｡
しかし､ 神経細胞がたくさん集まっていると､ それらが連携して魔法をかけるのです｡
そして､ どのように連携しているのか｡
それが問題なのです｡
そのために樹状突起と軸索があるんです｡
つまり､ 樹状突起はニューロンの信号の受信機のようなもので､ 軸索はニューロンの信号の送信機ということになります｡
そして､ コンセプト的にどのような仕組みになっているのか､ そのイメージをご紹介します｡
つまり､ 一番上に神経細胞があり､ その樹状突起は､ さらにその上にある他の神経細胞の軸索とつながっていることがわかります｡
そして､ このニューロンからの信号が軸索を伝わって､ 次のニューロンの樹状突起に接続､ あるいは通過するのです｡
そして､ そうやってつながっていくのです｡
この小さな画像では､ 軸索は実際には樹状突起に接触していないことがわかります｡
多くの機械学習､ あるいは少数の機械学習のように､ 科学者はそのことに固執しています｡
触れないように触るということは､ そこに物理的なつながりがないことが証明されているのです｡
しかし､ 私たちが関心を持っているのは､ その間のつながり､ つまり信号の受け渡しの全体概念､ それをサインアップと呼んでいる点です｡
この小さな画像にある図の括弧はサインアップで､ これから使用する用語です｡
つまり､ 人工ニューロンや人工ニューロン用のコネクタを軸索や樹状突起と呼ぶのではなく､
「これは誰の接続なのか？
そのニューロンなのか､ このニューロンなのか？
私たちはただ､ 彼らをサインアップと呼ぶことにしています｡
そうすれば､ すべての疑問にすぐに答えてくれるでしょう｡
それは基本的に信号の受け渡しをするところだけです｡
その要素が誰のものであるかは問題ではありません｡
それは､ 信号の受け渡しを表現しているに過ぎない｡
そして､ ちょうど今､ それを見ることができます｡
つまり､ 基本的に神経細胞はそのように機能するのです｡
そうそう､ では､ ニューロンをどう表現するのか､ どうやって表現するのかに話を移しましょう｡
機械にニューロンを作る｡
だから､ 今､ 離れているんです｡
神経科学からテクノロジーに移行して､ さあ､ これからです｡
これがニューロンで､ ノードと呼ばれることもあります｡
ニューロンはいくつかの入力信号を得て､ 出力信号を持つ｡
だから､ 樹状突起と軸索､ 覚えておいてください｡
しかし､ もう一度言いますが､ これらのシナプスは､ これらの入力信号を､ 他のニューロンで表現することになるのです｡
この場合､ このニューロン､ つまり緑のニューロンは､ 黄色のニューロンから信号を受け取っていることがわかります｡
この講座では､ 黄色が入力層を意味する､ ある色分けにこだわってみることにします｡
つまり､ 基本的には外側の層､ あるいは信号が入ってくる前面にあるすべてのニューロンが､
信号によって､ これを信号と呼ぶのは少しやりすぎのような気がします｡
基本的には入力値だけです｡
単純な線形回帰でも､ 入力値があって､ 予測値がありますよね｡
こちらも同じです｡
入力値があって､ そこに黄色いものがあるわけです｡
そして右側には､ 先ほど赤く表示された､ 出力値が表示されています｡
ここで指摘したいのは､ この具体例では､ 入力層のニューロンから信号を得ているニューロンを見ている､
ということです｡
つまり､ これもニューロンですが､ 入力層のニューロンなのです｡
他の隠れ層のニューロン､ つまり他の緑色のニューロンから信号を得るニューロンを持つこともあります｡
そして､ そのコンセプトはまったく同じになるのです｡
ただ､ 今回はわかりやすくするために､ このような例で描いています｡
そして､ 入力層についてですが､ 人間の脳に例えると､ 入力層は感覚ですよね？
だから､ ここに見えるもの､ 感じられるもの､ 触れられるもの､ 匂いを嗅げるものなら何でもいいんです｡
もちろん､ 目に見えるものもたくさんあるような気がしますし｡
いろいろな情報が入ってきます｡
でも､ それはあなたの脳が限界に達していることなんです｡
骨でできた箱の中に住んでいるようなものです｡
脳がブラックボックスに閉じ込められていて､ 見えない､
聞こえない､ 電気信号だけが耳､ 鼻､ 目､ 触覚､
味覚といった器官から送られてくるというのは､ 考えただけでも驚くべき概念ですよね？
つまり､ 信号を受け取るだけで､ 基本的にはこの暗いブラックボックスに住んでいて､ あなたの感覚を通して世界を理解するのです｡
それは......驚異的です｡
そうそう｡
人間の脳には､ このようなインプットが入ってくるわけですね｡
それが五感です｡
そして､ 機械学習やディープラーニングで言えば､ 基本的には入力値ですね｡
では､ 独立変数ですが､ これは後で説明します｡
入力された信号はシナプスを介して神経細胞に伝えられ､ 神経細胞は出力値を持ち､ さらにその出力値は連鎖的に伝達されます｡
この場合､ 色分けで言うと､ やはり黄色が入力層を意味します｡
そのため､ ここではすべてを簡略化しています｡
入力層のようなものしかなく､ 次に緑色の隠れ層が1つあり､ これが隠れ層で､
すぐに出力層ができると言っているのです｡
だから､ とりあえずこの色に慣れるように｡
そうそう､ そうなんです｡
それが基本的な構造です｡
それでは､ これらの要素についてもう少し詳しく見ていきましょう｡
つまり､ 入力層ができたわけです｡
そして､ ここにあるのは何でしょう？
さて､ これらの入力は､ 実際には独立変数です｡
では､ 独立変数1は､ 独立変数に利用可能なのでしょうか？
ここで重要なことは､ これらの独立変数は､ すべて1つの観測に対するものであるということです｡
つまり､ データベースの中の1行と同じだと考えてください｡
1つの観測では､ 独立変数をすべて取り出します｡
年齢的なこともあるかもしれません｡
銀行口座の金額なんです｡
そして､ どのように？
車や徒歩でどうやって通勤しているのか？
どのような交通手段を使っているのでしょうか？
しかし､ これはすべて､ モデルを学習させるか､ 何らかの予測を行う､
ある特定の人物の記述子なのです｡
そしてもうひとつ､ これらの変数について知っておかなければならないのは､ 標準化することです｡
そこで､ 標準化する必要があります｡ つまり､ 平均がゼロで分散が1になるようにするのです｡
また､ 時には､ これらの状況をもう少し詳しく指摘されることもありますし､ 学んだこともあります｡
おそらく実践的なチュートリアルでは､ 標準化ではなく､ 正規化したい場合があります｡
つまり､ 平均値をゼロ､ 分散を1にするのではなく､ 単に値を取り､ 最小値を引き､
最大値から最小値を引いた値を値の範囲で割ると､ ゼロと1の間の値が得られるということです｡
そして､ それはシナリオによります｡
しかし､ 基本的には､ すべての変数がほぼ同じになるようにしたいのです｡
値の範囲｡
その理由は？
それはなぜでしょうか？
さて､ これらの値はすべてニューラルネットワークに入り､ 先ほど見たように､ 加算され､
重みが掛けられ､ 加算され､ といった具合になります｡
そして､ ニューラルネットワークにとって､ 同じようなものであれば､ より簡単に処理できるようになるのです｡
そして､ 実際に､ それこそちゃんと使えるようになるんです｡
また､ 標準化､ 正規化､ その他入力変数でできることについてもっと読みたい場合は､
1998年にYan LeCunが書いたEfficient Back Propという論文が良い副読本になります｡
あそこのリンクは｡
ヤン・リクンは､ ディープラーニングの分野で活躍する驚異的な人物ですが､ 実は､ このコースの中で畳み込みニューラルネットワークについて話している部分で詳しく紹介する予定です｡
そして､ この人が間違いなく自分の言っていることを理解している人だということがわかるはずです｡
彼はジェフリー・ヒントンと親しい友人で､ そのことはすでに述べたとおりです｡
この論文では､ 標準化と正規化について詳しく学びますが､ その他にもさまざまなヒントを得ることができ､
このコースを進める上で追加の読み物の良い情報源となるでしょう｡
そうそう､ 興味のある方は､ ぜひ読んでみてください｡
これでよしとしよう｡
そのために必要なのが､ 変数なんですね｡
そして､ ここには出力値があります｡
では､ 出力値はどうすればいいのでしょうか｡
まあ､ 選択肢はいくつかあるんですけどね｡
出力値は､ 例えば価格のような連続的なものもあれば､ バイナリもある｡
例えば､ ある人が退出するか留まるか､ あるいはカテゴリー変数にすることができます｡
そして､ もしそれがカテゴリカルな変数であれば､ ここで覚えておくべき重要なことは､ その場合､ 出力値は1つだけにはならない､
ということです｡
これは､ カテゴリを表すダミー変数になるため､ いくつかの出力値になります｡
そして､ それはただ､ ただ､ そういうことなのです｡
そして､ ただ覚えておいてほしいのは､ その場合､ 人工ニューラルネットワークからどのようにカテゴリーを取り出すかということです｡
しかし､ 1つの出力値という単純なケースに戻り､ 今度はもう1点､ あるいは今までの指摘のようなものを考えてみましょう｡
この点をもう一度確認しておきたいのですが､ 左側のデータセットには1つの観測値があり､ 1行になっています｡
そして右側には､ 同じく1つの観測データがありますね｡
そしてそれは､ 同じように観察することができます｡
重要なのは､ 入力されたものが1行分であり､ 出力されるものがその1行分であることです｡
また､ ニューラルネットワークを学習させる場合､ その1行の入力を入れて､ その1行の出力を入れています｡
つまり､ 複雑さを単純化するならば､ 単純な線形回帰や多変量線形回帰のようなものだと考えてください｡
価値観を入れることで､ アウトプットがあるわけですね｡
これは､ 回帰のような話になると､ 慣れてしまっているので､ 何の疑問もないようなものです｡
こちらも同じで､ それほど複雑なものではありません｡
値を入れるだけで､ 出力が得られるのです｡
ただ､ 毎回1つの行を処理することを忘れないでください｡ そうすれば､
混乱して､ 人工ニューラルネットワークなどに別の役割を持たせるようなことを考えないで済みます｡
これはすべてその1行の中の値だけです｡
だから､ 毎回異なる観察､ その観察に関連する異なる特性や属性がある｡
なるほど｡
次に､ シナプスと副鼻腔についてお話します｡
私たちには副鼻腔がありますが､ 実はすべてに重さが割り当てられているんです｡
重さです｡
ウェイトについては､ この先で詳しく説明する予定です｡
しかし､ 要するに､ 人工ニューラルネットワークが機能するためには､ 重みが重要なのである｡ 重みは､ ニューラルネットワークの学習方法だからである｡
重みを調整することで､ ニューラルネットワークは､ あるニューロンにとって､ どの信号が重要で､ どの信号が重要でないか､
どの信号が伝わって､ どの信号が伝わらないか､ どの程度の強さで信号が伝わっているかを､
逐一決定しているのです｡
だから､ ウエイトが重要なんです｡
そうであり､ そうである｡
学ぶ過程で調整されていくもの｡
人工ニューラルネットワークを学習させるとき､ 基本的にはこのニューラルネットワーク全体のサインアップの重みをすべて調整するようなものです｡
そこで登場するのが､ 勾配降下法と逆伝播法です｡
そして､ それらは私たちが議論する概念でもあります｡
だから､ 基本的にはそれらがウェイトになります｡
今のところ､ これだけです｡
そして､ ここに神経細胞があります｡
信号が神経細胞に入り､ 神経細胞で何が起こるかということですね｡
だから､ ここが面白いところなんです｡
今日は神経細胞の話をしていますが､ 神経細胞の中で何が起こっているのか｡
だから､ まずいくつかのことが起こる｡
そして､ 最初のステップは､ 取得した値をすべて足し算することです｡
だから､ アディショナルがかかるんです｡
つまり､ すべての入力値の加重和は､ 非常にシンプルになってきていますね｡
とても､ わかりやすいですね｡
重みを掛けて足し算するだけで､ 活性化関数を適用してくれるんです｡
さて､ ここからは活性化関数について詳しく説明します｡
さらにその下ですが､ 基本的にはこのニューロンまたはこの層全体に割り当てられる関数で､
この重み付き和に適用されます｡
そして､ そこからニューロンは信号を伝える必要があるかどうかを理解します｡ 例えば､ 重み付き和に適用される関数が伝えるのは､
その信号のようなものです｡
しかし､ 基本的には機能によって､ 神経細胞は信号を伝えるか､ 信号を伝えないかのどちらかになります｡
そして､ ステップ3では､ まさにこのようなことが起こりました｡ ニューロンは､ そのシグナルを次のニューロンに渡します｡
これは､ 非常に重要なトピックなので､ 次のチュートリアルでお話しします｡
活性化関数についてはもっと深く掘り下げたいのですが､ 今は入力値､ 重み､ サイナス､ ニューロンで起こること､
加重和､ そして活性化関数が適用され､ それがラインに渡され､ それがニューラルネットワーク全体で延々と繰り返されることが､
すべてはっきりすればいいと思っています｡
何千回､ 何十万回と､ 神経ネットワークの大きさ､ ニューロンの数､ シナプスの数によって変わってきます｡
そうそう､ そうなんです｡
今日のチュートリアルを楽しんでいただければ幸いです｡
次回が待ち遠しいです｡
そして､ それまではディープラーニングを楽しんでください｡