ニューラル ネットワーク: インタラクティブな演習
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
以下のインタラクティブな演習では、ニューラルネットワークの内部構造をさらに深く探求します。まず、パラメータとハイパーパラメータの変化がネットワークの予測にどのような影響を与えるかを確認します。次に、学習した内容を用いて、ニューラルネットワークを学習し、非線形データに適合させます。
練習問題1
次のウィジェットは、次の構成でニューラル ネットワークを設定します。
-
0.00 0.00値を持つ3つのニューロン0.00持つ入力層 - 4つのニューロンを持つ隠れ層
- 1つのニューロンを持つ出力層
- すべての隠れ層ノードと出力ノードに適用されるReLU活性化関数
ネットワークの初期設定を確認し (注: まだ▶️または>|ボタンをクリックしないでください)、ウィジェットの下のタスクを完了します。
タスク1
ニューラルネットワークモデルへの3つの入力特徴の値はすべて0.00です。ネットワーク内の各ノードをクリックすると、初期化されたすべての値が表示されます。再生ボタン( ▶️ )を押す前に、次の質問に答えてください。
どのような出力値が生成されると思いますか: 正、負、それとも 0?
正の出力値
正の出力値を選択しました。以下の手順に従って入力データに対して推論を実行し、正しいかどうかを確認してください。
負の出力値
負の出力値を選択しました。以下の手順に従って入力データに対して推論を実行し、正しいかどうかを確認してください。
出力値0
出力値として 0 を選択しました。以下の手順に従って入力データに対して推論を実行し、正しいかどうかを確認してください。
ネットワーク上部の再生ボタン(▶️)をクリックして、すべての隠れ層と出力ノードの値がどのように表示されるかを確認してください。上記の回答は正しかったでしょうか?
説明はこちらをクリックしてください
得られる正確な出力値は、重みとバイアスパラメータがどのようにランダムに初期化されるかによって異なります。ただし、入力層の各ニューロンの値は0であるため、隠れ層ノードの値を計算するために使用される重みはすべて0になります。例えば、最初の隠れ層ノードの計算は次のようになります。
y = ReLU(w 11 * 0.00 + w 21 * 0.00 + w 31 * 0.00 + b)
y = ReLU(b)
したがって、各隠し層ノードの値はバイアス (b) の ReLU 値と等しくなります。これは、b が負の場合は 0 になり、b が 0 または正の場合は b 自体になります。
出力ノードの値は次のように計算されます。
y = ReLU(w 11 * x 11 + w 21 * x 21 + w 31 * x 31 + w 41 * x 41 + b)
タスク2
ニューラル ネットワークを変更する前に、次の質問に答えてください。
ニューラル ネットワークに最初の隠し層の後に別の隠し層を追加し、この新しい層に 3 つのノードを割り当て、すべての入力と重み/バイアス パラメータを同じままにした場合、他のどのノードの計算が影響を受けるでしょうか。
入力ノードを除くネットワーク内のすべてのノード
入力ノードを除くネットワーク内のすべてのノードを選択しました。以下の手順に従ってニューラルネットワークを更新し、正しいかどうかを確認してください。
最初の隠れ層のノードのみ
最初の隠れ層のノードだけを選択しました。以下の手順に従ってニューラルネットワークを更新し、正しいかどうかを確認してください。
出力ノードのみ
出力ノードのみを選択しました。以下の手順に従ってニューラルネットワークを更新し、正しいかどうかを確認してください。
次に、ニューラル ネットワークを変更して、次のように 3 つのノードを持つ新しい隠し層を追加します。
- テキスト1 の隠しレイヤーの左側にある+ボタンをクリックして、出力レイヤーの前に新しい隠しレイヤーを追加します。
- 新しい非表示レイヤーの上にある+ボタンを 2 回クリックして、レイヤーにさらに 2 つのノードを追加します。
上記の回答は正しいでしょうか?
説明はこちらをクリックしてください
出力ノードのみが変更されます。このニューラルネットワークの推論は「フィードフォワード」(計算が最初から最後まで進行する)であるため、ネットワークに新しい層を追加しても、新しい層の後のノードにのみ影響し、前のノードには影響しません。
タスク3
ネットワークグラフの最初の隠し層にある上から2番目のノードをクリックします。ネットワーク設定を変更する前に、次の質問に答えてください。
重み w 12 (最初の入力ノード x 1の下に表示) の値を変更すると、他のどのノードの計算がいくつかの入力値に対して影響を受ける可能性がありますか?
なし
なしを選択しました。以下の手順に従ってニューラルネットワークを更新し、正しいかどうかを確認してください。
最初の隠し層の 2 番目のノード、2 番目の隠し層のすべてのノード、および出力ノード。
最初の隠し層の2番目のノード、2番目の隠し層のすべてのノード、そして出力ノードを選択しました。以下の手順に従ってニューラルネットワークを更新し、正しいかどうかを確認してください。
最初の隠し層、2 番目の隠し層、および出力層のすべてのノード。
最初の隠れ層、2番目の隠れ層、そして出力層のすべてのノードを選択しました。以下の手順に従ってニューラルネットワークを更新し、正しいかどうかを確認してください。
次に、重み w 12 (最初の入力ノード x 1の下に表示)のテキストフィールドをクリックし、値を5.00に変更してEnterキーを押します。グラフの更新を確認します。
答えは正しかったでしょうか?答えを検証する際には注意してください。ノードの値が変更されていない場合、基礎となる計算が変更されていないことを意味しますか?
説明はこちらをクリックしてください
最初の隠れ層で影響を受けるノードは、2番目のノード(クリックしたノード)のみです。最初の隠れ層の他のノードの値の計算にはw 12 がパラメータとして含まれていないため、影響を受けません。2番目の隠れ層のすべてのノードは影響を受けます。これは、それらの計算が最初の隠れ層の2番目のノードの値に依存しているためです。同様に、出力ノードの値は、その計算が2番目の隠れ層のノードの値に依存しているため、影響を受けます。
重みの値を変更してもネットワーク内のノードの値が全く変化しなかったため、答えは「なし」だと思いましたか?ノードの値は変化しなくても、そのノードの基礎となる計算が変化する場合があることに注意してください(例えば、ReLU(0)とReLU(–5)はどちらも出力が0になります)。ノードの値だけを見て、ネットワークがどのように影響を受けたかを推測しないでください。計算結果も必ず確認してください。
練習問題2
カテゴリカルデータモジュールの特徴量クロス演習では、非線形データに適合させるための特徴量クロスを手動で構築しました。今回は、トレーニング中に非線形データへの適合方法を自動学習できるニューラルネットワークを構築できるかどうかを確認します。
あなたのタスク:下の図のオレンジ色の点と青い点を分離し、トレーニング データとテスト データの両方で 0.2 未満の損失を達成できるニューラル ネットワークを構成します。
説明書:
以下のインタラクティブ ウィジェットでは:
- 次の構成設定のいくつかを試して、ニューラル ネットワークのハイパーパラメータを変更します。
- ネットワーク ダイアグラムの[HIDDEN LAYERS]見出しの左側にある+ボタンと-ボタンをクリックして、非表示レイヤーを追加または削除します。
- 隠し層の列の上にある+ボタンと-ボタンをクリックして、隠し層にニューロンを追加または削除します。
- 図の上にある「学習率」ドロップダウンから新しい値を選択して、学習率を変更します。
- 図の上にある[アクティベーション]ドロップダウンから新しい値を選択して、アクティベーション関数を変更します。
- 指定されたパラメータを使用してニューラル ネットワーク モデルをトレーニングするには、図の上にある再生 (▶️) ボタンをクリックしてください。
- トレーニングの進行中にモデルがデータに適合する視覚化と、出力セクションのテスト損失とトレーニング損失の値を確認します。
- モデルがテストデータとトレーニングデータで損失を0.2未満に抑えられない場合は、「リセット」をクリックし、異なる設定で手順1~3を繰り返します。希望する結果が得られるまで、このプロセスを繰り返します。
解決策についてはここをクリックしてください
以下の方法で、テストとトレーニングの両方の損失を 0.2 未満に抑えることができました。
- 3 つのニューロンを含む 1 つの隠し層を追加します。
- 学習率0.01を選択します。
- ReLU の活性化関数の選択。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2026-01-30 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2026-01-30 UTC。"],[],[]]