Спасибо! Кстати, столбец с единицами проще вставлять сразу в массив numpy: np.insert(x_train, 0, 1.0, axis=1). К тому же на 0м индексе получается логичнее: w=[w0, w1, w2]
Сергей, у вас реализован алгоритм SDG с возвращением: то есть у вас индекс k может повторяться, так как он генерируется на каждой итерации k = np.random.randint(0, n_train - 1), что не совсем правильно. Нужно, чтобы SDG проходил эпоху (все объекты выборки) целиком (и тогда уже есть выбор делать shuffle или нет, в смысле проходить объекты в том же порядке или нет).
Да, в моей реализации именно так и это один из вариантов (тоже рабочий). Вообще вариаций SGD очень много, в том числе и когда наблюдения не повторяются.
Очень интересный урок. написал коды к решению этой задачи как используя SGS, так и SAG, и так же попробовал классический градиентный спуск (использующий на каждой итерации градиенты от всех обьектов обучающей выборки, т.к. у нас их серавно мало). забавно но если запускать код много раз то в методах SGS и SAG, не редко возникают ситуации когда подобранные веса вектора W далеко не всегда оптимальны а иногда и совсем не оптимальны.... только при использовании всех градиентов из обучающей выборки на каждой итерации (использование истинного градиента) получается стабильно оптимальные веса вектора W и всегда получается оптимальное решение для данной задачи
Как в пункте 2) вычислить функционал качества, если вычисление функции потерь еще впереди, в пункте 5)? Чему здесь равна эта функция потерь? Как она высчитывается математически?
Интересно, почему при градиентом спуске не упоминается бинарный поиск? Это частный случай экспоненциального, плюс вычислительно на порядок менее затратный.
У нас в прямой два подбираемых параметра k и b. Параметр k = -w1/w2, а b = -w0. Чтобы мы могли подбирать и параметр w0 добавляем в признаковое пространство эту 1 - третий признак [w1, w2, w0]
Сергей, Будет ли лучше использовать в качестве функции потерь L функцию ошибок erf(-x) + 1. у неё скорость сходимости к асимптотам выше чем у сигмоиды с экспонентой в знаменателе. Как считаете? Что оптимальнее?
Насколько я понимаю скорость сходимости определяется начальным приближением (точкой), оптимизаторами градиентного алгоритма и везением. Конечно, сама функция потерь тоже имеет значение, но это лишь один из компонентов для достижения решения. Если бы была какая-либо лучшая функция потерь, то ее бы и использовали всегда и везде ))
Чтобы быстрее изучить плейлист приходится жертвовать кодом (только смотрю на него, не пишу вручную). Очень интересно, спасибо!
О, немногие добрались.) Воистину сложная тема, но ты очень хорошо объясняешь.)
Спасибо! Кстати, столбец с единицами проще вставлять сразу в массив numpy: np.insert(x_train, 0, 1.0, axis=1).
К тому же на 0м индексе получается логичнее: w=[w0, w1, w2]
Сергей, у вас реализован алгоритм SDG с возвращением: то есть у вас индекс k может повторяться, так как он генерируется на каждой итерации k = np.random.randint(0, n_train - 1), что не совсем правильно. Нужно, чтобы SDG проходил эпоху (все объекты выборки) целиком (и тогда уже есть выбор делать shuffle или нет, в смысле проходить объекты в том же порядке или нет).
Да, в моей реализации именно так и это один из вариантов (тоже рабочий). Вообще вариаций SGD очень много, в том числе и когда наблюдения не повторяются.
Очень интересный урок. написал коды к решению этой задачи как используя SGS, так и SAG, и так же попробовал классический градиентный спуск (использующий на каждой итерации градиенты от всех обьектов обучающей выборки, т.к. у нас их серавно мало). забавно но если запускать код много раз то в методах SGS и SAG, не редко возникают ситуации когда подобранные веса вектора W далеко не всегда оптимальны а иногда и совсем не оптимальны.... только при использовании всех градиентов из обучающей выборки на каждой итерации (использование истинного градиента) получается стабильно оптимальные веса вектора W и всегда получается оптимальное решение для данной задачи
Как в пункте 2) вычислить функционал качества, если вычисление функции потерь еще впереди, в пункте 5)?
Чему здесь равна эта функция потерь? Как она высчитывается математически?
Интересно, почему при градиентом спуске не упоминается бинарный поиск? Это частный случай экспоненциального, плюс вычислительно на порядок менее затратный.
слишком уж частный случай
Сергей, прежде все - спасибо! Возник вопрос - зачем вы ввели третий константный признак(+1)? Чтобы получить в общем виде ур-ие a(x) = kx+b?
У нас в прямой два подбираемых параметра k и b. Параметр k = -w1/w2, а b = -w0. Чтобы мы могли подбирать и параметр w0 добавляем в признаковое пространство эту 1 - третий признак [w1, w2, w0]
Сергей, Будет ли лучше использовать в качестве функции потерь L функцию ошибок erf(-x) + 1. у неё скорость сходимости к асимптотам выше чем у сигмоиды с экспонентой в знаменателе. Как считаете? Что оптимальнее?
Насколько я понимаю скорость сходимости определяется начальным приближением (точкой), оптимизаторами градиентного алгоритма и везением. Конечно, сама функция потерь тоже имеет значение, но это лишь один из компонентов для достижения решения. Если бы была какая-либо лучшая функция потерь, то ее бы и использовали всегда и везде ))
Сергей, в заголовке есть ошибка в слове "бинрной"
Спасибо! )
Поправить надпись Бинарный