2024 年 8 月に、機械学習集中講座の改良された新しいバージョンがリリースされます。今後の情報にご注目ください。
最初のニューラル ネットワーク
この演習では、最初の小さなニューラル ネットをトレーニングします。ニューラル ネットにより、明示的な特徴クロスを使用せずに非線形モデルを学習できるようになります。
タスク 1: 指定されたモデルは、2 つの入力特徴を 1 つのニューロンに結合します。このモデルは非線形性を学習しますか?それを実行して、推測を確認します。
タスク 2: 隠しレイヤのニューロン数を 1 から 2 に増やし、さらに ReLU などの線形アクティベーションから非線形アクティベーションに変更してみてください。非線形性を学習できるモデルを作成できますか?データを効率的にモデル化できるか
タスク 3: ReLU などの非線形活性化を使用して、隠しレイヤのニューロン数を 2 から 3 に増やす。データを効果的にモデル化できるか実行によってモデルの品質はどのように異なるか
タスク 4: 隠しレイヤまたはレイヤごとのニューロンを追加または削除して、テストを続けます。学習率、正則化、その他の学習設定も変更可能です。テストの損失を 0.177 以下にできるニューロンとレイヤの最小数を指定します。
モデルのサイズを大きくすると、フィットは向上しますか?また、その収束速度はどのくらいですか?
これによって、良いモデルに収束する頻度は変わりますか?たとえば、次のアーキテクチャを試してください。
- 3 つのニューロンが隠れている最初のレイヤ。
- 3 つのニューロンが存在する 2 つ目の隠れ層。
- 2 つのニューロンからなる 3 つ目の隠れ層。
(解答はエクササイズのすぐ下に表示されます)。
タスク 1 の回答については、プラスアイコンをクリックします。
アクティベーションは線形に設定されているため、このモデルは非線形を学習できません。損失は非常に高く、モデルがデータに適さないと考えます。
タスク 2 の回答については、プラスアイコンをクリックします。
非線形アクティベーション関数では、非線形モデルを学習できます。ただし、2 つのニューロンを持つ 1 つの隠れ層が、データセットのすべての非線形性を反映できるわけではなく、ノイズがなくても、損失は大きくなります。つまり、データの適合不足です。これらの演習は非決定論的であるため、効果的な実行を学習できない実行もあれば、うまく機能する実行もあります。最適なモデルは、期待どおりの形状ではない場合があります。
タスク 3 の回答を開くには、プラスアイコンをクリックします。
この運動は、プレイグラウンドの非決定性を浮き彫りにしています。ノイズのない状態でデータセットをモデル化するには、3 つのニューロンが隠れた単一のレイヤで十分ですが、すべての実行が適切にモデルに収束するとは限りません。
XOR 関数は 3 つのハーフプレーン(ReLU の有効化)の組み合わせとして表現できるため、3 つのニューロンで十分です。これは、個々のニューロンの出力を示すニューロン画像を見るとわかります。3 つのニューロンと ReLU 活性化を備えた良好なモデルでは、X1 が正の(または負である、符号が切り替えられる可能性がある)検出する画像 1 つと、ほぼ水平な線の 1 つの画像、X2 の符号を検出する 1 つの画像と、対角線を含む 1 つの画像が存在し、その相互作用を検出します。
ただし、すべての実行が適切なモデルに収束するとは限りません。一部の実行では、2 つのニューロンがあるモデルよりも優れた処理が行われません。これらのケースでは、ニューロンの重複が見られます。
タスク 4 の回答を開くには、プラスアイコンをクリックします。
3 つのニューロンを持つ 1 つの隠れ層がデータをモデル化できますが、冗長性はありません。そのため、多くの実行で実質的にニューロンが失われ、適切なモデルが学習されません。ニューロンが 4 つを超える 1 つの層は冗長性が高く、適切なモデルに収束する可能性が高くなります。
前述のように、ニューロンが 2 つしかない 1 つの隠しレイヤでは、データを適切にモデル化できません。試してみると、出力レイヤ内のすべてのアイテムは、これら 2 つのノードの線からなる形状のみであることがわかります。この場合、より深いネットワークでは、最初の隠れ層のみよりもデータセットをモデル化できます。2 番目のレイヤの個々のニューロンは、最初のレイヤのニューロンを組み合わせることで、右上象限などのより複雑な形状をモデル化できます。2 番目の隠れ層を追加すれば、1 番目の隠しレイヤ単独の場合よりもデータセットをより適切にモデル化できますが、1 番目のレイヤにノードを追加して、2 番目のレイヤが図形を構成するキットの一部にするほうが賢明です。
ただし、最初の隠しレイヤに 1 つのニューロンがあるモデルは、深度に関係なく適切なモデルを学習できません。これは、最初のレイヤの出力が 1 つの次元(通常は対角線)に沿ってのみ変化し、このデータセットをうまくモデル化できないためです。後のレイヤでは、これを補正できません。複雑さは問題ではありません。入力データ内の情報が失われ、回復できません。
このような小さな問題のために、小さなネットワークではなく、多数のニューロンが入ったレイヤを複数用意したらどうでしょうか。すでに説明したように、最初のレイヤでは、さまざまな線の勾配を試すことができます。2 番目のレイヤでは、これらをさまざまな形状に蓄積できます。後続のレイヤでは、多数のシェイプがダウンします。
モデルでは、さまざまな隠れたニューロンを通して非常に多くの異なる形状を検討できるため、モデルがトレーニング セットのノイズに簡単に過学習を開始するのに十分なスペースが生まれ、これらの複雑な形状が一般化されたグラウンド トゥルースではなく、トレーニング データの形式と一致することを可能にしています。この例の場合、大規模なモデルでは、正確なデータポイントと一致するように境界が複雑になる場合があります。極端なケースでは、大規模なモデルは個々のノイズの周囲にある島を学習し、それをデータの記憶と呼びます。モデルのサイズを大きくすると、問題を解決するのに十分な数のニューロンが入った単純なモデルよりも、実際にパフォーマンスが悪いことがわかるようになります。
ニューラル ネットの初期化
この演習では、再度 XOR データを使用しますが、ニューラル ネットのトレーニングの再現性と初期化の重要性を確認します。
タスク 1: モデルを 4 ~ 5 回実行します。各トライアルの前に [ネットワークをリセット] ボタンを押して、新しいランダム初期化を取得します。([ネットワークをリセット] ボタンは、再生ボタンの左にある円形のリセット矢印です)。収束を確認するには、各トライアルを少なくとも 500 ステップ実行します。各モデル出力はどの形状に収束しますか?非凸最適化における初期化の役割について、どのように説明しますか。
タスク 2: レイヤといくつかのノードを追加して、モデルをもう少し複雑にしてみます。タスク 1 のトライアルを繰り返します。これにより、結果に安定性が追加されますか。
(解答はエクササイズのすぐ下に表示されます)。
タスク 1 の回答については、プラスアイコンをクリックします。
学習されたモデルは、実行ごとにさまざまな形状でした。収束テストの損失は、低いものから高いものへとほぼ 2 倍に変化しました。
タスク 2 の回答については、プラスアイコンをクリックします。
レイヤと追加ノードを追加すると、再現性のある結果が得られました。各実行で、結果のモデルはほぼ同じように見えました。さらに、収束テストの損失は実行間の分散が小さくなりました。
ニューラル ネット スパイラル
このデータセットはノイズの多いスパイラルです。当然、ここでは線形モデルが失敗するでしょうが、手動で定義する特徴クロスは構築が難しい場合があります。
タスク 1: X1 と X2 のみを使用して、最適なモデルをトレーニングします。レイヤやニューロンを追加または削除したり、学習率、正則化率、バッチサイズなどの学習設定を変更したりできます。最も良くないテスト損失はどれか?モデル出力サーフェスはどのくらいスムーズですか。
タスク 2: ニューラル ネットを使用した場合でも、最良のパフォーマンスを実現するために、なんらかの特徴量エンジニアリングが必要になることがよくあります。プロダクトの他の特徴、または sin(X1) と sin(X2) などの変換を追加してみてください。より良いモデルを入手できますか?モデル出力のサーフェスはよりスムーズですか?
(解答はエクササイズのすぐ下に表示されます)。
プラスアイコンをクリックすると、回答が表示されます。
次の動画では、Playground でハイパーパラメータを選択し、テストの損失を最小限に抑えるスパイラル データのモデルをトレーニングする方法を紹介します。