Решение дифференциальных уравнений с помощью нейронных сетей

Видео:Применение нейронных сетей для решения дифференциальных уравнений в частных производныхСкачать

Применение нейронных сетей для решения дифференциальных уравнений в частных производных

Краткое содержание статьи: Нейронные обыкновенные дифференциальные уравнения

Дата публикации Dec 27, 2018

NIPS 2018 (Монреаль, Канада) или NeurIPS, как его называют сейчас, закончились, и я хотел бы воспользоваться возможностью, чтобы воспользоваться одним из документов, которые получили награду за лучший документ на этой престижной конференции. Название статьиНейронные обыкновенные дифференциальные уравнения(arXiv ссылка) и его авторы связаны со знаменитым Институтом Векторов в Университете Торонто. В этой статье я попытаюсь объяснить некоторые из основных идей этой статьи, а также обсудить их потенциальные последствия для будущего области глубокого обучения. Так как статья довольно продвинутая и затрагивает такие понятия, какОбыкновенные дифференциальные уравнения(ОДА),Рекуррентные нейронные сети(РНН) илиНормализующие потоки(NF), Я предлагаю вам ознакомиться с этими условиями, если вы не знакомы с ними, так как я не буду вдаваться в подробности по ним. Тем не менее, я постараюсь объяснить идеи статьи настолько интуитивно, насколько это возможно, чтобы вы могли получить основные концепции, не вдаваясь в технические детали. Если вы заинтересованы, вы можете прочитать об этих деталях впоследствии в оригинальном документе. Пост разбит на несколько разделов, каждый из которых объясняет одну или несколько глав в статье.

Видео:Автоматическое решение дифференциальных уравнений с помощью методов оптимизации и нейронных сетейСкачать

Автоматическое решение дифференциальных уравнений с помощью методов оптимизации и нейронных сетей

От последовательностей преобразований к нейронно-дифференциальным уравнениям

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

Решение дифференциальных уравнений с помощью нейронных сетей

Таким образом,hₜявляется «скрытой» информацией на временном шагеt и f (hₜ, θₜ)изученная функция текущей скрытой информации и параметровθₜ, Основной вопрос, поставленный в статье, заключается в том, можем ли мы улучшить наши текущие современные результаты с этими сетями, постепенно уменьшая размер шага[т, т + 1], Мы можем представить это как постепенное увеличение количества оценок в RNN или увеличение количества остаточных уровней в остаточной сети. Если мы сделаем это, мы в конечном итоге придем к бесконечно малой (дифференциальной) версии приведенного выше уравнения:

Решение дифференциальных уравнений с помощью нейронных сетей

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

Видео:Алексей Окунев | Нейронные дифференциальные уравнения для задач с выраженной динамикойСкачать

Алексей Окунев | Нейронные дифференциальные уравнения для задач с выраженной динамикой

Вычисление градиентов решателя ODE с помощью сопутствующего метода

Численное решение ODE обычно осуществляется путем интеграции. Множество методов интеграции были изобретены за эти годы, в том числе простой метод Эйлера и более высокие варианты метода Рунге-Кутты. Тем не менее, все это в вычислительном отношении довольно интенсивно. Это особенно актуально во время обучения, которое требует дифференциации шагов интеграции, чтобы иметь возможность суммировать все градиенты параметров сетиθₜ, влечет за собой высокую стоимость памяти.

В статье авторы представляют альтернативный подход к расчету градиентов ОДУ с использованием так называемыхсопряженный методПонтрягин. Этот метод работает путем решенияво-вторых, дополненный ODE назад во времени,может использоваться со всеми интеграторами ODE и имеет небольшой объем памяти. Давайте рассмотрим минимизацию функции стоимости результата решателя ODE, т.е.

Решение дифференциальных уравнений с помощью нейронных сетей

(к сожалению, авторы обмениваютсяч (т)пог (т)в этом разделе, но не позволяйте себе смущаться этим). На втором этапе используется определение решения ODE, а на третьем этапеODESolveОперация вводится в качестве оператора для решения ODE. Как я упоминал ранее, этот оператор зависит от начального состоянияг (t₀), функцияе, начальное и конечное времяt₀а такжеt₁а также параметры поискаθ, Сопряженный метод теперь определяет градиент функции потерь w.r.t. скрытое состояние:

Решение дифференциальных уравнений с помощью нейронных сетей

Это количество теперь следует за расширенным ODE

Решение дифференциальных уравнений с помощью нейронных сетей

Расчет градиента∂L / dz (t₀)(первый градиент, требуемый вышеприведенным уравнением) теперь может быть достигнут путем решения расширенного ODE назад во времени. Для полноты в приведенном ниже уравнении указано, как рассчитать градиенты w.r.t. к параметрам функции нейронной сети:

Решение дифференциальных уравнений с помощью нейронных сетей

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

Решение дифференциальных уравнений с помощью нейронных сетей

Если вас интересуют дальнейшие математические детали этого сложного вычисления, пожалуйста, вернитесь к исходной статье или даже к исходной статье о сопряженном методе. Авторы представленной статьи даже предоставляют код Python для простого вычисления производных от решателя ODE.

Видео:Обыкновенные дифференциальные уравнения в не очень обыкновенных нейронных сетяхСкачать

Обыкновенные дифференциальные уравнения в не очень обыкновенных нейронных сетях

Сети ODE для контролируемого обучения

Теперь перейдем к самой интересной части статьи: приложения. Первое приложение, которое авторы упоминают в своей статье, относится к области контролируемого обучения, а именно к классификации письменных цифр MNIST. Цель состоит в том, чтобы показать, что метод ODESolve может обеспечить сопоставимую производительность с остаточной сетью с гораздо меньшими параметрами. Сеть, используемая для оценки в статье, дважды отбирает входное изображение, а затем применяет 6 остаточных блоков. В целом сеть содержит ок. Параметры 0.6M. Сеть ODESolve заменяет 6 уровней одним модулем ODESolve. Кроме того, авторы тестируют RK-сеть, которая аналогична, за исключением того, что она распространяет ошибку напрямую, используя метод Рунге-Кутты. Как упомянуто выше, вы можете связать количество уровней в традиционной нейронной сети с количеством оценок в ODE-Net. Количество параметров этих двух сетей составляет 0,22М. Важным результатом является то, что с примерно 1/3 параметров RK-Network и ODE-Net достигают примерно той же производительности, что и остаточная сеть. Кроме того, сложность памяти ODE-Net является постоянной (сравните следующий рисунок).

Решение дифференциальных уравнений с помощью нейронных сетей

Кроме того, точность решения ODE может быть настроена для максимизации производительности вычислений. Например, можно проводить обучение с высокой точностью и снизить точность во время оценки (более подробную информацию см. В документе).

Видео:Решение системы дифференциальных уравнений методом ЭйлераСкачать

Решение системы дифференциальных уравнений методом Эйлера

Непрерывные нормализующие потоки

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

Решение дифференциальных уравнений с помощью нейронных сетей

, гдед0 (г0)это начальное распределение иQk (Zk)является преобразованным распределением, с преобразованиямиfk, k = 0..K.Определитель Якоби в приведенной выше сумме гарантирует, что интеграл от функции распределения остается 1 на протяжении преобразования. К сожалению, вычислить этот детерминант для всех, кроме некоторых простых преобразований, довольно дорого.

Одним из популярных приложений нормализации потоков является вариационный автоэнкодер (VAE), который обычно предполагает, что скрытые переменные распределены как гауссиан. Это предположение ухудшает вывод VAE, потому что оно не позволяет сети изучать желаемое распределение. При нормализации потоков параметры гауссовского сигнала могут быть преобразованы в широкий спектр распределений перед их «декодированием» и, таким образом, могут улучшить возможности генерации VAE.Этот пост в блогеобъясняет нормализацию потоков подробнее.

Обсуждаемая нами статья представляет собой продолжение нормализации потоков в непрерывную область. Интересно, что это упрощает вычисление нормализующей константы. Если мы сделаем случайную переменную непрерывной и зависимой от времени, с динамикой времени, описываемой функциейе(если f непрерывна по Липшицу), то изменение логарифмической вероятности следует простому дифференциальному уравнению

Решение дифференциальных уравнений с помощью нейронных сетей

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

Решение дифференциальных уравнений с помощью нейронных сетей

Авторы также вводят стробирование для различных преобразований:

Решение дифференциальных уравнений с помощью нейронных сетей

Они называют такую ​​сумму преобразованийнепрерывный нормализующий поток(УТС).

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

Решение дифференциальных уравнений с помощью нейронных сетей

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

Видео:Откуда появляются дифференциальные уравнения и как их решатьСкачать

Откуда появляются дифференциальные уравнения и как их решать

Генеративные модели временных рядов через ODE

