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

Для связи: @kraidiky
Download Telegram
Ссылка не мой доклад на ODS-овский Data Fest 2023:
https://www.youtube.com/watch?v=Npm-awHtfeM
В нём я по-немножку затрагиваю множество тем, большинство из которых не поместились в отведённые пол часа:
- Визуализация траектории обучения,
- ошибки в pytorch
- Дисперсия граджиентов и диаграмма градиентов вообще.
- Влиянеи импульса (momentum) на ход обучения нейросети.
- Размеры batch как фактор сглаживания дисперсии градиентов в всети
- дополнительный momentum для bias-ов (в нём заключается половина пользы от ).
- И другие тонкости манипулирования импульсами.
Комментарии забыл включить...
👍4
8_Влад_Голощапов_Data_Fest_Siberia_2023_Затухание_градиентов.pptx
49.9 MB
Плохо всё делать в последний момент и невыспавшимся. 😩. В презентации допущена важная ошибка, там где показано как получить медианы градиентов одной строкой я, собственно .grad забыл добавить. Правильная строчка выглядит вот так:
[(n,p.grad.view(-1)[p .grad.view(-1)!=0].abs().log10().median().item()) for n, p in model.named_parameters()]
Исправленная презентация прилагается.
👍6
Я там в презентации говорил, что точно тот же самый фокус можно проделать и с сигмоидной активацией, но в слайдах её не было. Вот вам 116 слоёв с TanH. Множитель подобрал с третьей попытки, то есть пришлось минуту повозиться. Скорость со второй попытки. Вспомнил что сеть стала толще, а активация капризнее, снизил скорость Адам-а и вуаля.
This media is not supported in your browser
VIEW IN 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