Однако внимательный читатель может заметить, что в формуле для L целых N слагаемых. Если в нашей обучающей выборке, например, миллион объектов, то значит ли это, что нам постоянно на каждом шаге нужно считать сумму из миллиона слагаемых? Конечно нет. Вы можете взять не всю выборку, а ее маленькую часть, например, 100 объектов или 10, и усреднить ошибку по ним. И градиент считать тоже по такой ошибке. Конечно это будет не такой точной оценкой средней ошибки, но тоже сойдет, а если на каждом шаге вы усредняете по новым случайно выбранным объектам - то этот случайный выбор нивелирует неточность оценки средней ошибки на каждом шаге. Такой подход называется стохастическим градиентным спуском (SGD, Stochastic Gradient Descent), а тот набор объектов, по которому вы усредняете ошибку на текущем шаге, называется пакетом или батчем (mini-batch). В предельном случае батч может состоять из одного объекта - т.е. вы просто каждый раз смотрите на ошибку на случайном объекте. И такой алгоритм будет работать на практике.



Идея SGD идет гораздо дальше линейных классификаторов - работая с оптимизацией любой большой суммы довольно однотипных слагаемых, вы можете также ограничиться случайным слагаемым или слагаемыми, просто менять их выбор на каждом шаге оптимизации. Тот же SGD применяется и в матричных разложениях, и в нейросетях и в разных уже древних методах обучения эмбеддингов типа word2vec. Поэтому принцип работы SGD очень важно понимать, если вы сколько-нибудь серьезно занимаетесь машинным обучением.



А в следующий раз мы поговорим о переобучении в линейных моделях, и чем случай классификации отличается от регрессии.