Третье приложение, упомянутое в статье, и, возможно, самое значительное, — это моделирование временных рядов с помощью ODE. Одним из мотивов авторов начать эту работу является их интерес к нерегулярным данным, таким как медицинские записи или сетевой трафик. Дискретность таких данных часто плохо определена, что приводит к проблемам с отсутствием данных в некоторых временных интервалах или просто неточным скрытым переменным. Существуют подходы, объединяющие информацию о времени с входом RNN, но они не представляют фундаментального решения проблем, стоящих перед нами.

Решением этого, основанного на модуле ODESolve, является генерирующая модель с непрерывным временем, которая при заданном начальном состоянии zₜ₀ и времени наблюдения t0… tN рассчитывает скрытые состояния z_t1… z_tN и выходные данные x_t1… x_tN:

Решение дифференциальных уравнений с помощью нейронных сетей

Функцияе(функция нейронной сети) отвечает за расчет скрытого состоянияZв любое времяTначиная с текущего временного шага. Модель представляет собой вариационный автоэнкодер, который кодирует прошлую траекторию (зеленая на рисунке ниже) в начальном скрытом состоянии zₜ₀ с использованием RNN. Как и во всех вариационных автоэнкодерах, распределение латентного состояния тем самым фиксируется с помощью параметров распределения (в данном примере гауссиана со средним значением μ и стандартным отклонением σ). Из этого распределения берется образец и проходит через ODESolve.

Решение дифференциальных уравнений с помощью нейронных сетей

Архитектура протестирована на синтетическом наборе данных двунаправленных двумерных спиралей, отобранных в нерегулярные моменты времени и искаженных гауссовским шумом. На следующем рисунке качественно показаны превосходные характеристики моделирования в модели скрытого нейронного ODE:

Решение дифференциальных уравнений с помощью нейронных сетей

Видео:Решение физических задач с помощью дифференциальных уравненийСкачать

Решение  физических задач с помощью дифференциальных уравнений

Выводы

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

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

  • Мини-пакетирование может вызвать проблемы с этим подходом, поскольку пакетирование нескольких образцов требует одновременного решения системы ODE. Это может значительно увеличить количество необходимых оценок. Тем не менее, авторы отмечают, что количество оценок оставалось управляемым даже при миниатчировании в течение всего эксперимента.
  • Уникальность решения ODE гарантируется только в том случае, если сеть имеет конечные веса и использует липшицевые нелинейности, такие как tanh или relu (например, не пошаговая функция).
  • Обратимость прямой траектории может быть затруднена путем сложения неточностей, вносимых числовой ошибкой в ​​решателе прямого ODE, числовой ошибкой в ​​обратном решателе ODE и потерей информации из-за множественных начальных значений, отображаемых в одно и то же конечное состояние.

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

Важным преимуществом метода, представленного в статье, является то, что можно свободно выбирать баланс между быстрым и точным решением, влияя на точность численного интегрирования во время оценки и / или обучения. Кроме того, метод очень широко применим (требующий только того, чтобы нелинейности нейронной сети были липшицевыми) и может применяться для моделирования временных рядов, контролируемого обучения, оценки плотности или других последовательных процессов.

Видео:Решение задачи регрессии с помощью нейронной сети на KerasСкачать

Решение задачи регрессии с помощью нейронной сети на Keras

Анализ малых данных

Видео:Геометрический смысл дифференциального уравненияСкачать

Геометрический смысл дифференциального уравнения

КвазиНаучный блог Александра Дьяконова

Видео:18+ Математика без Ху!ни. Дифференциальные уравнения.Скачать

18+ Математика без Ху!ни. Дифференциальные уравнения.

Нейронные обыкновенные дифференциальные уравнения

На конференции NeurIPS 2018 одной из лучших работ была признана статья «Neural Ordinary Differential Equations». Это нестандартный пост для блога, который, впрочем, может положить начало традиции… я выкладываю несколько обзоров на русском языке этой статьи и прошу читателей помочь выбрать мне лучшие.

Решение дифференциальных уравнений с помощью нейронных сетей

Сразу оговорюсь: составление этих обзоров — одно из заданий для моих потенциальных магистров на факультете ВМК МГУ. Все делали обзор одной и той же работы, некоторые мягкие требования:

  • понятность, простое объяснение всего-всего (м.б., в том числе, и доказательств),
  • оригинальные примеры,
  • небольшой объём,
  • иллюстрации и код.

Анонимные обзоры (читайте в произвольном порядке):

Большая просьба читателям, как минимум, заполнить совсем небольшую анкету. Комментарии к посту, как всегда, приветствуются: может подробно описать плюсы и/или минусы конкретных эссе. Нужно ли выкладывать в этом блоге подобные обзоры?

Share this:

Понравилось это:

Похожее

Видео:Python - численное решение дифференциального уравнения 1го порядка и вывод графикаСкачать

Python - численное решение дифференциального уравнения 1го порядка и вывод графика

Нейронные обыкновенные дифференциальные уравнения : 5 комментариев

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

История такая: ко мне много желающих в магистратуру, причём не только ММПшников, но и ребят с 3 потока. У меня всего один бакалавр-выпускник (да и того не я в своё время взял, он просто остался без научника), поэтому даже при квоте 3 чел на научного руководителя места есть (мой бакалавр тоже участвует в отборе).
Пришлось придумывать, как отобрать лучших. Первое задание (этот обзор) сделали 8 человек. Где-то половина желающих ничего не сделала, что уже немного упростило ситуацию (интересно, что как раз ребята с 3 потока не сделали обзор). Я давал на обзор больше 2х недель (но там было наслоение на их защиты). Один из критериев — время выполнения задания (поэтому даже, не смотря на то, что некоторые обзоры хуже, они сделаны быстрее).
Я наверное потом в комментариях напишу свой фидбек по отзывам. Сейчас все 8 человек участвуют в соревновании по ML…

Александр, спасибо за обзоры в открытом доступе, изучил несколько — весьма необычно и интересно.
Вопрос: а можно будет как-то попробовать поделать Late Submit’ы в соревновании, про которое вы писали в ответе на комментарий выше?

Видео:Обучение и использование нейронной сети при помощи Neural network toolbox в среде MatlabСкачать

Обучение и использование нейронной сети при помощи Neural network toolbox в среде Matlab

Символьные вычисления при помощи нейронных сетей

Нейронные сети хороши в решении статистических задач, в распознавании и генерации речи и изображений. В новой статье, опубликованной на arxiv.org, исследователи из Facebook AI Research показали, что нейросети позволяют получать отличные результаты также в символьном интегрировании и решении дифференциальных уравнений. Причём результаты нейросетей превосходят результаты в решении аналогичных задач коммерческих систем компьютерной алгебры, таких как Matlab или Mathematica.

Сама идея «механизировать» символьные вычисления появилась ещё на рубеже девятнадцатого и двадцатого веков.

В чём тут смысл?

Если у нас есть некоторое арифметическое выражение, например

то для получения ответа нам не обязательно привлекать лучшего математика планеты. Вообще говоря, сойдёт и аккуратный исполнитель, который проводить математические исследования, быть может, и не умеет, но зато способен точно исполнять инструкции вида: «если встретились два числа, разделённые знаком +, то надо следовать алгоритму [описание алгоритма сложения в столбик]», или: «если встретились два числа, разделённые знаком ×, то надо следовать алгоритму [описание алгоритма умножения в столбик]».

Иными словами, арифметику и даже более сложную математику таким способом можно превратить в аналог «конвейера по сборке чего-то там»: вычисление разбивается на этапы, каждый из которых можно выполнить, следуя заранее описанной последовательности действий, почти без раздумий, и потому выполнять эти действия могут самую малость обученные «работники конвейера», а не только «топовые математические инженеры».

Однако «арифметикой чисел» дело не ограничивается. Превратить в конвейер можно и «арифметику символов». Это несколько сложнее, однако вполне достижимо.

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

Например, правило может быть таким:

Это правило трактуется следующим образом: «если нам встретилось какое-то выражение, в дальнейшем называемое a, потом символ ×, потом ещё какое-то выражение, называемое c, потом символ +, потом какое-то выражение, называемое b, потом символ ×, потом точно то же, что и в прошлый раз, выражение c, то такую конструкцию можно заменить на (a + b) × c, где на место a, b и c подставлены соответствующие выражения».

Расшифровка может показаться громоздкой, однако, если понять смысл самого процесса, то его краткая символьная запись окажется довольно понятной. Мы, например, взглянем на выражение

и поймём, что его можно преобразовать в

поскольку 2 играет роль a в вышеописанном правиле, (3 + y) — роль b, а x — роль c.

Задав через такие правила все возможные алгебраические преобразования, мы можем поручить «работнику конвейера» перебрать все возможные трансформации интересующего нас выражения: пусть он возьмёт выражение, найдёт все места, соответствующие правилу 1, и применит к ним это правило, получив столько возможных «альтернатив» для исходного выражения, сколько было найдено таких мест. Потом он то же самое проделает с правилом 2. И так далее, пока не переберёт все правила. Потом пусть с каждым элементом получившегося списка «альтернатив» он проделает то же самое.

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

