深層学習

機械学習 ML machine Learning

深層学習 DL Deep Learning

深層ニューラルネットワーク DNN Deep Neural Network


ニューラルネットワーク(Neural Network)による入力値の分類の仕組みについて見ていく。


参照 https://hinaser.github.io/Machine-Learning/ TensorFlow Playgroundの仕組み

1層で分類するNN


目的:  X1とX2の値のペアを入力する
入力値を +(青) と ー(橙) に 分類 する

tensorflow playground

X1 を 横方向

X2 を 縦方向

の XY座標と考える

+の点(青) と ーの点(橙) を X1とX2を用いて分類するモデル(NNのパラメータ)を学習を通してフィードバックで調整する。


学習開始前(初期状態のモデル)

X1とX2の値にほとんど影響されずに全体的に やや+(薄い青) と分類(背景の色を観察してみよう)

学習終了後


X1とX2が両方  なら 

X1とX2が両方  なら 


下図で モデルのパラメータは2個あり、青(+)の2本の線で表現されている

パラメータの符号

+ 入力値をそのまま反映
ー 入力値を+ー逆転して反映

パラメータの大きさ

1付近 強く反映

0.5 やや反映

0付近 ほどんど反映しない

入力値X1とX2の特徴を変えて+とーの性質を変えてみる。


X1^2 横方向両端が+ 中央は 0

X2^2 縦方向両端が+ 中央は 0


学習前

横方向両端が+ 上下方向の両端がー

tensorflow playground

学習後

X1^2 と X2^2 の両方が 0 なら +

X1^2 と X2^2 の両方が + なら ー

つまり中心付近が + 周辺が ー。

ここでパラメータ(2本線)が橙のーであることに注意する。

つまりX1とX2で+と評価されない部分が逆転して+として評価するように学習できた

1層だけのNNの問題点

+ と ー の領域がそれぞれ2か所に分かれている場合、うまく分類できない。

tensorflow playground

一部分だけしか分類できない。右下のー部分を間違って+と分類している。学習できない。

入力層と出力層の2層のNNによる分類

入力層と出力層を用意して、複数の入力層の合成により分類する

tensorflow playground

うまく分類できた場合

分類に失敗した場合

入力層のニューロンを増加すると複雑なパターンに対応できる。以下の図では入力層は8個のニューロン。

tensorflow playground

入力値を2つだけにして、XY座標だけを入力として与える。

学習前の段階でヒントを出さない。(入力の特徴として中央と端に着目するのを止める)

ニューラルネットワークが学習の過程で見つけた特徴だけを使って分類する。

tensorflow playground

多数の直線を組み合わせて分類しようとしてもうまくいかない

入力層 隠れ層 出力層で分類するNN

隠れ層(中間層)を追加する。

直線でパターンを作成して、さらにそのパターンを組み合わせて分類に利用できるようになる。

tensorflow playground

3019エポック(学習回数)の結果

中間層を多層化する。

これが、深層学習、ディープラーニング、ディープニューラルネットワーク、DNNと呼ばれる仕組み。

以下の様な学習済みのDNNを「モデル」という。

tensorflow playground

1890エポック