単層ニューラルネットワーク
ニューラルネットワークの使い方に慣れるために、まずは関数の簡単な「近似」から始めましょう。
入力 x と出力 y の対応関係を近似するニューラルネットワークを学習させます。両者は平方根関数、すなわち \(y = \sqrt{x}\) で関係づけられます。
入力ベクトル x は用意されています。まずは Numpy の sqrt() 関数で x の平方根を計算し、出力系列 y を作成します。次に、シンプルなニューラルネットワークを作成し、x 系列で学習させます。
学習後、y 系列とニューラルネットワークの出力を両方プロットし、平方根関数をどの程度うまく近似できているかを確認します。
Keras ライブラリの Sequential と Dense もワークスペースで利用できます。
この演習はコースの一部です
Pythonで学ぶ定量的リスク管理
演習の手順
- Numpy の
sqrt()関数を使って学習用の出力値を作成します。 - 隠れ層16ニューロン、入力1つ、出力1つのニューラルネットワークを作成します。
- ニューラルネットワークを学習用データでコンパイルしてから 100 エポックで学習させます。
- 学習用の値(青)と、ニューラルネットワークの予測値をプロットして比較します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create the training values from the square root function
y = np.____(x)
# Create the neural network
model = Sequential()
model.____(Dense(16, input_dim=1, activation='relu'))
model.____(____(1))
# Train the network
model.____(loss='mean_squared_error', optimizer='rmsprop')
model.____(x, y, epochs=100)
## Plot the resulting approximation and the training values
plt.plot(x, y, x, model.____(x))
plt.show()