Как жаль, что такой ценный канал вы не развиваете активно... Очень понятно объясняете! Вообще в ML сильно и часто не хватает объяснений относительно быстрых и понятных.
@@magorokhoov хотелось бы увидеть про современные архитектуры, трансформеры, диффузионные модели, gpt, лама. Про оптимизацию нейронок, как свои писать, какой подход использовать для этого и чем руководствоваться. Вообще очень много тем, которые мало, где найти, когда уже перешагиваешь порог основ ML и DL.
Подскажите пожалуйста. Вот к примеру в градиентном спуске, нельзя ли на уровне кода прописать запрет на обработку области с локальным минимумом, чтобы нейронка просто не обращала внимание на частный случай а обрабатывала только нужную область? Ведь это наверное эффективнее чем громоздить какие-то новые и более сложные методы, нет?
Каким образом можно написать запрет на обработку области с локальным минимумом? Какую область можно считать нужной? То есть, я не совсем понимаю, что вы имеете в виду. Пожалуйста, переформулируйте. Но я попробую ответить. Обнаружить локальный минимум - задача не из простых. Фактически, это и есть наша задача, найти локальный минимум), это задача оптимизации. Мы часто говорим о локальном минимуме, но на самом деле практически локальных минимумов не бывает, тк наш метод - стохастический. То есть для каждого мини-батча свое пространство loss, и для каждого мини-батча оно свое. В этом видео я преимущественно рассказывал об адаптивных алгоритмах, т.е с автоматической подстройкой learning rate. Я видел другие методы, в которых как бы стараются заглянуть вперед и проверить, более лучшие ли это веса, или стоит вернуться. Есть еще нормализация градиента, есть еще централизация градиента. Есть клипинг (срез). Есть еще комбинации SGD и ADAM (MAS).
@@magorokhoov Мне это представлялось как-то попроще. К примеру провести 1-10 итераций. Затем по факту обнаруженных результатов назначить нечто вроде фильтра для отдельных областей (если задача и материал для обучения одни и те же) и таким образом сэкономить ресурсы на вычисление. Я извиняюсь, просто в нейронках я пока около ноля болтаюсь, просто присматриваюсь к теме и задаю другим и самому себе в частности, разные вопросы.
Я еще не могу понять, какие области и каким образом их фильтровать =) Давайте оценим, какие вычисления у нас происходят. 1. Прогоняем данные через нейросеть. Forward propagation. 2. Считаем loss (на сколько сетка ошиблась) 3. По этому loss делаем backpropagation, считаем градиенты на каждом слое сетки 4. Берем оптимизатор, на основе этих градиентов мы каким-то особым образом, особым алгоритмом (SGD, ADAM, и тд) обновляет веса сетки 5. Goto point 1, then repeat Напомню, пространство имеет огромную размерность. В сетках от 1 млн до 100 млн параметров. (чаще всего. Можно больше, можно меньше) На каком этапе вы хотите провести оптимизацию с фильтром?
@@magorokhoov А после пятого пункта все полностью повторяется заново? Со всеми проверками и корректировками? Тогда логично предположить, что после пятого пункта, на основе полученных данных (ну или после 10 таких итерации) и можно поставить такой фильтр. Но это опять таки только с моей колокольни оценка.
Да, после 5 пункта все повторяется по новому. От прошлых этапов ничего не остается, кроме других весов модели, и некоторых величин в оптимизаторе (накопленные моменты в sgd и adam). Что будет делать этот фильтр?
Adam отличается от RMSprop двумя чертами - скользящим средним по градиенту (beta1) и поправкой в начале обучения [m = m/(1 - beta1^t)] Поэтому, при beta1=0.0 и обучении дольше чем 1000-10000 иетраций Adam становится практически подобен RMSprop. SGD, говорят, в при более долгом обучении может давать немного лучше результат, чем Adam, но с Adam'ом сетка намного быстрее учится. Поэтому в +95% случаев используют Adam. Я ещё слышал, что RMSprop могут использовать в рекуррентных сетях. Краткий ответ: Adam - с ним нейросеть быстрее всего обучается, легче подобрать гиперпараметры (lr, beta1, beta2) RMSprop - возможно он хороший в рекуррентных сетях (я это вычитал где-то на reddit, я не проверял) SGD - максимально классический алгоритм. Сеть с ним дольше обучается, тк нету адаптивной подстройки lr. Я ещё изучаю эту тему. Она очень интересная. Есть ли ещё вопросы и пожелания? На всё постараюсь ответить
0:00 - 0:05 - Введение
0:05 - 2:10 - План и цель занятия
2:10 - 7:42 - GD градиентный спуск
7:42 -18:35 - SGD Стохастический градиентный спуск
18:35 - 28:20 - RMSprop
28:20 - 36:05 - Adam
36:05 - 41:35 - Отличия RMSprop и Adam
41:35 - 44:00 - Отличия Adam и AdamW
44:00 - 47:30 - Конец
Как жаль, что такой ценный канал вы не развиваете активно... Очень понятно объясняете! Вообще в ML сильно и часто не хватает объяснений относительно быстрых и понятных.
Спасибо за добрые слова!
Накидайте сюда пожалуйста идеи, темы, какие темы хочется разобрать. Или мне в лс можно написать. Телеграмм: @magorokhoov
@@magorokhoov хотелось бы увидеть про современные архитектуры, трансформеры, диффузионные модели, gpt, лама. Про оптимизацию нейронок, как свои писать, какой подход использовать для этого и чем руководствоваться. Вообще очень много тем, которые мало, где найти, когда уже перешагиваешь порог основ ML и DL.
Привет, очень крутой у тебя материал, ты очень клево его подаешь, очень интересно смотреть, не заканчивай писать такие видосы, спасибо!
Спасибо 🙏🏻
Огромное спасибо, я только написал свой тренировочный цикл и модель не переобучилась счастлив просто
Здравствуйте! Как с вами можно связаться чтобы получить индвидуальные уроки по нейроным сеткам?
Добрый день! Можно,
@magorokhoov в телеграмме
Кстати хотел бы посоветовать всем канал selfedu, у него есть множество полезных плейлистов, в том числе по машинному обучению и по нейронным сетям
Подскажите пожалуйста. Вот к примеру в градиентном спуске, нельзя ли на уровне кода прописать запрет на обработку области с локальным минимумом, чтобы нейронка просто не обращала внимание на частный случай а обрабатывала только нужную область? Ведь это наверное эффективнее чем громоздить какие-то новые и более сложные методы, нет?
Каким образом можно написать запрет на обработку области с локальным минимумом?
Какую область можно считать нужной?
То есть, я не совсем понимаю, что вы имеете в виду. Пожалуйста, переформулируйте. Но я попробую ответить.
Обнаружить локальный минимум - задача не из простых. Фактически, это и есть наша задача, найти локальный минимум), это задача оптимизации.
Мы часто говорим о локальном минимуме, но на самом деле практически локальных минимумов не бывает, тк наш метод - стохастический. То есть для каждого мини-батча свое пространство loss, и для каждого мини-батча оно свое.
В этом видео я преимущественно рассказывал об адаптивных алгоритмах, т.е с автоматической подстройкой learning rate.
Я видел другие методы, в которых как бы стараются заглянуть вперед и проверить, более лучшие ли это веса, или стоит вернуться.
Есть еще нормализация градиента, есть еще централизация градиента. Есть клипинг (срез). Есть еще комбинации SGD и ADAM (MAS).
@@magorokhoov Мне это представлялось как-то попроще. К примеру провести 1-10 итераций. Затем по факту обнаруженных результатов назначить нечто вроде фильтра для отдельных областей (если задача и материал для обучения одни и те же) и таким образом сэкономить ресурсы на вычисление. Я извиняюсь, просто в нейронках я пока около ноля болтаюсь, просто присматриваюсь к теме и задаю другим и самому себе в частности, разные вопросы.
Я еще не могу понять, какие области и каким образом их фильтровать =)
Давайте оценим, какие вычисления у нас происходят.
1. Прогоняем данные через нейросеть. Forward propagation.
2. Считаем loss (на сколько сетка ошиблась)
3. По этому loss делаем backpropagation, считаем градиенты на каждом слое сетки
4. Берем оптимизатор, на основе этих градиентов мы каким-то особым образом, особым алгоритмом (SGD, ADAM, и тд) обновляет веса сетки
5. Goto point 1, then repeat
Напомню, пространство имеет огромную размерность. В сетках от 1 млн до 100 млн параметров. (чаще всего. Можно больше, можно меньше)
На каком этапе вы хотите провести оптимизацию с фильтром?
@@magorokhoov А после пятого пункта все полностью повторяется заново? Со всеми проверками и корректировками? Тогда логично предположить, что после пятого пункта, на основе полученных данных (ну или после 10 таких итерации) и можно поставить такой фильтр. Но это опять таки только с моей колокольни оценка.
Да, после 5 пункта все повторяется по новому. От прошлых этапов ничего не остается, кроме других весов модели, и некоторых величин в оптимизаторе (накопленные моменты в sgd и adam).
Что будет делать этот фильтр?
В чем разница между ними на практике?
Adam отличается от RMSprop двумя чертами - скользящим средним по градиенту (beta1) и поправкой в начале обучения [m = m/(1 - beta1^t)]
Поэтому, при beta1=0.0 и обучении дольше чем 1000-10000 иетраций Adam становится практически подобен RMSprop.
SGD, говорят, в при более долгом обучении может давать немного лучше результат, чем Adam, но с Adam'ом сетка намного быстрее учится. Поэтому в +95% случаев используют Adam.
Я ещё слышал, что RMSprop могут использовать в рекуррентных сетях.
Краткий ответ:
Adam - с ним нейросеть быстрее всего обучается, легче подобрать гиперпараметры (lr, beta1, beta2)
RMSprop - возможно он хороший в рекуррентных сетях (я это вычитал где-то на reddit, я не проверял)
SGD - максимально классический алгоритм. Сеть с ним дольше обучается, тк нету адаптивной подстройки lr.
Я ещё изучаю эту тему. Она очень интересная.
Есть ли ещё вопросы и пожелания? На всё постараюсь ответить
@@magorokhoov Вроде понятно, спасибо