バッチ勾配降下法の実装

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、バッチ勾配降下法で X、y を学習し傾きと切片を予測してください.
また今回は、学習率を 0.1 として訓練してください.
(変数 eta、 gradients はそれぞれ学習率と勾配ベクトルを表しています.)

import numpy as np

np.random.seed(0)
X = 2 * np.random.rand(100,1)
y = 4 + 3 * X + np.random.rand(100,1)

# Q1:X の各インスタンスに x0 = 1 を加え、変数 X_b に代入してください.
X_b = ##########

eta = 0.1
iterations = 1000
m = len(X_b)
theta = np.random.randn(2,1)

for iteration in range(iterations):
#Q2:勾配を計算し変数 gradients に代入してください.
gradients = ##########
#Q3:変数 gradients を用いてモデルパラメータを更新してください.
theta = ##########

print(theta)

[Q1 の選択肢]
1. np.concat([np.ones((100,1), X])
2. np.c_([X, np.ones((100,1)])
3. np.c_([np.ones((100,1), X])

[Q2 の選択肢]
1. 2 * X_b.T.dot(X_b.dot(theta) – y)
2. 2/m * X_b.T.dot(X_b.dot(theta) – y)
3. 2/m * X_b.dot(X_b.dot(theta) – y)

[Q3 の選択肢]
1. theta – eta * gradients
2. eta – (theta + gradients)
3. (theta + eta) – gradients

Leave a comment

Your email address will not be published. Required fields are marked *