Катастрофическое забывание для новичков: реплей-буферы, регуляризация, EWC и Synaptic intelligence
Мы думаем, многие знают ключевую проблему реккурентных нейросетей — постепенное забывание «изученного» в процессе обучения. Так как внутри нет никакого механизма «внимания», как в тех же трансформерах — передача данных с одного шага на другой приводит к тому, что мы уже не помним начала цепочки. Глухой телефон или неумело прочитанная книга — хорошая метафора.
Но есть другая крупная проблема в ML — катастрофическое забывание.
Катастрофическое забывание (Catastrophic Forgetting) — это проблема, характерная части нейросетей и большинства современных методов машинного обучения, когда модель, обучаясь на новых данных, теряет способность адекватно обрабатывать ранее усвоенную информацию.
Возникает из-за природы метода стохастического градиентного спуска (SGD) и схожих методов оптимизации, которые обновляют веса нейронной сети на основе текущих мини-батчей, точнее, используя небольшую случайно выбранную партию обучающих примеров за итерацию.
Когда данные нового мини-батча существенно отличаются от данных, на которых модель была обучена ранее, происходит перезапись информации в весах сети, что приводит к «забыванию» предыдущих знаний.
Катастрофическое забывание особенно ярко проявляется в задачах continual learning, обучении на потоке данных, где эти же данные поступают не сразу в полном объеме, а постепенно, часто с изменяющимися распределениями (data drift).
В традиционном обучении нейросети обучаются на стационарной выборке данных, то есть распределение данных не меняется со временем.
Но с использованием алгоритма backpropagation, обновляют веса сети на основе градиентов, рассчитанных на текущих данных, не принимая во внимание влияние на сохранение ранее выученной информации.
Метод используется для настройки весов нейронов таким образом, чтобы минимизировать ошибку между предсказанными значениями модели и фактическими значениями из обучающей выборки.
В условиях потоковых данных, когда происходит последовательная подача новых данных (например, в реальном времени или в виде блоков/эпизодов), модель вынуждена адаптироваться к постоянно меняющемуся распределению — это превращает ее в уязвимую конструкцию к «размыванию» старых знаний.
Технически катастрофическое забывание можно описать как несовершенство процесса оптимизации, при котором векторы градиентов, рассчитанные на новых данных, могут иметь компоненты, перпендикулярные или противоположные тем, что были рассчитаны ранее.
Это приводит к нарушению весов, которые ранее хорошо работали для старых данных, а значит и поступающие деградацией знаний. Амнезия для машин.
Производительность модели на старых данных быстро падает — перекрытие градиентов становится основным механизмом, объясняющим забывание.
В задачах с ограниченной памятью, где невозможно хранить все данные для повторного использования, эта проблема становится особенно критичной.
Почему у нас проблемы, Хьюстон?
Потоковые данные (streaming data) — это + дополнительные проблемы для нейронных сетей, поскольку они не только поступают постепенно, но и часто изменяются по своему распределению.
Важное отличие между стандартным батчевым обучением и обучением на потоках данных заключается в отсутствии глобального доступа к полному датасету в случае потоков.
Потоковые данные могут изменяться с течением времени (например, сезонные изменения в поведении пользователей, новейшие тренды или изменения контекста задач). Non-stationary distributions — так называются подобные изменения трендов в задачах.
Если неожиданно у рабочих появляется выходной на полгода или меняют немного график, а нейросеть по рассчету загрузки сотрудников дальше скармливают новыми данными с таким учетом — она может утерять способность проводить аналитику с учетом предыдущих распределений нагрузок.
Это явление известно как shifting distribution или concept drift. Модель, натренированная на одном наборе данных, может оказаться непригодной для решения задач на новых данных, что требует её адаптации.
В большинстве случаев нет возможности хранить весь предыдущий набор данных, что делает невозможным переобучение модели с учётом всей истории наблюдений.
Следовательно, модель вынуждена учиться только на текущих данных, что обостряет проблему забывания.
В потоковых данных часто отсутствует немедленная аннотация данных или корректировка на основе целевого значения (delayed labels), поэтому модель не может делать корректные поправки и обучаться сразу.
В условиях потокового обучения нейронные сети сталкиваются с разрывом между задачами, связанными с обучением на статичных данных, и потребностями адаптации к новым, изменяющимся данным.
Этот разрыв часто требует создания специальных механизмов для закрепления знаний (например, через регуляризационные методы) или для повторного использования ранее полученных данных (реплей-буферы), а также методов для оптимизации текущих знаний без разрушения предыдущих (использование механизмов нейропластичности, вдохновленных биологическими системами, a.k.a. SI) — о них ниже.
Например, в биологических системах нейропластичность позволяет мозгу гибко сохранять и обновлять старые знания, но в нейронных сетях таких механизмов по умолчанию нет.
В стандартной архитектуре нет явных механизмов для выделения важных для задачи весов или нейронных связей, которые должны быть защищены от изменения при обучении на новых данных.
В отличие от стандартного подхода, где весь набор данных доступен с самого начала и можно многократно его обрабатывать, при потоковом обучении модель обучается на каждой новой партии данных один раз или с минимальными дообучениями.
Это означает, что модель должна уметь эффективно использовать каждую порцию данных, не имея возможности вернуться к предыдущим партиям или полностью переобучаться.
Реплей-буферы как решение проблемы
Реплей-буферы (Experience Replay Buffers) — переигрывающая память, память-повторение или просто дополнительный буфер, которые сохраняет часть предыдущих данных.
Принцип работы реплей-буферов заключается в том, чтобы накапливать выборки данных (обычно это состояние среды и соответствующее действие/результат в задачах обучения с подкреплением) и повторно использовать их на этапах дальнейшего обучения.
Ключевая идея в том, что вместо использования только текущего мини-батча данных для обновления весов сети, в процесс обучения также вовлекаются случайные выборки из ранее накопленного опыта.
Это предотвращает ситуацию, когда модель быстро забывает старую информацию, так как в каждый момент времени обучение происходит как на новых, так и на старых данных.
В реплей-буферах сохраняется случайная выборка состояний или примеров предыдущих данных, что позволяет модели стабилизировать обучение и избежать чрезмерной подстройки под последнее изменение в распределении данных.
Буферы бывают разные. Один из самых простых вариантов — фиксированные буферы. В данном случае буфер имеет фиксированный размер, и при достижении этого лимита старые данные удаляются, уступая место новым.
Такой буфер легко реализуется и не требует значительных вычислительных ресурсов, но он может не учитывать важность отдельных выборок. Например, важные или редкие события могут быть случайно забыты из-за их удаления при наполнении буфера новыми данными.
Другая стратегия — использование буферов с приоритетом (Prioritized Experience Replay).
В таких буферах сохраняются не только состояния или примеры данных, но и их важность для обучения модели.
Важность может быть рассчитана на основе ошибки предсказания (например, TD-ошибка в reinforcement learning), и примеры с высокой ошибкой могут иметь больший приоритет при повторном использовании в процессе обучения.
Модель сосредотачивается на более сложных примерах. Однако такой подход требует дополнительных вычислительных ресурсов для поддержания структуры приоритета и правильного управления памятью буфера.
Существует также подход со стохастическим выбором данных для повторного обучения.
В отличие от приоритетных буферов, где выборки данных делаются с учетом их важности, здесь используется случайный выбор, что снижает вычислительную сложность и распределяет акцент обучения по всему пространству данных равномернее.
Хотя это и может привести к менее эффективному обучению в случаях, когда некоторые данные важнее других для корректной настройки модели.
Реплей-буферы нашли широкое применение в задачах обучения с подкреплением (Reinforcement Learning, RL).
В таких задачах агенты обучаются взаимодействовать с окружающей средой, получая отклики в виде наград и адаптируя свою стратегию поведения.
Поскольку последовательность действий агента и состояния среды может значительно меняться, проблема катастрофического забывания здесь стоит особенно остро.
Например, в алгоритме Deep Q-Network (DQN) реплей-буфер используется для хранения предыдущих состояний среды и соответствующих действий агента.
Каждая итерация обучения использует не только последние состояния, но и случайные выборки из буфера — позволяет избежать корреляции между последовательными действиями агента и их влиянием на модель.
В задачах supervised learning реплей-буферы применяются для улучшения производительности в сценариях continual learning.
В таких случаях буфер сохраняет примеры, поступившие на ранних этапах обучения, и затем эти примеры случайно извлекаются для дообучения модели, когда поступают новые данные.
Это помогает предотвратить проблему забывания старых классов или признаков, особенно когда распределение данных меняется со временем.
В рамках каждого перехода хранится информация в виде четырех элементов: текущее состояние, выбранное действие, полученная награда , и следующее состояние.
На высоком уровне архитектура реплей-буфера состоит из следующих компонентов:
Основная структура буфера реализуется как очередь, которая позволяет записывать переходы до достижения предельного размера.
Когда очередь заполняется, новые элементы вытесняют старые по принципу FIFO (First In, First Out).
Агент не зацикливается на старых данных, а постоянно обновляет свою память с актуальной информацией. Такой механизм можно реализовать как динамически расширяемый массив или специализированную структуру данных, как, например, deque (double-ended queue).
Каждый переход представляет собой кортеж или структуру данных, включающую с прибавкой, а также флаг завершения эпизода (например, done), который указывает, достиг ли агент терминального состояния.
Это позволяет корректно обрабатывать ситуации, когда агент сталкивается с финальным состоянием среды, чтобы не учитывать несуществующие будущие награды.
Чтобы обучать нейросеть, реплей-буфер поддерживает функцию случайной выборки мини-выборок фиксированного размера.
Это критически важно для декоррелирования данных — случайная выборка нарушает временную зависимость между действиями агента, что делает стабильным.
Обычно размер мини-выборки (batch size) составляет от нескольких десятков до сотен переходов, которые затем подаются на вход нейронной сети для обновления её весов.
В каждый момент времени агент генерирует новый переход, который добавляется в реплей-буфер.
Если количество сохраненных переходов превышает установленный лимит буфера, наиболее старый переход автоматически удаляется. Это предотвращает рост объема памяти и гарантирует, что модель обучается на более актуальных данных, избегая проблемы избыточного накопления устаревшей информации.
Во время процесса обучения агент периодически запрашивает мини-выборки переходов из реплей-буфера для обновления своей модели.
Поскольку данные в буфере не связаны напрямую с текущим состоянием агента (благодаря случайной выборке), это предотвращает переобучение на последовательных переходах и повышает способность модели к обобщению.
Простой пример — классификации изображений с изменяющимся распределением классов.
Модель обучается на новых изображениях, но также периодически дообучается на примерах из реплей-буфера, что позволяет ей сохранить способность правильно классифицировать старые классы.
Здесь ключевым аспектом является баланс между количеством данных, хранимых в буфере, и объемом новых данных: слишком большой буфер может замедлить обучение, тогда как слишком маленький приведет к быстрому забыванию.
Адаптация реплей-буферов для непрерывного обучения включает в себя более сложные стратегии управления памятью.
Например, в задачах lifelong learning используются динамические буферы, которые регулируют количество хранимых данных в зависимости от сложности текущего потока данных или важности информации для долгосрочного сохранения знаний.
Кроме того, комбинации реплей-буферов с методами регуляризации, такими как Elastic Weight Consolidation (EWC), позволяют моделям не только сохранять старые данные, но и минимизировать изменения в весах, связанных с важными для прошлых задач признаками.
Регуляризация простым языком, как и зачем?
Основной принцип таких методов заключается в том, чтобы минимизировать чрезмерные изменения весов, которые играют ключевую роль в решении текущей задачи.
Все это при помощи добавления регуляризационных членов к функции потерь, которые ограничивают изменения весов, тем самым препятствуя тому, чтобы модель чрезмерно адаптировалась к новым данным в ущерб ранее выученным.
Метод Elastic Weight Consolidation (EWC) — один из наиболее известных регуляризационных подходов для решения проблемы катастрофического забывания в нейронных сетях.
Основная идея EWC заключается в том, чтобы сохранить «важные» веса сети неизменными или минимизировать их изменения при обучении новых данных.
Важность весов определяется на основе того, насколько они критичны для выполнения предыдущей задачи.
Иными словами, если определённые параметры сети оказывают существенное влияние на производительность модели в задаче, они «защищаются» от чрезмерных изменений.
При обучении новой задачи модель продолжает использовать эти важные веса, предотвращая их разрушение и тем самым сохраняя ранее выученные знания.
Когда модель обучается новой задаче, к стандартной функции потерь добавляется дополнительный регуляризационный компонент — он «наказывает» модель за слишком сильные изменения тех весов, которые были важны для предыдущей задачи.
Этот компонент зависит от информации Фишера, которая вычисляется для каждого параметра модели, отражая его влияние на функцию потерь предыдущей задачи.
Таким образом, параметры, которые критичны для успешного выполнения предыдущей задачи, закрепляются и не подвергаются сильным изменениям при обучении новой задачи.
Это интуитивно можно сравнить с механизмом «жесткости» для весов, которые связаны с ключевыми признаками старой задачи: такие параметры становятся менее гибкими и подверженными изменениям, когда поступают новые данные.
В отличие от обычных методов обучения, где модель обновляет все параметры одновременно, EWC помогает сохранить структурную целостность старых знаний.
EWC позволяет сохранить критические параметры, связанные с ранее изученными классами, что гарантирует, что модель будет продолжать корректно классифицировать как старые, так и новые классы.
Итого.
Нейронная сеть обучается на первой задаче, используя стандартную функцию потерь, такую как кросс-энтропия или MSE (среднеквадратичная ошибка).
После завершения этого этапа, веса модели оптимизируются под первую задачу.
Однако, при переходе к обучению на следующей задаче, без специального механизма, обновления весов могут привести к потере тех параметров, которые критически важны для решения первой задачи.
Важный шаг для EWC — вычисление того, насколько значим каждый параметр сети для выполнения первой задачи. Для этого используется приближенная форма диагональной матрицы Фишера (Fisher Information Matrix), которая оценивает важность каждого параметра.
Чем выше значение элемента этой матрицы, тем больше этот параметр влияет на производительность модели для задачи.
Когда модель переходит к обучению на новой задаче, функция потерь дополняется регуляризационным членом, который сдерживает изменения параметров, имеющих высокую важность для предыдущих задач.
В простейшем виде этот регуляризационный член представляет собой квадратичное отклонение текущих весов модели от оптимальных весов, найденных для задачи.
То есть, чем больше параметр отклоняется от своего значения, найденного для задачи, тем выше штраф, пропорциональный важности этого параметра.
Этот штраф добавляется к стандартной функции потерь для задачи, что вынуждает сеть находить компромиссное решение между новой задачей и сохранением старых знаний.
В процессе оптимизации на новой задаче сеть обновляет свои веса таким образом, чтобы минимизировать измененную функцию потерь, включающую как стандартную ошибку для задачи, так и регуляризационный штраф за изменение важных параметров, связанных с задачей
По мере того как модель последовательно обучается на новых задачах, EWC продолжает защищать важные параметры, связанные с предыдущими задачами, используя соответствующие матрицы Фишера для каждой задачи.
В результате, модель постепенно накапливает знания, обучаясь на новых задачах, но при этом сохраняя ключевые параметры, важные для задач, на которых она была обучена ранее.
Впрочем, вот вам своеобразный пример имитиации нейропластичности человеческого мозга.
Другой метод Synaptic Intelligence (SI) строится по несколько иному принципу, но поддерживает примерно те же.
Основная идея SI заключается в динамическом сохранении важности весов нейронной сети.
Принцип работы SI основывается на предположении, что не все параметры нейронной сети оказывают одинаковое влияние на результат. В процессе обучения модель использует каждый параметр с различной степенью важности для выполнения текущей задачи.
SI оценивает эту важность динамически, накапливая информацию о том, насколько сильное влияние оказывает каждый вес на функцию потерь в процессе обновления.
Все это интеграцию вкладов параметров за время обучения, учитывая, насколько каждый параметр изменялся и как эти изменения влияли на уменьшение ошибки модели.
Для вычисления важности параметров SI следит за тем, как каждый вес изменяется в процессе обучения и насколько это изменение влияет на общую производительность сети.
Процесс основан на аккумулировании градиентов и изменений параметров на протяжении всего процесса обучения.
В случае завершения одной задачи и перехода к другой модель «замораживает» веса, которые оказались наиболее важными для предыдущей задачи, тем самым минимизируя их изменения при обучении новой задачи.
Этот механизм действует по аналогии с синоптической пластичностью в биологических нейронных сетях, где связи (синапсы) между нейронами укрепляются в зависимости от их активности.
Параметры, которые значительно изменились и положительно повлияли на производительность, отмечаются как критически важные для текущей задачи.
Такой подход позволяет избежать жесткого ограничения на изменения всех весов одновременно, что характерно, например, Elastic Weight Consolidation (EWC).
При переходе к обучению на новой задаче, например, на классификации нового набора изображений, SI добавляет в функцию потерь специальный регуляризационный термин.
Этот термин ограничивает изменения в тех параметрах, которые были отмечены как важные для предыдущей задачи. Важные параметры «замораживаются» в том смысле, что их изменение допускается, но с большим штрафом, чтобы минимизировать ущерб для предыдущих знаний.
Вместо этого модель получает возможность продолжать адаптацию, сохраняя гибкость в изменении несущественных параметров, но одновременно минимизируя разрушение критически важных для предыдущих задач весов.
Основное отличие SI от других методов регуляризации заключается в том, что модель адаптирует свое поведение не после завершения обучения задачи, а в процессе всей обучающей последовательности.
Такой динамический подход позволяет SI быть более гибким в условиях, где распределение данных или задачи могут значительно варьироваться с течением времени.
Применение Synaptic Intelligence показало успешные результаты в задачах обработки естественного языка (NLP) и компьютерного зрения.
В области NLP SI применяется для решения задач с последовательным обучением: многозадачная классификация текстов или перевод, где модель должна сохранять способность обрабатывать предыдущие языковые конструкции при изучении новых.
Для желающих почитать научную работу — сюда.
Например, модель может последовательно обучаться на различных корпусах данных с изменяющимися языковыми паттернами.
Применение SI позволяет сохранить ключевые параметры, связанные с уже изученными языковыми структурами, и тем самым избежать забывания.
В задачах компьютерного зрения, например, классификации изображений с непрерывно изменяющимся набором классов, SI помогает моделям сохранять производительность на старых классах, даже когда поступают новые данные, представляющие совершенно другие классы или объекты.