Dropout - метод борьбы с переобучением нейронной сети | #11 нейросети на Python

Поделиться
HTML-код
  • Опубликовано: 23 ноя 2024

Комментарии • 55

  • @amaideltfly1512
    @amaideltfly1512 Год назад +7

    Вы просто мастер, так доступно и лаконично объясняете, признаться, захватило сразу же и помогло в продвижении. Благодарю!

  • @dubinin_s
    @dubinin_s 4 года назад +22

    Ваш курс по нейронкам самый лучший. Материал воспринимается очень легко.
    Только у вас в видео по нейронкам есть математические формулы (отдельное спасибо Вам за это), с ними намного понятнее все становится.

  • @pages777
    @pages777 Месяц назад

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

  • @СарматПересветов
    @СарматПересветов Месяц назад

    Огромное спасибо, более понятного обьяснения не найти)

  • @denkez6010
    @denkez6010 8 месяцев назад +1

    спасиб за формулы!
    будто в инст вернулся на пары тервера😅

  • @АндрейКоваленко-о5е
    @АндрейКоваленко-о5е 3 года назад +3

    Спасибо, очень интересно, но дьявол в деталях
    Нужно разобраться как сделать этот дропаут для нескольких слоев и как будет происходить градиентный спуск и коррекция весов.
    Обязательно закодить самому это, а потом сравнить с тем что получится в керас

  • @TBRAK78
    @TBRAK78 Год назад +4

    Спасибо за курс, но очень хотелось бы продолжения по Autokeras

  • @vitall789
    @vitall789 2 года назад +2

    С формулами как всегда все усложнено, достаточно сумму выходов вкл. нейронов * на коэф. - отношения всех нейронов к включенным.

    • @5junkmail
      @5junkmail 2 года назад

      А ещё проще сказать, что вместо выключенных нейронов подставляются средние значения включенных нейронов, как я понимаю это и происходит.

  • @firstelected8229
    @firstelected8229 2 года назад +5

    Рассмешил пример с "Мозг человека устроен так...", после того как вгляделся и перечитал)

  • @mauriy
    @mauriy 3 года назад +1

    Спасибо

  • @kotikGGG
    @kotikGGG 8 месяцев назад +1

    Интересно, а можно определить вероятность p как переменную и с оптимизировать по ней? таким образом подобрав оптимальное значение...

  • @andreychernykh256
    @andreychernykh256 4 года назад

    Спасибо!

  • @ИльяКоваленко-л8ц
    @ИльяКоваленко-л8ц Год назад +2

    Я не понимаю почему , но даже с 500 нейронами и выборкой в 5000 показатель валидации держишься в районе 65

  • @kotikGGG
    @kotikGGG 8 месяцев назад +1

    поправочка: на график наверно не показатель качества, а размер ошибки?

  • @AcCeHu3aToP
    @AcCeHu3aToP 3 года назад +1

    В этом примере если увеличить число эпох с 50 до 300, то графики loss и val_loss точно так же разойдутся как и без dropout'а. Отсюда пара вопросов: нужно ли ограничивать число эпох при обучении нейросетей, если происходит переобучение? Или же наоборот - если при увеличении эпох происходит переобучение, то это сигнал о том, что данная архитектура сети не предназначена для решения поставленной задачи, и ее надо менять?

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      Да, при расхождении следует прерывать процесс обучения и если при этом качество работы сети удовлетворительное, то переобучать не нужно, можно эксплуатировать.

  • @maksutaatuskam860
    @maksutaatuskam860 3 года назад +2

    Вопрос автору: скажите, пожалуйста, а можно ли уменьшить эффект переобучения за счет увеличения обучающей выборки? К примеру в примере с распознаванием цифр, если бы мы просто увеличили обучающую выборку в 2 раза (разумеется новыми уникальными изображениями цифр), это привело бы к снижению переобучения?

    • @selfedu_rus
      @selfedu_rus  3 года назад

      теоретически возможно, но сложно, лучше менять структуру НС

    • @alexandreabramtsev9160
      @alexandreabramtsev9160 2 года назад +1

      В целом так делают - только вот где взять выборку в 2 раза большую. Поэтому используют имеющуюся выборку с трансформациями - а вариантов там много - просто сдвиги, повороты, отражения по вертикали/горизонтали (цифрам отражения не помогут, а вот если ты распознаешь пиццу - то самое то), маштабирование, цветовые и яркостные манипуляции, добавление шумовых эффектов... etc Это все позволяет увеличить уникалюную выборку. Но дальше будут скорее всего свертки, и там есть другой механизм усреднения - так называемый max pool/ Я уверен что автор это покажет в следующих сериях

  • @СолодушкинСвятослав
    @СолодушкинСвятослав 5 месяцев назад +1

    7:15 почему сумма меньше? Если отброшенные слагаемые меньше нуля, то сумма станет больше.
    Поясните, пожалуйста, в комментариях.

    • @selfedu_rus
      @selfedu_rus  Месяц назад

      да, верно, просто другая, спасибо!

  • @VenatoresnamIgnotis
    @VenatoresnamIgnotis 3 года назад +1

    Спасибо за ваши видео, очень понятный курс.
    Есть небольшой вопрос, что за цифры в логах пишутся при обучении сети:
    Epoch 1/5
    157/157. Что такое 157? При изменении размера батча они тоже меняются, но если у нас батч 32, то значит и там должно быть 32 из 32, по идее. Да и как я понял, батч это грубо говоря просто часть от всей эпохи, соответственно все равно при обучении у нас должно пройти 5000 изображений, просто взятые группами по 32. Вижу что 50 эпох проходит, т.е. 5000 по 50 раз прогналось через сеть, почему пишет 157?

    • @selfedu_rus
      @selfedu_rus  3 года назад

      Спасибо! Это вроде число мини-батчей в обучающей выборке.

    • @VenatoresnamIgnotis
      @VenatoresnamIgnotis 3 года назад +1

      @@selfedu_rus вроде сходится. Очень жаль, что с каждым следующим видео количество просмотров уменьшается, не все видимо готовы осилить этот курс)

  • @АннаАнна-э3в2в
    @АннаАнна-э3в2в 3 года назад +2

    Вопрос автору: а изменение числа скрытых слоёв нейронки без изменения общего кол-ва нейронов как повлияет на переоблучение?

    • @selfedu_rus
      @selfedu_rus  3 года назад

      Этого не скажу, переобучение зависит от множества параметров и не только числа слоев. Но есть исследования, котореые показывают, что как правило, увеличение числа слоев с сохранением числа нейронов лучше для задач классификации, чем если бы использовался только один слой с тем же числом нейронов. Возможно, исходя из этого, переобучение будет чаще возникать при увеличении слоев (при том же числе нейронов). Но это лишь гипотеза.

  • @КоляВасильев-о5и
    @КоляВасильев-о5и 3 года назад +1

    Интересно, дропаут не всегда работает например в силу того что отключение узлов происходит случайным образом? То есть правильно ли я понимаю, что
    возможная такая ситуация: допустим мы решили написать сеть которая определяет есть ли кот на фото. Обучающую выборку мы формировали фоткая котов в парках, в результате чего на фото часто оказывались фонари и скамейки (это шум).
    Тогда может оказаться так, что веса связанные со скамейками и фонарями дают существенный вклад и на фото где нет кота но есть много фонарей и скамеек мы можем
    получить что якобы кот есть. Если же мы будем использовать дропаут, то есть вероятность что узлы отвечающие за скамейки и фонари будут часто "угасать" в процессе обучения и тем самым мы добьемся того что вклад этих узлов будет минимизирован. Но как вы сказали дропаут работает не всегда, и если например случайно получится так что чаще всего "угасать" будут узлы отвечающие за определение данных кота то может возникнуть ситуация где дропаут не сработает. А при предыдущем раскладе все получится т.к данные кота на фото почти не "угасали" а вместо этого "угасали" узлы отвечающие за пиксели фонарей и скамеек.
    Верно ли я описал то почему именно дропаут может иногда работать а иногда нет?

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      Думаю, нет. Дропаут увеличивает обобщающие способности на тех данных, что мы предъявляем сети. Если коты часто на фоне фонарей, то это недостаток обучающей выборки и дропаут здесь не спасет. Он лишь инструмент от переобучения - слишком точной подстройки разделяющей плоскости под обучающие данные - не более того.

    • @КоляВасильев-о5и
      @КоляВасильев-о5и 3 года назад

      @@selfedu_rus Спасибо! Под обобщающими способностями подразумевается то, что если например нам на картинке нужно распознать стул, и предположим каждый узел отвечает за распознавание определенной части стула, например, ножек стула, сиденья, спинки. Например отключая узел который связан с распознаванием спинки мы "говорим" сети: смотри, вот тебе ножки и сиденье и это тоже стул (но без спинки) и так далее отключаем то один то другой признак и "заставляем" сеть давать нам правильный ответ даже тогда, когда на картинке присутствуют не все признаки предмета. Примерно так можно понимать обобщение через дропаут?

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      @@КоляВасильев-о5и Не совсем, это означает, что качество распознавания в реальных условиях оказывается сравнимым с качеством на обучающей выборке. Как в деталях при этом работает нейросеть, какие признаки учитывает или не учитывает - отдельный вопрос.

    • @КоляВасильев-о5и
      @КоляВасильев-о5и 3 года назад

      @@selfedu_rus Да, этот эффект "качество распознавания в реальных условиях оказывается сравнимым с качеством на обучающей выборке" я наблюдал, это то к чему может приводить использование дропаута. Спасибо!

    • @КоляВасильев-о5и
      @КоляВасильев-о5и 3 года назад

      @@selfedu_rus В целом осталось непонятным то как именно дропаут работает и почему иногда работает а иногда нет. На просторах интернета наткнулся на мнение, что на практике дропаут может работать, но его теоретически полное обоснование нам неизвестно. Скажите пожалуйста, что вы думаете по этому поводу?

  • @rpuropu
    @rpuropu 3 года назад +1

    оооо кжаись начинаю поинмать... т.е. случайно отброшенные нейроны... это тоже самое, в принципе , что и аугументация? например в цветной фотграфии наделать чёрных квадратиков мелких в рандомных местах... да?

    • @selfedu_rus
      @selfedu_rus  3 года назад

      Я думаю не совсем. Если наделать черных квадратиков - это потеря входной информации, а отключение нейронов - это необходимость другим брать на себя все функции по классификации, то есть, становиться более универсальными и, тем самым, нейронная сеть приобретает лучшие обобщающие способности.

    • @rpuropu
      @rpuropu 3 года назад

      @@selfedu_rus интересен эффект от совмещения этих действий.. завтра доберусь до сверточных сетей, у меня всего 3000 фоток собак и кошек.. мало в задании, придётся аугументацию делать и идея отключения нейронов интуитивно кажется рабочей. Может тогда лучше засочетается с пятнами изменения яркости, например. Интересно. Я понял ваше мнение, спасибо.

  • @Дизельэлектроника
    @Дизельэлектроника 2 года назад +1

    Доброго времени суток уважаемый автор канала!
    Подскажите пожалуйста если нейронная сеть обучается очень долго ( несколько дней), можно ли как то приостанавливать процесс обучения и выходить из программы, а после запускать программу снова чтобы обучения продолжилось?
    Помогите пожалуйста, очень нужно!

    • @selfedu_rus
      @selfedu_rus  2 года назад

      да, см. описание callback функций процесса обучения, там все можно сделать (и описание по Tensorflow, по моему даже в моем плейлисте есть что то про это)

  • @ywbc1217
    @ywbc1217 4 года назад

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

    • @selfedu_rus
      @selfedu_rus  4 года назад

      вы можете это сами проверить, ссылка на программу под видео )

  • @turanfair9364
    @turanfair9364 3 года назад +3

    Сергей вы прекрасный учитель, почему не выложите на coursera, udemy? Очень мало полезных курсов там

    • @selfedu_rus
      @selfedu_rus  3 года назад +2

      Спасибо! Сейчас прорабатываю курс по Python для Stepik

  • @ЛёшаШатурный
    @ЛёшаШатурный 4 года назад

    Здравствуйте. Ответьте пожалуйста, как исключение нейронов устраняет переобучение? Понятно что dropout ускоряет процесс обучения, понятно что dropout учит сеть работать не со всеми нейронами. Но как это помогает избежать переобучения непонятно.

    • @selfedu_rus
      @selfedu_rus  4 года назад +1

      Здравствуйте. В видео говорится, что временное исключение части нейронов способствует повышению их обобщающих способностей. В этом главная фикша Dropout.

  • @СарматПересветов
    @СарматПересветов Месяц назад

    Хотел задать вопрос, прошу прощения если он окажется глупым, Возможно ли дообучить уже обученную нейронную сеть, например у нас появились новые данные, и мы хотим дообучить ее на новых данных, при этом не начиная процесс обучения с самого начала??? или же придется начинать все сначала??

    • @selfedu_rus
      @selfedu_rus  Месяц назад +1

      нужно сохранять состояние НС (в файл), а потом, позже, загрузить и продолжить обучение. Это и есть дообучение.

  • @sergo5001
    @sergo5001 Год назад +1

    А ты не путаешь переобучение с выбором неправильной архитектуры нейронной сети?

  • @rpuropu
    @rpuropu 3 года назад +1

    полтора процента дропаут прибавил) я имею ввиду нормальную, а не ломаную версию этого занятия

  • @torbokovsanat
    @torbokovsanat 3 года назад +1

    +

  • @seregaivanov5221
    @seregaivanov5221 2 года назад +1

    Увольнять таких директоров, и лишать права работать в образовательных структурах.

  • @Asasssssin
    @Asasssssin Год назад

    Метод борьбы с занудством

  • @pages777
    @pages777 Месяц назад

    10102024