カスタム損失関数を使ったニューラルネットワークの学習
先ほど作成したカスタム損失関数を使ってみましょう。この関数を使うことで、モデルの挙動を問題に合わせて調整できます。具体的には、価格の変動方向を少なくとも正しく予測できるよう、モデルに学習を促します。必要な作業は、.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()