COURSERAで学ぶ機械学習(4週目-1)

しんぺい

こんにちは!しんぺいです。

前回のCOURSERAの「Andrew Ng先生の機械学習」7回目からの続きです。

7回目はこちらからどうぞ!

1回目はこちら

非線形仮説

今回からニューラルネットワークに入っていきます。
ですが、ニューラルネットワークへの理解を深めるために、先に非線形仮説について見ていきましょう。

このようなトレーニングセットがあるとしましょう。

このトレーニングセットを分類しようと考えていますので、まずはロジスティック回帰を適用してみましょう。
このような多項式や、決定境界が得られるかもしれません。

$$\large g(θ_0+θ_1x_1+θ_2x_2+θ_3x_1x_2+θ_4x^{2}_1x_2+θ_5x^{3}_1x_2+θ_6x_1x^{2}_2…)$$

さて、もう一度上の式をよく見てください。
特徴量が\(x_1\)と\(x_2\)の2つしかありません。特徴量が少なければ、多項式を十分に書き出すことができます。
しかし、機械学習では多くの場合は大量の特徴量を用いるのです。

またまた家の売値の例を出しましょう。
しかし、今回は回帰ではなく分類です。例えば「複数の特徴量を用いいて、半年以内に家が売れるオッズを予測したい」という場合は、分類問題になります。

以下のように、特徴量が100個あったとしましょう。

この場合も同様に二次項を全て書き出そうとすると、どうなるでしょうか?

「\(x_1^{2},x_{1}x_{2},x_{1}x_{3},…,x_{1}x_{100}\)」の次は、「\(x_2^{2},x_{2}x_{3},x_{2}x_{4},…,x_{2}x_{100}\)」と、およそ5000もの組み合わせが出現することになります…。
これはかなり大変ですし、オーバーフィッティングする可能性が高くなります。

ちなみに三次項まで書き出そうとすると、実に17000もの組み合わせが出現します。すなわち、高次になるほど特徴量の空間は劇的に膨張していくのです。
以上のことから、nの数が大きいデータセットに非線形の分類を使うのは、あまり良い方法とは言えなさそうです。

コンピュータビジョンの概要

ここでコンピュータビジョンがどのように画像を分類しているか見てみましょう。

例えば、「与えた画像が車であるかどうかの分類」はどのようにやっているでしょうか?
人間にこの画像を見せれば、ほぼ間違いなく「車である」という答えが返ってくると思います。


参考 「Andrew Ng先生の機械学習」よりhttps://ja.coursera.org/

一方、コンピュータビジョンはこのように解釈しています。


参考 「Andrew Ng先生の機械学習」よりhttps://ja.coursera.org/

これは、1ピクセルあたりに対する輝度値の行列です。
つまり、赤枠で囲われた画像の1ピクセルの特徴が、この行列なのです。

さて、今我々の手元に50ピクセル×50ピクセルの画像が用意してあり、この画像を判別するとしましょう。
\(50\times50=2500\)ですから、特徴量が2500個、つまり輝度値の行列が2500個あることになります。
これら全ての項を書き出すと、なんと約300万もの組み合わせが出てくるのです。非線形の仮説を立てることがあまり良い選択でないことがよくわかりますね。
ちなみに、この2500ピクセルというのは白黒画像の場合であり、カラー(RGB)画像であれば、その数は7500まで増加します。

ニューロンと脳

ニューラルネットワークの背景について触れます。

もともとニューラルネットワークが誕生したきっかけは、「脳のアルゴリズムを模倣する」というものでした。
膨大な計算量を必要とするニューラルネットワークに対してコンピュータや計算機の処理が追いつかないということで、1990年代にかけて一度下火になりますが、技術の発展もあり、その膨大な計算処理も可能となったここ数年でニューラルネットワークはまた注目を集めるようになったのです。

ところで、「脳のアルゴリズムを模倣する」というのはどういうことでしょうか。
脳はとても素晴らしいものであり、様々な働きをします。触覚で触れたものを覚えたり、微積分を計算したり、聴覚で聞いた言葉によってイメージを作ることもできます。これらのアルゴリズムを一つ一つ作ろうとするのはとても大変なことです。

そこで、ある仮説が立てられました。
「学習するアルゴリズム」というものを一つだけ作ることが出来ないだろうか?ということです。

この仮説を裏付けるために、様々な実験がされてきました。
例えば、耳から聞いた音は脳の聴覚皮質という部分に送られ、情報を処理しています。この「耳→聴覚皮質」という神経を切断し、「目→聴覚皮質」という神経に繋ぎ直すとどうなるでしょうか。なんと、聴覚皮質は「見て学習する」ということが分かったのです。

同様に、触覚を処理する体性感覚皮質に視覚の神経を繋ぎ直すと、こちらもまた、見て学習することが分かりました。
これらの実験は今日、「神経再接続実験」と呼ばれています。
他にも「舌で物質を見る」や、「音によって距離感を把握する(人間エコーロケーション)」など様々な実験が行われおり、脳は入ってくる情報をどのようにすれば処理できるかと「学習」しているのです。

もしこの「学習アルゴリズム」を解明することができれば、それは、AIや人工知能の誕生への大きな一歩となるかもしれません。

学習モデルの表現1

脳の「学習するアルゴリズム」をどう表現したらいいでしょうか、

ニューロンを端的に表現すると、「樹状突起(Dendrite)と呼ばれる入力線から情報を受け取り、何らかの計算処理をした結果を、軸索(Axon)から出力する」です。

ニューロン同士は、スパイクと呼ばれる電気信号で情報の伝達を行なっています。つまり、ニューロン(1)の軸索から、別のニューロン(2)の樹状突起へとスパイクを使って情報を伝達します。そして、ニューロン(2)からさらに別のニューロン(3)、ニューロン(4)…と繰り返されるわけです。

さて、このニューロンのやっているシンプルなモデルを、ロジスティック単位として扱い表現します。

上記の図はシンプルで、「何らかの情報\((x_1,x_2,x_3)\)を投入し、ニューロンで計算し、その結果を出力する」というものです。

ロジスティック回帰ですから、出力の\(h_θ(x)\)は、

$$\large h_θ(x)=\frac{1}{1+e^{-θ^{T}x}}$$

となります。
上記の画像では書かれていませんが、たまに\(x_0\)というノードが書かれていることがあります。これはバイアスニューロンと呼ばれます。\(x_0=1\)と決まっているため、図中に書かれないこともあります。

他にも、ニューラルネットワークではシグモイド関数をアクティベーション関数と呼んだり、パラメータのことをウェイト(重み)と呼んだりしますが、意味は今までと全く同じです。
ここまでは単体のニューロンを見てきました。ニューラルネットワークとは、単純にこの単体のニューロンが複数集まった集合体です。

レイヤー2は別名「隠れたレイヤー」と呼ばれています。
これは、教師あり学習の場合に入力と出力を確認することはできるものの、途中経過は観測できないことから名付けられています。基本的に入力と出力以外は隠れたレイヤーと名付けて問題ありません。

もう少し掘り下げて見ていきましょう。
隠れレイヤーのノード表記が\((a_{1}^{(2)},a_{2}^{(2)},a_{3}^{(2)})\)となっていますが、これを\(a_{i}^{(j)}\)とした場合、「アクティベーションされたj番目のレイヤーのi番目のノード」と解釈します。例えば\(a_{1}^{(2)}\)であれば、「2番目のレイヤーの1番目のノード」ですね。

次に、\(θ(j)\)と表現されるものがあります。これは、jレイヤーからj+1レイヤー、つまり1レイヤーから2レイヤー、2レイヤーから3レイヤーへとマッピングする際に、重みをコントロールするための関数を表しています。

これらを踏まえて、上記図を数式にするとこのようになります。

これまでにないくらいごちゃごちゃしていますが、一般化して表現すると、「ネットワークがレイヤー\(j\)に\(s_{j}\)ユニット、レイヤー\(j+1\)に\(s_{j+1}\)ユニット持っている場合、\(θ^{(j)}\)の構造は\(s_{j+1} \times (s_{j}+1)\)になる」となります。

\(h_{θ}{(x)}\)の\(θ\)の次数が(2)になっているのは、レイヤー2、つまり隠れレイヤーの出力の結果を受けているからですね。