Cовременный AI все еще совсем не понимает смысла того, что читает. Что такое ”смысл” понять сложно, но меня кроме этого давно занимает вопрос: ”а что собственно значит ”понимать”? (что такое ”понять” понятно — это значит простить). Кажется, что если крепко думать, то так же быстро, как и с вопросом о смысле, приходишь к Витгенштайну, позитивизму, а в конце концов в философский цугцванг. Поэтому надо отталкиваться от каких-то базовых примеров.

Как проверить, что школьник выучил таблицу умножения? Ну, проверить все 81 клеточки в таблице на обратной стороне тетради. Ок, выучить — это одно, понять — другое. Так, навык сложения произвольно больших чисел — это и есть на повседневном уровне понимание операции сложения. Как мы проверяем, что человек умеет складывать? Даем ему кучу примеров и сверяем ответы. Причем тут все ответы не вызубришь, надо именно просечь фишку.

Теперь про AI. Спекулируя на тему автоэнкодеров [1], можно представить, что ”смысл” большого текста — это очень маленькая выжимка информации, из которой можно восстановить, в общем и целом, исходный текст. Это как если на вход дать четыре тома всем известного романа, а на выходе — ”ну, это про войну и про мир”. Машина такую высокоуровневую выжимку должна уметь получать.

Теперь будем скармливать в нашу сеть строчки вида ”2+2=4”, ”23+42=65” и т.д. как строчки в абстрактном алфавите с 12 символами (цифры от 0 до 9, знаки плюс и равно), в надежде, что машина в какой-то момент поймет, что ничего принципиально нового мы ей уже предложить не сможем. В этот момент будем считать, что машина поняла, как работает сложение. Проверять будем, как и в случае с человеком — машина должна уметь сложить два произвольных числа, то есть на строчку вида ”2+3” выдать ”5”. Ключевым моментом тут оказывается то, что размер входа и вывода оказываются ничем не ограничены, в то время как сам ”смысл” сложения можно легко закодировать в программу конечного размера. Так, например, мы используем алгоритм сложения в столбик, когда рядом нет силиконового друга.

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

Такой подход содержит множество изъянов, но сам пример показывает, что для внутреннего понимания смысла искусственный интеллект, вероятно, должен уметь выращивать внутри себя мини-интерпретаторы, чтобы в итоге обрабатывать строки произвольной длинны с ограниченной колмогоровской сложностью [2]. Текущая архитектура такое судя по всему не умеет на конструктивном уровне. Более того, вычисление выходного значения вероятно в итоге будет зависеть от входных данных, по крайней мере от их размера.

[1] https://en.wikipedia.org/wiki/Autoencoder

[2] https://en.wikipedia.org/wiki/Kolmogorov_complexity

Written by

Post-doc at the Renyi Institute of Mathematics, Crypto researcher

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store