Вопрос или проблема
В научно-исследовательском приложении вычислительной нейронной сети мне нужно максимизировать несколько нейронных сетей со скалярным выходом по отношению к целевой/функции потерь (происходящей от слабой формы ПДУ).
Из теоретических соображений известно, что, как правило, функции, которые были бы оптимальными с точки зрения целевой функции (т.е. максимизаторы), являются чрезвычайно колеблющимися функциями. Полагаю, что именно по этой причине – по результатам моих первых численных экспериментов – типичные архитектуры сетей, инициализации и методы обучения из компьютерного зрения и смежных областей плохо справляются с подгонкой этих колеблющихся функций.
Есть ли у кого-нибудь идеи, предложения или даже ссылки на литературу, как справиться с этой проблемой? Существуют ли стандартные архитектуры сетей, функции активации, инициализации и так далее, которые хорошо работают в такой ситуации, когда оптимальным результатом будет сильно колеблющаяся функция? (Точки обучения берутся из определенных правил квадратуры, и я в принципе могу выбрать любое количество, ограниченное, конечно, вычислительной стоимостью).
С наилучшими пожеланиями,
PM
Проблема аппроксимации периодических функций изучается в статье Neural Networks Fail to Learn Periodic Functions and How to Fix It, представленной на NeurIPS 2020. Из аннотации:
[…] мы доказываем и демонстрируем экспериментально, что стандартные функции активации, такие как ReLU, tanh, sigmoid, вместе с их вариантами, все не могут научиться экстраполировать простые периодические функции. Мы предполагаем, что это связано с отсутствием у них “периодического” индуктивного смещения. В качестве решения этой проблемы мы предлагаем новую функцию активации, а именно, $x + sin^2 (x)$, которая достигает желаемого периодического индуктивного смещения для обучения периодической функции, при этом сохраняя благоприятное свойство оптимизации активаций на основе ReLU.
Я предлагаю попробовать их предложенные функции активации, чтобы оценить, достаточно ли их индуктивного смещения для вашего случая.
Один из вариантов – перевести сильно колеблющиеся функции в скалярные значения, которые ожидаются стандартными нейронными сетями. Преобразование Фурье (ФП) выполняет это путем декомпозиции частотного представления в функцию пространства или времени.
Ответ или решение
Теория
В области научных вычислений, особенно при работе с дифференциальными уравнениями, воспроизведение высокоосциллирующих функций является особенно сложной задачей. Это обусловлено особенностями структуры и поведения нейронных сетей, которые обычно обучаются на более плавных данных. Стандартные архитектуры, основанные на активационных функциях ReLU, tanh или sigmoid, зачастую плохо справляются с таким типом данных из-за отсутствия у них "периодического индуктивного смещения". Это приводит к тому, что нейронные сети не способны корректно обобщить и предсказать высокочастотные осцилляции.
Пример
В статье, представленной на NeurIPS 2020, под названием "Neural Networks Fail to Learn Periodic Functions and How to Fix It", авторы предлагают активатор (x + \sin^2(x)) как решение проблемы периодичности. Эта активационная функция сохраняет оптимизационные свойства на уровне ReLU, но добавляет периодическое индуктивное смещение, что существенно улучшает способность моделей обучаться на периодических функциях.
Применение
Использование новой активационной функции может стать одним из решений вашей задачи. Однако, это всего лишь одна из возможностей. Давайте рассмотрим ряд других методов, которые могут помочь оптимизировать обучение на высокоосциллирующих функциях:
-
Специальные Архитектуры и Инициализация. Для решения задачи теоретически обоснованного поиска высокоосциллирующих функций, можно экспериментировать с архитектурами нейронных сетей, которые содержат более глубокие или рекуррентные слои. Глубокие сети, такие как ResNet или DenseNet, могут захватить больше уровней абстракции. Также важно правильно выбрать метод инициализации, например, использовать настройку начальных весов, ориентированную на балансировку спектра значений, что может облегчить обучение нейронной сети.
-
Активационные функции и периодическое смещение. Вы можете внедрять нестандартные активационные функции, такие как периодические функции (например, комбинирование синусоид с другими функциями активации), для уловления свойств данных. В данном случае, вы могли бы использовать рекомендацию из статьи и попробовать активацию (x + \sin^2(x)).
-
Применение преобразований Фурье. Один из способов решения проблемы высокоосциллирующих функций — использование преобразований Фурье. Это метод разбивки данных во временной или пространственной области на частотные компоненты. Он позволяет преобразовать осцилляции в серию амплитуд и фаз, что гораздо проще интерпретировать и моделировать с помощью нейронных сетей.
-
Обучение с использованием данных высокой плотности. При наличии возможности генерации большого количества точек данных через подходящие квадратурные правила, стоит увеличить плотность точек на отрезках с резкими изменениями. Это позволит сети лучше понять структуру функции и улучшить обобщающую способность модели.
-
Регуляризация и техники борьбы с перенасыщением. Методы регуляризации такие как Dropout, Batch Normalization могут помочь в стабилизации обучения и предотвращении переобучения, что критично в задачах, где требуется обучить сеть восприятию сложных осцилляционных паттернов.
-
Экспериментальная настройка гиперпараметров. Ваша задача по обучению моделей может требовать тщательной настройки гиперпараметров, таких как скорость обучения, размер мини-бэтча, регуляризация веса, для оптимизации процесса обучения.
Подытоживая, для успешного обучения нейронных сетей на задачах, связанных с высокоосциллирующими функциями, требуется комплексный подход, который может включать как адаптацию стандартных инструментов (как использование специфичных активационных функций), так и внедрение новых типов трансзакций или архитектур. Общий подход должен быть гибким, с регулярным проведением валидаций и настройкой параметров для достижения желаемого уровня точности и обобщающей способности модели.