始める無料で始める

カスタム損失関数を使ったニューラルネットワークの学習

先ほど作成したカスタム損失関数を使ってみましょう。この関数を使うことで、モデルの挙動を問題に合わせて調整できます。具体的には、価格の変動方向を少なくとも正しく予測できるよう、モデルに学習を促します。必要な作業は、.compile() 関数の loss 引数に、作成した関数名 sign_penalty を指定するだけです。学習損失が収束しているかどうかも確認しましょう。

この演習はコースの一部です

Python による金融のための Machine Learning

コースを見る

演習の手順

  • ニューラルネットワークの最初の層の input_dim を、scaled_train_features の列数(.shape[1] プロパティを使用)に設定します。
  • カスタム損失関数 sign_penalty を使って model_2.compile() します。
  • 学習の history から損失をプロットします。損失の値は history.history['loss'] に格納されています。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create the model
model_2 = Sequential()
model_2.add(Dense(100, input_dim=____, activation='relu'))
model_2.add(Dense(20, activation='relu'))
model_2.add(Dense(1, activation='linear'))

# Fit the model with our custom 'sign_penalty' loss function
model_2.compile(optimizer='adam', loss=____)
history = model_2.fit(scaled_train_features, train_targets, epochs=25)
plt.plot(____)
plt.title('loss:' + str(round(history.history['loss'][-1], 6)))
plt.show()
コードを編集して実行