Еще одна невероятная идея заключается в том, что нам даже не нужно искать новую программу, потому что компьютер способен сделать это сам. Он сам может научиться решать новые задачи. Даже научиться вести себя разумно.
Машины, которые учатся
Как компьютер может научиться делать что-то новое? По сути, программа – это просто устойчивая последовательность инструкций в виде компьютерного кода. Вообще говоря, термин «компьютерный код» представляется довольно удачным, учитывая, что инструкции программы действительно прописаны шифром. На компьютерах с процессором Z80, например, код 87 означает прибавление одного числа к другому, а 76 – окончание работы программы. На компьютере с процессором 6800 код 8B выполняет функцию прибавления, а DD – функцию закрытия программы[14].
Важная вещь, связанная с кодом, заключается не в том, что он зашифрован, а в том, что это обычные данные – последовательность чисел. Это очень впечатляющая идея. Если мы хотим поменять программу, нужно просто загрузить новые коды в качестве данных. Еще больше впечатляет тот факт, что программа может поменять собственные данные, а значит, поменять сама себя. В этом и заключается суть обучения машины: компьютер может поменять собственные данные и собственный код, чтобы улучшить свои характеристики.
Не столь важно знать, как именно алгоритмы обучения решают, что именно поменять в коде. Некоторые изменения вызваны эволюцией, мутациями и скрещиванием кодов, такими же, как генные мутации и скрещивания в человеческой репродукции. Другие обусловлены самим мозгом, обновляющим связи между искусственными нейронами так же, как наш мозг укрепляет подобные связи в процессе нашего обучения.
В любом случае компьютер оставляет те изменения, которые улучшают его работу, и избавляется от других, которые этого не делают. Это происходит медленно, но компьютеры развиваются.
У нас уже есть один хороший пример создания интеллекта – homo sapiens. Наш интеллект – вещь в большой степени приобретенная. Мы были рождены без языка. Мы не умели читать и писать. У нас не было никаких знаний об арифметике, астрономии или истории Древнего мира. Но мы выучились всему этому и не только.
Обучение станет, вероятно, одной из важнейших характеристик думающих компьютеров. Это затрагивает феномен «бутылочного горлышка», проблему освоения компьютером всех знаний, которые человечество приобрело на протяжении нескольких тысяч лет. Программирование всех этих знаний вручную, факт за фактом – очень долгий и сложный процесс. Но нам и не нужно этого делать, компьютеры могут освоить все это самостоятельно.
Теперь нам окончательно ясно, что компьютеры превосходят людей в обучаемости. Они способны написать программу, которая может улучшить их собственный код, а также поделиться им с другими компьютерами. Так просто! Одновременно это гораздо эффективнее человеческого процесса обучения.
В следующий раз, когда вы попытаетесь научить ребенка вычислять максимум математической функции или склонять немецкий глагол, представьте, насколько проще это можно было бы сделать, если бы он был компьютером. Вы просто дали бы ему нужный код.
Компьютеры делают больше, чем мы от них требуем
Компьютерное обучение стало причиной многих недавних технологических прорывов, связанных с ИИ. Оно позволило AlphaGo от Google победить лучших игроков в го на планете. В нем заключается секрет успеха переводчика Google. Оно породило множество программ, которые теперь лучше нас умеют диагностировать рак кожи или играть в покер.
Распространенное мнение относительно обучения машин заключается в том, что компьютеры могут делать только то, для чего они запрограммированы. И на элементарном уровне это действительно так. Компьютеры целиком и полностью детерминированы[15].
Они следуют инструкциям, прописанным в их коде. Они не могут от них отклоняться. Однако на более глубоком уровне компьютеры способны делать вещи, для которых не запрограммированы. Они могут осваивать новые программы. Даже могут быть креативными. Как и мы, они учатся новому, основываясь на собственном опыте.
AlphaGo не была запрограммирована для того, чтобы обыгрывать в эту древнюю китайскую игру чемпионов мира. Она научилась это делать благодаря тому, что постоянно практиковалась. Она сыграла партий в го больше, чем человек способен сыграть за всю жизнь. И в процессе игры программа понемногу становилась креативной. Она использовала ходы, которых от нее не ожидали даже самые искусные мастера, открывала новые возможности для игры в го.
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-го микропроцессора известна как «остановись и гори». До создания таких микропроцессоров компьютеры были большими и ненадежными, а при остановке их работы всегда существовала небольшая угроза воспламенения.