Среди них мы можем найти, например, самую короткую форму — это будет «конвейерное» упрощение выражений. Или, если в выражении был знак «=», то мы можем найти такое преобразование, где слева от «=» стоит «x», и это будет решением уравнения относительно x.

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

И такие системы на данный момент реализованы в относительном изобилии: Mathematica, Maple, Matlab и ряд других программ/библиотек содержат реализацию данного алгоритма вместе с довольно обширным набором правил преобразования, позволяющий им упрощать выражения, решать уравнения, брать производные и т. п.

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

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

В шахматах, как мы знаем, это сработало. И вот недавно группа исследователей, состоящая из Гийома Лампла (Guillaume Lample) и Франсуа Шартона (François Charton), попробовала проделать аналогичное с символьным интегрированием и решением дифференциальных уравнений.

Существуют способы записи математических выражений в «линейной» форме.

Решение дифференциальных уравнений с помощью нейронных сетей

Может быть записано, как

Если пойти дальше и ввести понятие «бинарных» (с двумя аргументами) и «унарных» (с одним аргументом) операторов, то форма записи может стать ещё более регулярной.

А отсюда уже один шаг до того, чтобы прийти к записи

Здесь уже нет понятия «приоритета операций» («сначала выполняется умножение, а потом сложение», и т. п.) и скобок, однако всё равно любая запись в такой форме имеет единственный смысл и, наоборот, любое математическое выражение можно преобразовать в такую форму.

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

Мэйнстримом машинного перевода сейчас являются нейронные сети, преобразующие одну последовательность слов в другую.

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

На простом примере это можно представить так. Есть у нас набор точек на плоскости.

Мы, предположим, видим, что они расположены вроде бы почти на одной прямой. Мы можем взять уравнение прямой

и попытаться подобрать a и b так, чтобы получившаяся прямая прошла как можно ближе ко всем этим точкам.

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

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

Однако роль «иксов» и «игреков» могут играть не просто какие-то числа, а номера слов языка (предположим, что мы все возможные слова пронумеровали), роль же входных данных в этом случае будет играть набор предложений, переводы которых нам известны (например, их сделал человек-переводчик).

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

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

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

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

Ключевое же отличие шахматного интеллекта и машинного перевода в том, что последний даёт хорошие результаты, если в качестве входных данных брать не только несколько «текущих» слов, а ещё и что-то вроде «текущего состояния» нейронной сети, в которое она пришла после перевода предыдущих слов. Это оказывается аналогом «понимания контекста» — ведь слова естественных языков обретают смысл не только сами по себе, но ещё и в зависимости от того, какие слова стоят в относительной от них близости.

Нейронная сеть, которая «помнит контекст», как раз и была использована для символьных вычислений в данном исследовании.

Однако что взять в качестве данных для обучения такому «переводу»?

Тут, внезапно, ситуация даже проще, чем с естественными языками. Ведь для генерации набора примеров на последних нам нужен человек-переводчик, предоставивший нам правильные переводы фраз, которые будут использоваться для обучения нейронной сети делу оценки гипотез. В случае же с математическими выражениями мы можем просто генерировать их случайным образом, потом автоматически брать их производную (в отличие от интегрирования, взятие производной — гораздо более простая операция) и считать её входным «подынтегральным» выражением с известным ответом (этим самым случайным выражением).

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

Наконец, при помощи известной закономерности — правила «интегрирования по частям» — мы можем скомбинировать выражения из предыдущих пунктов, чтобы получить ещё одну порцию данных.

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

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

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

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

Тем не менее, результаты всё равно впечатляют и вдохновляют: 99,6% успешных взятий интеграла у этой системы против 84% у Mathematica (с ограничением в 30 секунд) и 65,2% у Matlab.

97% успешных решений дифференциальных уравнений первого порядка против 77,2% у Mathematica.

81% успешных решений дифференциальных уравнений второго порядка против 61,6% у Mathematica.

Наконец, весьма интересна и ещё одна составляющая данного процесса.

Человек, конечно, тоже может решать задачу механическим перебором, однако ещё он на основе своего опыта может «видеть» перспективные направления этого перебора, чем радикально сокращать время поиска. Ранее, аналогичный процесс был сымитирован для игр в шахматы и го, но теперь есть пример его имитации для решения математических задач. Это — ключ как к лучшему пониманию работы человеческого интеллекта, так и к совершенствованию алгоритмов работы искусственного.

Поделиться или сохранить к себе: