*

【機械学習】Stanford University Machine Learning / Week4【学習メモ】

公開日: : 最終更新日:2014/04/14 Coursera, 機械学習 , , ,

0.何の学習メモ?

・スタンフォード大学がCourseraをプラットフォームにして提供している機械学習のコース(詳しくはここ)の学習メモ
・学習メモだけあって雑然としてます

VIII.ニューラルネットワーク:説明

非線形hypothesis

・今までのロジスティック回帰での分類では何がダメなのか?
→複雑な分類(非線形な分類)の場合に、特性・変数が増えた時に対応できない。
・変数が2つ(x_1,x2)だったら、g(\theta _0 + \theta _1x_1 + \theta _2x_2 + \theta _3x_1x_2 + \theta _4x_1^2x_2 + \theta _5x_1^3x_2 + \ldots)のようにすれば複雑な形にも対応できそうだが、変数が100とかになると、2次式(quadratic)で表しても、約5000個のパラメータを計算する必要があり、3次式で表すと約170,000個のパラメータを計算する必要があり、計算量が膨大なものになってしまう。また、過学習の懸念もある。

・変数が多くなる例の一つに、画像処理が挙げられる。
・例えば人間が車の画像を見た場合、すぐにそれは車だとわかるが、コンピューターにはそれが数値(例:RGBAの数値)に見えるので、それが車かどうかは判定しづらい。
・1ピクセル1変数として車か否かの分類をしようと思っても、50×50ピクセルのグレースケール画像でも、2500変数で、2次式にしても約3,000,000個のパラメータを計算することになり非現実的(RGBだとその3倍以上)。

・そこで、賢いアルゴリズムを有する人の脳にヒントを得たのがニューラルネットワーク(Neural Network)。

ニューロンと脳

・ニューラルネットワークって?
-起源(Origins):脳を再現(mimic)しようとするアルゴリズム
-これまで:80年代~90年代初頭にかけて非常に幅広く使われたが、90年代後半には人気が下落(diminish)していった
-最近の復興(resurgence):たくさんの応用に対する最先端(state-of-the-art)の技術が出てきた(コンピュータ能力の向上等により)

・なぜ脳に着目するのか?
→どうやら脳は耳や手の動かし方・使い方に関する個別のアルゴリズムを持っているわけではなく、1つの学習アルゴリズムを持っているみたいだ、ということが実験で分かった。
(脳の聴覚皮脂(Auditory Cortex)につながっている耳の神経を切断し、代わりに目の神経をつなげると、聴覚皮脂が視る事を学ぶ。体性感覚皮脂(Somatosensory Cortex)に対して同じようになっても同じ結果になる)
→その点に着目した様々な実験がある(例:舌に、カメラにつながる電極をつないで、カメラの情報を電気信号で伝えて、舌に視覚を覚えさせる)

モデルの説明

・脳の中ではニューロンを使って情報を伝達しており、その仕組を流用する。
・ニューロンは下のような感じ(Wikipediaより)
-樹状突起(Dendrite)が入力(input)の役割。複数の入力がある。
-情報を処理する細胞体(Cell body)と核(Nucleus)がある。
-軸索(Axon)が出力(output)の役割。複数の出力がある。
ml_w4_neuron
・ここに電気信号が走って、様々なニューロンを経由することで、筋肉を動かしたり、視覚の処理をする。

・上記のニューロンに、Logistic unitを適用して抽象化したのが以下のモデル。
ml_w4_neural
・一つ一つの丸がニューロンのイメージ。ユニット(unit)と呼ぶ。
・Bias unitはこれまでのx_0と同等の扱い。常に1。ユニット数を数える場合には、数えられない。上記モデルだと、レイヤー1のユニット数は2。
・オレンジ色の丸はSigmoid(logistic) activation function(シグモイド活性化機能?)で、入力された数値に対してシグモイド関数を適用する。
・これまでと同様、入力に対して、パラメータ\Thetaを掛け合わせる。
a_i^{(j)}は、レイヤーjのユニットiの”activation”。入力レイヤーはa^{1}でもある。
\Theta ^{(j)}は、レイヤーjからレイヤーj+1へactivationの結果をマッピングする際のウェイトの行列。

・上記モデルで最終的なhypothesisである、h_\Theta (x)を求めるには、以下のように計算していく。
a_1^{(2)}=g(z_1^{(2)})=g(\Theta _{10}^{1}x_0 + \Theta _{11}^{1}x_1 + \Theta _{12}^{1}x_2)
a_2^{(2)}=g(z_2^{(2)})=g(\Theta _{20}^{1}x_0 + \Theta _{21}^{1}x_1 + \Theta _{22}^{1}x_2)
h_\Theta (x)=g(z_1^{(3)})=g(\Theta _{10}^{2}a_0^{(2)} + \Theta _{11}^{2}a_1^{(2)} + \Theta _{12}^{2}a_2^{(2)})
g(z)=\frac{1}{1+\mathrm{e} ^{-z}}

・上記式から分かるように、レイヤーjs_j個ユニットがあって、レイヤーj+1s_{j+1}個ユニットがあった場合、\Theta ^{(j)}の次元(dimension)はs_{j+1}\times (s_j+1)であることが分かる。

・上記式の流れを行列を使って表すと以下の通り。
x=\left[ \begin{array}{c} x_0 \\ x_1 \\ x_2 \end{array} \right] , z^{(2)}=\left[ \begin{array}{c} z_1^{(2)} \\ z_2^{(2)} \end{array} \right]
z^{(2)}=\Theta ^{(1)}x=\Theta ^{(1)}a^{(1)}
a^{(2)}=g(z^{(2)})
{\rm Add\ } a_0^{(2)}=1. ※bias unitの設定
z^{(3)}=\Theta ^{(2)}a^{(2)}
h_\Theta (x)=a^{(3)}=g(z^{(3)})

・このようにレイヤーの数字の若い方から前に計算を進めていくことを、フォワードプロパゲーション(Forward Propagation:順方向伝搬)という。

・勿論、複数のHidden Layerが2つ以上あるようなネットワーク機構(network architecture)もある。

ニューラルネットワークの例

・ニューラルネットワークを使った、非線形な分類の例を示してみる。

x_1,x_2がバイナリ(0 or 1)で、y=x_1 {\rm XNOR\ }x_2だった場合、以下の様なグラフになる。
※XNORは等価(同値、EQ、if and only if、否定排他論理和、必要十分条件)。お互い真orお互い偽の場合のみ真。
ml_w4_neural_graph
・このグラフに対してロジスティック回帰を使った分類を適用しようとすると、式は複雑になる。(上記例は4点のみなので、言うほど複雑にはならないが、データ数が増えたりすると複雑になってくる)

・結論から言うと、集合論(ANDとかORとか)の組み合わせになる(とはいえ、ニューラルネットワーク=集合論、というわけではない。)

AND

・ANDのニューラルネットワークは以下の様な感じ。
x_1,x_2 \in \{0,1\}
y=x_1 {\rm AND\ }x_2
ml_w4_neural_and
h_\Theta (x)は、h_\Theta (x)=g(-30 + 20x_1 + 20x_2)の様になる。※x_0=1
・シグモイド関数は、z\ge 4.6で、g(z)=0.99となる(-4.60.01)から、上記式で表現可能な値はどれも1or0に限りなく近い値になる。

・真理値表にすると、
\begin{tabular}{cc|c} x_1 & x_2 & h_\Theta (x) \\ \hline 0 & 0 & g(-30) \approx 0 \\ 0 & 1 & g(-10) \approx 0 \\ 1 & 0 & g(-10) \approx 0 \\ 1 & 1 & g(10) \approx 1 \\ \end{tabular}

OR

・ORのニューラルネットワークは以下の様な感じ。
ml_w4_neural_or
h_\Theta (x)=g(-10 + 20x_1 + 20x_2)

・真理値表にすると、
\begin{tabular}{cc|c} x_1 & x_2 & h_\Theta (x) \\ \hline 0 & 0 & g(-10) \approx 0 \\ 0 & 1 & g(10) \approx 1 \\ 1 & 0 & g(10) \approx 1 \\ 1 & 1 & g(30) \approx 1 \\ \end{tabular}

(NOT x_1) AND (NOT x_2)

・NORのこと。(講義ではタイトルの通りだった。NOTを説明したかったのか?)
・NOTは0なら1、1なら0になる論理演算。
ml_w4_neural_notandnot

・真理値表にすると、
\begin{tabular}{cc|c} x_1 & x_2 & h_\Theta (x) \\ \hline 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ 1 & 1 & 0 \\ \end{tabular}

XNOR

・元々の目的のXNORをニューラルネットワークで表すと、以下の通り。
ml_w4_neural_xnor

・真理値表にすると、
\begin{tabular}{cc|cc|c} x_1 & x_2 & a_1^{(2)} & a_2^{(2)} &h_\Theta (x) \\ \hline 0 & 0 & 0 & 1 & 1 \\ 0 & 1 & 0 & 0 & 0 \\ 1 & 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 0 & 1 \\ \end{tabular}

・これで表現できたことがわかった。

・なんかこれだけだとしょぼいイメージだけど、手書き文字の判断とかに使われているから、この先の講義を進めていくと実用的な内容を知ることが出来る(はず)。

多クラス分類(Multi-class Classification)

・これまで紹介したニューラルネットワークを用いた分類は、0 or 1の分類だったが、もっと多くの分類(例:写真を見て、歩行者(pedestrian)なのか車なのかバイクなのかトラックなのか分類したり、あるいは上述の手書き文字の分類とか)はどうするのか?

・これまでの分類では4つのクラスに分類しようと思ったら、y\in{1,2,3,4}とすることで分類してきたが、ニュラルネットワークではy^{(i)}は、\left[ \begin{array}{c} 1 \\ 0 \\ 0 \\ 0 \end{array} \right] , \left[ \begin{array}{c} 0 \\ 1 \\ 0 \\ 0 \end{array} \right] ,\left[ \begin{array}{c} 0 \\ 0 \\ 1 \\ 0 \end{array} \right] ,\left[ \begin{array}{c} 0 \\ 0 \\ 0 \\ 1 \end{array} \right]のどれかである、という風に表す。
・なので、h_\Theta (x)\left[ \begin{array}{c} 1 \\ 0 \\ 0 \\ 0 \end{array} \right]のベルトルで表現されることになるので、出力レイヤーのユニット数は4つになる。

関連記事

small-icon.hover

【機械学習】Stanford University Machine Learning / Week3【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラットフォームにして提供している

記事を読む

small-icon.hover

【機械学習】Stanford University Machine Learning / Week1【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラットフォームにして提供している

記事を読む

small-icon.hover

【機械学習】Stanford University Machine Learning / Week2【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラットフォームにして提供している

記事を読む

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

small-icon.hover
【機械学習】Stanford University Machine Learning / Week4【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラ

small-icon.hover
【機械学習】Stanford University Machine Learning / Week3【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラ

small-icon.hover
【機械学習】Stanford University Machine Learning / Week2【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラ

small-icon.hover
【機械学習】Stanford University Machine Learning / Week1【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラ

ダウンロード
【WebSocket】Safariからlocalhostに対してハンドシェイクする際の注意点

この記事の対象者 とりあえずlocalhostで色々と試したい

→もっと見る

PAGE TOP ↑