L1 и L2 Регуляризации при выборе того на сколько нужно пожать вес опираются на значение этого веса, но задумывались ли вы о том, на сколько связаны вес и его влияние на результаты работы сети? Бытует интуитивное мнение, что если вес большой, то он важный, а если меленький, то не важный. На сколько это верно?
Можно напрямую посчитать истинную полезность любого веса для сети - отключить его одного и посмотреть на сколько изменится результат на всей тестовой выборке. Давайте возьмём для опытов второй полносвязанный слой классификатора классической сети AlexNet, которая обучалась без каких либо хитрых изысков регуляризации десять лет назад. Эталонно изученый во всех деталях слой. Для примера возьмём из него 4096 случайных весов, потому что чтобы прогнать тестовую выборку все 4096х4096 раз на моей домашней машине потребовалось бы пол года. Для иллюстрации нам вполне хватит.
Смотреть напрямую на accuracy, к сожалению, не информативно, обнуление никакого из весов не повлияло на классификацию более чем двух картинок из всего тестового датасета. Но мы можем посмотреть на то, как выключение веса повлияет на loss, вычисленный по всей тестовой выборке, кроссэнтропию, например. Тут вклад тоже получается копеечный, на столько что 33 из 4096 весов показали строго нулевое изменение loss - их вклад оказался меньше ошибки округления float32, но это уже вполне уверенно позволяет оценить важность каждого веса. Смотрим на первую иллюстрацию, распределение на столько нормальное, что можно сказать эталонное, вполне правдоподобные числа.
Ну и на сколько же соотносятся истинная полезность и вес? Смотрим вторую иллюстрацию. Во-первых, да, маленькие синапсы не могут быть слишком важными, но при этом большие и тяжёлые могут быть совершенно бесполезными. Как видно по третьей иллюстрации квадрат веса ничуть не лучше, и отношение полезности к весу тоже очень нормально распределено, оно может быть разным и чаще всего оно не очень хорошее.
Так что если вы видите меленький вес его вероятно можно занулить, но если вы видите относительно большой вес это ваще ничего не значит.
По его дисперсии, кстати, можно ценить степень нелинености решения, если вам для вашей интерпретации это зачем-то понадобилось.
Ну и ещё одна иллюстрация. Точно так же как мы считаем полезность для тестовой выборки мы можем посчитать её и для выборки учебной, и посмотреть как будут соотноситься полезности на трейне и тесте.
Не все 1.2M изображений конечно, я ж не миллионер, возьмём из учебной выборки случайную подвыборку такого же размера - по пятьдесят картинок каждого класса. Всего то ещё один день надо не выспаться, и картинка готова.
Если бы не корреляция в .24 можно было бы предположить, что никакой логики за этой картинкой не стоит. Но она есть.
Можно напрямую посчитать истинную полезность любого веса для сети - отключить его одного и посмотреть на сколько изменится результат на всей тестовой выборке. Давайте возьмём для опытов второй полносвязанный слой классификатора классической сети AlexNet, которая обучалась без каких либо хитрых изысков регуляризации десять лет назад. Эталонно изученый во всех деталях слой. Для примера возьмём из него 4096 случайных весов, потому что чтобы прогнать тестовую выборку все 4096х4096 раз на моей домашней машине потребовалось бы пол года. Для иллюстрации нам вполне хватит.
Смотреть напрямую на accuracy, к сожалению, не информативно, обнуление никакого из весов не повлияло на классификацию более чем двух картинок из всего тестового датасета. Но мы можем посмотреть на то, как выключение веса повлияет на loss, вычисленный по всей тестовой выборке, кроссэнтропию, например. Тут вклад тоже получается копеечный, на столько что 33 из 4096 весов показали строго нулевое изменение loss - их вклад оказался меньше ошибки округления float32, но это уже вполне уверенно позволяет оценить важность каждого веса. Смотрим на первую иллюстрацию, распределение на столько нормальное, что можно сказать эталонное, вполне правдоподобные числа.
Ну и на сколько же соотносятся истинная полезность и вес? Смотрим вторую иллюстрацию. Во-первых, да, маленькие синапсы не могут быть слишком важными, но при этом большие и тяжёлые могут быть совершенно бесполезными. Как видно по третьей иллюстрации квадрат веса ничуть не лучше, и отношение полезности к весу тоже очень нормально распределено, оно может быть разным и чаще всего оно не очень хорошее.
Так что если вы видите меленький вес его вероятно можно занулить, но если вы видите относительно большой вес это ваще ничего не значит.
По его дисперсии, кстати, можно ценить степень нелинености решения, если вам для вашей интерпретации это зачем-то понадобилось.
Ну и ещё одна иллюстрация. Точно так же как мы считаем полезность для тестовой выборки мы можем посчитать её и для выборки учебной, и посмотреть как будут соотноситься полезности на трейне и тесте.
Не все 1.2M изображений конечно, я ж не миллионер, возьмём из учебной выборки случайную подвыборку такого же размера - по пятьдесят картинок каждого класса. Всего то ещё один день надо не выспаться, и картинка готова.
Если бы не корреляция в .24 можно было бы предположить, что никакой логики за этой картинкой не стоит. Но она есть.
👍5
Хорошая идея, я полагаю, способна как философский камень, превратить нейросети в золото. Проблема в том, что пока нужное количество усилий не вложено и превращение не произошло хотя бы на тестовом примере, вы не можете сказать, что идея была хорошая. А если превращение не произошло, то даже после этого не можете быть до конца уверены, что идея плохая. Кто знает, может у вас просто пример неудачный. А фонтанировать идеями хочется гораздо-гораздо раньше
👍4😁2
Вот, например, мы знаем, что обычно чем больше лосс тем больше градиент. Это наверное удобно на начальных этапах обучения, но вот мы движемся к концу обучения, переобучение уже видно невооружённым взглядом, и вдруг нам приспичило посмотреть у каких картинок наибольший лосс, и соответственно они вносят наибольший вклад в обучение. Предсказуемо наибольший оказывается у ошибок разметки. И че? Мы точно уверены, что такое обучение идёт нам на пользу? Нет, такой лосс нам не нужен!
🔥2
Дмитрий Колодезев тут актуализировал интересный вопрос - а как в реальности выглядит распределение сигналов, поступающих на функцию активации, то есть что на самом деле с этими сигналами делает функция активации. Бешенной собаке семь вёрст не крюк, поэтому я взял AlexNet, у которого простая и понятная активация ReLU, прогнал через сеть 10000 картинок из имиджнета, по 10 картинок на класс и сохранил подающиеся на активацию логиты. Вашему вниманию предлагаются 64 из 4096 нейрона последнего фули коннектед слоя, отнормированные на стандартное отклонение, медианное значение выровненного логита и процент сигналов, который не зарезала функция активации. На второй картинке то же самое для второго свёрточного слоя примерно в середине карты активации.
Хорошо видно, что нейроны без всяких батчнормов сами обучились пропускать дальше лишь четверть и меньше сигналов, поступающих к ним на вход.
Хорошо видно, что нейроны без всяких батчнормов сами обучились пропускать дальше лишь четверть и меньше сигналов, поступающих к ним на вход.
🔥2👍1
Кстати пишите в комментах если вам в связи с этим кажется, что сеть сама себя сделала похожей на сигнальную. :)
Forwarded from Reliable ML
Митап UnReliable ML 9 декабря - очень ждем заявок на выступления!
Открытый микрофон по опыту фейлов в ML проектах
По нашей задумке - митап UnReliable ML 9 декабря очень хотелось бы сделать в формате открытого микрофона: когда пришедшие делятся своим опытом, болями и сложностями из мира ML. Рассказывают, с чем столкнулись, как преодолели (или пока нет), на какие вопросы ещё ищут ответы.
Для выступления на открытом микрофоне достаточно 1-2 слайдов о вашем опыте и о том, чем вам хотелось бы поделиться с аудиторией, какие вопросы задать. На выступление и обсуждение: 5-10 минут.
Поэтому очень ждем ваших заявок. Пишите @irina_goloshchapova и @promsoft с вашими предложениями, или сразу присылайте слайды.
Давайте сделаем крутой митап вместе!🔥
К сожалению, в случае малого количества заявок мы с Димой будем вынуждены немного поменять программу и сместить фокус с фейлов.
Ваш @Reliable ML
#reliable_ml #offline #tech #business
Открытый микрофон по опыту фейлов в ML проектах
По нашей задумке - митап UnReliable ML 9 декабря очень хотелось бы сделать в формате открытого микрофона: когда пришедшие делятся своим опытом, болями и сложностями из мира ML. Рассказывают, с чем столкнулись, как преодолели (или пока нет), на какие вопросы ещё ищут ответы.
Для выступления на открытом микрофоне достаточно 1-2 слайдов о вашем опыте и о том, чем вам хотелось бы поделиться с аудиторией, какие вопросы задать. На выступление и обсуждение: 5-10 минут.
Поэтому очень ждем ваших заявок. Пишите @irina_goloshchapova и @promsoft с вашими предложениями, или сразу присылайте слайды.
Давайте сделаем крутой митап вместе!
К сожалению, в случае малого количества заявок мы с Димой будем вынуждены немного поменять программу и сместить фокус с фейлов.
Ваш @Reliable ML
#reliable_ml #offline #tech #business
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from Reliable ML
FailConf - UnReliable ML - 9 декабря 2023
Офлайн митап про фейлы в ML проектах
Расписание на субботу готово! Всех очень ждем!
И напоминаем, что для участия необходима регистрация.
Митап ламповый, своими руками для своих, поэтому помощь в организации очень приветствуется.
Даже запись можем замутить, если с техникой на месте разберемся.
На месте будут чай и немного печенек. Для большей душевности можно приносить с собой еще печенек.
Все вопросы по митапу, фотки и движ будут в канале #reliable_ml в маттермосте ODS.
До встречи!🤗
Ваш @Reliable ML
#tech #business #reliable_ml #meetup
Офлайн митап про фейлы в ML проектах
Расписание на субботу готово! Всех очень ждем!
И напоминаем, что для участия необходима регистрация.
Митап ламповый, своими руками для своих, поэтому помощь в организации очень приветствуется.
Даже запись можем замутить, если с техникой на месте разберемся.
На месте будут чай и немного печенек. Для большей душевности можно приносить с собой еще печенек.
Все вопросы по митапу, фотки и движ будут в канале #reliable_ml в маттермосте ODS.
До встречи!
Ваш @Reliable ML
#tech #business #reliable_ml #meetup
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Daniel
🚀 Привет, ODS!
11 декабря нашему сообществу исполнился 1 год!🎉
В связи с этим мы рады пригласить вас на оффлайн митап Data NewYear, который пройдет совместно с Yandex!
📍Место: Москва, улица Льва Толстого, 16. БЦ «Морозов», Мулен-Руж
📅 Дата: 27 декабря
🕕 Время: 18:00-22:00
Что мы приготовили для вас или 5 причин прийти:
🔴 Годовой обзор: посмотрим, что произошло в индустрии и в нашем сообществе за 2023 год
🔴 Доклады: узнаем про успехи и провалы коллег по цеху
🔴 Q&A: ответим на вопросы о ML, карьере и развитии. Оставлять тут.
🔴 Data квиз: каждый сможет проверить свои знания в ML и не только
🔴 Неформальный нетворкинг: общение, новые знакомства и возможности
💡Важно! Количество мест ограничено площадкой, для регистрации на мероприятие нужно заполнить форму.
📢 Немного про доклады:
Если ты хочешь выступить, напиши в личку @danielchsh
P.S. с Дед Морозом связались - подарки будут. А вот записи и трансляции - нет. Проведем этот вечер душевно и лампово!
11 декабря нашему сообществу исполнился 1 год!🎉
В связи с этим мы рады пригласить вас на оффлайн митап Data NewYear, который пройдет совместно с Yandex!
📍Место: Москва, улица Льва Толстого, 16. БЦ «Морозов», Мулен-Руж
📅 Дата: 27 декабря
🕕 Время: 18:00-22:00
Что мы приготовили для вас или 5 причин прийти:
🔴 Годовой обзор: посмотрим, что произошло в индустрии и в нашем сообществе за 2023 год
🔴 Доклады: узнаем про успехи и провалы коллег по цеху
🔴 Q&A: ответим на вопросы о ML, карьере и развитии. Оставлять тут.
🔴 Data квиз: каждый сможет проверить свои знания в ML и не только
🔴 Неформальный нетворкинг: общение, новые знакомства и возможности
💡Важно! Количество мест ограничено площадкой, для регистрации на мероприятие нужно заполнить форму.
📢 Немного про доклады:
Если ты хочешь выступить, напиши в личку @danielchsh
P.S. с Дед Морозом связались - подарки будут. А вот записи и трансляции - нет. Проведем этот вечер душевно и лампово!
❤2
Влад_Голощапов_Data_NewYear_2024_Затухание_градиентов.pptx
66.9 MB
Презентация моего докладика на Data NewYear 2024. Для читателей канала ничего нового. Я добавил к докладу про подбор скоростей, но тут в канале я про него рассказывал гораздо подробнее.
🔥7👍6
image_2023-12-28_10-59-30.png
196.9 KB
Помните я много раз говорил, что когда вы используете всякие Densely Connected, то есть присоединяете вход слоя к его выходу прежде чем отдать результат дальше, вы смешиваете в одну кучу сигналы разной глубины с очень разными характеристиками.
Так вот вам иллюстрация. Тут 8 слоёв, каждый из которых конкатенирует свой выход к подаваемому дальше входу а в конце один финальный fully connectet слой, на который подаётся вся эта смесь. А теперь посмотрите как выглядят градиенты на диаграмме последнего слоя.
Отчётливо видны веса, работающие с каждой из восьми глубин сигнала и разница между типичными градиентами из первого слоя и последнего различаются на 15 порядков. Конечно, если напихать туда BatchNorm картина размоется, но мы же уже знаем, что оптимальная скорость в этом случае может отличаться на два-три порядка, с этим BatchNorm не в силах помочь.
Что с этим делать - решайте сами в каждом конкретном случае. Как я и говорил - быть зрячим лучше, чем просто знать ответ.
Так вот вам иллюстрация. Тут 8 слоёв, каждый из которых конкатенирует свой выход к подаваемому дальше входу а в конце один финальный fully connectet слой, на который подаётся вся эта смесь. А теперь посмотрите как выглядят градиенты на диаграмме последнего слоя.
Отчётливо видны веса, работающие с каждой из восьми глубин сигнала и разница между типичными градиентами из первого слоя и последнего различаются на 15 порядков. Конечно, если напихать туда BatchNorm картина размоется, но мы же уже знаем, что оптимальная скорость в этом случае может отличаться на два-три порядка, с этим BatchNorm не в силах помочь.
Что с этим делать - решайте сами в каждом конкретном случае. Как я и говорил - быть зрячим лучше, чем просто знать ответ.
🔥5👍2
А вы знали, что хорошо обученные нейросети коллинеарны только если квадрат градиента меньше 1e-5, и то бывают выбросы. Шутейка удачно подоспела к моему нынешнему ресёрчу. В кадре коллинеарность для весов MobileNetV3Large на тестовой выборке размером 50000 пакетная. :)
Надо будет во все мои сравнения добавить SGD с обрезкой градиентов, однако.
Надо будет во все мои сравнения добавить SGD с обрезкой градиентов, однако.
👍2❤1
А теперь развлекательный опрос!!! Берём скромного размера сеточку, например MobileNet_V3_Large.IMAGENET1K_V2 и вдумчиво, с использованием тайных алгоритмов секты Свидетелй Градиента, удаляем (обнуляем) из неё половину весов, подфайнтюнивая немножко оставшиеся, не более полутора десятков эпох, просто чтобы не разваливалась раньше времени. В процессе файнтюнинга обнулённые веса остаются обнулёнными, не обучаются.
Внимание вопрос, какая accuracy останется у этого Тириона Мобайловича? Правильный ответ с парочкой иллюстрирующих графиков завтра.
Anonymous Poll
65%
75.274%, если файнтюнить сеть не пострадает.
19%
50% Как с динозавром, либо угадает, либо не угадает.
6%
37.637% От точности сети останется ровно половина.
6%
25% Сеть станет всего лишь полусетью от полусети.
0%
10% В 100 раз лучше чем угадывать на кубиках, но в практическом смысле это смерть.
0%
1% Всё ещё в 10 раз лучше чем случайное угадывание класса.
3%
0.1% Сеть будет полностью разрушена травмой не совместимой с жизнью.