Your trial period has ended!
For full access to functionality, please pay for a premium subscription
GR
Свидетели Градиента
https://t.me/gradientwitnesses
Channel age
Created
Language
Russian
-
ER (week)
12.2%
ERR (week)

Этот канал предназначен для общения и обсуждений среди тех, кто как и я, хочет видеть что происходит под капотом у нейросетей, и старается развивать интуицию об их природе и свойствах. Для связи: @kraidiky

Messages Statistics
Reposts and citations
Publication networks
Satellites
Contacts
History
Top categories
Main categories of messages will appear here.
Top mentions
The most frequent mentions of people, organizations and places appear here.
Found 34 results
#исследования Что, если нейросети научатся не просто обучаться, а эволюционировать — добавлять себе новые нейроны, забывать старое, адаптировать свою структуру под задачи?

Авторы статьи «Neuroplasticity in Artificial Intelligence — An Overview and Inspirations on Drop In & Out Learning» предлагают переосмыслить архитектуру нейросетей, вдохновляясь нейропластичностью мозга.

Современные нейросети, включая LLM, имеют статичную структуру: количество и соединения нейронов фиксированы. Однако в мозге нейроны могут появляться (нейрогенез), погибать (апоптоз) и самое главное — перестраивать связи (нейропластичность).

Авторы предлагают комплексно перенести эти процессы в ИИ, чтобы модели могли динамически адаптироваться к новым задачам и данным.

Dropout — давно известная техника, в рамках которой отдельные нейроны отключаются во время обучения.

Dropin — подход, при котором в сеть вводятся новые нейроны, имитируя нейрогенез. Это позволяет модели расширять свои возможности по мере необходимости.

Таким образом, сеть может не только «забывать» ненужное, но и учиться новому, подобно мозгу. Менять размер своей архитектуры, оптимизируя объем памяти и вычислений.

В статье авторы также проанализировали другие публикации последних лет, в которых использовались сходные принципы.

Upd: Один из подписчиков поделился записью доклада «Нейросети с адаптивно обучаемой архитектурой через выращивание новых синапсов», который он делал на Data Fest 2024.
04/23/2025, 13:51
t.me/gradientwitnesses/207
Мозг расклинило. Многомерность не мешает тому, что все эти события происходят в простом трёхмерном многообразии, и наименьший угол третьего вектора к первым двум лежит в плоскости проходящей через третий вектор и его проекцию на плоскость образованную первыми двумя, и он реально малюсенький. За помощь спасибо: @foobar765, @YarHammer, @vetalnn
04/14/2025, 12:52
t.me/gradientwitnesses/206
Мой мозг сломался об очень многомерную геометрию, и теперь мне была бы полезна помощь кого-нибудь, для кого геометрия миллионмерного пространства не на столько контрингтуитивна. Возможно тут такие есть. Суть в следующем:

Даны три длиннющих вектора не слишком отличающиеся друг от друга. Это градиенты посчитанные для нейросети на разных шагах. Косинусный угол между первым и вторым векторами 9 градусов. Между вторым и третьим - тоже 9 градусов. А между первым и третьим чуть меньше 18 градусов. Я предположил, как мне казалось, очень логично, что это означает, что первый поворот и второй поворот происходят в почти одной плоскости. Однако потом я попыталсля посчитать сколько это "почти". Я взял 3-плоскость заданную первым и вторым векторами. и первый ортогонализовал ко второму, как нас учат товарищи Грамм и Шмидт. А потом я взял вторую 3-плоскость, образованную векторами 2 и 3, и ортогонализовал 3-ий вектор ко второму. Таким образом у меня есть две плоскости, по моему первому предположению очень близкие, определённые через вектор 2, и ортогонализованный 1 и ортогонализаванный 3. Вернее я взял минус его, чтобы в ту же сторону смотрел. И вот опираясь на предположение, что плоскости очень близкие я предположил, что могу узнать что-то типа наименьшего угла между ними если посмотрю угол между векторами o1 b o3 - то есть ортогонализованные 1 и 3, смотрю я косинусный угол между ними, а он, внезапно 19 градусов, или даже 24.4540 для тройки векторов с взаимными углами 9.7593, 9.8875, 19.1968

И вот теперь вопрос, эти плоскости реально так сильно друг от друга отличаются, или я просто неправильно понимаю как узнать минимальный угол между ними? Потому что если смотреть на некоторые свойства, то они вроде как в почти одной плоскости, а если на другие, то кажется как будто и нет. :(

UPD: Мозг расклинило. За помощь спасибо: @foobar765, @YarHammer, @vetalnn
04/13/2025, 19:55
t.me/gradientwitnesses/205
Минутка прикладного применения. Ошибка думать, что гроккинг может только быть или не быть, он может быть чуть-чуть.
Если у вас сложная задачка, которая плохо решается и у вас не ограничен вычислительный бюджет, иногда можно вымутить немного дополнительной точности простым приёмом:
1) Увеличиваем размер сетки в два-три раза.
2) Разбиваем обучение на два этапа первоначальный и второй. Этого можно не делать, но при экстремально больших weight_decay первоначальный этап обучения может портиться.
3) На втором этапе стараемся уменьшить дисперсию градиента, потому что гроккинг разрушается дисперсией. Для этого увеличиваем размеры батча, и/или увеличиваем моментумы, например AdamW ставим betas=(0.99, 9.57). Тут тоже можно переборщить. Интересно, что слишком большое сглаживание на первом этапе тоже может вредить, тут только чуйка и эксперименты.
4) Проверяем, что переобучение с выбранными вами параметрами идёт и сеть не разрушается.
5) Выкручиваем weight_decay в очень большие значения. Например 0.5 Если сеть обучается можно увеличить. Вам нужно значение раза в два меньше того при котором сеть разрушается. Тоже с lr Его можно увеличивать, но как минимум пол порядка надо оставить до той скорости на которой lr сеть развалит.
6) Нам пофигу на переобучение на train, пусть хоть в 100% упирается, смотрим только на validation. В таком режиме val тоже может сначала расти, а потом начать падать по мере деградации сети, так что возможно нужно будет выбрать момент чтобы остановиться. Но в общем играемся параметрами.
7) Profit. Или нифигашечки, тут уж как повезёт. Я на одной чисто научной задаче таким способом себе целый процент вымутил.
8) Рано или поздно опубликую угловую меру генерализации, по которой за этим процессом можно следить, но можно и без неё - на ощупь.
04/05/2025, 09:42
t.me/gradientwitnesses/204
Причём существует два вида гроккинга, теперь я их называю гроккинг или обобщение первого и второго типа, и второй, тот который происходит когда сеть пытается выразить решение через наименьшее количество активных весов, является имманентным, присутствующим по построению свойством сетей с обучаемым коннектомом, просто потому что удаление всего (в разумных пределах), что можно удалить, одна из составных частей их алгоритма.
Собственно вот это, пример чего я приводил, это как раз он - гроккинг второго типа: https://t.me/GradientWitnesses/192
04/01/2025, 10:40
t.me/gradientwitnesses/203
Data Fest 2025 - Call for Papers
Созываю доклады для любителей необычного на весенний датафест.

Секция DL Фронтир (гроккинг, прунинг, дистиляция, академия, и т.п...) для всех любителей копать глубже и узнавать сокровенные тайны глубокого обучения.
Ожидаются такие доклады как:
- "Локальных минимумов не существует, как на самом деле выглядит типичный ландшафт лосс функции"
- Воркшоп: "Поведение разных оптимизаторов на более реалистичной модельной задаче"
- "Гроккинг это такая дистиляция"
- "Прунинг это тоже своего рода гроккинг"

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

Свои идеи выступлений можно обсудить со мной, или сразу заявить доклад в официальную форму датафеста. Анонс можно и нужно распространять и показывать необычным людям, которых вы знаете лично.

Ваши "Свидетели Градиента"
03/31/2025, 12:33
t.me/gradientwitnesses/202
https://music.yandex.ru/album/35071153/track/135391083

Проклятье почти решённой задачи...

Вот допустим взялись вы за какаую-то задачу, и накопилп огромное количество инормации о ней, и уже почти решили. Стали бы вы публиковать свои промежуточные результаты, если вам не нужно по гранту отчитываться? Воможно, найдётся кто-то умный, кто вас послушает и сделает последний шаг лучше, чем вы,и это будет страшно полезно не только для него, но и для науки...

Допустим вы не стали, и продолжили работать над задачей, и задача не решилась, но теперь вы знаете о неё на много больше, без вопросов хватит на статью причём на топовой конфе. И осталось только попробовать ещё один нетривиальный эксперимент. А теперь стали бы?

Допустим опять не стали, перефигачили обучение, и теперь оно очень необычное, убедились что догадки о природе явления были если не исчерпывающими, то буквально правильными, потому что вы их проверили их другим способом, и вы даже запустили тот странноватый оптимизатор, который пришёл к вам в голову недавно. Теперь вы знаете о явление такое о чём никто не догадывается, и можете легко в два примера разбить аргументацию тех, кто публикуется с нашумевшими статьями а эту тему. И единственная проблема, что этот оптимизатор не дал того результата, который можно применять. Теперь вы знаете в деталях ещё один аспект явления, буквально видите как вектора разворачиваются в сторону решения, и в пазле не зватает только последнего, вероятно, самого ваэжного кусочка после которого можно будет прям получить сияюший результат.
Уже пора публиковаться или постараться последний шажок...

Звучит как мечта истинного естествоиспытателя и первопроходца. Вероятно что-то такое чувствовал Ньютон, который вынул из стола готовую работу по диференциальному исчислению только когда у него спросили ответ на конкретный вропрос, для которого она была нужна. Или как Ермак Тимофеевич.

Почему я назвал это проклатием? А кто вам сказал, что шаг последний? Статистика и опыт шепчут: "чуваки, ты ищешь северо-западный проход, и это не эвфимизм, а историческая аналогия".

Вот такое у меня для вас объяснение к этой песне если вы вдруг сами Сибири не покоряли, саблями не махали и понимаете о чём она не до конца.
03/25/2025, 13:00
t.me/gradientwitnesses/199
03/21/2025, 17:53
t.me/gradientwitnesses/197
03/21/2025, 17:53
t.me/gradientwitnesses/196
Возьмём самые пострадавшие от прунинга слои и скажем, что прунить их нужно гораздо слабее, а восстанавливать гораздо сильнее (их градиент будет считаться в 100 раз большим). Ну и что можно сказать. Выпрунить удалось на много на много меньше, и первый слой удалось зажать всего только до 321 против 473 в первом эксперименте. То есть выдавить рассчёты из первого слоя таким способом не удалось. И даже если настроить первому слою обучение в десять раз медленнее, и запретить батчнормы прунить (чтобы не приводить к преждевременному отмиранию нейронов) переместить рассчёты из первого слоя в более поздние не удаётся. Видимо у них там гнездо.
03/21/2025, 17:53
t.me/gradientwitnesses/198
03/21/2025, 17:45
t.me/gradientwitnesses/193
Мы знаем, что иногда прунинг может достигать результатов похожих на прунинг. В этом примере я беру такую же сеть, только чуть побольше и при нулевом weight_decay начинаю её прунить. Результат не такой красивый, но всё-таки интересный.
03/21/2025, 17:45
t.me/gradientwitnesses/194
03/21/2025, 17:45
t.me/gradientwitnesses/192
03/21/2025, 17:41
t.me/gradientwitnesses/190
Ну что ж, отрицательными результатами тоже надо иногда делиться. Итак берём ту же задачку гроккинга, что и в прошлых двух докладах, Берём модельку минимального допустимого размера (ембединг 96), грокаем и начинаем жестоко прунить. Остаётся всего 3800 весов, что кажется новый рекорд, хотя в этом деле ещё есть куда расти. Видно, что работа сосредоточилась в первой половине первого селфатеншена и трёх заключительных полносвязанных слоях.

Однако тут возможны две трактовки. С одной стороны сосредоточение работы в первых слоях может быть фундаментальным свойством гроккинга, с другой, у первых и последний слоёв просто всегда выше градиент в силу чисто математических причин. Попробуем проверить может ли прунинг заставить перенести расссчёты в более поздние слои.
03/21/2025, 17:41
t.me/gradientwitnesses/191
03/21/2025, 17:41
t.me/gradientwitnesses/189
Пример того как это выглядит для реального резнета на малюсеньком участочке.
03/13/2025, 14:10
t.me/gradientwitnesses/185
03/13/2025, 13:57
t.me/gradientwitnesses/183
В контексте нейросетей нужно рассматривать сходимость и прекрасность методов не на выпуклой функции, а на совершенно другой, которая когда-нибудь станет эталонной...

Смотрю очередную лекцию Дани Меркулова(@bratishk). Как обычно очень энергично и весело, хоть и понятно только в общих чертах, я столько математики за один раз с университетской скамьи не видел. Понял с какой стороны к методам с импульсом пришли в прошлый раз, и то что я заходя со стороны дисперсии градиентов, зашёл с совершенно другой стороны, и в этом есть математическая красота и прикосновение к законам мироздания, что пришли мы в итоге в одно и то же место.

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

И так, как на мой взгляд (не полный) выглядит поверхность Loss функции для достаточно параметризованной модели подходящей архитектуры, и как, соответственно, должна выглядеть эталонная функция для сравнения методов обучения:

1) У неё нет локальных минимумов. (В любой точке кроме глобального минимума есть направление снижения loss или направление где loss в окрестностях вычислительной ошибки от нуля).
2) Её рельеф в каждой точке это каньон, сравнительно узкий и поворачивающийся под углом. Если брать не двумерную задачу, то и плоскость поворота тоже постепенно меняется.
3) Радиус кривизны поворота в среднем (но неравномерно) растёт по мере приближения к глобальному минимуму, так что при любой наперёд заданной скорости найдётся место, где алгортм в поворот уже не вписывается.
4) Ширина каньона в среднем сужается. (эмпирическая вторая производная в наилучшем направлени перпендикулярном направлению каньона).
5) В каньоне возможны развилки и тупики.
6) Расстояние "по дну" до глобального мимнимума не в разы, и даже не на порядок, а на много порядков превосходит расстояние до него по прямой.
8) Выйдя из каньона на небольшое расстояние а любую сторону градиентным спуском можно найти соседний каньон, часто лучше прежнего. (Как меняется расстояние до соседнего каньона в зависимости от расстояния случайного отступа от дня текущего предстоит ещё эмпирически изучить, Также как вероятность того, что новый каньон будет как минимум не хуже прежнего.

Очевидно, что функции которые хороши в сходимости на красивом рельефе или даже тупо выпуклом совершенно не обязятельно хороши на рельефе описанном выше. В частности очевидно почему нормальный градиентный спуск на градиенте собираемом на всём учебном датасете хуже любого метода иногда двигающегося тем или иным способом не по градиенту.

Это должно быть похоже на что-то вроде того, что на картинке. Ну и ещё глобальны минимум надо из точки (0,0) сдвинуть чтобы регуляризация тянула мимо глобального минимума.

P.S. Збыл добавить множитель, который будет делать каньоны более широкими вдалеке от глобального минимума, но это и самостоятельно не сложно.
03/13/2025, 13:57
t.me/gradientwitnesses/184
03/13/2025, 13:57
t.me/gradientwitnesses/182
03/10/2025, 00:17
t.me/gradientwitnesses/179
Есть у меня придуманная ещё в древнем 2015-ом году регуляризация, предназначенная для облегчения прунинга. Врубил её вместо обычной. Гроккинг получил в четыре раза медленнее, чем при обычной и тупой.

В процессе моя регуляризация ненавязчиво обнулила пол сети, Что, с одной стороны, явно недостаточно для обобщения через прунинг, а с другой намекает, на то что дистиляция работы в более меленькую модель, возможно, не является главной в процессе гроккинга.

+1 результат хоть и не отрицательный, но не так чтобы особо положительный.
03/10/2025, 00:17
t.me/gradientwitnesses/180
02/27/2025, 08:27
t.me/gradientwitnesses/177
Это фиаско....

Есть две метрики, которые уменьшаются при гроккинге вообще и если weight_decay давит на сеть в частности, логически связанные друг с другом и прямо вытекающие из моей теории о том, что такое гроккинг. Одна из них меняется для обычной сети в районе 60-70, а при гроккинге падает до не больше 20. Другая, на картинке, совершенно иная по построению, зависящая от специфики сети, в отличии от прошлой, хитронормированной, при гроккинге снижается до 0.15, а без wd растёт куда-то в область 0.5 для данной конкретной сети.

Обе метрики, если хорошо подумать и много повозиться - дифференциируемы, так что можно попытаться их напрямую оптимизировать. Даже если отключить wd и оптимизировать только вторую метрику, можно увидеть как чуть-чуть снижается и первая (на третьей картинке). Но при этом попытка напрямую эти характеристики оптимизировать и близко не подводят их к значениям, характерным для гроккинга, и достигаемым при включении wd. причём оптимизация проваливается в обоих случаях из-за дестабилизации сети, которая и при гроккинге со включённым wd тоже происходит.

Спрашивается в задачнике, и чё теперь с этим всем делать. :((

P.S. Возможно процесс будет более стабилен при каких-нибудь волшебных гиперпараметрах. Но как бы хотелось,, чтобы он без всяких плясок с бубном бац и просто увеличивал в сети генерализацию... Но нет, они даже неприближают гроккинг при включённом wd, когда он и так уже приближается.

P.P.S. 1100 строк кода потрачено но фреймворк для гроккинга на текущий момент, и это ещё без прунинга. :(
02/27/2025, 08:27
t.me/gradientwitnesses/178
02/27/2025, 08:27
t.me/gradientwitnesses/176
Ну, можно констатировать, что генерализация при гроккинге очень неравномерно распределяется по слоям модели... Хотя и не так, как я думал... Интересно было бы посмотреть, как это будет менятся при прунинге, конечно, но шибко долго все эти экзотические меры считаются...
02/25/2025, 01:19
t.me/gradientwitnesses/175
Если ландшафт Loss-а носит характер каньона, заворачивающегося с относительно небольшой скоростью, то в проекции на прямую градиента, обозначенную на рисунке красным, он будет выглядеть как парабола, что создаёт иллюзию локального минимума, потому что эта проекция вылезает на стенки, но вдоль дня каньона это будет прямая с почти нулевой второй производной.

А как мы знаем из моего осеннего доклада, направление каньона в некоторых случаях меняется совсем медленно, всего на несколько градусов за шаг, а по мере обучения кривизна каньона стремительно растёт доходя до поворотов чуть ли не под прямым углом на каждом шаге той же скорости пока оптимизатор не начинает тупо прошивать стенки за счёт инерции попадая в соседние каньоны или приводя к частичному разрушению сети, которые на графике гроккинга выглядят как спайки вниз.

P.S. Обрати внимание, на спайках генерализация улучшается, потому что частично разрушенная сеть возвращается в плохо обученное состояние, когда изучение трейна одинаково полезно и для валидейшена.

P.P.S. Обрати внимание, после спайка сеть очень быстро восстанавливается, потому что у неё во многих слоях уже есть эффективные и несущие много информации обобщения, и задача только в том, чтобы по новой к ним присосаться. Это гвоорит о том, как вожно помнить о роли генерализации - как полезных обобщений даже если loss-ы почему-то показывают погоду в тьмутаракани.
02/19/2025, 11:59
t.me/gradientwitnesses/174
02/19/2025, 11:52
t.me/gradientwitnesses/172
А ещё я обещал картинки. Первая картинка как раз мера генерализации. Здесь хорошо видно, как и на траектории, что гроккинг это непрерывный процесс, и loss скачком меняется только в самом его конце.
02/19/2025, 11:52
t.me/gradientwitnesses/173
1:21:26 Тут, по-моему, очень важно упомянуть размерность хранимых данных, чтобы сформировалось интуитивное понимание сколько и каких данных хранится, и соответственно где и сколько можно съэкономить. Потому что руками многие уже ничего в этой жизни не дифференциировали и как оно под капотом работает не помнят или уже и не знают. Если у нас матрица n x n, сами веса весят n^2, их градиенты - столько же, а вот для автодифференциирования достаточно сохранить данные об активациях, пришедших из предыдущего слоя. то есть n*batch_size. И ещё два раза по n^2 хранит у себя в состоянии Adam. А данные о градиенте используются только при обратном проходе имеют размерность n*batch_size и уже не хранятся вообще, а только в ходе прохода используются. Если об этом помнить, то можно сделать несколько важных выводов:

1) При первом проходе для первых нод вообще не сохранять активации, тоесть выключать им grad_requiredдо тех пор пока с обратной стороны не подъедет градиент, экономим n*batch_size, но это возможно и так из коробки делается, я под капот конкретным реализация не заглядывал.
2) Если в много проходов строить градиент, и только потом выхзывать оптимизатор, то градиент придётся хранить для тех нод, которые уже посчитаны. Лишние расходы. Посчитали активации для одного последнего слоя, посчитали обратное распространение для одного слоя, посчитали градиенты, сразу сделали шаг оптимизатора, но не для всей модели, а для одного последнего слоя, очистили место для хранения градиентов, только теперь начингаем считать градинты следующего с конца слоя, а градиенты размером n*batch_size для одного слоя, а не всей модели, всё это время в памяти лежали. Итоговая экономия - один размер модели.
3) Если помнить, что через эмбединг туда и сюда ходит матрица размерами всего n*batch_size джля одного слоя можно разбивать модель на две карты по этому узкому месту. Делаешь первый проход на первой карте без автодифференциирования для первой половины модели, передаёшь матрицу на вторую карту, прогоняешь через вторую половину модели уже с автодифом, назад получаешь градиент, который перехватил в бакварде, передал обратно не первую карту, ещё раз прогнал прямой проход, на этот раз с автодифом, и беквард по первой половине модели. Причём если ты аккумуляируешь градиент, то можно через первую карту прогнать пол батча, а пока вторая карта разбирается с градиентами прогрнать forward для другой половины батча.
Как не трудно догадаться 4 карты по 16 гигов стоят сильно дешевле, чем одна на 64. :))))
02/19/2025, 11:46
t.me/gradientwitnesses/170
1:13:11 Как увеличивать размер батча я долго и нудно рассказывал ещё в своем первом докладе на ODS-е, и ту ошибку в SGD with momentum в торче так и не исправили до сих пор, только предупреждение в документацию вписали. :) Но большинство то пользуется Adam-ом, где этой ошибки нет, а значит самым дешёвым способом увеличения размера батча можно пользоваться прямо из коробки, а ты его не упомянул. А самый дешёвый способ - выкрутить ему momentum, в случае Адама - это betas. по умолчанию там betas=(0.9, 0.99) но при первом же подозрении, что дисперсия градиента великовата можно ставить, например (0.99, 0.9975) - значит предположение, что проблема с дисперсией правильное и можно начинать возиться с масштабированием батчей, накоплением градиентов и тому подобным. По сути, на пратике, это часто оказывается даже быстрее и проще, чем рисовать траекторию, на которой всё это видно.

Кстати, интересное наблюдение Adam от RMSProp как раз и отличается тем, что в него прям из коробки встроен некоторый некоторый прогрев, но оказалось, что для больших батчей его недостаточно. Просто потому что betas=(0.9, 0.99), а большой батч, значит - редкие вызовы, значит второй момент, который и так идёт со сглаживанием с окном 100 очень медленно копится. Вместо долгого прогрева можно один раз посчитать пакетный градиент даже не от всей, а от части учебной выборки и положить адаму напрямую в те переменные где он накапливает моменты. Проверено - работает.

1:14:40 "Тут, к сожалению математика закончилась", что сразу закончилась то? :) Просто нужно вспомнить, что если для SDG lr это скорость обучения, то для Adam lr это не скорость, а ожидаемая дисперсия изменения веса, А дисперсия градиента с ростом размера батча увеличивается как раз как корень от количества усредняемых значений, просто из законов матстатистики. Я об этом говорил в первом докладе, и я уверен, что и студентам нужно это говорить, чтобы они лучше понимали как работает оптимизатор по умолчанию, потому что именно его они больше всего и будут пользовать.

1:15:30 LARS это конечно, прекрасно, но если не объяснять на формулах, а просто нарисовать диаграмму как градиенты распределяются в сети слой за слоем, то это станет очевидно, и что с этим делать тоже. любому человеку, который имеет сложности со своей сетью следует её нарисовать, тем более, что я осенью выложил в опенсорс инструмент, который делает это в один вызов.

1:16:30 Я, кстати, не исключаю, что в LAMB-е нормировать нужно не на градиент, а на его дисперсию, по вышеупомянутой причине. Если у тебя есть бейзлайн можешь проверить. Держим в голове, что чем более сеть обучена тем больше у неё разница между градиентогм и дисперсией, и если в начале она может быть, напрмер в 10 раз и вообще не отличаться, то к концу запросто достигает 3 порядков.

Слишком рано отправил, сейчас ещё комментариев допишу.
02/19/2025, 11:04
t.me/gradientwitnesses/169
44:39 В частности вот здесь если смотреть на правую картинку то вот так выглядит поверхность для всех случайных векторов кроме одного, и только он один и несёт полезную информацию. Для сетей достаточной размерности это, создает ошибочное мнение, что у поверхности loss функции существуют локальные минимумы. Подробнее об этом я рассказывал осенью вот тут. Но если ты попробуешь идти вдоль этого пространства по, грубо говоря, геодезической, то есть точно вдоль градиента, то обнаружишь, что вторая производная в течении всего пути почти точно 0 Это значит, что поверхность имеет характерный вид каньона с почти плоским дном, а не локального минимума. Собственно именно это показали авторы картинки на 39:29, выбрав в качестве одного из векторов вектор соединяющий два решения, а в качестве второго как раз вектор градиеинтв. Только нужно понимать, что ситуация так выглядит не только вблизи решений, а вообще почти всегда если у сети достаточно параметров.

Для чуть большего понимания отдельным постом приложу картинку из твоей же лекции как так получается, что кажется, что минимумы есть, а на самом деле их нету.

В принципе я сказал достаточно для меленького исследования и даже для большого, но если захочешь написать об этом статью, возьмёшь меня соавтором с равным вкладом и возьмёшь на себя весь процесс оформления, библиографической работы и всего вот этого, что обычно занимает больше всего времени - покажу как конкретно это красиво нарисовать. Для имиджнета такое вычисление займёт многовато времени, если только у тебя личный кластер не завалялся, но на каком-нибудь CIFAR10-100 очень шустро.

58:22 Ну про гроккинг я целый доклад новый сделал, дай бог не последний.

1:06:14 Картинка так выглядит только при наличии мощной регуляризации, то есть за счёт того же процесса, что приводит к гроккингу. Просто до этой точки он не справляется, а после неё начинает отчасти справляться. А точка перелома это как раз и есть та вместимость сети до которой у сети локальные минимумы есть, а после которой - уже нет. Впрочем строго математически это доказать, что точка перелома, точка перепараметризации (где трейновая выборка может быть выучена на 100%) и точка где исчезают локальные минимумы, это примерно одна и та же точка, представляется мне проблематичным при нынешнем уровне развития математики. Максимум показать это вычислительно. Пусть это в будущем навзывается Гипотезой имени меня, и ждёт своего Перельмана. :)

1:09:22 Как я показывал в своём докладе про затухание градиентов, это происходит не только из-за умножения большого количества малых, но и за счёт усреднения большого количества значений, и отсюда берётся квадратичное затухание от корня размера эмбединга за слой даже если функции активации вообще нет. Интересно, что некоторые решения этой проблемы, такие как большая начальная активация умноженная как раз на степень затухания, о которой я говорил в докладе, одновременно и приближает гроккинг, который как мы теперь знаем, проще достичь если иметь большую начальную активацию. Статья, правда, только осенью вышла, то есть уже после этой лекции. Конечно это тема для отдельной часовой лекции, если во все нюансы вдаваться, но в общем случае студенты с большей вероятностью потом копнут глубже если им с самого начала рассказать, что объяснение с умножением большого количества малых и неизбежностью затухания из-за этого очень старая и более того устаревшая.
02/19/2025, 11:04
t.me/gradientwitnesses/168
Мотивации псто.

Хотел тут послушать о гроккинге что-нибудь новое для себя и на русском, пока еду с работы. Первая ссылка в ютубе была на мой собственный доклад, видимо он уже запомнил, что я, когда мне надо ссылку на свои доклады, ищу их через поиск. :) А вторая была на лекцию Дани Меркулова(@bratishk), которую прослушал с нескрываемым удовольствием, у со всё более возрастающим удивлением, пока не понял, что мне некоторые места напоминают.

Во-первых, конечно, немного жаль, что нигде нет ссылки на мои доклады в которых студенты бы могли посмотреть больше подробностей упоминаемого.
Во-вторых, очень приятно, что то что я рассказываю реально идёт в дело, и новое поколение студентов будет вылупляться из ВУЗ-ов уже с некоторыми намётками, на идеи, которые мне кажутся на столько важными чтобы тратить время на их превращение в доклады.
В-третьих, когда ты будешь читать эти лекции следующему семестру студентов, надеюсь, уже учтёшь, доклады, вышедших в октябре и скажешь, что гроккинг это не случайное блуждание, а очень затяжной однонаправленый процесс, что получить его можно на за 10е5 эпох, а за 4 минуты, если сильно выкрутить weight_decay, и что теперь любой может с ним экспериментировать и, если повезёт, поймёт что с этим делать, потому что это, считай, философский камень ML-я.

По ходу прослушивания лекции родилось несколько замечаний. Вообще если вы вдруг захотите кому-то что-то преподавать с использованием идей близких к моим докладам - напишите и я постараюсь в личной переписке или созвоном всё дообъяснить что интересно, потому что в тайминг докладов датафеста подробности не помещаются никак. Но с вас тогда, конечно, упоминание в ходе обучения. :))) Впрочем Даня в своих бедных студентов намёки и зацепки укладывает ещё в четыре раза плотнее, чем я в ни в чём неповинных слушателей на фестах, тут уж не до тонкостей. :))) И так комментарии:

24:43 Если определять генерализацию только как разницу в loss или accuracy, то тогда может показаться, что во время гроккинга генерализация не меняется, потому что одно на 100% лежит, а другое на 1%, в то время как она, генерализация в процессе непрерывно сильно растёт. Я отдельным постом иллюстрирующую картинку потом выложу. И, вполне возможно, где-нибудь весной доклад на этот счёт сделаю - "угловая метрика генерализации". Но просто для самого себя стоит держать в голове мысль что генерализация это наличие в сети сильных информативных обобщений, а разница в лоссах - всего лишь один и не самый удачный способ её померять. С 2015-ого года я за людьми с этой мыслью гоняюсь, ещё со своей одной из первых статей о подсетях отвечающих за отдельные признаки внутри сети. :))

37:50 Хотя два случайных очень больших вектора почти наверняка ортогональны, мы знаем что все векторы внутри нейросети не случайны и не независимы. Об этом я говорил в докладе про затухание градиентов. Как только градиенты перестали затухать - так вектора уже не независимы, и не ведут себя как случайные. То-есть примерно после первой части первой эпохи. По этому предполагая на подкорке, что все вектора тут ортогональны ты теряешь огромное количество инсайтов о нейросети. Каждый раз нужно проверять ортогональны ли, и задаваться вопросом - а которые из них не ортогональны. В частности:
02/19/2025, 11:04
t.me/gradientwitnesses/167
02/14/2025, 12:16
t.me/gradientwitnesses/166
Search results are limited to 100 messages.
Some features are available to premium users only.
You need to buy subscription to use them.
Filter
Message type
Similar message chronology:
Newest first
Similar messages not found
Messages
Find similar avatars
Channels 0
High
Title
Subscribers
No results match your search criteria