Свидетели Градиента – Telegram
Свидетели Градиента
488 subscribers
128 photos
29 files
61 links
Этот канал предназначен для общения и обсуждений среди тех, кто как и я, хочет видеть что происходит под капотом у нейросетей, и старается развивать интуицию об их природе и свойствах.

Для связи: @kraidiky
Download Telegram
L1 и L2 Регуляризации при выборе того на сколько нужно пожать вес опираются на значение этого веса, но задумывались ли вы о том, на сколько связаны вес и его влияние на результаты работы сети? Бытует интуитивное мнение, что если вес большой, то он важный, а если меленький, то не важный. На сколько это верно?

Можно напрямую посчитать истинную полезность любого веса для сети - отключить его одного и посмотреть на сколько изменится результат на всей тестовой выборке. Давайте возьмём для опытов второй полносвязанный слой классификатора классической сети 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
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
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. с Дед Морозом связались - подарки будут. А вот записи и трансляции - нет. Проведем этот вечер душевно и лампово!
2
Forwarded from Daniel
Программа Data NewYear 2024.pdf
729.3 KB
Полное расписание митапа
🔥1
Влад_Голощапов_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 не в силах помочь.
Что с этим делать - решайте сами в каждом конкретном случае. Как я и говорил - быть зрячим лучше, чем просто знать ответ.
🔥5👍2
Всех с новым годом! Желаю решений нерешенного, тяги к особенному и чтобы вас ценили.
6🎄2👍1🔥1🎉1
А вы знали, что хорошо обученные нейросети коллинеарны только если квадрат градиента меньше 1e-5, и то бывают выбросы. Шутейка удачно подоспела к моему нынешнему ресёрчу. В кадре коллинеарность для весов MobileNetV3Large на тестовой выборке размером 50000 пакетная. :)
Надо будет во все мои сравнения добавить SGD с обрезкой градиентов, однако.
👍21
А теперь развлекательный опрос!!! Берём скромного размера сеточку, например MobileNet_V3_Large.IMAGENET1K_V2 и вдумчиво, с использованием тайных алгоритмов секты Свидетелй Градиента, удаляем (обнуляем) из неё половину весов, подфайнтюнивая немножко оставшиеся, не более полутора десятков эпох, просто чтобы не разваливалась раньше времени. В процессе файнтюнинга обнулённые веса остаются обнулёнными, не обучаются.
Вчера не выслал ответ. День был тяжеловатый.

Итак по результатам опроса меня немножко пугает ваша вера в всемогущество всемогущих алгоритмов. Действительно при обрезании части весов - прунинге в старых больших сетях часто можно получить подсеть более эффективную чем изначальная сеть. Можно погуглить, а можно бегло почитать вот этот очень неплохой обзор: https://habr.com/ru/articles/575520/, обязательно позову его автора на свой следующий доклад. Но с современными маленькими и очень сильно зарегуляризованными сетями такой фокус редко проканывает.
В частности в одной из таблиц в статье можно видеть, что если сильно доучивать, то даже MobileNetV2 которому отломали половину, можно доучить до уровня всего на 1% от ниже изначального, но равным или лучшим изначальному мобайлнет сделать не получается.

Но я то специально подчеркнул, что доучиваем мы совсем чуть-чуть, только чтобы сеть не разваливалась раньше времени. То есть смысл был не в том, чтобы узнать, чего можно добиться от подсети, а в том, как распределены знания по готовой обученной сети. Вот это я, видимо, недостаточно объяснил. А теперь ответ:

50% - Половина мобайлнета содержит примерно 2/3 его способностей к распознованию.
Обратите внимание на то, как велико самоподобие в графике. Распределение знаний внутри нейросети, если она хорошо обучена почти всегда не случайное и почти всегда экспоненциальное, кроме самых первых и самых последних весов.

По оси X количество отрезанных весов, а по оси Y accuracy того что осталось. Целая сеть содержит 5.5M, соответвенно половина сети это 2.25 миллиона

Следующий мой доклад будет интересным.
👍5🔥1