セクション 2. 章 10
single
チャレンジ:パーセプトロンの学習
メニューを表示するにはスワイプしてください
パーセプトロンのトレーニングを進める前に、以前説明したバイナリクロスエントロピー損失関数が使用されていることに注意。バックプロパゲーションを実装する前の最後の重要な概念は、この損失関数の出力活性化に関する導関数の公式。以下に損失関数とその導関数の公式を示す:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yここで an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))最後に、勾配を計算するための公式は以下の通り:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlサンプルの訓練データ(X_train)および対応するラベル(y_train)は、NumPy配列としてutils.pyファイルに保存されています。さらに、活性化関数のインスタンスも同ファイル内で定義されています:
relu = ReLU()
sigmoid = Sigmoid()
タスク
スワイプしてコーディングを開始
多層パーセプトロンの学習プロセスを完了することが目標です。バックプロパゲーションを実装し、モデルパラメータを更新してください。
以下の手順に従ってください:
Layerクラスの**backward()メソッドを実装**:
- 次の勾配を計算します:
dz: 活性化関数の導関数を用いて、損失の事前活性化値に関する導関数;d_weights: 損失の重みに関する勾配で、dzと転置した入力ベクトルのドット積として計算;d_biases: 損失のバイアスに関する勾配で、dzと等しい;da_prev: 前の層の活性化に関する損失の勾配で、転置した重み行列とdzの積として得られる。- 学習率を用いて重みとバイアスを更新します。
fit()クラスの**Perceptronメソッドを完成**:
forward()メソッドを呼び出してモデル出力を計算;- クロスエントロピー式を用いて損失を計算;
- dan(出力活性化に関する損失の導関数)を計算;
- 各層の
backward()メソッドを呼び出し、逆方向にループしてバックプロパゲーションを実行。
- 学習挙動の確認:
- すべて正しく実装されていれば、学習率
0.01を使用した場合、損失は各エポックごとに着実に減少するはずです。
解答
すべて明確でしたか?
フィードバックありがとうございます!
セクション 2. 章 10
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください