Тёмный

Batch Normalization (батч-нормализация) что это такое? | #12 нейросети на Python 

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

Зачем нужна батч-нормализация (Batch Normalization), как работает и как ее реализовать в пакете Keras. Также вы узнаете что такое ковариационный сдвиг и внутренний ковариационный сдвиг в нейронной сети. К чему это приводит и как с ним бороться.
Телеграм-канал: t.me/machine_learning_selfedu
Инфо-сайт: proproprogs.ru

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

 

27 авг 2020

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 75   
@gobals8925
@gobals8925 Год назад
Кажется я понял почему под вашими видео не так много лайков, как они того заслуживают - люди так хотят увидеть очередное прекрасное изложение материала, что спешат смотреть следующее видео! ))
@antonevdokimov8218
@antonevdokimov8218 3 года назад
Всё невероятно понятно и чётко! Благодарю за прекрасные уроки! 🔥🔥🔥🔥🔥🔥🔥🔥🔥
@rustemalimtay3052
@rustemalimtay3052 3 года назад
Огромное спасибо за материал
@user-oq7ju6vp7j
@user-oq7ju6vp7j 2 месяца назад
Большое спасибо за ваше видео. Прочитал статью, плохо понял метод, но после видео, стало намного понятнее.
@malygin_anton
@malygin_anton 3 года назад
спасибо вам большое за ваши уроки
@cantwaitforit
@cantwaitforit Год назад
Балдеж, автору респект!
@dmitrymitrofanov3920
@dmitrymitrofanov3920 3 года назад
not stopping man
@andreyprometey
@andreyprometey 3 года назад
Лайк, очень доступно объясняете
@user-qb5bo3jv3e
@user-qb5bo3jv3e 2 года назад
Спасибо за урок! Я сделал некоторые выводы и интересно ваше мнение. Прежде всего хочу убедиться, правильно ли я понял урок. В начале урока вы сказали, что этот алгоритм был предложен для решения проблемы ускорения обучения. Кажется я понял в чем состоит это ускорение и интересно ваше мнение. Мы по сути для значений на выходах нейронов производим z-стандартизацию, и тем самым каждый выход на нейроне интерпретируем как то, на сколько стандартных отклонений от среднего это значение отстоит и это дает более-менее похожие значения выходных значений нейронов, даже если данные в батчах сильно отличаются (например, в одном батче только цветные машины, а в другом только черные) и было замечено, что таким образом ускоряется обучение. Интересно, за счет чего? Есть у меня мнение на этот счет, и хочу знать, что вы думаете мо этому поводу. Если мы стандартизируем наши данные, то в большинстве случаев они будут иметь значение в диапазоне от 1 до 3 (т.к большинство значений в нормальном распределении находятся на 1-3 стандартных отклонения от среднего), а производная такой функции активации как например sigmoid, в точках из диапазона [1;3] выглядят очень даже неплохо т.е значения производной в точках из этого диапазона такие что обучение вряд ли будет заторможено. Если же не выполнять стандартизацию, то входы функций активации могут быть значительно большими, в результате чего производные в этих точках будут очень малы и тем самым обучение может быть заторможено.
@AxwelHD
@AxwelHD 2 года назад
А ты харош, интересно было прочесть. Я даже и не задумался об этом
@aleximtb
@aleximtb 2 года назад
Комментарий того "читателя", про которых обычно во всяких учебниках пишут "внимательный читатель конечно отметит и спросит..." - а ты такой читаешь и думаешь "эээ...ну да, ну ладно, хорошо, идем дальше " :)
@Aleksandr___
@Aleksandr___ 3 года назад
добрый день, а планируется ли такой же курс, как по питону, только про Go?
@selfedu_rus
@selfedu_rus 3 года назад
здравствуйте, пока незнаю...
@Aleksandr___
@Aleksandr___ 3 года назад
@@selfedu_rus в любом случае спасибо вам за ваши труды, обучаться по вашим видео - одно удовольствие, начал с основ пайтона, затем основы ооп, теория вероятностей, алгоритмы, нейронки
@user-vs3yh4dn7l
@user-vs3yh4dn7l 3 года назад
Почему следующие видео закрыты? Как получить доступ? Еще не готовы?
@selfedu_rus
@selfedu_rus 3 года назад
Я их специально открываю с задержкой, чтобы основная масса успевала просмотреть предыдущий материал. Иначе число просмотров резко проседает )
@paulkarkarin466
@paulkarkarin466 2 года назад
В 8 уроке по распознаванию изображения цифр я не нормализовал данные. На выходе получалась точность около 20% и выскоий средний квадрат отклонений. Вставил batch-нормализацию через каждый слой (у меня было 3 слоя). Результаты выросли до 97% точности и 0.02 среднего квадрата. Потом нормализовал данные, делением массивов на 255 и особо ничего не поменялось. Заменяет ли батч-нормализация предварительную нормализацию данных? А там ещё есть послойная нормализация layers. Вопросов много, реальных ответов только три...
@DeadManntrolling
@DeadManntrolling Год назад
Да, batch-нормализация действительно нормализует данные, поэтому можно её использовать в качестве первого слоя, чтобы не заниматься нормализацией вручную, хотя тестовую и оценочные выборки всё равно придётся нормализовать самостоятельно)
@alexandercherkashin3512
@alexandercherkashin3512 9 месяцев назад
Вопрос: почему на 7:46 вы говорите что плохо, что теряется нелинейность, но при этом мы используем по сути линейную функцию активации ReLu? Получается, что ReLu плохо использовать?
@user-oq7ju6vp7j
@user-oq7ju6vp7j 2 месяца назад
главная ошибка - считать ReLu линейной функцией активации, почитайте stackoverflow, там много дискурсов на эту тему.
@madmarshal7708
@madmarshal7708 Год назад
У меня вопрос. Батч-нормализация может применяться к любым слоям (как внутренних, так и выходных) или только к выходным? Update Посмотрел в статьях с кодом. Да, можно, на любых слоях, в т.ч. и выходом.
@user-oz3lm2ky5x
@user-oz3lm2ky5x Год назад
Непонятно, каждый одинаковый пиксел всех изображений минибатча подвергается нормализации независимо, или сначала рассчитываются плотности распределения яркостей каждого изображения, а потом производится нормализация между изображениями, уравнивая их плотности распределения в пределах минибатча? В первом случае изображения внутри минибатча могут существенно искажаться!
@bysedova
@bysedova 9 месяцев назад
Боже, спасибо, что все понятно. А то читаешь эти статьи и тонешь в непонятном материале...
@user-of3pm6oi1m
@user-of3pm6oi1m 2 года назад
А как мы выполняем batch normalization для нейрона перед ф-ией активации, если для этого нам нужно знать V - вектор, состоящий из входных значений всего батча для данного нейрона? Если я правильно понял, то V мы можем узнать, когда пропустим все входные вектора из батча через нейронную сеть
@selfedu_rus
@selfedu_rus 2 года назад
По идее да, здесь нужно почитать внимательно документацию по Keras и посмотреть, как это правильно сделать.
@user-of3pm6oi1m
@user-of3pm6oi1m 2 года назад
@@selfedu_rus Понял, посмотрю, какую они заумную реализацию придумали)
@86Blind
@86Blind 3 года назад
Какой идиот поставил дизлайк. Это самое лучшие и подробное объяснение которое я слышал. Спасибо
@VenatoresnamIgnotis
@VenatoresnamIgnotis 2 года назад
4 Человека которые не смотрели видео судя по всему
@frolomaskor
@frolomaskor Год назад
Сергей, подскажите как можно нормализовать данные цены биткоина при построении RNN?
@selfedu_rus
@selfedu_rus Год назад
без понятия, тут нужно экспериментировать
@frolomaskor
@frolomaskor Год назад
@@selfedu_rus Я вот подумал, а надо ли их вообще нормализовывать? Ведь нормализация необходима, чтоб данные не попадали в область насыщения функции активации. Но есть мы будем брать в качестве функции не сигмоиду, а линейную, то, получается, проблема решена? Как считаете? Да, и ещё хочу отдельно Вас поблагодарить, что Вы уделяете внимание вопросам подписчиков, помогаете разобраться с различными вопросами. Спасибо!
@selfedu_rus
@selfedu_rus Год назад
Спасибо! В целом, да, вы все верно понимаете (на мой взгляд). Только просто линейную брать нехорошо, т.к. смысл нейросети тогда теряется, т.к. композиция линейных нейронов = одному линейному нейрону )) Лучше взять ReLU или ELU, а на выходе да, можно линейную поставить. Успехов!
@sergeiku2839
@sergeiku2839 3 года назад
имеет ли смысл делать несколько таких слоев в одной модели?
@selfedu_rus
@selfedu_rus 3 года назад
да, у каждого слоя Dense (или другого) можно ставить один Batch Normalization
@Valstan1
@Valstan1 3 года назад
Поехали уже кодить свою первую сеть! ) Теория , это конечно хорошо, но практика лучше, а теорией можно капельно промаслить саму практику. А еще лучше по новой сети на каждом уроке, тогда мы на множестве примеров быстрее вникнем в суть и начнем писать свои нейросети, делая ошибки и находя варианты решений. А то от теории уже голова пухнет, а сесть и начать свою первую сеть так и не получается ...))) Спасибо за разжевывание всех нюансов, если и практику будут также разжевывать, то это будет очень и очень здорово.
@selfedu_rus
@selfedu_rus 3 года назад
Скоро будет и практика и много разной! Это обучающий курс, поэтому здесь нужны все базовые нюансы, далее они будут активно использоваться.
@Valstan1
@Valstan1 3 года назад
@@selfedu_rus Ура! Рассказываю почему я вроде как "тороплюсь". "Программирую" в свое удовольствие с 1998 года, еще с бейсика и ассемблера начинал на Синклере. Потом забросил, иногда писал на html и php сайты. Недавно нужно было для одного проекта изучить Питон, перечитал кучу книжек, сайтов, ну так поверхностно, вроде и с примерами, но дело почти не продвигалось. Потом надо стало написать парсер новостей, нашел видеоурок Мурренгана, в котором просто был пример работы с API Вконтакте, пример рабочего скрипта на питоне, без воды, но с объяснением каждой строчки кода зачем это надо. Я просто повторил, и потом с помощью гугла начал добавлять в код модули и буквально начал "кодить" на питоне за месяц, хотя до этого полгода не мог сдвинуться с места. Теперь стала нужда в ИИ, да и просто интересно было это освоить, потому как давно хотел сам подобное написать, а потом узнал что ИИ давно уже людьми написан и нефик изобретать велосипед. Полгода штудирую сайты, видосы, но както все, то тут непонятно с чего начать, то тут непонятно как все запихнуть и что выбрать. Попал недавно на ваш канал и офигел насколько тут все разжевано для нас "чайников". Спасибо вам огромное. Простоу меня уже "терпелка" заканчивается, хочется такого же примера для ИИ как было для АПИ Контакта, чтобы я уже от него оттолкнулся и поплыл дальше )
@nebosyls212
@nebosyls212 3 года назад
Обучение без теории это что сесть за руль автомобиля не зная как он устроен и правил дорожнего движения.
@Valstan1
@Valstan1 3 года назад
@@nebosyls212 да я для начала по полям, по полям ) а там видно будет ) А программирование постигает та же самая участь что и остальные отрасли - в них приходят обыватели. Посмотрите на музыку, юмор, СМИ. Сколько там сейчас бездарностей и это считается круто, но это есть развитие общества, человечество все меньше работает физически чтобы выжить и все больше уходит в область где нужно шевелить мозгами а не мускулами. Само собой все это заполонилось бездарностями и быдлом (я в том числе), но это есть обучение человечества, оно "умнеет" с каждым поколением, конечно с перекосами и порой деградацией, но у эволюции нет определенной цели, но цель есть у нас. Скорей всего из меня не выйдет выдающегося программиста, но я по крайней мере буду занят мозговой деятельностью и чем черт не шутит принесу пользу обществу, а не просто буду изо дня в день ходить на работу, получать зарплату, проедать и пропивать ее под шум телевизора и разговоров с соседями...
@andrusha1337
@andrusha1337 3 года назад
Спасибо за труд. Один вопрос : вы уверены, что можно утверждать, что гамма и бэта наравне с весами проходят процесс обучения?
@selfedu_rus
@selfedu_rus 3 года назад
Да, так написано в статьях и, к тому же, это логично. Как же еще их подобрать?
@andrusha1337
@andrusha1337 3 года назад
@@selfedu_rus акцент на слове "наравне", то что они обучаются это понятно. Я не пытаюсь вас поправить, мне самому интересно как это по факту реализовано в пакетах. Может быть поделитесь источниками?
@selfedu_rus
@selfedu_rus 3 года назад
@@andrusha1337 Вот название оригинальной статьи "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift" я опирался, в основном, на нее.
@andrusha1337
@andrusha1337 3 года назад
@@selfedu_rus Спасибо
@user-jo5pg8ss5z
@user-jo5pg8ss5z 3 года назад
@@andrusha1337 pytorch.org/docs/stable/generated/torch.nn.BatchNorm2d.html#batchnorm2d в документации фреймворка PyTorch указано, что ""γ and β are learnable parameters". т.е. эти параметры обучаемы ) Так же есть хороший Вики Конспект на эту тему - neerc.ifmo.ru/wiki/index.php?title=Batch-normalization , в нем так же указывается, что параметры γ и β обучаемы )
@Inteonmteca
@Inteonmteca 3 года назад
почему нельзя цветные авто преобразовать в черно-белые перед операцией?
@selfedu_rus
@selfedu_rus 3 года назад
Можно, только это потеря информации. Возможно, лучше распознавать именно цветные изображения, а не черно-белые.
@Inteonmteca
@Inteonmteca 3 года назад
@@selfedu_rus действительно, интересно
@svs7930
@svs7930 3 года назад
Лекции зачётные, спасибо, но микрофон убер дермище... дребезг адский
@selfedu_rus
@selfedu_rus 3 года назад
Посоветуйте микрофон. Уже третий сменил.
@svs7930
@svs7930 3 года назад
@@selfedu_rus не, тут я профан, не подскажу, но менять однозначно нужно )
@coolgood8893
@coolgood8893 3 года назад
@@selfedu_rus А вы через звуковую карту пишете? Может быть, дело в ней?
@selfedu_rus
@selfedu_rus 3 года назад
@@coolgood8893 все нормально, разобрался уже )
Далее
АСЛАН, АВИ, АНЯ
00:12
Просмотров 1,1 млн
I Built a SECRET McDonald’s In My Room!
36:00
Просмотров 9 млн
Batch Normalization - EXPLAINED!
8:49
Просмотров 102 тыс.
Batch Normalization (“batch norm”) explained
7:32
Просмотров 219 тыс.
Нейронные сети за 10 минут
9:56
Просмотров 114 тыс.
Эпохи, пакеты, итерации
9:41
АСЛАН, АВИ, АНЯ
00:12
Просмотров 1,1 млн