ディープ・ラーニング 6時間集中講義
2018/06/16 「ディープ・ラーニング集中講義」概要
角川アスキー総合研究所で、「ディープラーニング入門6時間集中講座」を初めて開催したのは、2年前のことになります。その時、僕は次のように書きました。
「人工知能」技術は、大きな社会的・ビジネス的インパクトをもって台頭しつつあります。現代の IT技術者にとって、この新しい技術を知ることは必須の課題です。それはまた、IT技術者の新しい常識ともいうべきものです。現在のIT技術の基本的なプラットフォームである、クラウドとスマートフォンの技術は、それぞれデータセンターと携帯電話の技術と、飛躍はあるものの、ある意味では連続的につながっています。ただ、多くのIT技術者にとって、人工知能技術は、全く新しいものです。課題は明確です。IT技術者は、新しい技術を学ぶところから始めなければなりません。
この二年間で状況はさらに変化しました。AlexaやGoogle Home等のボイス・アシスタンスは広く普及し、2020年を前に、日本でも自動運転車の本格的な取り組みが熱を帯びています。私たちの日常生活の一部に、AI技術は、確実に溶け込もうとしています。
AI技術について知ることは、単に「技術者の常識」だけではなく、遠くない未来には、現代に生きる我々皆が、身につけるべき「現代人の常識」になっていくのだと思います。ただ、それは意識的に学ばないといけないことで、自然に身につくものではありません。
AI技術に過大な期待を寄せる人や、AI技術に大きな不安を覚える人も、その両方が、むしろ増えているかもしれません。AI技術について、現在、何ができて何ができないのか、また、AI技術は何が得意で何が苦手なのかをキチンと知ることは、とりわけ重要なことです。
丸山自身の現在の関心は、ディープラーニングの後に、どのような人工知能技術が出てくるのかに向かっているのですが(例えば、2018マルレク第一回「ポスト・ディープラーニングの人工知能技術を展望する」)、こうした議論の前提としても、多くの人が、ディープラーニング技術について、よく知ることは意味があると考えています。
本講義では、ニューラルネットワーク技術の基礎として、主要に次の三つのテーマを取りあげます。
- 一つ目は、多段のフル・コネクトなニューラルネットワーク。
- 二つ目は、バックプロパゲーションによるパラメーターの学習機構。
- 三つ目は、画像認識に大きな力を発揮するコンボリューショナル・ニューラルネットワークです。
こう書くと難しそうに感じる人もいるかもしれませんが、大丈夫です。説明はわかりやすいものになると思います。
第一部:ニューラル・ネットワークの基礎
以下は、講演資料の第一部の構成を示したものである。この講座のコンテンツの本体は、講演資料である。講演資料に、丁寧な説明がある。
まず、学ぶことから始めよう!
まず、学ぶことから始めよう。
人工知能を作るには、人間の知能が必要であり、機械学習を知るためには、人間の学習が必要である。
様々なAI技術
A. 統計的分析に基づく、数値予測・クラス分け
B. 経験的に構築された知識・推論・対話システム
C. ニューラルネットワークに基づく、知覚・運動系へのアプローチ。Deep Learning
D.人間固有の言語能力の機械による実現
E. 人間の数学的・論理的な推論能力に関わるもの
モデルとしての生物のニューラル・ネットワーク
クラゲだって神経はある
「視覚」の誕生と発展
生物の進化の歴史の中で、「視覚」の能力は、5億年前の「カンブリア紀」に獲得された。それは、長い長い歴史を持っている。当時の食物連鎖の頂点に立っていた「アノマロカリス」は、立派な眼を持っていた。
「眼」の獲得、同じことだが、「視覚」の能力の獲得は、「捕食者」にとっても(獲物を見つける)、「被捕食者」にとっても(捕食者から逃れる)、その「生き残り」に、死活的に重要な意味を持つことになった。人間を含めて、すべての動物で、強い淘汰の圧力のもとで、視覚処理の能力は、高度に発達している。
同時に、この「視覚」の能力は、追いかける、捉える、あるいは、逃げるといった「運動能力」に深く結びついている
脳研究の取り組み
脳研究の取り組み
現在は、それぞれ異なった道を歩いているのだが、ニューラル・ネットワークの研究と脳研究とは、「人間の知能」の解明という共通の目標で結ばれている。ここでは、脳研究のいくつかの取り組みを紹介する。
ニューロンの働き
脳の働きも、最終的には、脳を構成する無数のニューロンの働きに帰着する。
コンピューター上のニューラル・ネットワークを構成する個々の「ニューロン」の動作原理は、生体のニューロンの働きをシミレートしたものである。
ニューラル・ネットワークとその表現 (1)
ニューロンは、いつ発火するのか?
あるニューロンが「発火」するかは、次のようにして決まる。
興奮性シナプスから受け取る信号の強さ全体 A から抑制性シナプスから受け取る信号の強さ全体 B を引いて、その値がある閾値 C より大きければ発火する。
A – B > C 発火 ( A – B – C > 0 )
A – B < C 発火しない ( A – B – C < 0 )
発火賛成と発火反対の多数決。ただし、賛成票が、ある一定数以上(閾値)、反対票を上回らないといけないというルール。至極、単純である。
賛成票 - 反対票 > 閾値 発火
賛成票 - 反対票 < 閾値 発火しない
「重み」と「バイアス」
賛成票の数 Aをプラスの値に反対票の数 Bをマイナスの値 B’ にし、閾値 Cの符号を逆にして C’ (バイアス)とすると、発火の条件 A – B > C (すなわち、A – B – C > 0)は、 A + B’+ C’ > 0 の形になる。
各シナプスごとに異なる投票権の大きさを「重み」という。
興奮性シナプスはプラスの「重み」を持ち、抑圧性シナプスはマイナスの「重み」を持つと考えるということ。
一つの入力Xi(0か1の値をとる)には、それに対応した一つのシナプスが存在する。そのシナプスの重みをWiとすれば、この一つのシナプスの投票数は、入力 Xi に 重み Wi をかけたもの。
一つのニューロンの内部の状態の表現
一つのニューロンの内部の状態は、ニューロンがシナプスを通じて受け取る刺激である「入力」と、シナプスごとの「重み」と、発火の閾値に対応する「バイアス」の三つの量で表現できる。
複数のニューロンからなる一つの層の内部の状態の表現
複数のニューロンの集まりが、一つの「層」として、入力を受け取り出力を返すことがある。
この層の内部の状態も、この層が受け取る「入力の全体」と、シナプスごとの「重みの全体」と、層を構成するニューロンの閾値に対応する「バイアスの全体」という三つの量で表現できる。
ニューラル・ネットワークとその表現 (2)
ニューロンを動かす -- 活性化関数 (Activator)
活性化関数は、その名前の通りに、一つのニューロンが発火(活性化)する時の条件と出力を関数の形で表したものである。いろいろな種類の活性化関数がある。
クラス分けのActivatorSoftMax
画像認識等のクラス分けの出力には、Softmaxという活性化関数がよく利用される
クラス分けの場合の出力に利用されるactivator。手書き数字画像の認識だと、提示された画像が0から9までの10個の数字のどれかだと判断しなければいけない。
ニューラル・ネットワークでは、こうした場合、出力層に、 0から9までの10個の数字に対応した10個のノードが並び、それぞれのノードの値が、「提示された画像がその数字である確率」であるようにする。
ノードごとに、確率を計算するのが softmax関数である。最終的には、10個のノードの中で、その確率が最大であるものが選ばれる。
ニューラル・ネットワークをグラフで表現する
複数のニューロンからなる一つの層を、グラフで表す
ここから、TensorFlowを使った、ニューラル・ネットワークの実装のスタイルを紹介する。
「グラフ」「演算ノード」「テンソル」というのが、基本的なコンセプトとなる。
複数の層からなるニューラル・ネットワークを、グラフで表す
もちろん、通常の表現でも、ニューラル・ネットワークはグラフとして表現される。ただ、TensorFlowのグラフは、それをさらに単純化する。
そうした単純化されたグラフ表現は、TensorFlowの大きな能力である。そのことと、グラフを流れる「テンソル」というデータの捉え方とは、結びついている