Одна из первых проблем, с которой вы столкнетесь, если начнете думать о создании какой-либо формы ИИ, — это то, какое представление данных использовать.

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

Но. Природа/Бог не так давно села и сказала: «Ну, люди, очевидно, в конечном итоге создадут Интернет, так что давайте сделаем небольшую запись в базе данных для этого здесь…». Хотя мы можем или не можем начать с абсолютно чистого листа, на нем определенно не было ничего о компьютерах, банкоматах, бейсболе, самолетах и ​​т. д. Это не ограничивается людьми: собаки ничего не знают о мячах или телевидении. еще до рождения, но им удается довольно хорошо приспособиться к обоим.

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

  1. Представление данных: «мысли», «понятия».
  2. Операции над этими данными: «рассуждение».

Здесь вы можете немного схитрить, поэтому вам разрешено говорить что-то вроде «у нас пять Чувств, у нас есть Память, у нас есть Эмоции», но не «здесь есть Дома, Компьютеры, Велосипеды,…». Поэтому, как бы вы ни собирались кодировать эти вещи, лучше быть в состоянии справиться с совершенно неожиданным, а затем быть в состоянии не только привыкнуть к этому, но и принять это и опираться на него.

Это немного сложно. Это выходит за рамки «Структуры данных и алгоритмы 101». Вероятно, для этого требуется совсем другой набор инструментов.

Итак, давайте рассмотрим одно из возможных направлений, начав с метафоры: двойственность временной и частотной областей. При изучении сигналов (кто-нибудь EE?), скажем, звука, исходящего из ваших наушников прямо сейчас, тогда вы можете рассматривать этот сигнал как временную последовательность значений (образцов), ИЛИ вы можете рассматривать его как спектр частот, активирующихся в различных режимах. узоры с течением времени. Дело в том, что оба представления в некотором смысле полны — они могут полностью описать происходящее, и любая операция, которую вы выполняете в одном, имеет представление в другом — тем не менее, есть вещи, которые очень легко придумать в одном. и чертовски невозможно в другом. Если вы хотите что-то делать с сигналами, вам лучше быть в курсе обоих и уметь переключаться между ними.

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

Следствие № 1.1. Есть вещи, которые ИИ по своей природе сложно сделать, но которые просты для компьютера, и нам может понадобиться построить гибридную систему, чтобы «взять лучшее из обоих миров».

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

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

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

Output_vector = max(0, A_matrix * input_vector)

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

Да, иногда входные/выходные векторы имеют многомерную интерпретацию и лучше всего описываются как сами матрицы. Это нормально.

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

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

Кроме того, правдоподобно интерпретировать векторы мысли как сумму редко закодированных атомов «смысла».

Это приводит нас к:

Гипотеза № 2: мы можем думать об этих матрицах и векторах как о дискретных представлениях идеализированных непрерывных сущностей. Если наши нынешние «матрицы рассуждений» и «векторы мысли» — всего лишь дискретные и ограниченные тени на стене пещеры, то их Платоновы Формы непрерывны по своей природе и теоретически способны к бесконечному разрешению. Но они по-прежнему гладкие, непрерывные и несколько супер-накладные.

Мы можем интуитивно расширить умножение матриц на непрерывные матрицы и векторы.

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

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

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

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

Хотя я не видел, чтобы выходные данные рекуррентных нейронных сетей менялись плавно с течением времени, я чувствую себя смелым/глупым, поэтому:

Гипотеза № 4. Точно так же, как матрицы рассуждений и векторы мысли можно рассматривать как дискретные воплощения непрерывных идеалов, точно так же можно рассматривать и точно так же пересчитывать время.

Теперь мы, наконец, готовы сделать решительный шаг — векторы мысли — это действительно то представление данных, которое мы ищем:

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

Гипотеза № 5.1: Мыслительные векторы имеют значение только в контексте их происхождения и должны быть переведены, например, в Английский для общения. Таким образом, хотя вы можете воспринимать и испытывать фактически одно и то же, когда видите что-то красного цвета, как и я, наши действительные внутренние представления, вероятно, различны.

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

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

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

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

Мы можем сделать это? Ну, есть два типа интеллекта (без учета деторождения):

  1. Те, кто в лучшем случае может построить интеллект наравне с собой.
  2. Те, кто может развить интеллект выше, чем они сами.

Только № 2 ведет к сингулярности ИИ. Пока не ясно, что мы в этом ведре. Мы вполне можем быть в #1. Но создание такого интеллекта все равно было бы очень полезным.