Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:パーセプトロンの学習 | ニューラルネットワークをゼロから構築
Pythonによるニューラルネットワーク入門
セクション 2.  10
single

single

bookチャレンジ:パーセプトロンの学習

メニューを表示するにはスワイプしてください

パーセプトロンのトレーニングを進める前に、以前説明したバイナリクロスエントロピー損失関数が使用されていることに注意。バックプロパゲーションを実装する前の最後の重要な概念は、この損失関数の出力活性化に関する導関数の公式。以下に損失関数とその導関数の公式を示す:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

ここで an=y^a^n = \hat{y}

パーセプトロンが正しくトレーニングされているかを確認するために、fit()メソッドは各エポックで平均損失も出力する。この値は、そのエポック内のすべてのトレーニングデータに対する損失の平均で計算される:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

最後に、勾配を計算するための公式は以下の通り:

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

サンプルの訓練データ(X_train)および対応するラベル(y_train)は、NumPy配列としてutils.pyファイルに保存されています。さらに、活性化関数のインスタンスも同ファイル内で定義されています:

relu = ReLU()
sigmoid = Sigmoid()
タスク

スワイプしてコーディングを開始

多層パーセプトロンの学習プロセスを完了することが目標です。バックプロパゲーションを実装し、モデルパラメータを更新してください。

以下の手順に従ってください:

  1. Layerクラスの**backward()メソッドを実装**:
  • 次の勾配を計算します:
  • dz: 活性化関数の導関数を用いて、損失の事前活性化値に関する導関数;
  • d_weights: 損失の重みに関する勾配で、dzと転置した入力ベクトルのドット積として計算;
  • d_biases: 損失のバイアスに関する勾配で、dzと等しい;
  • da_prev: 前の層の活性化に関する損失の勾配で、転置した重み行列とdzの積として得られる。
  • 学習率を用いて重みとバイアスを更新します。
  1. fit()クラスの**Perceptronメソッドを完成**:
  • forward()メソッドを呼び出してモデル出力を計算;
  • クロスエントロピー式を用いて損失を計算;
  • danda^n(出力活性化に関する損失の導関数)を計算;
  • 各層のbackward()メソッドを呼び出し、逆方向にループしてバックプロパゲーションを実行。
  1. 学習挙動の確認:
  • すべて正しく実装されていれば、学習率0.01を使用した場合、損失は各エポックごとに着実に減少するはずです。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  10
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt