Свидетели Градиента – 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