Еще один прорыв в Google DeepMind? Предложена и продемонстрирована нейросетевая форма архитектуры машины Тьюринга, и, похоже, она действительно обучается своим алгоритмам.
Одна из проблем с нейронными сетями заключается в том, что в теории мы знаем, что они мощные, но на практике обучить их и заставить учиться тому, что мы хотим, оказывается непросто. Например, сеть с прямой передачей с тремя слоями может обучиться любой функции, а рекуррентная нейронная сеть RNN является полной по Тьюрингу и поэтому может вычислить все, что можно вычислить.
Нам нужны некоторые правила и идеи для придания сетям большей структуры, чтобы они оправдали свои надежды. В конце концов, человеческий мозг — это не просто беспорядочно соединенный набор нейронов, в нем есть функциональные единицы, которые выполняют определенную работу.
Нейронная машина Тьюринга (NTM) создана на основе стандартной конструкции машины Тьюринга, но с использованием нейронных сетей для реализации функциональных единиц. Стандартная машина Тьюринга состоит из блока управления и ленты. Блок управления — это конечный автомат, который может читать и записывать ленту. По мере считывания символов он меняет состояние, а затем записывает символ. Это модель того, что такое вычисления, и, хотя теоретически она может вычислить все, что можно вычислить, она не является практической машиной.
Нейронная машина Тьюринга также имеет блок управления и память, которая немного мощнее, чем простая лента машины Тьюринга. Блок управления может быть либо простой сетью с прямой обратной связью, либо рекуррентной нейронной сетью. Память имеет форму матрицы значений, которая обновляется более постепенным образом, чем стандартная цифровая память. Операция записи состоит из операции стирания, которая подобна умножению на 1-w, т.е. она уменьшает то, что хранится в памяти, на коэффициент w, и операции сложения, которая добавляет w к этому месту. Вы видите, что память может работать таким образом, что воспоминания исчезают и медленно заменяются новыми. Если вы знаете о сетях Хопфилда, это покажется вам знакомым, и действительно, память представляет собой модифицированную адресную память.
Пока что это звучит как попытка создать машину Тьюринга из компонентов нейронной сети, но в этой форме машины есть нечто совершенно иное. Все компоненты работают с непрерывными величинами, и вся машина является дифференцируемой. То есть, вы можете количественно определить изменение в выходе, к которому приводит любое изменение входов. Это означает, что для обучения нейронной машины Тьюринга можно использовать стандартное обратное распространение, и это очень большое отличие.
Конечно, тот факт, что вы можете обучить машину, еще не означает, что она научится чему-то хорошему или особенно полезному. Поэтому команда в составе Алекса Грейвса, Грега Уэйна и Иво Данихелки воплотила свою теорию в программу и обучила ее на некоторых подходящих данных.
Сначала нужно было заставить машину копировать входную последовательность. Предъявлялись случайные двоичные последовательности, и целью, на которую обучалась машина, была повторная последовательность. Это звучит тривиально, но вы должны помнить, что последовательности были разной длины, и при тестировании машина не видела тестовых последовательностей. Другими словами, чтобы выполнить задачу, машина должна была выучить алгоритм, который она должна была сохранить и воспроизвести любую представленную ей последовательность.
Результаты очень убедительны. Нейронная машина Тьюринга обучалась очень быстро по сравнению со стандартной LSTM-сетью, которая обычно используется в такого рода задачах:
Обратите внимание, что были опробованы две версии нейронной машины Туринига: одна с LSTM в качестве контроллера, а другая — со стандартной сетью с прямолинейным движением. Из кривых ошибок видно, что оба варианта достигли результатов, которые отличаются от результатов, полученных с помощью LSTM.
Когда была изучена структура машины, было обнаружено, что последовательность операций соответствует алгоритму:
initialise: move head to start location
while input delimiter not seen do
receive input vector
write input to head location
increment head location by 1
end while
return head to start location
while true do
read output vector from head location
emit output
increment head location by 1
end while
Цитируем из статьи о нейронной машине Тьюринга:
По сути, это то, как человек-программист выполнил бы ту же задачу на низкоуровневом языке программирования. Что касается структур данных, то можно сказать, что NTM научился создавать и итерировать массивы.
Следующей задачей было научиться копировать последовательности заданное количество раз. Алгоритм, который он должен был выучить, по сути, был предыдущим алгоритмом внутри цикла for. Это было достигнуто отлично, но при большем количестве тренировок. Далее была задача, которая требовала выполнения ассоциативного припоминания, а затем задача, которая требовала обучения модели n-грамм.
Последняя задача, возможно, самая впечатляющая — обучение сортировке данных.
НТМ обучался на наборе данных, состоящем из бинарного вектора со скалярной оценкой приоритета. Задачей было отсортировать те же векторы в порядке, соответствующем рейтингу приоритетов. НТМ научился делать это, используя любой тип контроллера, но традиционный LSTM с этим не справился:
Какой алгоритм был изучен?
Исследователи надеялись, что НТМ изобретет сортировку двоичной кучи, но на самом деле он, похоже, изобрел хэш-таблицу. Векторы хранились в ячейках памяти, контролируемых приоритетом, а затем считывались в порядке приоритета, чтобы получить отсортированный список.
Что все это означает для ИИ?
У нас есть новая архитектура нейронной сети, которая, похоже, способна решать проблемы таким образом, что это можно интерпретировать как создание алгоритма. Связь с машиной Тьюринга, вероятно, не важна, и нам не следует придавать этому большое значение. Возможно, лучше рассматривать НТМ как архитектуру, в которой успешно сочетаются вычислительная сеть и память таким образом, что они оба могут быть обучены.
Если это действительно работает, то стоило бы посмотреть, что это даст в решении современных сложных проблем — например, двуногой ходьбы роботов, понимания языка и удержания плазмы.