Комментарии 11
задаём начальные случайные значения коэффициентам линейной регрессии
a = np.random.randn(1)
b = np.random.randn(1)
Никогда не понимал, ради чего. Это же выпуклая задача, не важно откуда мы стартуем, а работать с 0 в качестве инициализации проще. Зачем shuffle тоже не понятно
Ну и да, при наличии аналитического решения использовать GD как-то наивно
0
В данном случае функция выпуклая, но в общем случае у функции могло бы быть несколько локальных минимумов, поэтому в начале обычно и берут рандомы, чтобы не проваливаться стабильно в один и тот же локальный минимум, начиная с одних и тех же начальных условий.
А shuffle думаю тут нужен был на случай разбиения данных на train и test, которого в данном коде и нет %)
А shuffle думаю тут нужен был на случай разбиения данных на train и test, которого в данном коде и нет %)
0
Думается мне, что это был типа задел на еще одну статью про обучение нейронок. Тогда shuffle это для минибатчей, а случайная инициализация для того, чтобы сломать симметрию градиентов.
Прощупывать минимумы при помощи рандома конечно можно, но делают так редко ибо нет особых гарантий. Для мл, как мне кажется, проблема плохого минимума при обучении не особо стоит. Другое дело, что модели с разной инициализацией можно использовать для ансамблей.
0
При этом аналитическое решение требует всего O(1) дополнительной памяти и O(N) вычислений.
0
«мы имеем» как калька с английского «we have» — это плохая практика перевода :)
+1
Скомпилировав код, можно заметить...
… что текст и код писали разные люди? :)
+3
Скомпилировав код
Питон как бы не компилируемый язык =)
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Линейная регрессия и градиентный спуск