Страница 3 из 13
Универсальные машины
Алан Тьюринг[12] был одним из прародителей ИИ. Его интересовало, что случится, если компьютер сможет мыслить. Кроме того, он заложил основы самой идеи компьютера. Ему пришла в голову простая, но гениальная мысль: универсальная вычислительная машина. Машина, которая сможет вычислить все, что можно вычислить. Да, вы поняли меня правильно. С тех пор как Тьюрингу пришла в голову эта идея, мы смогли создать такой компьютер.
Центральными для идеи универсальной вычислительной машины являются концепты «программ» и «данных», которыми эти программы оперируют[13]. Программы – это последовательности инструкций, которые компьютер выполняет при решении проблемы. Можно представить их в виде своеобразных рецептов. Данные – это разная информация, с которой работает программа, как, например, ингредиенты, используемые во время конкретного процесса приготовления.
Представьте себе проблему обновления чьего-то банковского счета в тот момент, когда этот человек совершает электронный платеж. Мы можем написать программу, которая будет это делать вне зависимости от суммы платежа или личности человека, совершающего его. Данные, с которыми работает программа, – это база клиентов, включающая их имена, номера счетов и суммы платежей.
Программа для совершения электронного платежа работает следующим образом: сначала она находит имя клиента и баланс счета в базе, затем вычитает платеж из баланса и, наконец, обновляет баланс в базе. Просто, как все гениальное. Изменив данные, мы можем вычесть платеж из счета другого клиента или даже клиента другого банка. Изменив программу, мы можем заставить компьютер делать что-то другое. Например, если мы заставим его прибавлять сумму, а не вычитать, то получим программу, которая позволяет вносить электронные депозиты.
Таким образом, компьютер – образец универсальной машины, способной выполнить любую программу. В этом и заключается секрет смартфона, который лежит в вашем кармане. В него можно загрузить приложения, позволяющие выполнять задачи, о которых создатели смартфона даже подумать не могли. В этом смысле смартфон стал гораздо большим, чем просто телефон: он стал навигатором, календарем, будильником, калькулятором, блокнотом, музыкальным проигрывателем, игровой консолью и постепенно становится еще и личным помощником. Продвинутые технологии могут дать нам компьютеры, способные работать быстрее, но не могут дать компьютеры, способные вычислить больше, чем универсальная вычислительная машина, о которой Тьюринг впервые подумал еще в тридцатых годах прошлого века. Любопытно то, что Тьюрингу пришла в голову эта мысль еще до того, как был создан первый компьютер.
Более того, компьютеры – единственная универсальная машина, которую человек изобрел. Вообразите, что дала бы нам универсальная машина для путешествий. Она позволила бы нам летать, плавать под водой и путешествовать по земле. Она могла бы ехать по рельсам, по шоссе, по траве и даже через зыбучие пески. Она бы смогла вмещать сколько угодно человек. Черт возьми, она бы довезла нас даже до Луны. Представьте себе трансформеров на стероидах.
Для того чтобы выполнить новую задачу, компьютеру просто нужна новая программа. Это делает компьютеры бесконечно приспосабливаемыми. Те машины, которые у нас есть, обладают гораздо большим потенциалом. Они даже способны стать искусственно разумными. Нам нужно лишь найти нужную программу.
Еще одна невероятная идея заключается в том, что нам даже не нужно искать новую программу, потому что компьютер способен сделать это сам. Он сам может научиться решать новые задачи. Даже научиться вести себя разумно.
Машины, которые учатся
Как компьютер может научиться делать что-то новое? По сути, программа – это просто устойчивая последовательность инструкций в виде компьютерного кода. Вообще говоря, термин «компьютерный код» представляется довольно удачным, учитывая, что инструкции программы действительно прописаны шифром. На компьютерах с процессором Z80, например, код 87 означает прибавление одного числа к другому, а 76 – окончание работы программы. На компьютере с процессором 6800 код 8B выполняет функцию прибавления, а DD – функцию закрытия программы[14].
Важная вещь, связанная с кодом, заключается не в том, что он зашифрован, а в том, что это обычные данные – последовательность чисел. Это очень впечатляющая идея. Если мы хотим поменять программу, нужно просто загрузить новые коды в качестве данных. Еще больше впечатляет тот факт, что программа может поменять собственные данные, а значит, поменять сама себя. В этом и заключается суть обучения машины: компьютер может поменять собственные данные и собственный код, чтобы улучшить свои характеристики.
Не столь важно знать, как именно алгоритмы обучения решают, что именно поменять в коде. Некоторые изменения вызваны эволюцией, мутациями и скрещиванием кодов, такими же, как генные мутации и скрещивания в человеческой репродукции. Другие обусловлены самим мозгом, обновляющим связи между искусственными нейронами так же, как наш мозг укрепляет подобные связи в процессе нашего обучения.
В любом случае компьютер оставляет те изменения, которые улучшают его работу, и избавляется от других, которые этого не делают. Это происходит медленно, но компьютеры развиваются.
У нас уже есть один хороший пример создания интеллекта – homo sapiens. Наш интеллект – вещь в большой степени приобретенная. Мы были рождены без языка. Мы не умели читать и писать. У нас не было никаких знаний об арифметике, астрономии или истории Древнего мира. Но мы выучились всему этому и не только.
Обучение станет, вероятно, одной из важнейших характеристик думающих компьютеров. Это затрагивает феномен «бутылочного горлышка», проблему освоения компьютером всех знаний, которые человечество приобрело на протяжении нескольких тысяч лет. Программирование всех этих знаний вручную, факт за фактом – очень долгий и сложный процесс. Но нам и не нужно этого делать, компьютеры могут освоить все это самостоятельно.
Теперь нам окончательно ясно, что компьютеры превосходят людей в обучаемости. Они способны написать программу, которая может улучшить их собственный код, а также поделиться им с другими компьютерами. Так просто! Одновременно это гораздо эффективнее человеческого процесса обучения.
В следующий раз, когда вы попытаетесь научить ребенка вычислять максимум математической функции или склонять немецкий глагол, представьте, насколько проще это можно было бы сделать, если бы он был компьютером. Вы просто дали бы ему нужный код.
Компьютеры делают больше, чем мы от них требуем
Компьютерное обучение стало причиной многих недавних технологических прорывов, связанных с ИИ. Оно позволило AlphaGo от Google победить лучших игроков в го на планете. В нем заключается секрет успеха переводчика Google. Оно породило множество программ, которые теперь лучше нас умеют диагностировать рак кожи или играть в покер.
Распространенное мнение относительно обучения машин заключается в том, что компьютеры могут делать только то, для чего они запрограммированы. И на элементарном уровне это действительно так. Компьютеры целиком и полностью детерминированы[15].
Они следуют инструкциям, прописанным в их коде. Они не могут от них отклоняться. Однако на более глубоком уровне компьютеры способны делать вещи, для которых не запрограммированы. Они могут осваивать новые программы. Даже могут быть креативными. Как и мы, они учатся новому, основываясь на собственном опыте.
AlphaGo не была запрограммирована для того, чтобы обыгрывать в эту древнюю китайскую игру чемпионов мира. Она научилась это делать благодаря тому, что постоянно практиковалась. Она сыграла партий в го больше, чем человек способен сыграть за всю жизнь. И в процессе игры программа понемногу становилась креативной. Она использовала ходы, которых от нее не ожидали даже самые искусные мастера, открывала новые возможности для игры в го.
12
Алан Тьюринг (1912–1954) – английский математик, логик, криптограф, оказавший существенное влияние на развитие информатики. – Примеч. ред.
13
Универсальная машина Тьюринга – это более абстрактное и в то же время более механическое, чем современные компьютеры, изобретение. Тем не менее оно ничуть не хуже. Машина состоит из бумажной ленты, на которой написаны символы, из головки, которая может их читать, писать новые символы на бумажной ленте или перемещать ленту вправо и влево, а также из электроники, которая производит различные действия (такие, как чтение ленты, написание символов или движение ленты) в зависимости от внутреннего состояния и последнего прочитанного символа. Впервые такую машину Тьюринг описал в 1937 году. См. Alan Turing, ‘On Computable Numbers, with an Application to the Entscheidungsproblem’, Proceedings of the London Mathematical Society, vol. 42, pp. 230–265. («О вычислимых числах, применительно к проблеме разрешения», труды Лондонского математического общества, т. 42, с. 230–265.)
14
Инструкции для Z80-х и для 6800-х микропроцессоров существуют в виде шестнадцатеричных чисел). Десятичная система существует по целочисленному основанию 10: после 9 идет 10, затем 11, 12 и т. д. В шестнадцатеричной системе после 9 идет A (=10), B (=11), C (=12), D (=13), E (=14), F (=15), потом 10 (=16), 11 (=17), 12 (=18) и т. д. Инструкция DD для 6800-го микропроцессора известна как «остановись и гори». До создания таких микропроцессоров компьютеры были большими и ненадежными, а при остановке их работы всегда существовала небольшая угроза воспламенения.
15
Забавный факт заключается в том, что, хотя компьютеры – детерминированные машины, наука о них редко повторяет уже поставленные эксперименты. Компьютеры превратились в очень сложные системы. В результате воспроизвести условия предыдущего эксперимента становится практически невозможно.