Coursera Machine Learning - Week4 Neural Networks Representation

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

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


Neural Networks: Representation

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


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が出力されます。


Neuron Model_Logistic unit

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


Neural Network

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


Neural Network Calculation

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


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(下記図の×)

XNOR Classification

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


AND function


OR function


NOT function

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


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となります。


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の学習を進めていきます。

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

Coursera Machine Learningまとめ



本記事を読んでいただきありがとうございます。
機械学習を実際に使うにあたり、Coursera MLと合わせておすすめしたい書籍を紹介します。


Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

scikit-learnを用いた機械学習を学ぶのに最適な本です。



ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

Deep Learningと言えばこれ。TensorFlowやPyTorch等のフレームワークを用いずに、基礎の理論からDeep Learningを実装します。Week4Week5の記事を読んで、より深く理解したいと思った人におすすめです。



Kaggleで勝つデータ分析の技術

データ分析について学び始めた人におすすめです。