Нейросети | Урок #2 | Оптимизаторы. Что такое beta1 beta2? SGD RMSprop Adam AdamW

Поділитися
Вставка
  • Опубліковано 15 вер 2024

КОМЕНТАРІ • 21

  • @user-hc1gm4yx6v
    @user-hc1gm4yx6v Рік тому +1

    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 - Конец

  • @bysedova
    @bysedova 8 місяців тому +2

    Как жаль, что такой ценный канал вы не развиваете активно... Очень понятно объясняете! Вообще в ML сильно и часто не хватает объяснений относительно быстрых и понятных.

    • @magorokhoov
      @magorokhoov  5 місяців тому

      Спасибо за добрые слова!
      Накидайте сюда пожалуйста идеи, темы, какие темы хочется разобрать. Или мне в лс можно написать. Телеграмм: @magorokhoov

    • @bysedova
      @bysedova 5 місяців тому +2

      @@magorokhoov хотелось бы увидеть про современные архитектуры, трансформеры, диффузионные модели, gpt, лама. Про оптимизацию нейронок, как свои писать, какой подход использовать для этого и чем руководствоваться. Вообще очень много тем, которые мало, где найти, когда уже перешагиваешь порог основ ML и DL.

  • @vadimvidyakin4788
    @vadimvidyakin4788 Рік тому +2

    Привет, очень крутой у тебя материал, ты очень клево его подаешь, очень интересно смотреть, не заканчивай писать такие видосы, спасибо!

  • @tkzy-ow1sc
    @tkzy-ow1sc 7 місяців тому +1

    Огромное спасибо, я только написал свой тренировочный цикл и модель не переобучилась счастлив просто

  • @SS-ne5js
    @SS-ne5js 5 місяців тому +1

    Здравствуйте! Как с вами можно связаться чтобы получить индвидуальные уроки по нейроным сеткам?

    • @magorokhoov
      @magorokhoov  5 місяців тому

      Добрый день! Можно,
      @magorokhoov в телеграмме

  • @timon1816
    @timon1816 Рік тому +4

    Кстати хотел бы посоветовать всем канал selfedu, у него есть множество полезных плейлистов, в том числе по машинному обучению и по нейронным сетям

  • @ApelsinArbuzov1
    @ApelsinArbuzov1 Рік тому +2

    Подскажите пожалуйста. Вот к примеру в градиентном спуске, нельзя ли на уровне кода прописать запрет на обработку области с локальным минимумом, чтобы нейронка просто не обращала внимание на частный случай а обрабатывала только нужную область? Ведь это наверное эффективнее чем громоздить какие-то новые и более сложные методы, нет?

    • @magorokhoov
      @magorokhoov  Рік тому +1

      Каким образом можно написать запрет на обработку области с локальным минимумом?
      Какую область можно считать нужной?
      То есть, я не совсем понимаю, что вы имеете в виду. Пожалуйста, переформулируйте. Но я попробую ответить.
      Обнаружить локальный минимум - задача не из простых. Фактически, это и есть наша задача, найти локальный минимум), это задача оптимизации.
      Мы часто говорим о локальном минимуме, но на самом деле практически локальных минимумов не бывает, тк наш метод - стохастический. То есть для каждого мини-батча свое пространство loss, и для каждого мини-батча оно свое.
      В этом видео я преимущественно рассказывал об адаптивных алгоритмах, т.е с автоматической подстройкой learning rate.
      Я видел другие методы, в которых как бы стараются заглянуть вперед и проверить, более лучшие ли это веса, или стоит вернуться.
      Есть еще нормализация градиента, есть еще централизация градиента. Есть клипинг (срез). Есть еще комбинации SGD и ADAM (MAS).

    • @ApelsinArbuzov1
      @ApelsinArbuzov1 Рік тому

      @@magorokhoov Мне это представлялось как-то попроще. К примеру провести 1-10 итераций. Затем по факту обнаруженных результатов назначить нечто вроде фильтра для отдельных областей (если задача и материал для обучения одни и те же) и таким образом сэкономить ресурсы на вычисление. Я извиняюсь, просто в нейронках я пока около ноля болтаюсь, просто присматриваюсь к теме и задаю другим и самому себе в частности, разные вопросы.

    • @magorokhoov
      @magorokhoov  Рік тому +1

      Я еще не могу понять, какие области и каким образом их фильтровать =)
      Давайте оценим, какие вычисления у нас происходят.
      1. Прогоняем данные через нейросеть. Forward propagation.
      2. Считаем loss (на сколько сетка ошиблась)
      3. По этому loss делаем backpropagation, считаем градиенты на каждом слое сетки
      4. Берем оптимизатор, на основе этих градиентов мы каким-то особым образом, особым алгоритмом (SGD, ADAM, и тд) обновляет веса сетки
      5. Goto point 1, then repeat
      Напомню, пространство имеет огромную размерность. В сетках от 1 млн до 100 млн параметров. (чаще всего. Можно больше, можно меньше)
      На каком этапе вы хотите провести оптимизацию с фильтром?

    • @ApelsinArbuzov1
      @ApelsinArbuzov1 Рік тому

      @@magorokhoov А после пятого пункта все полностью повторяется заново? Со всеми проверками и корректировками? Тогда логично предположить, что после пятого пункта, на основе полученных данных (ну или после 10 таких итерации) и можно поставить такой фильтр. Но это опять таки только с моей колокольни оценка.

    • @magorokhoov
      @magorokhoov  Рік тому +1

      Да, после 5 пункта все повторяется по новому. От прошлых этапов ничего не остается, кроме других весов модели, и некоторых величин в оптимизаторе (накопленные моменты в sgd и adam).
      Что будет делать этот фильтр?

  • @egor_neo
    @egor_neo Рік тому +1

    В чем разница между ними на практике?

    • @magorokhoov
      @magorokhoov  Рік тому +3

      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.
      Я ещё изучаю эту тему. Она очень интересная.
      Есть ли ещё вопросы и пожелания? На всё постараюсь ответить

    • @egor_neo
      @egor_neo Рік тому

      @@magorokhoov Вроде понятно, спасибо