神経ネットワークの基本構造#
神経細胞(シンプルニューロン)#
(重み):重み
:入力値
:バイアス
バイアスは、線形方程式の切片に似ています。
主な役割:
活性化関数の閾値の調整:バイアス は、活性化関数の閾値の調整と見なすことができます。バイアスのないニューロンは、出力が入力の重み付け和に完全に依存します。入力の重み付け和がゼロの場合、バイアスのないニューロンは常に同じ値を出力します。しかし、バイアス を追加すると、入力の重み付け和がゼロでも、ニューロンは異なる値を出力することができます。これにより、モデルの柔軟性が向上します。
モデルの表現能力の向上:バイアス項を追加することで、ニューラルネットワークはより多くのデータ分布のタイプに適合することができます。バイアス項により、ニューラルネットワークはデータの複雑な特徴をより良く学習することができます。これにより、モデルの表現能力と汎化能力が向上します。
モデルの過小適合を回避:バイアス項は、モデルが過小適合の問題を回避するのに役立ちます。過小適合は、モデルがトレーニングデータの潜在的なパターンをキャプチャできない場合に発生します。バイアス項により、ニューロンは有意な入力信号がない状況でも活性化することができ、トレーニングデータによりよく適合するのに役立ちます。
:活性化関数
注意:
ここでの出力はスカラーであり、はドット積です。
式は次のようにも書くことができます。
単層ニューラルネットワーク(Single layer neural network)#
単層ニューロンでは、複数のニューロンを並列計算することができます。
並列計算方法については注意を参照してください。
ここでは、各ニューロンはスカラーを出力できます。
注意:
ここでの並列計算方法は、重み をベクトルから行列に変え、バイアス をスカラーからベクトルに変えたものです。注意してくださいが、これは私たちが理解するマルチスレッドによる並列計算ではありません。
ここでの活性化関数の計算は、入力ベクトルと重み行列の積にバイアスを加えた後に行われます。
重み付け和の計算:
- まず、入力ベクトル と重み行列 の積を取り、重み付け和ベクトルを得ます:
ここで、 はベクトルであり、各要素はニューロンの重み付け和に対応します。 - 次に、バイアスベクトル を重み付け和ベクトルに加えます:
活性化関数の計算:
- 活性化関数 を重み付け和ベクトル の各要素に適用し、出力ベクトル を得ます:
- 具体的には、ニューロンが 個ある場合、 と はともに長さ のベクトルです。活性化関数 は、 の各要素 に要素ごとに適用され、対応する出力 を得ます:
多層ニューラルネットワーク(Multilayer neural network)#
類似した層を重ねることで、多層ニューラルネットワークを作ることができます。
順方向計算:入力から始まり、各層の結果を順番に計算する
入力層(input layer)-> 隠れ層(hidden layer)-> 出力層(output layer)
隠れ層:入力の前に追加される多層ネットワーク
注意:隠れ層の出力は通常、で表されます。ここでの出力はベクトルであり、主に線形変換と活性化関数によって得られます。
重要!!!:
活性化関数の役割:
- 非線形性の導入:活性化関数は線形モデルを非線形モデルに変換します。活性化関数のないニューラルネットワークは、本質的には線形変換の重ね合わせであり、いくつの層があっても、一層の線形変換と等価です。非線形活性化関数により、多層ニューラルネットワークが複雑な非線形関係を学習および表現できるようになります。
ニューラルネットワークでは、線形演算のみが存在する場合、多層のニューラルネットワークは単層のニューラルネットワークに変換できます。
- ネットワークの表現能力の向上:非線形活性化関数により、ニューラルネットワークは任意の複雑な関数に適合できるようになります。これにより、ネットワークの表現能力と汎化能力が大幅に向上し、さまざまなデータセットとタスクを処理できるようになります。
- 勾配降下法の収束の支援:一部の活性化関数(ReLU など)は、勾配消失問題を軽減することができ、勾配降下法の収束をより速くするのに役立ちます。活性化関数の選択は、モデルのトレーニング効率と効果に影響を与えることができます。
活性化関数(activation function)#
シグモイド関数:入力を負の無限大から正の無限大に変換し、0 から 1に変換します。
ハイパボリックタンジェント関数:入力を負の無限大から正の無限大に変換し、-1 から 1に変換します。
注意:ハイパボリックタンジェント関数の入力が 0 の場合、出力も 0 です。
ReLU 関数:正の数の入力に対しては、出力は元の数のままであり、負の数の入力に対しては、出力は0です。
ソフトマックス関数:多クラス分類問題の出力層に使用され、入力を確率分布に変換し、出力値は **(0, 1)** の範囲にあり、合計は 1 です。
式:
出力層(output layer)#
隠れ層といくつかの共通点がありますが、ここではモデルがどのようなデータを出力するかによります。
線形出力:隠れ層の後に線形層を追加し、値を出力します。主に回帰問題に使用されます。
シグモイド関数:活性化関数シグモイド関数と似ていますが、まず通常の線形層で値 を得てから、この値 に対してシグモイド活性化関数を適用して出力を 0 から 1 に圧縮します。主に二値分類問題を解決するために使用され、出力 は、モデルが現在の入力が特定のクラスに属する確率であることを示すために使用され、 は別のクラスに属する確率を示します。
ソフトマックス関数:主に多クラス分類問題(クラスの数 >2)に使用されます。最後の隠れ層に線形層を適用して出力 を得た後、この値 にソフトマックス活性化関数を適用し、異なるクラスの確率分布を得ます。モデルが特定のクラスに属する確率を出力します。