ニューラルネットワーク(neural network)とは



機械学習

分類(classification)

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

クラスタリング

強化学習

敵対的生成ネットワーク

公開日:2018/6/3 , 最終更新日:2019/11/17

前提知識
 ・分類問題とは
 ・パーセプトロン
 ・シグモイド関数 , ReLU関数 , Softmax
 ・行列の積
 ・勾配法


ニューラルネットワークとは、機械学習の分類問題等を解くために使われる手法の一つで、人間の脳内にある神経細胞であるニューロンとその繋がりを数理モデルで表現している事からその名前がついております。

これを表現すると以下の様になり、複数のパーセプトロンが繋がって構成されます。それぞれを入力層(Input layer)、中間層(隠れ層:hidden layer)、出力層(output layer)と分け、 入力された情報が中間層にて活性化関数を介すことによって複雑な計算を行います。活性化関数にはシグモイド関数ReLU関数など様々なものがありますが、ここではシグモイド関数を前提に説明します。

  

■行列で表現
パーセプトロンの計算は行列の積で表現できます。これは実際にプログラムを組む際には非常に有用となります。



■重みwの設定方法
分類問題を解くためには、重みwに最適な値に設定できるかどうかが重要な鍵となります。重みの設定方法は以下の流れとなります。

① トレーニングデータを用意し、トレーニングデータを真値としてパーセプトロンの計算結果が真値と一致するように、勾配法という手法を用いて重みを調整します。

  

② 中間層の重みを更新するには、中間層の誤差が必要となるので中間層の真値と出力値が必要になりますが、対象データが持っているのは最終出力の真値しかありません。そこで最終出力層の誤差から中間層の誤差を仮想的に求める方法が誤差逆伝播法になります。

   

■ニューラルネットワーク設計のポイント
ニューラルネットワークを設計するためのポイントとして以下があります。

 ① 中間層を何層にするか。ノードの数をいくつにするか。
 ② 活性化関数に何を使うか。

複雑な分類問題を解く(例えば人の顔を識別する)ためには中間層を幾層にも連ねる必要があり、これがディープラーニングと呼ばれます。 また、活性化関数にはシグモイド関数ではなく、ReLU関数とソフトマックス関数の組み合わせを用いるケースが多いようです。 これはシグモイド関数は値が1に収束するため微分値がほとんど変化せず、重みを更新しにくくなってしまいます。これを勾配の消失問題といいます。 ReLU関数ならば、微分値が常に一定の為そのような問題が発生しません。ただしReLUの出力値は1よりも大きくなってしまう場合があるので、最終的に1に正規化するためにソフトマックス関数を使います。

シグモイド関数は、exp関数を使っているので微分がしやすく(expの微分はexpである) 設計が容易という利点があり、ニューラルネットワークの導入には良いかと思います。

   

■ニューラルネットワークの実践
こちらでニューラルネットワークの例題として手書きの画像を認識させます。









サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



機械学習

分類(classification)

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

クラスタリング

強化学習

敵対的生成ネットワーク