トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Coursera 機械学習 - Week4

[機械学習]

Week4

ようやく…ニューラルネットワークですよ。最初は概論なので休憩気分です。

とはいえ、この辺から線形代数学の知識が必要になります。資料があるのであれば、今のうちに読んでおくべきでしょう。

  目的関数の詳解 (Model Representation)

ニューラルネットワーク (Neural Network)

左から順に…

  • 入力層 (Input)
  • 隠れ層 (Hidden Layer)
  • 出力層 (Output)
  • a%5Fi%5E%7B%28j%29%7D+ : (j)はレイヤーの階層数、隠れ層は2番めなので、j=2、iはユニット数上から順番に連番
    • "activation" だから "a"
  • %5Ctheta%5E%7B%28j%29+ : レイヤーjからレイヤーj+1からの入力を操作するためのウェイトを決める行列

隠れ層がある場合、以下のようになる

  • %5Cleft%5B+%5Cbegin%7Barray%7D%7Bcc%7D+x%5F0%5C%5C+x%5F1%5C%5C+x%5F2%5C%5C+x%5F3%5C%5C+%5Cend%7Barray%7D+%5Cright%5D+%5Cto+%5Cleft%5B+%5Cbegin%7Barray%7D%7Bcc%7D+a%5F1%5E%7B%282%29%7D%5C%5C+a%5F2%5E%7B%282%29%7D%5C%5C+a%5F3%5E%7B%282%29%7D%5C%5C+%5Cend%7Barray%7D+%5Cright%5D+%5Cto+h%5F%5Ctheta%28x%29+

活性関数(activation function)は以下のように求められる

  • a%5F1%5E%7B%282%29%7D+%3D+g%28+%5Ctheta%5E%7B%281%29%7D%5F%7B10%7D+x%5F0+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B11%7D+x%5F1+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B12%7D+x%5F2+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B13%7D+x%5F3+%29+
  • a%5F2%5E%7B%282%29%7D+%3D+g%28+%5Ctheta%5E%7B%281%29%7D%5F%7B20%7D+x%5F0+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B21%7D+x%5F1+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B22%7D+x%5F2+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B23%7D+x%5F3+%29+
  • a%5F3%5E%7B%282%29%7D+%3D+g%28+%5Ctheta%5E%7B%281%29%7D%5F%7B30%7D+x%5F0+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B31%7D+x%5F1+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B32%7D+x%5F2+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B33%7D+x%5F3+%29+
  • h%5F%5Ctheta%28x%29+%3D+a%5E%7B%283%29%7D%5F1+%3D+g%28+%5Ctheta%5E%7B%281%29%7D%5F%7B10%7D+a%5F0+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B11%7D+a%5F1+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B12%7D+a%5F2+%2B+%5Ctheta%5E%7B%281%29%7D%5F%7B13%7D+a%5F3+%29+

  例示と直観 (Examples and Intuitions)

このニューラルネットワークを使って、AND/ORのような関数を作ることが出来る。

  • Input を以下のように置く、
    • X0(=1)
    • X1
    • X2
  • Output はxの値から作られるとすると
    • h%5F%5Ctheta%28x%29+%3D+g%28x%5F0+%2B+x%5F1+%2B+x%5F2%29+
  • 以下のような定数が与えられる場合
    • h%5F%5Ctheta%28x%29+%3D+g%28%2D10+%5Ccdot+x%5F0+%2B+20+%5Ccdot+x%5F1+%2B+20+%5Ccdot+x%5F2%29+
x1 x2 g(x)
g(x) 1 0 10 ≒ 1
g(x) 0 1 10 ≒ 1
g(x) 1 1 30 ≒ 1
g(x) 0 0 -10 ≒ 0

というわけでこれはOR関数, あとAND, NOR関数が出てきた。実際、これはさっきのactivate関数を導出していく過程である。

  • %5Cleft%5B+%5Cbegin%7Barray%7D%7Bcc%7D+x%5F0%5C%5Cx%5F1%5C%5Cx%5F2%5C%5C+%5Cend%7Barray%7D+%5Cright%5D+%5Cto+%5Cleft%5B+%5Cbegin%7Barray%7D%7Bcc%7D+a%5F1%5E%7B%282%29%7D%5C%5Ca%5F2%5E%7B%282%29%7D%5C%5C+%5Cend%7Barray%7D+%5Cright%5D+ %5Cto+%5Cleft%5B+%5Cbegin%7Barray%7D%7Bcc%7D+a%5E%7B%283%29%7D+%5Cend%7Barray%7D+%5Cright%5D+%5Cto+h%5F%5Ctheta%28x%29+

  クイズのヒント

Week4 Quiz難しかった。。。

  • 真理値表を思い出しましょう、とりあえずこれを覚えとけば1点獲得です
  • 活性ノードの行列の読み方
    • a%5F1%5E%7B%282%29%7D+ は 2列目のノード。a%5F1%5E%7B%283%29%7D+ は 3列目のノード。これらは前のノードの計算結果を使う。
  • Week3の知識も問われる
    • J%28%5Ctheta%29+%3D+%5Cfrac%7B1%7D%7B2m%7D+%5Cbig%5B+%5Csum%5F%7Bn%3D1%7D%5Em+%28+h%5F%5Ctheta%28x%5E%7B%28i%29%7D%29+%2D+y%5E%7B%28i%29%7D+%29%5E2+%2B+%5Clambda+%5Csum%5F%7Bj%3D1%7D%5En+%5Ctheta%5E2%5Fj+%5Cbig%5D+
    • ラムダ以降の式が大きくなるほど目的関数が平坦化してオーバーフィッティングしにくくなる、でしたよね?

  Octave演習

正規化されたロジスティック回帰 (Regularized Logistic Regression)

  • 以下を適用する ... h+%3D+g%28X%5Ctheta%29+ とおいて
    • J%28%5Ctheta%29+%3D+%5Cfrac%7B1%7D%7Bm%7D+%5Ccdot+%5Cleft%28+%2Dy%5ET+log%28h%29+%2D+%281%2Dy%29%5ET+log%281%2Dh%29+%5Cright%29+
    • あと、これにラムダ以降の項をプラスしてやればよい(←ただその計算方法が一番難しかった)
    • どちらにせよ、前回の演習ができていればコピペでいける

これによりlrCostFunctionが実装できる。

  • ここまで何回か演習を行っている中で、このCostFunctionが目的関数J(θ)と傾きgradを求めることができることがわかるはず

一対多の分類 (One vs All Clasification)

複数のクラスがθで与えられるときの分類

  • Week3の課題
    • h%5F%5Ctheta%5E%7B%280%29%7D%28x%29%2C+h%5F%5Ctheta%5E%7B%281%29%7D%28x%29%2C+h%5F%5Ctheta%5E%7B%282%29%7D%28x%29+%5Ccdots+h%5F%5Ctheta%5E%7B%28K%29%7D%28x%29+ に対して分類を実行する
  • for文をクラスの数だけ回して、lrCostFunctionから取得できるJ(θ)とgradをお手本の通りoctave備えつきの関数に回して最適解を得る。
  • all_theta なる変数は実質K個分の行があるベクトルなので、最適解をその行にどんどん入れていく(1, 2, ... 10行目まで)

一対多の分類予測 (One-vs-All Classifier Prediction)

問題文の正確な把握が必要、

  • データセット X は、横が400要素(20x20の画像)、縦がm=5000要素ある
  • 上で求めたall_thetaは横が400+1要素、縦が10要素ある(縦が10なのは、機械学習させて答えを当てた時、0~9までの数字を言い当てるから。。。説明しにくい)
  • 決定境界の章でやったとおり、シグモイド関数と式の形から以下のことが言えるのでした
    • %5Ctheta%5ET+X+%5Cgeq+0+%5CRightarrow+y+%3D+1+
    • %5Ctheta%5ET+X+%3C+0+%5CRightarrow+y+%3D+0+

今回は、yは0~9までの値を取りうる(便宜上1~10になってるけど)

ベクトルX×θ'を計算してやって、一番デカイ値を出す奴が画像の正体なので、m=5000要素分これを計算して数字を当てる。

ニューラルネットワークの予測関数 (Neural Network Prediction Function)

まずは問題のpdfに書かれている数式をそのままoctaveに起こしてください。

  • g(z^{(2)}) は sigmoid関数を表します
  • a1 = [ones(1,1) X(i,:)]; みたいな感じで、活性ノードの最初に1を追加してやらないと行列の計算ができません(問題文にも書いてある)
  • hθ(x)の式が計算できると、前の問題と同じように1~10までの数値のどれに一番近いか確率がでるので、一番デカイ値を答えとする
296px-Colored_neural_network.svg.png
お名前: コメント: