非線形性を学習するニューラル ネットワークを構築するには、次の一般的なモデル構造から始めます: $y' = b + w_1x_1 + w_2x_2 + w_3x_3$ という形式の線形モデル。
この方程式は以下のように視覚化できます。ここで、$x_1$、$x_2$、$x_3$ は 3 つの入力ノード (青色) であり、$y'$ は出力ノード (緑色) です。
練習問題1
上記のモデルでは、重みとバイアスの値はランダムに初期化されています。以下のタスクを実行してインターフェースに慣れ、線形モデルを詳しく調べてください。 「活性化関数」ドロップダウンは今のところ無視して構いません。このトピックについては、このモジュールの後半で説明します。
ネットワークの上にある再生 (▶️) ボタンをクリックすると、入力値 $x_1 = 1.00$、$x_2 = 2.00$、$x_3 = 3.00$ に対する出力ノードの値が計算されます。
入力レイヤーの2番目のノードをクリックし、値を2.00から2.50に増やします。出力ノードの値が変化していることに注意してください。出力ノード(緑色)を選択し、 「計算」パネルで出力値がどのように計算されたかを確認してください。
出力ノード(緑色)をクリックして、重み($w_1$、$w_2$、$w_3$)とバイアス($b$)パラメータの値を確認します。$w_3$の重みの値を減らします(繰り返しますが、出力ノードの値と以下の計算が変更されていることに注意してください)。次に、バイアスの値を増やします。これらの変更がモデルの出力にどのような影響を与えたかを確認します。
ネットワークにレイヤーを追加する
演習1でネットワークの重みとバイアスの値を調整しても、入力と出力の間の全体的な数学的関係は変化しないことに注意してください。モデルは依然として線形モデルです。
しかし、入力層と出力層の間にネットワークに別の層を追加するとどうなるでしょうか? ニューラル ネットワークの用語では、入力層と出力層の間にある追加の層は隠れ層と呼ばれ、これらの層内のノードはニューロンと呼ばれます。
隠れ層の各ニューロンの値は、線形モデルの出力と同じ方法で計算されます。つまり、各入力(前のネットワーク層のニューロン)と固有の重みパラメータの積の合計とバイアスが計算されます。同様に、次の層(ここでは出力層)のニューロンの値も、隠れ層のニューロンの値を入力として計算されます。
この新しい隠れ層により、モデルは別のパラメータセットを用いて入力データを再結合できるようになります。これは、モデルが非線形関係を学習するのに役立ちますか?
練習問題2
モデルに 4 つのニューロンを含む隠し層を追加しました。
ネットワークの上にある再生 (▶️) ボタンをクリックすると、入力値 $x_1 = 1.00$、$x_2 = 2.00$、$x_3 = 3.00$ に対する 4 つの隠し層ノードと出力ノードの値が計算されます。
次に、モデルを調べ、それを使用して次の質問に答えます。
モデル パラメータを変更して、隠し層ノードの値と出力値への影響を観察します (これらの値がどのように計算されたかを確認するには、下の計算パネルを確認してください)。
このモデルは非線形性を学習できますか?
隠し層の各ノードをクリックして以下の計算を確認すると、すべてが線形 (乗算と加算の演算で構成) であることがわかります。
出力ノードをクリックして下の計算を確認すると、この計算も線形であることがわかります。線形計算の出力に対して実行される線形計算も線形であるため、このモデルは非線形性を学習できません。