Я пытаюсь реализовать градиентный спуск по набору данных. Хотя я все пробовал, я не мог заставить его работать. Итак, я создал тестовый пример. Я пытаюсь использовать свой код на случайных данных и пытаюсь отлаживать.Градиентный спуск со случайным внедрением ввода
Более конкретно, что я делаю, я генерирую случайные векторы между 0-1 и случайными метками для этих векторов. И попробуйте переустановить учебные данные.
Однако, мой вектор веса становится все больше и больше на каждой итерации. И тогда у меня есть бесконечности. Итак, я ничего не узнаю. Вот мой код:
import numpy as np
import random
def getRandomVector(n):
return np.random.uniform(0,1,n)
def getVectors(m, n):
return [getRandomVector(n) for i in range(n)]
def getLabels(n):
return [random.choice([-1,1]) for i in range(n)]
def GDLearn(vectors, labels):
maxIterations = 100
stepSize = 0.01
w = np.zeros(len(vectors[0])+1)
for i in range(maxIterations):
deltaw = np.zeros(len(vectors[0])+1)
for i in range(len(vectors)):
temp = np.append(vectors[i], -1)
deltaw += (labels[i] - np.dot(w, temp)) * temp
w = w + (stepSize * (-1 * deltaw))
return w
vectors = getVectors(100, 30)
labels = getLabels(100)
w = GDLearn(vectors, labels)
print w
Я использую LMS для функции потерь. Таким образом, во всех итераций, мое обновление заключается в следующем,
где ш^я является весовым Ith и R является размер шага и Е (ш^я) является функцией потерь.
Вот моя функция потери. (LMS)
и вот как я образовавшаяся функцию потерь,
,
Теперь мои вопросы:
- Должен ли я рассчитывать на хорошие результаты в этот случайный сценарий с использованием Gradient Descent? (Каковы теоретические рамки?)
- Если да, то какова моя ошибка в моей реализации?
PS: Я пробовал несколько других параметров maxIterations
и stepSize
. Все еще не работает. PS2: Это лучший способ задать вопрос здесь. Извините, если вопрос слишком конкретный. Но это сошло с ума. Я действительно хочу изучить проблему.
В вашем коде есть явные ошибки. В ближайшее время я отвечу. – greeness
У меня где-то отсутствовал минус. Проблема решена. В любом случае спасибо – Sait