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

Для связи: @kraidiky
Download Telegram
Подбор гиперпараметров.png
61.4 KB
На докладе я упомянул, что быстрое падение градиента при слишком большой скорости можно использовать для подбора гиперпараметров.
На картинке одна и та же толстенная нейросеть в 116 слоёв, в которой все параметры помножены на 1.8 чтобы градиент не затухал. Я учил её по 6 эпох (хватило бы и парочки) и после каждой эпохи записывал на сколько упал медианный градиент на первой матрице параметров (не абсолютное значение, которое серьёзно скачет, а именно по сравнению с прошлой эпохой), а так же как изменилось accuracy за шесть эпох обучения. Видно, что по мере снижения скорости градиент начинает рушиться всё менее стремительно, пока в какой-то момент колебания градиента не становятся сильно важнее тернда, а сеть не начинает успешно учиться. Прорыв происходит при 6.3е-06, а максимум прироста наблюдается на 1.26e-06

И это прям сильно быстрее, чем прогонять весь цикл обучения.
👍1
P.S. Примерно представляя как должна выглядеть эта картинка можно половинным делением найти правильную скорость буквально за десяток-два минут, не рисуя таких картинок по несколько часов. Но для общего понимания весьма полезно знать на что похожа эта функция, и понимать, что на скоростях выше 6.3е-06, а это сильно ниже константы Карпаты, вы не сможете отличить эту ситуацию от затухания градиента если смотреть будете только на loss
Такой необычный вопрос, а есть ли среди тех, кто подписался на этот канал кто-нибудь, кто занимается академической наукой и хочет писать научные статьи?
Я в докладе говорил, что чем глубже сеть, тем изрезаннее рельеф адаптивной функции на ней и тем, соответственно, медленнее её надо учить. Здесь на примере той же архитектуры, которую я использовал в докладе показана зависимость того как accuracy увеличивается за первые три эпохи обучения в зависимости от lr. Градиенты протащены сквозь сеть вторым методом из доклада - умноженим весов, поэтому обучение начинается сразу, первая фаза обучения целиком оказывается внутри первой эпохи.

И если сеть в 17 слоёв ещё вполне можно учить на константе Карпаты, хотя лучше брать 1e-4, то сеть в 107 слоёв нуждается уже в скоростях на полтора порядка меньших. В данном случае я ничего не говорю про скорость оптимальную для завершения обучения, там лучшими значениями могут быть совсем другие, оптимальные для достижения лучших предельных значений, но начинать определённо стоит имея в виду толщину, которую вы накрутили.
👍3🔥1
На второй диаграмме показано как градиент, который мы протащили методом умножения весов падает всего за одну эпоху обучения. Уже с 26 слоёв хорошо видна закономерность. Если ваша основная метрика по каким-то причинам не информативна на малых значениях, или, например, задача сложная и начальный период обучения затягивается, можно посмотреть на каких скоростях градиент перестаёт отпадать. Оптимальную скорость начала обучения можно искать где-то на пол порядка ниже.
👍2
Следуя принципу, что отрицательный результат - тоже результат отпишусь, пожалуй, и про неудачный эксперимент.

Есть такое логичное и в ряде случаев подтверждающееся предположение, что сгалживание рельефа зависит от степени округления, а кроме размера батча второй по доступности способ манипулировать степенью сглаживания momentum для алгоритма SGD или betas для Adam-а. И поскольку дисперсия градиента отражает характерный размер рельефа адаптивной функции была такая логичная мысль - берём и для тех параметров у которых дисперсия градиента выше, например у bias понизить её назначив им большее сглаживание в оптимизаторе. Иногда это работает. Пример был в первом докладе. Но когда я экспериментируя с подбором параметров в 26-слойной сети из последнего доклада попытался сделать то же самое, подобрать оптимальный момент сглаживания для разных слоёв по отдельности эффект получил строго нулевой - для любых моментов кроме самых маленьких и для любых размеров батча кроме самых маленьких результат одинаков.
Печалька.

Кстати, для очень маленького сглаживания, батчами по 1-2 семпла какой-то небольшой эффект наблюдался, но уж больно не оптимально идёт обучения в этом случае.
👍4
Интересно, на сколько у Хинтона всё хорошо с научной чистоплотностью. Сколько лет прошло, но когда ведущий называет его создателем метода обратного распространения, тот поправил, что они всего лишь подтвердили применимость методов, над которыми работали разные учёные к глубоким сетям. https://www.youtube.com/watch?v=EnmetgyiMic
👍4
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