Python: Как работает код для Stochasti c Gradient Descent? - PullRequest
0 голосов
/ 01 августа 2020
n_epochs = 50
t0, t1 = 5, 50 # learning schedule hyperparameters
def learning_schedule(t):
return t0 / (t + t1)
theta = np.random.randn(2,1) # random initialization

for epoch in range(n_epochs):
   for i in range(m):
      random_index = np.random.randint(m)
      xi = X_b[random_index:random_index+1]
      yi = y[random_index:random_index+1]
      gradients = 2 * xi.T.dot(xi.dot(theta) - yi)
      eta = learning_schedule(epoch * m + i)
      theta = theta - eta * gradients

По соглашению мы выполняем раунды по m итераций; каждый раунд называется эпохой. В то время как код пакетного градиентного спуска повторяется 1000 раз через весь обучающий набор, этот код проходит через обучающий набор только 50 раз и дает довольно хорошее решение. установить всего 50 раз. Как это возможно?

Разве это не тот случай, когда для каждой эпохи, 1-> 50, i идет от 1-> 100, а данные обучения повторяются 50 * 100 = 5000 раз?

1 Ответ

0 голосов
/ 01 августа 2020

Он будет повторять все точки данных 50 раз, например, если точка данных = 100 и эпоха = 50, тогда ответ будет 50 * 100 = 5000

Если его Stochasti c градиентный спуск, то общая итерация составит 5000

Если это простой градиентный спуск, то общая итерация будет 50

, если вы хотите узнать о различных методах градиентного спуска, посетите ЗДЕСЬ

...