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

  Рет қаралды 29,167

selfedu

selfedu

Күн бұрын

Пікірлер: 80
@gobals8925
@gobals8925 2 жыл бұрын
Кажется я понял почему под вашими видео не так много лайков, как они того заслуживают - люди так хотят увидеть очередное прекрасное изложение материала, что спешат смотреть следующее видео! ))
@Тима-щ2ю
@Тима-щ2ю 9 ай бұрын
Большое спасибо за ваше видео. Прочитал статью, плохо понял метод, но после видео, стало намного понятнее.
@antonevdokimov8218
@antonevdokimov8218 3 жыл бұрын
Всё невероятно понятно и чётко! Благодарю за прекрасные уроки! 🔥🔥🔥🔥🔥🔥🔥🔥🔥
@cantwaitforit
@cantwaitforit Жыл бұрын
Балдеж, автору респект!
@rustemalimtay3052
@rustemalimtay3052 4 жыл бұрын
Огромное спасибо за материал
@86Blind
@86Blind 3 жыл бұрын
Какой идиот поставил дизлайк. Это самое лучшие и подробное объяснение которое я слышал. Спасибо
@VenatoresnamIgnotis
@VenatoresnamIgnotis 3 жыл бұрын
4 Человека которые не смотрели видео судя по всему
@malygin_anton
@malygin_anton 3 жыл бұрын
спасибо вам большое за ваши уроки
@СарматПересветов
@СарматПересветов 2 ай бұрын
Спасибо за урок, более менее разобрался, но всеже, я правильно понимаю что данный алгоритм будет актуален в том случае если у нас в обучающей выборке будет преобладать количество обьектов одного вида на другим, например если по аналогии с машинами, если черных машин в выборке будет гораздо больше чем например красных??? Потому что в принцыпе, если мы БАТЧИ будем формировать на каждой эпохе случайным образом, то в среднем они будут содержать одинаковое колличество обьектов одного вида, и не понятно каким образом в таком случае нормализация поможет. Также мне кажется что BatchNormalization не подходит под функцию активации ReLu, так как при нормализации к математическому ожиданию = 0, мы некоторые данные которые изначально были равны положительному числу, сделаем равными отрицательному (так как мы будем вычитать из v_k значение мат ожидания), а функция ReLu зануляет отрицательные значения, и в результате у нас получится потеря информативности. но это только мое предположение.
@dmitrymitrofanov3920
@dmitrymitrofanov3920 4 жыл бұрын
not stopping man
@alexandercherkashin3512
@alexandercherkashin3512 Жыл бұрын
Вопрос: почему на 7:46 вы говорите что плохо, что теряется нелинейность, но при этом мы используем по сути линейную функцию активации ReLu? Получается, что ReLu плохо использовать?
@Тима-щ2ю
@Тима-щ2ю 9 ай бұрын
главная ошибка - считать ReLu линейной функцией активации, почитайте stackoverflow, там много дискурсов на эту тему.
@КоляВасильев-о5и
@КоляВасильев-о5и 3 жыл бұрын
Спасибо за урок! Я сделал некоторые выводы и интересно ваше мнение. Прежде всего хочу убедиться, правильно ли я понял урок. В начале урока вы сказали, что этот алгоритм был предложен для решения проблемы ускорения обучения. Кажется я понял в чем состоит это ускорение и интересно ваше мнение. Мы по сути для значений на выходах нейронов производим z-стандартизацию, и тем самым каждый выход на нейроне интерпретируем как то, на сколько стандартных отклонений от среднего это значение отстоит и это дает более-менее похожие значения выходных значений нейронов, даже если данные в батчах сильно отличаются (например, в одном батче только цветные машины, а в другом только черные) и было замечено, что таким образом ускоряется обучение. Интересно, за счет чего? Есть у меня мнение на этот счет, и хочу знать, что вы думаете мо этому поводу. Если мы стандартизируем наши данные, то в большинстве случаев они будут иметь значение в диапазоне от 1 до 3 (т.к большинство значений в нормальном распределении находятся на 1-3 стандартных отклонения от среднего), а производная такой функции активации как например sigmoid, в точках из диапазона [1;3] выглядят очень даже неплохо т.е значения производной в точках из этого диапазона такие что обучение вряд ли будет заторможено. Если же не выполнять стандартизацию, то входы функций активации могут быть значительно большими, в результате чего производные в этих точках будут очень малы и тем самым обучение может быть заторможено.
@AxwelHD
@AxwelHD 3 жыл бұрын
А ты харош, интересно было прочесть. Я даже и не задумался об этом
@aleximtb
@aleximtb 2 жыл бұрын
Комментарий того "читателя", про которых обычно во всяких учебниках пишут "внимательный читатель конечно отметит и спросит..." - а ты такой читаешь и думаешь "эээ...ну да, ну ладно, хорошо, идем дальше " :)
@paulkarkarin466
@paulkarkarin466 2 жыл бұрын
В 8 уроке по распознаванию изображения цифр я не нормализовал данные. На выходе получалась точность около 20% и выскоий средний квадрат отклонений. Вставил batch-нормализацию через каждый слой (у меня было 3 слоя). Результаты выросли до 97% точности и 0.02 среднего квадрата. Потом нормализовал данные, делением массивов на 255 и особо ничего не поменялось. Заменяет ли батч-нормализация предварительную нормализацию данных? А там ещё есть послойная нормализация layers. Вопросов много, реальных ответов только три...
@Harimaauu
@Harimaauu 2 жыл бұрын
Да, batch-нормализация действительно нормализует данные, поэтому можно её использовать в качестве первого слоя, чтобы не заниматься нормализацией вручную, хотя тестовую и оценочные выборки всё равно придётся нормализовать самостоятельно)
@andreyprometey
@andreyprometey 4 жыл бұрын
Лайк, очень доступно объясняете
@АлександрПетровский-я7б
@АлександрПетровский-я7б Жыл бұрын
Непонятно, каждый одинаковый пиксел всех изображений минибатча подвергается нормализации независимо, или сначала рассчитываются плотности распределения яркостей каждого изображения, а потом производится нормализация между изображениями, уравнивая их плотности распределения в пределах минибатча? В первом случае изображения внутри минибатча могут существенно искажаться!
@ДмитрийВасильев-ж1е4ь
@ДмитрийВасильев-ж1е4ь 4 жыл бұрын
Почему следующие видео закрыты? Как получить доступ? Еще не готовы?
@selfedu_rus
@selfedu_rus 4 жыл бұрын
Я их специально открываю с задержкой, чтобы основная масса успевала просмотреть предыдущий материал. Иначе число просмотров резко проседает )
@ДенисАгапитов-э6у
@ДенисАгапитов-э6у 3 жыл бұрын
А как мы выполняем batch normalization для нейрона перед ф-ией активации, если для этого нам нужно знать V - вектор, состоящий из входных значений всего батча для данного нейрона? Если я правильно понял, то V мы можем узнать, когда пропустим все входные вектора из батча через нейронную сеть
@selfedu_rus
@selfedu_rus 3 жыл бұрын
По идее да, здесь нужно почитать внимательно документацию по Keras и посмотреть, как это правильно сделать.
@ДенисАгапитов-э6у
@ДенисАгапитов-э6у 3 жыл бұрын
@@selfedu_rus Понял, посмотрю, какую они заумную реализацию придумали)
@madmarshal7708
@madmarshal7708 Жыл бұрын
У меня вопрос. Батч-нормализация может применяться к любым слоям (как внутренних, так и выходных) или только к выходным? Update Посмотрел в статьях с кодом. Да, можно, на любых слоях, в т.ч. и выходом.
@Aleksandr___
@Aleksandr___ 4 жыл бұрын
добрый день, а планируется ли такой же курс, как по питону, только про Go?
@selfedu_rus
@selfedu_rus 4 жыл бұрын
здравствуйте, пока незнаю...
@Aleksandr___
@Aleksandr___ 4 жыл бұрын
@@selfedu_rus в любом случае спасибо вам за ваши труды, обучаться по вашим видео - одно удовольствие, начал с основ пайтона, затем основы ооп, теория вероятностей, алгоритмы, нейронки
@dryadliker
@dryadliker 3 ай бұрын
А чтобы использовать batchnormalization перед слоем, что нужно делать?
@selfedu_rus
@selfedu_rus 3 ай бұрын
прописать его на выходе предыдущего слоя
@dryadliker
@dryadliker 3 ай бұрын
@@selfedu_rus спасибо
@bysedova
@bysedova Жыл бұрын
Боже, спасибо, что все понятно. А то читаешь эти статьи и тонешь в непонятном материале...
@ValstanSav
@ValstanSav 4 жыл бұрын
Поехали уже кодить свою первую сеть! ) Теория , это конечно хорошо, но практика лучше, а теорией можно капельно промаслить саму практику. А еще лучше по новой сети на каждом уроке, тогда мы на множестве примеров быстрее вникнем в суть и начнем писать свои нейросети, делая ошибки и находя варианты решений. А то от теории уже голова пухнет, а сесть и начать свою первую сеть так и не получается ...))) Спасибо за разжевывание всех нюансов, если и практику будут также разжевывать, то это будет очень и очень здорово.
@selfedu_rus
@selfedu_rus 4 жыл бұрын
Скоро будет и практика и много разной! Это обучающий курс, поэтому здесь нужны все базовые нюансы, далее они будут активно использоваться.
@ValstanSav
@ValstanSav 4 жыл бұрын
@@selfedu_rus Ура! Рассказываю почему я вроде как "тороплюсь". "Программирую" в свое удовольствие с 1998 года, еще с бейсика и ассемблера начинал на Синклере. Потом забросил, иногда писал на html и php сайты. Недавно нужно было для одного проекта изучить Питон, перечитал кучу книжек, сайтов, ну так поверхностно, вроде и с примерами, но дело почти не продвигалось. Потом надо стало написать парсер новостей, нашел видеоурок Мурренгана, в котором просто был пример работы с API Вконтакте, пример рабочего скрипта на питоне, без воды, но с объяснением каждой строчки кода зачем это надо. Я просто повторил, и потом с помощью гугла начал добавлять в код модули и буквально начал "кодить" на питоне за месяц, хотя до этого полгода не мог сдвинуться с места. Теперь стала нужда в ИИ, да и просто интересно было это освоить, потому как давно хотел сам подобное написать, а потом узнал что ИИ давно уже людьми написан и нефик изобретать велосипед. Полгода штудирую сайты, видосы, но както все, то тут непонятно с чего начать, то тут непонятно как все запихнуть и что выбрать. Попал недавно на ваш канал и офигел насколько тут все разжевано для нас "чайников". Спасибо вам огромное. Простоу меня уже "терпелка" заканчивается, хочется такого же примера для ИИ как было для АПИ Контакта, чтобы я уже от него оттолкнулся и поплыл дальше )
@nebosyls212
@nebosyls212 4 жыл бұрын
Обучение без теории это что сесть за руль автомобиля не зная как он устроен и правил дорожнего движения.
@ValstanSav
@ValstanSav 4 жыл бұрын
@@nebosyls212 да я для начала по полям, по полям ) а там видно будет ) А программирование постигает та же самая участь что и остальные отрасли - в них приходят обыватели. Посмотрите на музыку, юмор, СМИ. Сколько там сейчас бездарностей и это считается круто, но это есть развитие общества, человечество все меньше работает физически чтобы выжить и все больше уходит в область где нужно шевелить мозгами а не мускулами. Само собой все это заполонилось бездарностями и быдлом (я в том числе), но это есть обучение человечества, оно "умнеет" с каждым поколением, конечно с перекосами и порой деградацией, но у эволюции нет определенной цели, но цель есть у нас. Скорей всего из меня не выйдет выдающегося программиста, но я по крайней мере буду занят мозговой деятельностью и чем черт не шутит принесу пользу обществу, а не просто буду изо дня в день ходить на работу, получать зарплату, проедать и пропивать ее под шум телевизора и разговоров с соседями...
@frolomaskor
@frolomaskor 2 жыл бұрын
Сергей, подскажите как можно нормализовать данные цены биткоина при построении RNN?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
без понятия, тут нужно экспериментировать
@frolomaskor
@frolomaskor 2 жыл бұрын
@@selfedu_rus Я вот подумал, а надо ли их вообще нормализовывать? Ведь нормализация необходима, чтоб данные не попадали в область насыщения функции активации. Но есть мы будем брать в качестве функции не сигмоиду, а линейную, то, получается, проблема решена? Как считаете? Да, и ещё хочу отдельно Вас поблагодарить, что Вы уделяете внимание вопросам подписчиков, помогаете разобраться с различными вопросами. Спасибо!
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Спасибо! В целом, да, вы все верно понимаете (на мой взгляд). Только просто линейную брать нехорошо, т.к. смысл нейросети тогда теряется, т.к. композиция линейных нейронов = одному линейному нейрону )) Лучше взять ReLU или ELU, а на выходе да, можно линейную поставить. Успехов!
@Inteonmteca
@Inteonmteca 3 жыл бұрын
почему нельзя цветные авто преобразовать в черно-белые перед операцией?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Можно, только это потеря информации. Возможно, лучше распознавать именно цветные изображения, а не черно-белые.
@Inteonmteca
@Inteonmteca 3 жыл бұрын
@@selfedu_rus действительно, интересно
@sergeiku2839
@sergeiku2839 4 жыл бұрын
имеет ли смысл делать несколько таких слоев в одной модели?
@selfedu_rus
@selfedu_rus 4 жыл бұрын
да, у каждого слоя Dense (или другого) можно ставить один Batch Normalization
@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 Спасибо
@АнтонШиряев-ш2ю
@АнтонШиряев-ш2ю 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 , в нем так же указывается, что параметры γ и β обучаемы )
@pages777
@pages777 2 ай бұрын
10102024
@svs7930
@svs7930 4 жыл бұрын
Лекции зачётные, спасибо, но микрофон убер дермище... дребезг адский
@selfedu_rus
@selfedu_rus 4 жыл бұрын
Посоветуйте микрофон. Уже третий сменил.
@svs7930
@svs7930 4 жыл бұрын
@@selfedu_rus не, тут я профан, не подскажу, но менять однозначно нужно )
@coolgood8893
@coolgood8893 4 жыл бұрын
@@selfedu_rus А вы через звуковую карту пишете? Может быть, дело в ней?
@selfedu_rus
@selfedu_rus 4 жыл бұрын
@@coolgood8893 все нормально, разобрался уже )
-5+3은 뭔가요? 📚 #shorts
0:19
5 분 Tricks
Рет қаралды 13 МЛН
Thank you mommy 😊💝 #shorts
0:24
5-Minute Crafts HOUSE
Рет қаралды 33 МЛН
Создаём мозг для "змейки". Часть1.
11:22
foo52ru ТехноШаман
Рет қаралды 273 М.
Делаю нейросеть с нуля
17:17
Onigiri
Рет қаралды 1,5 МЛН
Самое простое объяснение нейросети
16:30
Программный Кот
Рет қаралды 134 М.
[DeepLearning | видео 1] Что же такое нейронная сеть?
19:00
3Blue1Brown translated by Sciberia
Рет қаралды 815 М.
The Wrong Batch Size Will Ruin Your Model
7:04
Underfitted
Рет қаралды 19 М.