Комментарии 10
Примечание: для сохранения наглядности и простоты восприятия код не будет максимально коротким или оптимизированным “под прод”
а до этого
Т.к. часть с кодом у нас встречается впервые, добавлю несколько пояснений.Работать будем, как ни странно, в питоне (у меня 3.12). В первое время из библиотек нам понадобится классический джентльменский набор: numpy, pandas, scikit-learn, matplotlib и seaborn. В дальнейшем нам понадобятся еще как минимум торч и трансформеры, но до этого пока что далеко

Хорошая серия статей. Спасибо.
Не понятно, кто минусует...
Начинает чаще встречаться специфический жаргон. Не специалистам это мешает.
Теперь по существу. Требование дифференцированности функций для методов уточнения весов не обязательно. Альпинист не обязан передвигать прощупывающую ногу, не отрывая ее от земли. Он может просто делать маленький шаг и оценивать куда он попал. Для альпиниста градиент дает направление быстрейшего спуска. Но при работе с весами, у каждого веса только одно направление - изменение размера.
Соглашусь, требование дифференцируемости, в целом, слишком сильное условие. Тем более, существуют и методы оптимизации для недифференцируемых функций.
Но: если мы уж брались за изучение классического градиентного спуска, то, согласитесь, одними частными производными сыт не будешь :)
Потому и в статье есть такая скобка
градиент (в том виде, в котором он нам интересен) существует не всегда
Что касаемо весов: "изменение одного веса" действительно живёт на прямой где можно либо вперёд, либо назад. Но мы меняем все веса сразу, а не поочередно.
Я правильно понял вашу мысль, или вы имели в виду численного приближения производной (f(x+h)-f(x))/h, вместо предельного перехода?
Спасибо за статью, я очень ждал кода и дождался
а так все очень интересно, на пальцах показана мат часть во всех частях статьи, жду продолжения

Разбираемся в ML без воды: от базы до Attention. Часть 3