И как заставить ИИ реализовывать наши цели? Что ж, можно просто поговорить с ними на естественном языке человеческих высказываний. Это отлично срабатывает при общении с Сири. Но вот когда требуется объяснить что-то сложное подробно, такой способ не годится. Нужен компьютерный язык, который позволяет репрезентировать сложные концепции, который можно постепенно усложнять, а естественный язык этого не подразумевает. Моя компания потратила много времени на создание языка данных, который бы включал знания о мире непосредственно в язык. Традиционный подход к созданию компьютерного языка состоит в том, чтобы разработать код, отражающий операции, которые компьютеры «изначально» знают, как выполнять: через выделение памяти, распределение значений переменных, итерации, изменение программных счетчиков и т. д. По сути, мы говорим компьютерам, что им делать. Мой подход состоял в том, чтобы создать язык, который «благоволит» не компьютерам, а людям; взять человеческие мысли и преобразовать их в некую форму, понятную компьютеру. Можем ли мы инкапсулировать знания, накопленные в науке и житейском опыте, в язык, который использовался для коммуникации с компьютерами? Таково значимое достижение последних тридцати лет моей жизни: возможность осуществить на практике описанное выше.
В 1960-х люди часто повторяли: «Когда мы сможем сделать то-то и то-то, мы будем знать, что у нас есть ИИ. Когда мы сможем вывести интеграл из исчисления, мы будем знать, что у нас есть ИИ. Когда мы сможем поговорить с компьютером и заставить его казаться человеком…», и т. д. Трудность заключалась в следующем: «Черт возьми, компьютер просто не знает достаточно о мире». Вы спрашиваете машину, какой сегодня день недели, и она в состоянии ответить. Вы спрашиваете, кто президент, и она с великой вероятностью теряется с ответом. В этот миг вы осознаете, что разговариваете с компьютером, а не с человеком. А сегодня, когда доходит до пресловутых тестов Тьюринга с их простыми вопросами, люди, которые пытались задействовать для тестов, например, систему WolframAlpha, обнаруживают, что боты неизменно проигрывают. Требуется всего-навсего начать задавать машине сложные вопросы, чтобы она ответила! Ни один человек не может этого сделать. К тому времени, как вы зададите несколько разрозненных вопросов, уже не сыщется человека, способного дать все ответы – зато система их знает. В этом отношении мы действительно сумели создать довольно эффективный ИИ.
Далее. Имеются определенные виды задач, простых для людей, но традиционно чрезвычайно сложных для машин. Стандарт – это визуальная идентификация: что это за объект? Люди могут распознать и дать простое описание, но компьютер здесь просто безнадежен. Однако пару лет назад мы разработали небольшую систему идентификации изображений, и многие другие поступили так же (похвастаюсь: наша программа оказалась чуть лучше остальных). Вы показываете машине изображение, и, как говорится, зуб даю, что она почти наверняка его опознает. Любопытно было бы показать ей абстрактную картину и оценить ее реакцию, к слову. Но в целом опыт следует признать успешным.
Мы используем ту же технологию нейронных сетей, которую Маккаллок и Питтс описывали в 1943 году и с которой многие из нас работали в начале 1980-х. В 1980-х годах люди успешно реализовали оптическое распознавание символов. Взяли двадцать шесть букв алфавита[232] и сказали: «Так, вот это A? Это B? Это C?» и т. д. Подобное можно проделать для двадцати шести переменных, но этого нельзя сделать для десяти тысяч переменных. Все упиралось в масштабирование системы, которое сулило замечательные перспективы. В английском языке существует, допустим, пять тысяч «наглядных» нарицательных существ, даже десять тысяч, если добавить сюда названия особых видов растений и жуков (ведь кто-то же их узнает с первого взгляда). Мы заложили в нашу систему 30 миллионов изображений. В итоге получилась большая, сложная и запутанная нейронная сеть. Детали, полагаю, не имеют значения, скажу только, что для обучения потребовалось приблизительно четыре квадриллиона процессорных операций.