Ребята приспособили нейросетевой машинный перевод к математическим задачам. А именно они научили нейросеть брать интегралы и решать дифференциальные уравнения первого и второго порядка.
Математическое выражение похоже на предложение естественного языка. И то, и другое можно представить в виде дерева (составляющих или зависимостей). А задача интегрирования похожа на задачу перевода, и даже чем–то проще, потому что ответ часто содержит куски исходного выражения, только по–другому скомбинированные.
Вот пара французских учёных из Facebook AI Research и решила попробовать, как Deep Learning будет справляться с подобными задачами. Как выяснилось, нейросети, работающие с деревьями, не так эффективны, как те, что работают просто с последовательностями символов. Поэтому они переводили деревья обратно в текст в виде польской префиксной нотации. В такой нотации, например, выражение x*(y+2) записывается как * x + y 2, что однозначно соответствует дереву и не требует скобок.
Далее они разработали алгоритм, который генерирует случайные математические выражения, сбалансированные по глубине и ширине дерева. Выражения могут состоять из переменных, констант е и п, целочисленных значений, бинарных операций (+ — * / ^) и функций (sin cos log exp sqrt и т. д.).
Этим алгоритмом они нагенерировали данных для обучения нейросети. Например, для интегрирования использовалось несколько способов генерации пар задача–решение, чтобы опять же данные были сбалансированы. Первый способ — берём случайное выражение и интегрируем его существующими автоматическими системами. Второй — наоборот, берём производную от случайного выражения и записываем её в качестве задачи. И т. д. В результате получилось по несколько десятков миллионов примеров для каждой из трёх задач.
Результаты оказались удивительными. При интегрировании система выдавала правильный ответ первым более чем в 90% случаев. А если брать не единственный, а 50 ответов, которые нейросеть посчитала наиболее вероятными, то среди них правильный ответ присутствовал уже с вероятностью 99%. Следует отметить, что в отличие от машинного перевода тут автоматически выбрать из 50–ти ответов правильный не составляет труда, достаточно взять производную, а это тривиальная задача.
На решении дифуров результаты были похуже, но всё равно на 50–ти ответах достигали 94% для уравнений первого порядка и 82% для второго. Во всех задачах система обошла пакет Mathematica, который справился только с 85% интегралов и 77% и 61% дифуров соответственно. Matlab и Maple показали себя ещё хуже.
Что интересно, во многих случаях система выдавала несколько правильных решений, записанных по–разному, но эквивалентных.
Такие дела.
Комментариев нет:
Отправить комментарий