В рамках курса Machine Learning Specialization от DeepLearning.AI рассматривается один из фундаментальных алгоритмов машинного обучения — градиентный спуск (gradient descent). Инструктор подробно разбирает математическую запись алгоритма, значение каждого символа и критически важный нюанс программной реализации, без которого обучение модели может пойти не по плану.
🧮 Математическая база и оператор присваивания 0:04
Алгоритм градиентного спуска на каждом шаге обновляет параметр $W$, вычитая из его текущего значения произведение скорости обучения (alpha) на производную функции стоимости . Важным моментом для понимания кода является интерпретация знака равенства. В контексте алгоритма символ = выступает как оператор присваивания, а не как математическое утверждение о равенстве сторон .
Инструктор подчеркивает различия в нотации:
- В программировании запись
a = a + 1означает инкремент (увеличение значения переменной на единицу) . - В математике утверждение $a = a + 1$ было бы ложным, так как значение не может быть равно самому себе плюс единица .
- В языке Python и многих других для проверки истинности равенства используется двойной знак равно
==.
В рамках лекций знак = всегда следует трактовать как команду «вычислить значение справа и сохранить его в переменную слева» .
🚀 Скорость обучения и роль производной 2:44
В уравнении градиентного спуска ключевую роль играет греческая буква Альфа ($\alpha$), которую называют скоростью обучения (learning rate) . По утверждению автора, это обычно небольшое положительное число в диапазоне от 0 до 1, например, 0.01 .
Функции параметров в процессе обучения:
- Альфа ($\alpha$): контролирует размер «шага» вниз по склону функции стоимости. По мнению инструктора, большая Альфа соответствует агрессивному спуску огромными шагами, а маленькая — осторожным «детским шажкам» .
- Производная: указывает направление шага . В сочетании с Альфой она определяет итоговую величину изменения параметров.
Спикер успокаивает слушателей, не знакомых с высшей математикой: для успешного прохождения курса и специализации глубокое знание математического анализа (calculus) не требуется, так как интуитивно понятные принципы работы производных будут разобраны в следующих уроках .
📉 Обновление параметров и сходимость 4:18
Поскольку модель линейной регрессии имеет не один, а два параметра ($W$ и $B$), алгоритм включает аналогичную операцию и для смещения ($B$) . Процесс обновления повторяется итеративно до тех пор, пока алгоритм не достигнет точки «сходимости» (convergence) .
Сходимость, по определению автора, — это состояние, при котором параметры $W$ и $B$ практически перестают изменяться с каждым новым шагом, что означает достижение локального минимума функции стоимости .
⚠️ Критическая деталь: одновременное обновление 5:13
Самый тонкий и важный момент в реализации градиентного спуска заключается в том, что параметры $W$ и $B$ должны обновляться одновременно . Это означает, что для расчёта новых значений обоих параметров должны использоваться «старые» значения, полученные на предыдущем шаге .
Правильный алгоритм реализации:
- Вычислить временное значение
temp_Wна основе текущих $W$ и $B$ . - Вычислить временное значение
temp_Bна основе тех же текущих $W$ и $B$ . - Одновременно обновить $W$ и $B$, присвоив им значения из
temp_Wиtemp_Bсоответственно .
Ошибочный подход: Если сначала обновить $W$, а затем использовать уже измененное значение $W$ для расчёта $B$, это нарушит логику алгоритма . В таком случае в функцию стоимости для параметра $B$ попадет обновленное значение $W$, что сделает этот алгоритм «чем-то другим» с иными свойствами . Инструктор настоятельно рекомендует придерживаться только метода одновременного обновления, так как именно он подразумевается под классическим градиентным спуском в профессиональной среде .