ウシジの深層・強化学習の学習

深層学習、強化学習に関して、学んだことや論文、ニュース等を紹介していきます。よろしくお願いします。

Coursera Machine Learning: Week4 Neural Networks Representation

移転しました。

f:id:ushiji:20191121133558j:plain

CourseraのMachine Learningについてまとめています。 前回は、Week3の後半、Regularizationについてまとめました。

Week4では、Neural Networksの表現について学びます。ついにNeural Networkです。AIっぽいですね。

 

 

Week4

Neural Networks: Representation

Neural Networkでは、ここまで学んできたLinear RegressionやLogistic Regressionでは対応できないような、非線形で複雑な仮説を学習させるために用います。例えば、下記の図のような車か否かの判別モデルです。

f:id:ushiji:20191128142222p:plain

Car Detection

コンピュータ上で画像を処理する際は、人が目で見ているような画像ではなく、ピクセルごとの数字として処理されます。例えば、50×50ピクセルの画像であれば、2,500ピクセルあり、白黒画像なら2,500の変数となり、それぞれのピクセルが0~255の値を持っています。RGB画像であれば、各ピクセルが赤、緑、青のそれぞれの色について0~255の値を持つので、3倍の7,500の変数となります。50×50の小さな画像でもこれだけの大きさの変数となります。こういった複雑なものを学習させるのにNeural Networkが役に立ちます。

 

Neural Networkの歴史

Neural Networkは、脳の機能を模倣するアルゴリズムとして開発され、1980年代から90年代前半に広く使われていたそうです。しかしながら、90年代後半から下火になっていき、近年になって再度注目されるようになってきました。再度注目されるようになってきた背景としては、GPUの活用等による計算リソースの増加、トレーニングに用いることができるデータの増加があり、画像認識等様々な分野での活用が始まってきたためと理解しています。

 

Model representation

Neural Networkは、脳のニューロンを模倣するように作られました。最もシンプルなモデルが下記です。x0はBias Unitと呼ばれ、常に1をとります。ネットワーク上にあえて記載されない場合もあります。入力xに対して、パラメータθ(weights, 重み付け)を掛けて、シグモイド関数を通して、hが出力されます。

f:id:ushiji:20191202104839p:plain

Neuron Model_Logistic unit

このシンプルなモデルに層を加えていくと、よく見るNeural Networkの形になっていきます。追加したLayer 2は、Hidden Layer(隠れ層)と呼ばれます。

f:id:ushiji:20191202105503p:plain

Neural Network

Hidden layerのa(activation)やhは、下記のように計算されます。Θ(j)は、レイヤjからレイヤj+1を計算する際のweightのマトリクスです。 

f:id:ushiji:20191202110101p:plain

Neural Network Calculation

下記のようにInput layerから、次のHidden layerの値を順々に計算していき、最終的にOutput layerの値を計算するのが、Forward propagationです。

f:id:ushiji:20191202125548p:plain

Forward propagation
Intuitions

Neural Networkが非線形問題に対応できることの説明として、XOR/XNORの非線形の分類問題について学びます。XNORの分類は、下記図のような分類です。x1, x2が0か1の値を取るとして、下記のようなyを出力します。XORの場合は、yの値が逆になります。

  • x1=0, x2=0 → y=1(下記図の×)
  • x1=1, x2=0 → y=0(下記図の◯)
  • x1=0, x2=1 → y=0(下記図の◯)
  • x1=1, x2=1 → y=1(下記図の×)

f:id:ushiji:20191202131116p:plain

XNOR Classification

XNORを作るために、まずは、AND、OR、NOTを作っていきます。

f:id:ushiji:20191202145819p:plain

AND function

f:id:ushiji:20191202145835p:plain

OR function

f:id:ushiji:20191202145851p:plain

NOT function

これらを組み合わせることにより、XNORを作ることができます。

f:id:ushiji:20191202145957p:plain

XNOR function

 

また、Neural Networkを利用した例として、Yann Lecun氏の手書きの数字の文字認識の動画が紹介されました。興味のある人は見てみてください。


Handwritten Digit Classification - Yann Lecun

 

Multi-class classification

最後に、Neural Networkを用いた場合の、Multi-class classificationについて説明があります。下記図のように、Output layerにそれぞれのクラスを割り当てるようなNeural Networkを構築することにより、Multi-class classificationが実現できるようです。例えば、0~9の手書き文字認識では、10のユニットのあるOutput layerとなります。

f:id:ushiji:20191202150149p:plain

Multi-class classification


プログラミング演習

Week4のプログラミング演習では、one-vs-allのlogistic regressionとNeural Networkを実装し、手書きの数字の認識を行います。演習の項目は、具体的には以下のものです。

  • Regularized Logisic Regression
  • One-vs-all classifier training
  • One-vs-all classifier prediction
  • Neural Network Prediction Function

 

次回は、Week5 Neural Networks Learningについてまとめます。今回学習したNeural Networkを用いて、実際にAIの学習を進めていきます。

ushiji.hatenablog.com

 

コース全体の目次とそのまとめ記事へのリンクは、下記の記事にまとめていますので、参照ください。

ushiji.hatenablog.com