Тёмный

#8. Стохастический градиентный спуск SGD и алгоритм SAG | Машинное обучение 

selfedu
Подписаться 152 тыс.
Просмотров 21 тыс.
50% 1

Суть стохастических алгоритмов при оптимизации эмпирического риска. Рассматривается классический алгоритм Stochastic Gradient Descent (SGD, Роббинса-Монро) и Stochastic Average Gradient (SAG).
Инфо-сайт: proproprogs.ru/ml
Телеграм-канал: t.me/machine_learning_selfedu
Градиентный алгоритм: • ЦОС Python #2: Метод г...

Опубликовано:

 

12 мар 2022

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 34   
@kochkindi
@kochkindi 2 года назад
Спасибо вам большое за отличное доступное объяснение! Очень жду полного продолжения по ML, с вами получается учиться.
@user-hm4tl3hy4u
@user-hm4tl3hy4u 2 месяца назад
О SAG никогда не слышал. Разве он где-то применяется? Объяснение SGD шикарное, спасибо!
@user-qu6xy9nr4s
@user-qu6xy9nr4s 2 года назад
Чем дальше в лес, тем толще партизаны.
@LolaL7088
@LolaL7088 2 месяца назад
Раз 5 пересмотрела, но медик поняла😅
@user-qj6tk5fw9p
@user-qj6tk5fw9p 3 месяца назад
Спасибо за понятное обьяснение!)
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov Год назад
Сергей, благодарю! 👍
@forwarddenz2976
@forwarddenz2976 2 года назад
В том же духе!!!
@impellergimpeller5133
@impellergimpeller5133 2 года назад
👍👍👍👍👍
@PrimaLuceAstronaut
@PrimaLuceAstronaut 2 года назад
Здравствуйте, видео по мл нравятся и я решил параллельно попробовать себя в комьютерном зрении, но недавно наткнулся на задачу, с которой сам разобраться до конца не могу. Суть задачи вот в чем: Требуется реализовать алгоритм сборки пазла из прямоугольных фрагментов изображений (с точностью до поворота на 180 градусов). В задании будут представлены разбиения на разное количество фрагментов (от 12 до 432). Каждый фрагмент может быть случайно повернут на один из углов (0, 90, 180, 270). Разрешение исходного изображения - 1200x900. Пользоваться можно только numpy, но я думаю этого должно хватить. Сам я смог придумать такой алгоритм: Брать у каждого фрагмента изображения по два пикселя с начала и конца каждой стороны и сравнивать их с другими пикселями каждой стороны других фрагментов. По сути, пиксель из себя представляет три значения: уровень красного, зеленого и синего от 0 до 255. Вычитая пиксели одного фрагмента из другого можно по разности определить, какие фрагменты имеют наибольшую схожесть. Проблема возникла с ограничением фрагментов в одной строке. Потому, что доходя до края изображения программа не может понять, что это край и продолжает подбирать фрагменты. Если вдруг кто-то осилит это полотнище и подсказать, что можно сделать, я буду безгранично благодарен! Заранее спасибо
@selfedu_rus
@selfedu_rus 2 года назад
1. Думаю, все их можно привести к единому углу и масшатбу, используя собственные числа и собственные векторы (метод главных компонент над координатами точек каждого квадрата). 2. Сравнивать можно либо по корреляционному принципу, либо, все точки каждого квадрата вытянуть в строку, упорядочить по возрастанию (цветов) или убыванию и дальше брать те, что наиболее похожи. (Хотя здесь масса алгоритмов).
@PrimaLuceAstronaut
@PrimaLuceAstronaut 2 года назад
@@selfedu_rus с самим сравнением у меня вроде проблем нет. Все фрагменты ровно квадратные, посчитать необходимое количество фрагментов в строке/столбце можно просто поделив высоту или ширину итогового изображения(это фиксированные значения 1200 и 900) на длину грани этого квадратного фрагмента. У меня возникла проблема с тем, чтобы вовремя остановить программу. Я не могу придумать способ, чтобы передать программе, что данный фрагмент является краем изображения и что дальше него идти не надо
@user-tz8rd2vx2p
@user-tz8rd2vx2p Год назад
Возник вопрос по поводу пересчёта функционала качества. Мы берём случайное значение x_k из нашей выборки и считаем функцию потерь и градиент. После чего мы хотим сравнить функционал качества для найденных текущих значений(например коеффициентов a, b в линейной регрессии) с функционалом качества предполагаемой хорошей прямой. Почему мы каждый раз берём разное количество элементов этой суммы в зависимости от выбранного случайного значения. Типа если мы выбрали x_2, то берём сумму первых двух слагаемых, а если x_100, то сумму первых 100? И что если у нас эпох(итераций) больлше, чем размер датасета, как тогда считать?
@selfedu_rus
@selfedu_rus Год назад
Пересчет функционала у нас происходит по экспоненциальному скользящему среднему, т.е. мы учитываем все наблюдения, но строим лишь оценку функционала качества. Истинное значение получаем после градиентного спуска, когда полностью пересчитываем.
@PhyzmatClass
@PhyzmatClass 2 месяца назад
13:31 каким образом инициализировать градиенты? Вычислить как-то или взять случайные значеия?
@selfedu_rus
@selfedu_rus 2 месяца назад
первый раз вычисляются по всей выборке
@efraimfligil3119
@efraimfligil3119 2 года назад
А почему, скачко-образное схождение плохо? Вот например, в генечиских алгорирмах это сплош и рядом.
@selfedu_rus
@selfedu_rus 2 года назад
Скачками легко уйти не в том направлении и застрять в локальных минимумах. Как правило, сильные скачки не приводят к хорошим результатам адаптации (обучения).
@PhyzmatClass
@PhyzmatClass 2 месяца назад
8:32 это ведь не средняя сумма, а просто сумма. А средней она будет только при делении на m-1!
@kirillbalabanov39
@kirillbalabanov39 Год назад
Почему используется именно экспоненциальное среднее, а не обычное рекуррентное среднее?
@selfedu_rus
@selfedu_rus Год назад
а как вы его подсчитаете? для последних m значений придется хранить все m величин в памяти
@NationalVerrater
@NationalVerrater 2 месяца назад
Зачем в классическом методе суммировать градиенты?? Надо ведь из каждой переменной (веса) вычитать свой градиент.
@NationalVerrater
@NationalVerrater 2 месяца назад
Я понял, сумма градиентов не по разным переменным, а по набору образов, верно?
@PhyzmatClass
@PhyzmatClass 2 месяца назад
9:45 почему нельзя так и оставить 1/m и не заменять ее лямбдой, взятой, вообще говоря, с потолка? К тому же лямбда изначально переменная величина, ведь она зависит от m, а вы ее волюнтаристски делаете постоянной.
@selfedu_rus
@selfedu_rus 2 месяца назад
мы здесь вычисляем экспоненциальное среднее (ЭС), а не среднее арифметическое (СА), т.к. СА вычислять на каждой итерации - вычислительно неудобно; ЭС - хорошая оценка для СА в плане понимания уровня значения СА и вычисляется очень быстро, поэтому на практике используют ее
@PhyzmatClass
@PhyzmatClass 2 месяца назад
@@selfedu_rus А в чем вычислительный выигрыш? При вычислении ЭС будет то же число слагаемых, только с другими коэффициентами.
@selfedu_rus
@selfedu_rus 2 месяца назад
@@PhyzmatClass простая рекуррентная формула: Q_m = r*a_(n-1) + (1-r)*Q_(m-1)
@PhyzmatClass
@PhyzmatClass 2 месяца назад
@@selfedu_rus Так ведь и обычное СА можно вычислять по той же самой рекуррентной формуле, но с лямбдой равной 1/m.
@selfedu_rus
@selfedu_rus 2 месяца назад
@@PhyzmatClass хранить все m значений придется
@YbisZX
@YbisZX Год назад
SAG выглядит как-то опасно... На каждом шаге пересчитывается один градиент из выборки, а вычитается средний по всей выборке. Если выборка большая, то этот средний градиент будет очень медленно обновляться, и оптимизацию будет сильно заносить. Нам уже будут попадаться точки дающие противоположную ошибку, а мы по инерции прём в том же направлении...
@selfedu_rus
@selfedu_rus Год назад
в SAG не нужно все усреднять каждый раз, мы храним все значения по отдельности и всю сумму (среднюю) сразу, поэтому можем ее корректировать новым вычисленным значением, исключив старое и добавив новое с множителем 1/L, где L - размер выборки
@YbisZX
@YbisZX Год назад
@@selfedu_rus Так в том и проблема! При выборке в миллион наблюдений обновление лишь одного компонента практически не изменит средний градиент. Это вносит сильную инерцию в корректировку параметров w. В какой-то момент мы получим правильное разделение, но средний градиент будет толкать w в прежнем направлении. Так как оценка качества тоже идет с инерцией из-за "скорости забывания", то w может занести сильно дальше нужного...
@selfedu_rus
@selfedu_rus Год назад
@@YbisZX В инерции нет ничего плохого, многие (если не все) оптимизаторы именно и создают эту инерцию, чтобы "выпрыгивать" из локальных минимумов. Ну а стоит его применять для какой-либо конкретной задачи или нет, нужно смотреть. Универсального решения здесь нет.
Далее
Stochastic Gradient Descent, Clearly Explained!!!
10:53
ДОЕЗДИЛИСЬ, ДОПОМОГАЛИСЬ…
23:34
БЕСКОНЕЧНАЯ ВОДА . ФОКУС
00:34
Просмотров 152 тыс.
ДОЕЗДИЛИСЬ, ДОПОМОГАЛИСЬ…
23:34