ディープラーニング(深層学習)の数学上の意義にはなにか。
そもそも、我々はAIに何を「教えて」いるのか ─ のみならず、AIにどのように「判断させ」「考えさせて」いるのか、ここを概念理解してこそ、ディープラーニングへの了察が始まるのであり、そしてもっと総括的にいえば、人智/ハードウェアのこの論理接続こそがコンピュータ(自動化)の根本であり、ソフトウェアや数学の本質でさえある。
……といったところを再認識させてくれたのが本書の導入箇所であり、それゆえ本書の紹介にあたっては、コンテンツの大半を占めるAIの対戦ゲーム論ではなく、基礎教育分野のひとつとしての数学論(多変量解析)を挙げておこう、と僕なりに思いついた次第。
なるほど、向学意欲に溢れ能力も高かろう学生諸君にとっては、この第2章までは安易に過ぎぬやもしれぬ、いや、それでも諸君のこんごの指向ないし進路像にて少なからぬ知的インパクトたりえるのではないか。
とまれ、以下の『読書メモ』にて本書の第2章を基礎数学論として概括してみることとした。
かつ、本書にては詳らかに紹介されていないデータスキャニングの入出力(とくに畳み込み方式)や数学論に関しても、僕なりの拙い知識でちょいと捕捉しおく。
<大前提>
ニューラルネットワーク(neural network)とは、多数の入力データが特定のパターンに合致するかどうか、部分的な観測結果を加え合わせて判別するための、多層構成のパーセプトロン(膨大な演算ユニット群=コンピュータ群)。
ニューラルネットワークに接続されたコンピュータに、データ分析と判別のための多変量解析を学習させてゆく方法論が、ディープラーニング(deep machine learning)である。
この多変量解析のための数学手法として、データの回帰分析および、それを活かしつつ閾値によってグループ分けを行う判別分析、評価関数などがある。
特に本書では、多変量解析の具体的なアプリケーション例として、画像データのスキャニングと判別を挙げている。
=======================
<回帰分析>
・複数のデータ式のパラメータ要素 x0, x1, x2 ... xn における係数 a0, a1, a2, ... an を調整計算し、線形の一次式 y = a0+a1x1+a2x2+a3x3 + ... anxn に回帰(収束)するように係数を合わせてゆく数学論理。
これは、{「y:実測値」-「y':予測値」} の2乗の総和の残差 Σ(y-y')2 におけるΣ値が最小値に収束するように係数を調整計算する、最小2乗法のアプローチである 。
・ここでは行列演算を起用することが出来、たとえば 「行列Xのデータ群」と「行列Yのデータ群」 のどの係数 a0, a1, a2 ... であっても、 (X'X)-1X'Y の演算により「論理的には」最適値を算出できる。
(※ ちなみに、X' は行列Xの転置、X-1 は逆行列…これらは現行の高校数学には含まれぬようだが、たとえば暗号数学などにては必須のテクニックである。)
なお、たとえば二次式 y=a0+a1x1+a2x22 のような非線形の式であれば、ここでのx2をx1とは別個の一次の変数(zなど)とみなし、その上で行列演算から係数を論理的に導くことも出来る。
・ヨリ実際上は、係数を「小刻みに逐次近似」させながら、全体を厳密に最小値収束させていく方法もある。
たとえば、係数 a0 (定数項)を0から1刻み、係数 a1 と a2 はそれぞれ-1~+1まで0.1刻みとし、まずΣ値が最小となるように計算、さらに今度はそのΣ値にのっとりつつ 係数 a0 (定数項)を0.1刻み、係数 a1 と a2 はそれぞれ0.01刻みとし、あらためてΣ値が最小となるように計算…
こうして、すべての係数が整数に収まるまで続けてゆく。
・二次式以上の非線形の式にては、ロジスティック曲線(シグモイド関数曲線)を充てて回帰分析がなされることが多く、一般には y= 1/(1+e-u) ; u = a0+a1x1+a2x2 ...+anxn として回帰式を求める。
この対数式を変形して対数log化すると、ln{y/(1-y)} = u = a0+a1x1+a2x2 ...+anxn
これでuつまり右辺は線形の一次式になり、以降は上に挙げたように各係数を求めつつΣ値を最小に収束、回帰分析が出来る。
(※ なお、この対数で底に置かれているeはいわゆるネイピア数 2.71828 のことらしいが、なぜこれをおくのか僕には未だに分からない。微分しやすいからであろうか?)
=======================
<判別分析/教師付き学習>
・上に挙げた回帰分析により、複数のデータ式を線形の一次式に回帰させた上で、さらに今度は一定の閾値に則りつつ、それらデータを特定のカテゴリー群に分類する。
これがグループ判別分析であり、ここではパラメータ「要素」にかかる係数をその「特徴量」として捉える。
たとえば、犬、羊、牛の画像データ数枚があるとして、それぞれにて共通した「"何らかの"2つの要素 x1, x2 」と各々の「特徴量 a1, a2, a3 ... an 」に応じて、それらデータが犬か羊か牛かをグループ判別する、とする。
この際、どの動物と見做すかを数値上さだめるための「一定の閾値(±0)」を併せて設定しておけば、要素とそれら特徴量から回帰分析(逐次近似計算)を繰り返して、犬か羊か牛かをグループ判別する ─ そういう判別式が導ける。
(ごく単純な例として、たとえば y = 2.0x1-1.0x2 などのような線形回帰分析式が成立しうる。)
・もちろん、このグループ判別式に「新たに全く別の画像データの要素と特徴量を入力」しても、やはり「同じ」回帰分析を繰り返し、おのずから犬か羊か牛かを予測的にグループ判別できるはずである。
・ここまでをコンピュータで実践する場合。
まず設定用データとそのグループ判別式を人間がコンピュータに付与し、以降は「新たなデータのグループ判別を"そのコンピュータに予測計算させる"」 ─ これがAIはじめコンピュータにおける初期学習、特に教師付き学習(supervised learning)の実相である。
もしこのコンピュータによる新たなグループ判別が実像とズレてしまう場合には、たとえば「特徴量」と「閾値」を調整の上であらためて設定用データと判別式をコンピュータに与えてやればよい。
チェスやチェッカーにて、譜面データから勝敗や引き分けをAIが予測する「評価関数」も、この初期学習をもとにAIが判別分析を起動させて作っていく。
======================
<主成分分析>
各データにおける諸々のパラメータ「要素」の「特徴量」を定量的に抽出し定義する論理。
n次元に展開する分布データであっても、座標を直交回転して便宜的に平面ベクトルとして各々を捉え、データ主成分の相関係数を算出する。
(※ そうはいっても、このあたり本著者も指摘のようにかなりイメージし難い数学で、僕にはどうにも捕捉出来ない。
そもそも、別の類書によれば、多変数の関数を偏微分し最小化するためにいわゆる勾配降下法を用いる云々とあり、そのさいにベクトル化を活かしてどうだこうだなどとあり…いや、やっぱりここのところはどうも僕なりの概念が繋がらない、気が向いたらそっと勉強しとく。)
=====================
<画像データ識別、対戦ゲーム>
幾つもの画像データをスキャンしてグループ判別させるよう、或るコンピュータに初期学習させる、とする。
その際に、そのコンピュータの画像スキャニングスケールと表現能力に応じて、初期学習のスケールが定まる ─ たとえばスキャニングのドット数は幾つか、パラメータ「要素」は何にするか、それらの特徴量の表現方式は二進数かもっと大きいか、など。
これを高度に応用したシステムが、たとえばAIによる AlphaGo である。
まず、碁の高段者の棋譜をこのAIに初期学習させて、AIはそれらにおけるパラメータ「要素」と「特徴量」などに基づいて自らが必勝の手順を予測的に(但し確率的に)回帰分析、勝敗を予測的に判別分析してゆく。
=======================================
とりあえず、このあたりまで読んでみた。
コンピュータに何を学習させ、どのように予測させるのか、そこに係る数学(多変量解析)の超ド基礎について僕なりに分かったつもりだ。
と、ともに、ディープラーニングと数学について様々な書籍やネット記事で引用される「入力データの活性化関数」や「階層化と畳み込み」などについても、何をやっているのかくらいは直観的に閃くことが出来た。
その点では、本書に大変感謝している。
さて、本書の第2章にては対戦ゲームにおける「評価関数」についても触れているが、ここまでくると人間とコンピュータの主体/客体関係について僕なりに視座が定まらない。
そんな僕の苦悩はさておき、本書は第3章における「完全解析」論以降、いよいよ実践的な対戦ゲーム必勝プログラムなどなどの紹介に突入してゆく…こういう世界に興味関心のある学生諸君などは、せいぜい呻吟しまた快哉を叫ぶがよろし。
続きは、また気が向いたら。
以上