December 5th, 2019

Нейросеть интегрирует и решает дифуры

Когда говорят, что компьютерная программа что-то проинтегрировала, обычно имеют в виду численное интегрирование, т.е. вычисление числового значения интеграла путем непосредственного или немного оптимизированного подсчета клеточек под кривой. Недавно двое сотрудников "Фейсбука", предположительно французской национальности, научили нейросеть делать символьное интегрирование, т.е. по формуле исходной функции получать формулу функции-интеграла. В принципе, это умеют делать и традиционные математические пакеты, но гораздо хуже, чем получилось с нейросетью. Правильности решения нейросеть не гарантирует, она просто генерирует догадки, первая из которых верна с вероятностью более 90%, а в первых 50 содержится правильная с вероятностью более 99%. Из-за особенностей представления формул нейросеть различает, например, 2+2 и 4, из-за этого иногда получается, что пользователь получает в качестве догадок большой набор эквивалентных формул, при этом нейросеть понятия не имеет, что такое эквивалентные формулы, ее таким вещам не учили. Вот, например:



Этот пример относится к другому эксперименту, где нейросеть не интегрирует, а решает дифуры, хуже, чем интегрирует, но тоже годно.

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