TGViewer
Knowledge Accumulator Knowledge Accumulator @knowledge_accumulator · 5.69K subscribers
Post #323 3.5K
Loss of plasticity in deep continual learning [2024]

Сегодня посмотрим на статейку от Саттона, которую мне недавно скинули в комментариях. В ней разбирается проблема потери пластичности - способности обучаться со временем - в нейросетях. Я уже кстати давно писал про статью на эту тему в контексте RL.

Рассмотрим эксперимент с так называемым Class-incremental CIFAR-100. На самом деле это облегчённый вариант Class-incremental, если сравнивать с моими недавними постами.

Вначале мы учим нейросеть на 5 классах, затем замеряем на 5 классах. Потом добавляем 5 новых классов, учим на 10 и тестируем на 10, и так далее. То есть в статье специально избегают проблему забывания, фокусируясь только на пластичности.

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

В чём причина? Авторы объясняют это появлением так называемых Dormant Units - "нейронов", которые скатываются в константное предсказание - например, в 0, если используется ReLU. Градиенты перестают течь и нейрон становится бесполезным.

В статье протестировали метод под названием Shrink and Perturb - это добавление L2-регуляризации + зашумление весов, которые как бы помогают весам вернуться в точку "инициализации". С его помощью, пластичность теряется сильно медленнее.

Авторы предлагают и новый подход под названием Continual Backpropagation. Он предполагает более точечную работу с плохими юнитами.

Для каждого нейрона мы поддерживаем так называемую Utility Function, которая считается как его "вклад" в следующие слои - это буквально сумма выходных весов, умноженная на выход нейрона. Используем скользящее среднее для усреднения по времени.

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

Доля пересоздаваемых юнитов не должна быть большой - всего 10^-5 от всех юнитов за шаг. Этого хватает, чтобы полностью решить проблему потери пластичности на задаче Class-incremental CIFAR-100 и удерживать долю Dormant Units достаточно близкой к нулю.

Может показаться, что этот метод является Free Lunch - мы получили плюс к пластичности, ничего не теряя. Но на самом деле мы скорее съедаем больший кусок ланча, за который уже заплатили до этого, выделив N памяти, который потом начинает простаивать.

Чем менее тривиальная перед нами задача, тем меньший кусок ланча мы умеем есть, и больший выбрасываем в мусорку. Съедать всё, что есть, мы научимся, когда люди осознают реальный смысл Bitter Lesson, степень своей ограниченности и начнут, наконец, гонять meta-meta-learning.

@knowledge_accumulator
  • 👍 5
  • ❤ 4
  • 🔥 2
More from @knowledge_accumulator
  1. Sep 20, 2026Почувствуйте AGI Все эти годы я писал о том, что не верю в потенциал LLM превратиться в су…
  2. Sep 5, 2026Предсказать среднее могут не только лишь все Классическая задача машинного обучения - трен…
  3. Aug 17, 2026Долина vs Нью-Йорк Если что-то находится далеко от нас, нам свойственно излишне обобщать с…
  4. Jul 30, 2026Кто виноват в сливе рекламного бюджета? При создании рекламного line item рекламодатель ус…
  5. Jul 13, 2026Покатался на яхте в Американской глубинке После переезда в Калифорнию произошло неожиданно…
  6. Jun 30, 2026Да кто такие эти ваши producer-side A/B-тесты? В своей яндексовской эре работы над рекомен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →