Жизнь 3.0. Быть человеком в эпоху искусственного интеллекта

Макс Тегмарк, 2017

“Жизнь 3.0. Быть человеком в эпоху искусственного интеллекта” – увлекательная научно-популярная книга, вторая книга Макса Тегмарка, физика и космолога, профессора Массачусетского технологического института. В ней он рассматривает возможные сценарии развития событий в случае появления на Земле сверхразумного искусственного интеллекта, анализирует все плюсы и минусы и призывает специалистов объединить свои усилия в борьбе за кибербезопасность и “дружественный” искусственный интеллект.

Оглавление

Из серии: Элементы (Corpus)

* * *

Приведённый ознакомительный фрагмент книги Жизнь 3.0. Быть человеком в эпоху искусственного интеллекта предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Глава 2

Материя начинает думать

Водород… по прошествии некоторого времени… превращается в людей.

Эдвард Роберт Харрисон, 1995

Одно из самых примечательных превращений, испытанных немой и бессмысленной материей за 13,8 миллиарда лет после Большого взрыва, — это обретение ею разума. Как могло это произойти и до каких пределов может продолжаться? Что может сказать наука об истории и о будущем разума во Вселенной? Чтобы облегчить понимание, давайте посвятим эту главу исследованию фундамента, на котором он возникает, и кирпичиков, из которых он построен. Что именно мы имеем в виду, утверждая, что некий сгусток материи разумен? Что мы подразумеваем, когда говорим о способности некоего объекта помнить, вычислять и обучаться?

Что такое разум?

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

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

интеллект — это способность достигать сложных целей

Это определение достаточно широко, чтобы включить все перечисленные выше: понимание, самосознание, решение задач и обучение — все это примеры тех сложных целей, которые могут возникнуть. Оно также достаточно широко, чтобы включить определение, данное Оксфордским словарем, — “способность приобретать и использовать знания и навыки”: ведь “приобретать и использовать знания и навыки” тоже может быть целью.

Так как цели могут быть самыми разными, возможны разные типы интеллекта. В соответствии с нашим определением, следовательно, нет смысла описывать интеллект человека, или какого-то другого живого существа, или интеллект машины с помощью единого численного показателя вроде IQ[10]. Какая компьютерная программа “умнее” — та, которая умеет играть только в шахматы, или та, которая умеет играть только в го? Тут нельзя дать никакого осмысленного ответа: каждая из них пригодна для своего, и напрямую их сравнивать невозможно. Но мы, однако, можем сказать, что третья программа “умнее” каждой из этих двух, если она по крайней мере так же хороша, как и они, в решении любой задачи и безусловно лучше их в решении хотя бы какой-то одной (например, обыгрывает их в шахматы).

Нет большого смысла в спорах о том, чей интеллект сильнее, в пограничных случаях, так как интеллект проявляется на спектре задач и совершенно не обязательно определяется по принципу “все или ничего”. Какие люди обладают способностью достигать целей говорения? Новорожденные? Нет. А радиоприемники — да. А что вы скажете о младенце, знающем десять слов? Пятьсот слов? Где же провести линию? Я умышленно использовал туманное слово “сложные”, потому что выяснять, где надо провести линию между разумным и неразумным, не очень интересно, гораздо полезнее было бы просто научиться измерять степень способности достигать цели для различных типов задач.

При создании такой таксономии будет полезно ввести еще один важный признак, разделив узко-ориентированный (слабый) интеллект и широко-ориентированный (сильный). Созданный IBM шахматный компьютер Deep Blue, подвинувший с шахматного трона чемпиона мира Гарри Каспарова в 1997 году, был способен к достижению целей в очень узком классе задач — в игре в шахматы. Несмотря на исключительно впечатляющие “хард” и “софт”, в крестики-нолики он не смог бы обыграть и четырехлетнего ребенка. Искусственный интеллект разработанной в компании DeepMind сети глубокого Q-обучения (DQN) может успешно достигать целей несколько более разнообразных, играя в несколько десятков игр прошлого века компании Atari на уровне человека или лучше. Ничто пока не может сравниться с человеческим интеллектом прежде всего по его уникальной широте: он способен освоить головокружительное разнообразие умений. Здоровый ребенок при условии достаточно продолжительных тренировок может научиться очень хорошо играть в любую игру, выучить любой язык, достичь очень хороших показателей в любом виде спорта и любой профессии. Если сравнивать интеллект машины и человека сегодня, то по широте человек побеждает одной левой. Но в некоторых узких областях, количество которых неуклонно растет, превосходство машин над нами не вызывает сомнений. Эти области приведены на рис. 2.1. Философским камнем AI-исследований остается построение универсального, или сильного, искусственного интеллекта (AGI), его широта максимальна: он способен в принципе достичь любой цели, включая обучение. Мы подробно обсудим его в главе 4. Термин AGI широко употреблялся Шейном Леггом, Марком Губрудом и Беном Гёрцлем в несколько ограниченном значении — как универсальный интеллект человеческого уровня: то есть он должен не только справляться с любой задачей, доступной человеку, но и делать это не хуже нас{3}. Я приму это ограничение и, если только не использую какой-то уточняющий эпитет (например, “сверхчеловеческий AGI”), говоря о “AGI” или о “сильном AI”, буду иметь в виду “AGI человеческого уровня”[11].

Хотя слово “интеллект” кажется позитивно окрашенным, важно понимать, что везде, где мы его используем, мы делаем это в абсолютно нейтральном значении: речь лишь о способности достигать цели, независимо от того, рассматриваем мы эти цели как благо или как зло. Так же и с людьми: один умный человек очень хорош в деле помощи людям, другой — в принесении им бед. Мы исследуем тему целей в главе 7. Говоря об этом, нам придется заняться и весьма деликатным вопросом относительно того, чьи именно цели мы обсуждаем. Предположим, у вашего будущего роботизированного персонального помощника совсем нет никаких собственных целей, но он сделает все, о чем бы вы его ни попросили. А вы его просите приготовить идеальный итальянский ужин. Он отправляется в интернет, изучает там рецепты итальянских блюд, ищет ближайший супермаркет, готовит вам пасту, разбирается с прочими ингредиентами и в конце концов готовит вам отличный ужин. Вы, полагаю, сочтете его очень умным, хотя изначально цель была вашей. В действительности он воспринял вашу цель, как только она была поставлена, и встроил ее в систему своих собственных вспомогательных целей, от оплаты счетов до измельчения пармезана. В этом смысле разумное поведение неизменно привязано к целеустремленности.

Рис. 2.1

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

Совершенно естественно мы, люди, ранжируем сложность задач в соответствии с тем, насколько сложны они для нас самих, как показано на рис. 2.1. Но такой подход приводит к ложной картине сложности задач для компьютера. Нам кажется, что умножить 314 159 на 271 828 гораздо сложнее, чем опознать друга на фотографии, но компьютеры обошли нас в арифметике задолго до того, как я родился, а опознание людей по картинкам на человеческом уровне освоили совсем недавно. Тот факт, что элементарные сенсомоторные задания кажутся нам простыми, хотя требуют колоссальных вычислительных ресурсов, известен как парадокс Моравеца, который объясняется тем, что наш мозг легко отдает под их решение значительную часть хорошо приспособленного к этому нашего “харда”, головного мозга — как выясняется, больше четверти.

Мне нравится эта метафора у Ганса Моравеца, и я позволю себе ее небольшую вольную иллюстрацию (см. рис. 2.2){4}:

“Компьютеры — универсальные машины, и их потенциал равномерно покрывает безграничное разнообразие задач. Потенции людей, напротив, сосредоточены там, где от успеха зависит выживание, в более отдаленных областях они весьма слабы. Представьте себе “ландшафт человеческих компетенций”, где есть низины вроде “арифметики” и “механической памяти”, холмики вроде “шахмат” или “доказательства теорем” и горные пики, отмеченные указателями “перемещение с места на место”, “координация движений рук и глаза”, “социальное взаимодействие”. С совершенствованием компьютеров этот ландшафт словно наполняется водой: полвека назад она затопила низины, вымыв оттуда счетоводов и писцов, но оставив нас сухими. Сейчас вода дошла до холмиков, и обитатели наших аванпостов забеспокоились: куда бы им переместиться? Мы чувствуем себя в безопасности на своих пиках, но, учитывая скорость, с которой вода прибывает, она покроет и пики в ближайшие полвека. Я полагаю, нам уже пора начинать строить ковчеги и приучаться к жизни на плаву”.

Рис. 2.2

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

За десятилетия, прошедшие со времени написания этих строк, уровень воды неуклонно повышался в соответствии с предсказанием, и некоторые из холмиков (вроде шахмат) уже давно скрылись из виду. Что на очереди и как нам быть в связи с этим — вот в чем суть нашей книги.

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

Создатель теории компьютеров Алан Тьюринг, как известно, сумел доказать, что если какой-то компьютер может осуществлять определенный минимум операций, то, при наличии у него достаточного времени и памяти, он может быть запрограммирован на выполнение чего угодно, при условии, что это может быть выполнено хоть каким-то компьютером. Машины, возвышающиеся над этим критическим порогом, называют универсальными компьютерами (по Тьюрингу); любой смартфон или ноутбук универсален в этом смысле. Аналогично, я склонен считать пороговый уровень интеллекта, требуемый для дизайна искусственного интеллекта, универсальным интеллектом: обладая достаточным временем и ресурсами, он может достичь любой цели, которая в принципе может быть достигнута какой бы то ни было разумной сущностью. Например, если она решает, что ей необходимо улучшить свои социальные навыки, прогностические способности или усовершенствоваться в AI-дизайне, то она достигает этого. Если она приходит к решению о необходимости построить фабрику роботов, то она строит эту фабрику. Иными словами, универсальный интеллект обладает потенциалом превращения в Жизнь 3.0.

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

Но что представляют собой информация и вычисления в реальности, если вспомнить, что фундаментальная физика учит нас: в мире нет ничего, кроме энергии и движущейся материи? Как может нечто настолько абстрактное, неосязаемое и эфемерное, как информация и вычисления, воплотиться в грубую физическую ткань? В особенности — как могут какие-то бессмысленные элементарные частицы, вращающиеся друг вокруг друга по законам физики, продемонстрировать поведение, которое мы называем разумным?

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

Что такое память?

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

Что же представляет собой фундаментальное свойство всех этих предметов, которое позволяет нам использовать их в качестве памяти, то есть накопителей информации? Ответ заключается в том, что каждому из них доступно большое количество устойчивых состояний, в которых они могут находиться очень долгое время — достаточно долгое, чтобы извлечь закодированную информацию, как она только потребуется. В качестве простого примера представьте себе холмистую местность с шестнадцатью отделенными одна от другой ложбинами и небольшой мячик, как показано на рис. 2.3. Когда мячик скатывается с холма в какую-то из ложбин, это будет одна из тех шестнадцати, и коль скоро он может там находиться долго, его нахождение там можно использовать для запоминания одного из шестнадцати чисел (от 1 до 16).

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

Рис. 2.3

Роль запоминающего устройства хорошо выполняют те физические объекты, у которых много стабильных устойчивых состояний. Шарик слева может закодировать четыре бита информации, соответствующих одной из шестнадцати (24 = 16) впадин рельефа. Также четыре бита могут хранить вместе четыре шарика справа — по одному биту на каждого.

У простейшего запоминающего устройства всего лишь два устойчивых состояния (см. рис. 2.3) Поэтому мы можем считать, что оно запоминает один бинарный знак (сокращенно “бит”) — например ноль или единицу. Информация, сохраненная более сложным устройством, может быть представлена словно бы сохраненной во множестве бит: например, четыре бита, взятые вместе, как показано на рис. 2.3 (справа), могут находиться в одном из 2 × 2 × 2 × 2 = 16 различных состояний — 0000, 0001, 0010,…, 1111, так что у них всех вместе тот же самый объем памяти, что и у системы с 16 различными состояниями (слева). Поэтому мы можем думать о битах как об атомах информации, мельчайших ее частичках, которые не могут быть разделены дальше, но которые могут объединяться, представляя любое ее количество. Например, я только что напечатал слово “слово”, и мой ноутбук тут же превратил его в своей памяти в последовательность из пяти трехзначных чисел: 241 235 238 226 238, представив каждое из них в виде 8 бит (каждой букве нижнего регистра присваивается число 223 плюс его порядковый номер в алфавите). Как только я нажимаю на клавишу “с” своего ноутбука, эта буква тут же появляется на мониторе, и ее изображение тоже состоит из бит, причем 32 бита определяют цвет каждого из миллиона пикселей монитора.

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

Инженеры предпочитают кодировать биты в системах, обеспечивающих не только устойчивость и простоту считывания (как на золотом кольце), но и простоту записи: изменение состояния вашего жесткого диска требует значительно меньших затрат энергии, чем гравирование по золоту. Они также предпочитают системы, с которыми легко работать и которые достаточно дешевы при массовом производстве. Но помимо этого их совсем не интересует, каким именно физическим объектом бит был представлен — как, впрочем, в большинстве случае и вас, потому что это и вообще неважно! Если вы пересылаете электронной почтой документ своему другу, чтобы он вывел его на печать, то информация последовательно быстро копируется с магнитных диполей жесткого диска в электрические заряды оперативной памяти, оттуда в радиоволны вашей Wi-Fi-сети, потом в переменное напряжение в цепях вашего роутера, лазерные импульсы в оптоволокне и, наконец, передается молекулам на поверхности бумаги. Иными словами, информация живет собственную жизнь, независимо от своего физического субстрата! В самом деле, нас-то обычно интересует только этот, не зависящий от субстрата, аспект информации: если ваш друг позвонит спросить, что это за документы вы ему послали, он, скорее всего, не будет интересоваться перепадами напряжения и смещениями молекул. А для нас это первый звоночек: как такая неосязаемая вещь, как разум, может оказаться воплощенной в сугубо осязаемой физической материи, а скоро мы увидим, что идея независимости от субстрата гораздо глубже, включая в себя кроме информации также вычисления и обучение.

Из-за этой самой независимости от субстрата изобретательные инженеры то и дело заменяют запоминающие устройства в наших компьютерах все более совершенными, основанными на новых технологиях, но это совсем не заставляет нас менять что-либо в программном обеспечении компьютеров, их “софте”. Как видно на рис. 2.4, результаты потрясающие: на протяжении последних шести десятилетий примерно каждые два года компьютерная память становится вдвое дешевле. Жесткие диски стали дешевле более чем в 100 миллионов раз, а разновидности памяти с быстрым доступом, применяемые не столько просто для хранения, сколько для выполнения вычислений, стали сейчас дешевле аж в 10 триллионов раз! Если бы вам удавалось получить такую скидку в 99,99999999999 % на каждую свою покупку, то вы смогли бы купить всю недвижимость Нью-Йорка менее чем за 10 центов, а все золото, когда-либо добытое на Земле, чуть более чем за доллар.

Рис. 2.4

На протяжении шести последних десятилетий компьютерная память дешевела вдвое примерно каждые два года, чему соответствует снижение цены в тысячу раз на каждые двадцать лет. Один байт равен восьми битам. Данные предоставлены Джоном Мак-Каллемом (см. http://www.jcmit.net/memoryprice.htm, проверено 13.05.2018)

У каждого из нас есть свои личные воспоминания, так или иначе связанные с этим впечатляющим улучшением в технологиях хранения информации. Я хорошо помню, как, учась в старшей школе, подрабатывал в кондитерской, чтобы накопить на компьютер со всего лишь 16 килобайтами памяти. Когда мы с моим одноклассником Магнусом Бодином написали и успешно продали текстовый редактор для этого компьютера, нам пришлось уложить его в ультракороткий программный код, чтобы оставалось хоть какое-то место для самого текста, который можно было бы редактировать. Привыкнув к гибкой дискете на 70 килобайт, я был потрясен появлением 3,5-дюймовой дискеты меньшего размера, на которой умещалось целых 1,44 мегабайта — на нее влезала целая книга, а потом и моим первым жестким диском на 100 мегабайт, которых сегодня едва хватило бы на загрузку одной песни. Кажется совершенно невозможным совместить эти юношеские воспоминания с другими, более поздними: много лет спустя я покупал за 100 долларов жесткий диск в 300 000 раз большей вместительности.

Было ли что-нибудь в этих запоминающих устройствах такое, что эволюционировало, а не конструировалось бы людьми? Биологи до сих пор не знают, какого рода отпечатки производили первые формы жизни, чтобы передавать их от поколения к поколению, но скорее всего они были очень невелики. Исследовательская группа Филиппа Холлигера из Кембриджского университета сумела синтезировать молекулу РНК, кодирующей 412 бит генетической информации, которая была в состоянии создавать нити РНК длиннее себя самой; это открытие поддерживало гипотезу “мира РНК”, состоящую в том, что ранняя земная жизнь — это были короткие самовоспроизводящиеся РНК-цепочки. Известное к настоящему времени запоминающее устройство с минимальной памятью, возникшее в результате эволюции в дикой природе, — это геном бактерии Candidatus Carsonella ruddii, сохраняющий до 40 килобайт информации, в то время как наш человеческий геном хранит около 1,6 гигабайт, что примерно соответствует одному загружаемому из интернета кинофильму. Как уже говорилось в предыдущей главе, наш мозг сохраняет гораздо больше информации, чем наш геном: на уровне примерно 10 гигабайт электрически (что определяется тем, какие из 100 миллиардов нейронов “светятся” в тот или иной момент времени) или 100 терабайт биохимически (что определяется тем, насколько сильно различные нейроны сцеплены в синапсах). Сравнение этих чисел с памятью машин показывает, что лучшие компьютеры мира сейчас превосходят по способности хранить информацию любые биологические системы при быстро падающей стоимости, которая на 2016 год составляла всего несколько тысяч долларов.

Память вашего мозга работает совсем не так, как память компьютера, не только в отношении того, как она устроена, но и в отношении того, как она используется. Вы получаете информацию из компьютера или с жесткого диска, указывая, где она хранится, а информацию в мозгу вы получаете, указав, что примерно вам нужно. Каждая группа бит в памяти вашего компьютера характеризуется своим численным адресом, и чтобы получить доступ к той или иной информации, вам надо указать компьютеру адрес, по которому искать, как если бы я сказал вам: “Пойдите к моему книжному шкафу, возьмите там пятую книгу справа на верхней полке и прочитайте, что написано на странице 314”. Напротив, у себя в мозгу вы находите ее примерно так же, как с помощью поисковой машины: вы говорите, что ищете, или называете что-то, имеющее некоторое отношение к тому, что вы ищете, и оно всплывает на поверхность. Если я скажу вам: “Быть или не быть” — или если я забью эти слова в поисковую строку Google, результатом в обоих случаях скорее всего будет: “Вот в чем вопрос”. Причем результат будет достигнут, даже если я спрошу о другой части той же цитаты или перепутаю в ней слова. Такая память называется автоассоциативной, потому что поиск информации в ней происходит по ассоциации, а не по адресу.

В знаменитой статье 1982 года физик Джон Хопфилд показал, как сеть взаимосвязанных нейронов может превратиться в автоассоциативную память. Мне очень нравится его идея, я нахожу ее красивой и пригодной для описания любой физической системы с многочисленными устойчивыми состояниями. Например, представьте себе шарик на поверхности с двумя лунками — вроде того, как это устроено в однобитной системе на рис. 2.3, и пусть форма поверхности такова, что х-координаты минимумов потенциальной энергии, где шарик приходит в состоянии покоя, соответственно равны x = √2 ≈ 1,41421 и x = π ≈ 3,14159. Если вы помните только, что “пи” — это где-то около 3, то, поместив шарик в точку х=3, вы увидите, как он сам скатится в точку минимума энергии, где координата х окажется точно равной “пи”. Хопфилд понял, что сложно устроенная сеть нейронов создает подобный же ландшафт с многочисленными энергетическими минимумами, в которые может прийти система, а со временем было доказано, что в каждую тысячу нейронов можно втиснуть 138 различных воспоминаний без особой путаницы между ними.

Что такое вычисление?

Итак, мы видели, как физический объект может хранить информацию. Но как он может вычислять?

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

В этом и заключается идея функции, и хотя такое определение кажется слишком простым, оно до невероятия хорошо работает. Некоторые функции совсем тривиальные, вроде той, что зовется NOT: у нее на входе один бит, и она заменяет его другим, превращая ноль в единицу, а единицу в ноль. Функции, которые мы изучаем в школе, обычно соответствуют кнопочкам на карманном калькуляторе, на входе при этом может быть одно число или несколько, но на выходе всегда одно: например, это может быть x2, то есть при вводе числа выводится результат его умножения на себя. Но есть и исключительно сложные функции. Например, если вы располагаете функцией, у которой на входе произвольное положение фигур на шахматной доске, а на выходе — наилучший следующий ход, то у вас есть шанс на победу в компьютерном чемпионате мира по шахматам. Если вы располагаете функцией, у которой на входе состояние всех финансовых рынков мира, а на выходе — список акций, которые следует покупать, то вы скоро сильно разбогатеете. Многие специалисты по искусственному интеллекту видят свою задачу исключительно в том, чтобы придумать, как вычислять некоторые функции для любых начальных условий. Например, цель машинного перевода заключается в том, чтобы, взяв последовательность бит, представляющую исходный текст на одном языке, преобразовать ее в другую последовательность бит, представляющую тот же текст, но на другом языке, а цель создания систем автоматизированного распознавания изображений заключается в том, чтобы преобразовывать последовательность бит, представляющую какую-то картинку на входе, в последовательность бит, представляющую собой текст, который эту картинку описывает (рис. 2.5).

Рис. 2.5

Каждое вычисление использует информацию на входе, чтобы преобразовывать ее, выполняя над ней то, что математики называют функцией. У функции f (слева) на входе последовательность бит, представляющих число; в результате вычислений она дает на выходе его квадрат. У функции g (в центре) на входе последовательность бит, представляющих позицию на шахматной доске; в результате вычислений она дает на выходе лучший ход для белых. У функции h (справа) на входе последовательность бит, представляющих изображение, в результате вычислений она дает на выходе соответствующую текстовую подпись.

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

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

В качестве первого примера этой идеи давайте построим из нашей неразумной материи очень простую (но от этого не менее важную) систему, вычисляющую функцию NAND[12] и потому получившую название гейт NAND[13]. У нее на входе два бита, а на выходе один: это 0, если оба бита на входе 1, во всех остальных случая — это 1. Если в одну сеть с батареей и электромагнитом мы вставим два замыкающих сеть ключа, то электромагнит сработает тогда, и только тогда, когда оба ключа замкнуты (находятся в состоянии “on”). Давайте поместим под ним еще один ключ, как показано на рис. 2.6, так что магнит, срабатывая, всякий раз будет размыкать его. Если мы интерпретируем первые два ключа как два бита на входе, а третий — как бит на выходе, то мы и получим то, что назвали гейтом NAND: третий ключ будет разомкнут только тогда, когда первые два замкнуты. Есть очень много более практичных способов сделать гейт NAND — например, с помощью транзисторов, как показано на рис. 2.6. В нынешних компьютерах гейты NAND чаще всего встроены в микросхемы или иные компоненты, выращенные из кристаллов кремния.

Рис. 2.6

Логический вентиль (гейт) NAND по заданным на входе двум битам А и В вычисляет третий бит С в соответствии с правилом: C = 0, если A = B = 1, и C = 0 в любом другом случае, — и посылает его на выход. В качестве гейта NAND можно использовать много различных физических устройств. В электрической цепи на средней части рисунка ключи А и В соответствуют битам на входе со значениями 0 при размыкании и 1 при замыкании. Когда они оба замкнуты, идущий через электромагнит ток размыкает ключ С. На схеме в правой части рисунка битам соответствуют значения потенциалов — 0, когда потенциал равен нулю, и 1, когда потенциал равен 5 вольтам. При подаче напряжения на базы обоих транзисторов (А и В) потенциал в точке С падает практически до нуля.

В информатике есть замечательная теорема, которая утверждает, что гейт NAND универсален: то есть вычисление любой вполне определенной функции[14] может быть осуществлено гейтами NAND, соединенными друг с другом. Так что если у вас есть достаточное количество гейтов NAND, вы можете собрать из них устройство, вычисляющее все что угодно! На случай, если у вас возникло желание посмотреть, как это работает, у меня есть схема (рис. 2.7), на которой вы увидите, как умножаются числа при помощи одних только гейтов NAND.

Исследователи из MIT Норман Марголус и Томмазо Тоффоли придумали слово “computronium” (компьютрониум), обозначающее любую субстанцию, которая может выполнять любые вычисления. Мы только что убедились, что создать компьютрониум не так уж и сложно: эта субстанция всего лишь должна быть способна соединять гейты NAND друг с другом любым желаемым способом. Разумеется, существуют и мириады других компьютрониумов. Например, еще один легко создать из предыдущего, заменив все гейты NAND на NOR: у него на выходе будет 1 только тогда, когда на оба входа подается 0. В следующем разделе мы обсудим нейронные сети, которые также способны выполнять произвольные вычисления, то есть и они ведут себя как компьютрониум. Ученый и предприниматель Стивен Вольфрам показал, что то же может быть сказано о простых устройствах, получивших название клеточных автоматов, которые периодически подправляют каждый бит в зависимости от того, в каком состоянии находятся биты по соседству. А еще в 1936 году Алан Тьюринг доказал в своей ставшей ключевой статье, что простая вычислительная машина (известная сейчас как “универсальный компьютер Тьюринга”), способная оперировать некоторыми символами на бумажной ленте по некоторым правилам, также способна выполнять любые вычисления. Одним словом, материя не просто обладает способностью к любым вполне определенным вычислениям, но и может производить их самыми разнообразными способами.

Рис. 2.7

Любое вполне определенное вычисление может быть выполнено при помощи комбинации гейтов одного-единственного типа NAND. Например, у модулей, выполняющих сложение и умножение и представленных на рисунке выше, на вход подается по два бинарных числа, каждое из которых представлено 4 битами, а на выходе получается бинарное число, представленное 5 битами в первом случае, и бинарное число, представленное 8 битами во втором. Менее сложные модули NOT, AND, XOR и “+” (сложение трех одиночных битов в бинарное число, представляемое 2 битами) комбинируются из гейтов NAND. Полное понимание этой схемы исключительно сложно и абсолютно не нужно для дальнейшего чтения книги; я поставил ее здесь исключительно для иллюстрации идеи универсальности, ну и потакая своему внутреннему гику.

Как уже говорилось, Тьюринг в своей памятной статье 1936 года доказал также кое-что значительно более важное: если только компьютер обладает способностью производить некий весьма незначительный минимум операций, он универсален — в том смысле, что при достаточном количестве ресурсов он может сделать все то, на что способен любой другой компьютер. Он доказал универсальность “компьютера Тьюринга”, а приближая его к физическому миру, мы только что показали, что семейство универсальных компьютеров включает в себя такие разные объекты, как сеть гейтов NAND или сеть соприкасающихся нейронов. Более того, Стивен Вольфрам заявил, что большая часть нетривиальных физических систем, от меняющейся погоды до мыслящего мозга, становятся универсальным компьютером, если позволить им как угодно менять свои размеры и не ограничивать их во времени.

Этот самый факт — а именно, что одно и то же вычисление может быть произведено на любом универсальном компьютере, как раз и означает, что вычисление не зависит от субстрата в том же самом отношении, в каком от него не зависит информация: каков бы физический субстрат ни был, оно живет там свою жизнь. Если вы — суперумный персонаж какой-то компьютерной игры будущего, обладающий сознанием, вам никогда не удастся узнать, породила ли вас рабочая станция под Windows, MacBook под MacOS или смартфон с Android, потому что вы субстрат-независимы. У вас не окажется и никаких способов определить, какого рода транзисторы используются микропроцессором этого компьютера.

Поначалу эта базовая идея субстрат-независимости привлекла меня тем, что у нее есть большое количество красивых иллюстраций в физике. Например, волны: у них есть разнообразные свойства — скорость, длина волны, частота, и физики могут решать связывающие их уравнения, совершенно не думая о том, как именно субстрат тут волнуется. Если вы слышите что-то, то вы регистрируете звуковые волны, распространяющиеся в той смеси газов, которую мы называем воздухом, и мы можем рассчитать относительно этих волн все что угодно — что их интенсивность уменьшается как квадрат расстояния, или как они проходят через открытую дверь или отражаются от стен, производя эхо, — ничего не зная о составе воздуха. На самом деле нам даже не обязательно знать, что он состоит из молекул: мы можем отвлечься ото всех подробностей относительно кислорода, азота или углекислого газа, потому что единственная характеристика этого субстрата, которая имеет значение и которая входит в знаменитое волновое уравнение, — это скорость звука, которую нам несложно померить и которая в данном случае будет равна примерно 300 метрам в секунду. Я рассказывал об этом волновом уравнении своим студентам на лекциях прошлой весной и говорил им, в частности, о том, что его открыли и им стали успешно пользоваться еще задолго до того, как физики установили, что молекулы и атомы вообще существуют!

Этот пример с волновым уравнением позволяет сделать три вывода. Во-первых, независимость от субстрата еще не означает, что без субстрата можно обойтись, но только лишь — что многие подробности его устройства не важны. Вы не услышите никакого звука в безвоздушном пространстве, но если замените воздух каким-нибудь другим газом, разницы не заметите. Точно так же вы не сможете производить вычисления без материи, но любая материя сгодится, если только ее можно будет организовать в гейты NAND, в нейронную сеть или в какие-то другие исходные блоки универсального компьютера. Во-вторых, субстрат-независимые явления живут свою жизнь, каков бы субстрат ни был. Волна пробегает по поверхности озера, хотя ни одна из молекул содержащейся в нем воды не делает этого, они только ходят вверх и вниз наподобие футбольных фанатов, устраивающих “волну” на трибуне стадиона. В-третьих, часто нас интересует именно не зависящий от субстрата аспект явления: серфера обычно заботят высота волны и ее положение, а никак не ее молекулярный состав. Мы видели, что это так для информации, и это так для вычислений: если два программиста вместе ловят глюк в написанном ими коде, они вряд ли будут обсуждать транзисторы.

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

Другими словами, “хард” здесь материя, а фигура — это “софт”. Субстрат-независимость вычисления означает, что AI возможен: разум не требует ни плоти, ни крови, ни атомов углерода.

Благодаря этой субстрат-независимости изобретательные инженеры непрерывно сменяют одну технологию внутри компьютера другой, радикально улучшенной, но не требовавшей замены “софта”. Результат во всех отношениях нагляден в истории запоминающих устройств. Как показывает рис. 2.8, стоимость вычисления сокращается вдвое примерно каждые два года, и этот тренд сохраняется уже более века, снизив стоимость компьютера в миллион миллионов миллионов (в 1018) раз со времен младенчества моей бабушки. Если бы все сейчас стало в миллион миллионов миллионов раз дешевле, то сотой части цента хватило бы, чтобы скупить все товары и услуги, произведенные или оказанные на Земле в тот год. Такое сильное снижение цены отчасти объясняет, почему сейчас вычисления проникают у нас повсюду, переместившись из отдельно стоящих зданий, занятых вычисляющими устройствами, в наши дома, автомобили и карманы — и даже вдруг оказываясь в самых неожиданных местах, например в кроссовках.

Рис. 2.8

С 1900 года вычисления становились вдвое дешевле примерно каждые пару лет. График показывает, какую вычислительную мощность, измеряемую в количестве операций над числами с плавающей запятой в секунду (FLOPS), можно было купить на тысячу долларов{5}. Частные случаи вычислений, которые соответствуют одной операции над числами с плавающей запятой, соответствуют 105 элементарным логическим операциям вроде обращения бита (замены 0 на 1, и наоборот) или одного срабатывания гейта NAND.

Почему развитие наших технологий позволяет им удваивать производительность с такой регулярной периодичностью, обнаруживая то, что математики называют экспоненциальным ростом? Почему это сказывается не только на миниатюризации транзисторов (тренд, известный как закон Мура), но, и даже в большей степени, на развитии вычислений в целом (рис. 2.8), памяти (рис. 2.4), на море других технологий, от секвенирования генома до томографии головного мозга? Рэй Курцвейл называет это явление регулярного удвоения “законом ускоряющегося возврата”.

В известных мне примерах регулярного удвоения в природных явлениях обнаруживается та же самая фундаментальная причина, и в том, что нечто подобное происходит в технике, нет ничего исключительного: и тут следующий шаг создается предыдущим. Например, вам самим приходилось переживать экспоненциальный рост сразу после того, как вас зачали: каждая из ваших клеточек, грубо говоря, ежедневно делится на две, из-за чего их общее количество возрастает день за днем в пропорции 1, 2, 4, 8, 16 и так далее. В соответствии с наиболее распространенной теорией нашего космического происхождения, известной как теория инфляции, наша Вселенная в своем младенчестве росла по тому же экспоненциальному закону, что и вы сами, удваивая свой размер за равные промежутки времени до тех пор, пока из крупинки меньше любого атома не превратилась в пространство, включающее все когда-либо виденные нами галактики. И опять причина этого заключалась в том, что каждый шаг, удваивающий ее размер, служил основанием для совершения следующего. Теперь по тому же закону стала развиваться и технология: как только предыдущая технология становится вдвое мощнее, ее можно использовать для создания новой технологии, которая также окажется вдвое мощнее предыдущей, запуская механизм повторяющихся удвоений в духе закона Мура.

Но с той же регулярностью, как сами удвоения, высказываются опасения, что удвоения подходят к концу. Да, действие закона Мура рано или поздно прекратится: у миниатюризации транзистора есть физический предел. Но некоторые люди думают, что закон Мура синонимичен регулярному удвоению нашей технической мощи вообще. В противоположность им Рэй Курцвейл указывает, что закон Мура — это проявление не первой, а пятой технологической парадигмы, переносящей экспоненциальный рост в сферу вычислительных технологий, как показано на рис. 2.8: как только предыдущая технология перестает совершенствоваться, мы заменяем ее лучшей. Когда мы не можем больше уменьшать вакуумные колбы, мы заменяем их полупроводниковыми транзисторами, а потом и интегральными схемами, где электроны движутся в двух измерениях. Когда и эта технология достигнет своего предела, мы уже представляем, куда двинуться дальше: например, создавать трехмерные интегральные цепи или делать ставку на что-то отличное от электронов.

Никто сейчас не знает, какой новый вычислительный субстрат вырвется в лидеры, но мы знаем, что до пределов, положенных законами природы, нам еще далеко. Мой коллега по MIT Сет Ллойд выяснил, что это за фундаментальный предел, и мы обсудим его в главе 6, и этот предел на целых 33 порядка (то есть в 1033 раза) отстоит от нынешнего положения вещей в том, что касается способности материи производить вычисления. Так что если мы будем и дальше удваивать производительность наших компьютеров каждые два — три года, для достижения этой последней черты нам понадобится больше двух столетий.

Хотя каждый универсальный компьютер способен на те же вычисления, что и любой другой, некоторые из них могут отличаться от прочих своей высокой производительностью. Например, вычисление, требующее миллионов умножений, не требует миллионов различных совершающих умножение модулей с использованием различных транзисторов, как показано на рис. 2.6, — требуется только один такой модуль, который можно использовать многократно при соответствующей организации ввода данных. В соответствии с этим духом максимизации эффективности большинство современных компьютеров действуют согласно парадигме, подразумевающей разделение всякого вычисления на много шагов, в перерывах между которыми информация переводится из вычислительных модулей в модули памяти и обратно. Такая архитектура вычислительных устройств была разработана между 1935 и 1945 годами пионерами компьютерных технологий — такими, как Алан Тьюринг, Конрад Цузе, Преспер Эккерт, Джон Мокли и Джон фон Нейман. Ее важная особенность заключается в том, что в памяти компьютера хранятся не только данные, но и его “софт” (то есть программа, определяющая, что надо делать с данными). На каждом шагу центральный процессор выполняет очередную операцию, определяющую, что именно надо сделать с данными. Еще одна часть памяти занята тем, чтобы определять, каков будет следующий шаг, просто пересчитывая, сколько шагов уже сделано, она так и называется — счетчик команд: это часть памяти, где хранится номер исполняемой команды. Переход к следующей команде просто прибавляет единицу к счетчику. Для того чтобы перейти к нужной команде, надо просто задать программному счетчику нужный номер — так и поступает оператор “если”, устраивая внутри программы петлевой возврат к уже пройденному.

Современным компьютерам удается значительно ускорить выполнение вычислений, проводя их, что называется, “параллельно”, в продолжение идеи повторного использования одних и тех же модулей: если вычисление можно разделить на части и каждую часть выполнять самостоятельно (поскольку результат одной не требуется для выполнения другой), то тогда эти части можно вычислять одновременно в разных составляющих “харда”.

Идеально воплощение параллельности достигается в квантовом компьютере. Пионер теории квантовых вычислений Дэвид Дойч утверждал в полемическом запале, что “квантовый компьютер распределяет доступную ему информацию по бесчисленному множеству копий себя самого во всем мультиверсуме” и решает благодаря этому здесь, в нашей Вселенной, любую задачу гораздо быстрее, потому что, в каком-то смысле, получает помощь от других версий самого себя{6}. Мы пока еще не знаем, будет ли пригодный для коммерческого использования квантовый компьютер создан в ближайшие десятилетия, поскольку это зависит и от того, действительно ли квантовая физика работает так, как мы думаем, и от нашей способности преодолеть связанные с его созданием серьезнейшие технические проблемы, но и коммерческие компании, и правительства многих стран мира вкладывают ежегодно десятки миллионов долларов в реализацию этой возможности. Хотя квантовый компьютер не поможет в разгоне заурядных вычислений, для некоторых специальных типов были созданы изобретательные алгоритмы, способные изменить скорость кардинально — в частности, это касается задач, связанных со взломом криптосистем и обучением нейронных сетей. Квантовый компьютер также способен эффективно симулировать поведение квантово-механических систем, включая атомы, молекулы и новые соединения, заменяя измерения в химических лабораториях примерно в том же ключе, в каком расчеты на обычных компьютерах заменили, сделав ненужными, измерения в аэродинамических трубах.

Что такое обучение?

Хотя даже карманный калькулятор легко обгоняет меня в состязании на быстроту в арифметических подсчетах, он никогда не улучшит своих показателей ни по быстроте вычислений, ни по их точности, сколько бы ни тренировался. Он ничему не учится, и каждый раз, когда я, например, нажимаю кнопку извлечения квадратного корня, он вычисляет одну и ту же функцию, точно повторяя одни и те же действия. Точно так же первая компьютерная программа, обыгравшая меня в шахматы, не могла учиться на своих ошибках и каждый раз просчитывала одну и ту же функцию, которую умный программист разработал, чтобы оценить, насколько хорош тот или иной следующий ход. Напротив, когда Магнус Карлсен в возрасте пяти лет проиграл свою первую игру в шахматы, он начал процесс обучения, и это принесло ему восемнадцать лет спустя титул чемпиона мира по шахматам.

Способность к обучению, как утверждается, — основная черта сильного интеллекта. Мы уже видели, как кажущийся бессмысленным фрагмент неживой материи оказывается способным запоминать и вычислять, но как он может учиться? Мы видели, что поиск ответа на сложный вопрос подразумевает вычисление некоторых функций, и определенным образом организованная материя может вычислить любую вычислимую функцию. Когда мы, люди, впервые создали карманные калькуляторы и шахматные программы, мы как-то организовали материю. И теперь, для того чтобы учиться, этой материи надо как-то, просто следуя законам физики, реорганизовывать себя, становясь все лучше и лучше в вычислении нужных функций.

Чтобы демистифицировать процесс обучения, давайте сначала рассмотрим, как очень простая физическая система может научиться вычислять последовательность цифр в числе π или любом другом числе. Выше мы видели, как холмистую поверхность с множеством ям между холмами (рис. 2.3) можно использовать в качестве запоминающего устройства: например, если координата одной из ям точно равна х = π и поблизости нет никаких других ям, то, положив шарик в точку с координатой х = 3, мы увидим, как наша система вычисляет отсутствующие знаки после запятой, просто наблюдая, как шарик скатывается в ямку. Теперь предположим, что поверхность сделана из мягкой глины, поначалу совершенно плоской как стол. Но если какие-то фанаты-математики будут класть шарики в одни и те же точки с координатами, соответствующими их любимым числам, то благодаря гравитации в этих точках постепенно образуются ямки, и со временем эту глиняную поверхность можно будет использовать, чтобы узнать, какие числа она “запомнила”. Иными словами, глина выучила, как ей вычислить значащие цифры числа π.

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

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

Рис. 2.9

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

Мы можем схематически изобразить нейронную сеть в виде точек, представляющих нейроны, и соединяющих их линий, которые представляют синапсы (см. рис. 2.9). Настоящие синапсы — это довольно сложные электрохимические устройства, совсем не похожие на эту схематическую иллюстрацию: они включают в себя разные части, которые называют аксонами и дендритами; есть много разновидностей нейронов, которые действуют по-разному, и точные детали того, как и когда электрическая активность в одном нейроне влияет на другие нейроны, все еще остаются предметом дальнейших исследований. Однако уже сейчас ясно, что нейронные сети могут достичь производительности человеческого уровня во многих удивительно сложных задачах, даже если на время забыть обо всех этих сложностях и заменить настоящие биологические нейроны чрезвычайно простыми имитирующими их устройствами, совершенно одинаковыми и подчиняющимися очень простым правилам. В настоящее время наиболее популярная модель такой искусственной нейронной сети представляет состояние каждого нейрона одним числом и силу каждого синапса — тоже одним числом. В этой модели при каждом действии каждый нейрон обновляет свое состояние, вычисляя среднее арифметическое от состояния всех присоединенных к нему нейронов с весами, в качестве которых берутся силы их синаптической связи. Иногда еще прибавляется константа, а к результату применяется так называемая функция активации, дающая число, которым будет выступать в качестве состояния данного нейрона на следующем такте[15]. Самый простой способ использовать нейронную сеть как функцию заключается в том, чтобы сделать ее прямой, превратив в канал передачи, где информация направляется лишь в одну сторону, как показано на рис. 2.9, загружая на вход функции верхний слой нейронов и считывая выход со слоя нейронов внизу.

Успешное использование этой простой нейронной сети представляет нам еще один пример независимости от субстрата: нейронная сеть обладает колоссальной вычислительной силой, которая, вне всякого сомнения, не зависит от мелких подробностей в ее устройстве. В 1989 году Джордж Цибенко, Курт Хорник, Максвелл Стинчкомб и Халберт Уайт доказали нечто замечательное: простые нейронные сети вроде только что описанной универсальны в том смысле, что они могут вычислять любую функцию с произвольной точностью, просто приписывая соответствующие значения числам, которыми характеризуются силы синаптических связей. Другими словами, эволюция, вероятно, сделала наши биологические нейроны такими сложными не потому, что это было необходимо, а потому, что это было более эффективно, и потому, что эволюция, в отличие от инженеров-людей, не получает наград за простоту и понятность предлагаемых конструкций.

Рис. 2.10

Вещество может производить умножение, используя не гейты NAND, как на рис. 2.7, а нейроны. Для понимания ключевого момента здесь не требуется вникать в детали, достаточно только отдавать себе отчет, что нейроны (как биологические, так и искусственные) не только способны производить математические действия, но их для этого требуется значительно меньше, чем гейтов NAND. Вот еще факультативные детали для упертых фанатов математики: кружочками обозначено сложение, квадратики обозначают применение функции σ, а прямые отрезки — умножение на число, которое этот отрезок пересекает. На входе — вещественное число (слева) или бит (справа). Умножение становится сколь угодно точным при а → 0 (слева) и при с → ∞ (справа). Левая сеть работает при любой функции σ(х), имеющей изгиб в нуле σ”(0) ≠ 0), что можно доказать разложением функции σ(х) по формуле Тейлора. Для сети справа надо, чтобы функция σ(х) стремилась к нулю и к единице при очень малых и очень больших х соответственно, так чтобы соблюдалось условие uvw = 1, только когда u + v + w = 3. (Эти примеры взяты из статьи моего студента Генри Лина: https://arxiv.org/abs/1608.08225, проверена 18 мая 2018.) Комбинируя умножения и сложения, можно вычислять любые полиномы, с помощью которых, как известно, мы можем получить апроксимацию любой гладкой функции.

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

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

Предположим, что у вас есть черно-белые мегапиксельные фотографии, и вам их надо разложить в две стопки — например, отделив кошек от собак. Если каждый из миллиона пикселей может принимать одно из, скажем, 256 значений, то общее количество возможных изображений равно 2561000000, и для каждого из них мы хотим вычислить вероятность того, что на нем кошка. Это означает, что произвольная функция, которая устанавливает соответствие между фотографиями и вероятностями, определяется списком из 2561000000 позиций, то есть числом большим, чем атомов в нашей Вселенной (около 1078). Тем не менее нейронные сети всего лишь с тысячами или миллионами параметров каким-то образом справляются с такими классификациями довольно хорошо. Как успешные нейронные сети могут быть “дешевыми” в том смысле, что от них требуется так мало параметров? В конце концов, вы можете доказать, что нейронная сеть, достаточно маленькая для того, чтобы вписаться в нашу Вселенную, потерпит грандиозное фиаско в попытке аппроксимировать почти все функции, преуспев лишь в смехотворно крошечной части всех вычислительных задач, решения которых вы могли бы от нее ждать.

Я получил огромное удовольствие, разбираясь с этой и другими, связанными с ней, загадками вместе со студентом по имени Генри Лин. Среди разнообразных причин испытывать благодарность к своей судьбе — возможность сотрудничать с удивительными студентами, и Генри — один из них. Когда он впервые зашел в мой офис и спросил, хотел бы я поработать с ним, я подумал, что, скорее, мне надо было бы задавать такой вопрос: этот скромный, приветливый юноша с сияющими глазами из крошечного городка Шревепорт в штате Луизиана уже успел опубликовать восемь научных статей, получить премию Forbes 30-Under-30 и записать лекцию на канале TED, получившую более миллиона просмотров — и это всего-то в двадцать лет! Год спустя мы вместе написали статью, в которой пришли к удивительному заключению: вопрос, почему нейронные сети работают так хорошо, не может быть решен только методами математики, потому что значительная часть этого решения относится к физике.

Мы обнаружили, что класс функций, с которыми нас познакомили законы физики и которые, собственно, и заставили нас заинтересоваться вычислениями, — это удивительно узкий класс функций, потому что по причинам, которые мы все еще не полностью понимаем, законы физики удивительно просты. Более того, крошечная часть функций, которую могут вычислить нейронные сети, очень похожа на ту крошечную часть, интересоваться которыми нас заставляет физика! Мы также продолжили предыдущую работу, показывающую, что нейронные сети глубокого обучения (слово “глубокое” здесь подразумевает, что они содержат много слоев) гораздо эффективнее, чем мелкие, для многих из этих функций, представляющих интерес. Например, вместе с еще одним удивительным студентом MIT, Дэвидом Ролником, мы показали, что простая задача перемножения n чисел требует колоссальных 2n нейронов для сети с одним слоем и всего лишь около 4n нейронов в глубокой сети. Это помогает объяснить не только возросший энтузиазм среди исследователей AI по отношению к нейронным сетям, но также и то, зачем эволюции понадобились нейронные сети у нас в мозгу: если мозг, способный предвидеть будущее, дает эволюционное преимущество, в нем должна развиваться вычислительная архитектура, пригодная для решения именно тех вычислительных задач, которые возникают в физическом мире.

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

Канадский психолог Дональд Хебб в своей книге 1949 года The Organization of Behavior, вызвавшей живой отклик, утверждал, что если бы два соседних нейрона часто оказывались активны (“светились”) одновременно, то их синаптическая связь усиливалась бы, обучая их включать друг друга — эта идея нашла отражение в популярной присказке “Связаны вместе, светятся вместе”. Хотя до понимания в подробностях, как именно происходит обучение в настоящем мозгу, нам еще далеко, и исследования показывают, что ответы во многих случаях должны будут далеко выходить за рамки простых предложенных правил вроде того, что стало известно как “обучение по Хеббу”, даже эти простые правила, тем не менее, способны объяснить, каким образом происходит обучение нейронных сетей во многих интересных случаях. Джон Хопфилд ссылался на обучение по Хеббу, которое позволило его исключительно простой искусственной нейронной сети сохранить много сложных воспоминаний путем простого повторения. Такое экспонирование информации в целях обучения обычно называют “тренировкой”, когда речь идет об искусственных нейронных сетях (а также о животных или о людях, которым надо приобрести определенный навык), хотя слова “опыт”, “воспитание” или “образование” тоже подходят. В искусственных нейронных сетях, лежащих в основе современных систем AI, обучение по Хеббу заменено, как правило, более сложными правилами с менее благозвучными названиями, такими как обратное распространение ошибки (backpropagation) или спуск по стохастическому градиенту (stochastic gradient descent), но основная идея одна и та же: существует некоторое простое детерминированное правило, похожее на закон физики, с помощью которого синапсы со временем обновляются. Словно по волшебству, пользуясь этим простым правилом, нейронную сеть можно научить чрезвычайно сложным вычислениям, если задействовать при обучении большие объемы данных. Мы пока еще не знаем точно, какие правила использует при обучении наш мозг, но, каков бы ни был ответ, нет никаких признаков, что эти правила нарушают законы физики.

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

История обучения по крайней мере столь же длинна, как и история самой жизни, поскольку каждый самовоспроизводящийся организм так или иначе производит копирование и обработку информации, то есть как-то себя ведет, чему ему надо было каким-то образом научиться. Однако в эпоху Жизни 1.0 организмы не учились в течение своей жизни: способы обработки информации и реакции на нее определялись унаследованной организмом ДНК, поэтому обучение происходило медленно, на уровне видов, через дарвиновскую эволюцию от поколения к поколению.

Около полумиллиарда лет назад некоторые генные линии здесь, на Земле, открыли путь к возникновению животных, обладающих нейронными сетями, и это дало таким животным способность менять свое поведение, обучаясь на опыте в течение своей жизни. Когда появилась Жизнь 2.0, она, благодаря своей способности учиться значительно быстрее, победила в соревновании видов и распространилась по планете словно лесной пожар. В первой главе мы уже выяснили, что жизнь постепенно улучшала свои способности обучаться, причем со все возрастающей скоростью. У одного вида обезьянообразных мозг оказался настолько хорошо приспособленным к обучению, что они научились пользоваться разными орудиями, разговаривать, стрелять и создали развитое общество, распространившееся по всему миру. Это общество само по себе можно рассматривать как систему, которая запоминает, вычисляет и учится, и всё это оно делает с неуклонно возрастающей скоростью, так как одно изобретение влечет за собой следующее: письменность, книгопечатание, современная наука, компьютеры, интернет и т. д. Что следующим поместят будущие историки в этом списке изобретений, ускоряющих обучение? Я думаю, следующим будет искусственный интеллект.

Как все мы знаем, лавина технических достижений, обеспечивших совершенствование компьютерной памяти и рост вычислительной мощности компьютеров (рис. 2.4 и рис. 2.8), привели к впечатляющему прогрессу в искусственном интеллекте, но потребовалось немало времени, пока машинное обучение достигло зрелости. Когда созданный IBM компьютер Deep Blue в 1997 году обыграл чемпиона мира по шахматам Гарри Каспарова, его главные преимущества заключались в памяти и способности быстро и точно считать, — но не в умении учиться. Его вычислительный интеллект был создан группой людей, и ключевая причина, по которой Deep Blue смог обыграть своих создателей, заключалась в его способности быстрее считать, и потому он мог анализировать больше возникающих в игре позиций. Когда созданный IBM компьютер Watson обошел человека, показавшего себя сильнейшим в викторине Jeopardy!, он тоже опирался не на обучение, а на специально запрограммированные навыки и превосходство в памяти и быстродействии. То же самое можно сказать обо всех прорывных технологиях в робототехнике, от самобалансирующихся транспортных средств до беспилотных автомобилей и ракет, приземляющихся в автоматическом режиме.

Напротив, движущей силой многих последних достижений AI стало машинное обучение. Посмотрите, например, на рис. 2.11. Вы сразу догадаетесь, что на этой фотографии, но запрограммировать функцию, на входе которой, ни много ни мало, цвет каждого из пикселей изображения, а на выходе — точно описывающая фотографию подпись, например: “Группа молодых людей, играющих во фризби”, — в течение десятилетий не удавалось ни одному из многочисленных исследователей искусственного интеллекта во всем мире. И только команда Google смогла сделать именно это в 2014 году{7}. Если ввести другой набор пикселей, на выходе появится: “Стадо слонов, идущих по сухому травяному полю”, — и снова ответ точный. Как они это смогли? Программируя вручную, как Deep Blue, создавая по отдельности каждый алгоритм, опознающий игру фризби, лица и все такое? Нет, они создали относительно простую нейронную сеть, не обладавшую поначалу никаким знанием о физическом мире и его составляющих, а потом дали ей возможность учиться, предоставив колоссальный объем информации. В 2004 году знаменитый визионер Джефф Хокинс, рассуждая об искусственном интеллекте, писал: “Никакой компьютер не может… видеть так же хорошо, как мышь”, — но те времена давно уже прошли.

Рис. 2.11

“Группа людей, играющих во фризби” — такую подпись к этой фотографии сгенерировала машина, ничего не знающая ни о людях, ни об играх, ни о фризби.

Так же, как мы не вполне понимаем, как учатся наши дети, мы все еще не до конца поняли, как учатся такие нейронные сети и почему они иногда терпят неудачу. Но уже ясно, что они будут очень полезны, и поэтому глубокое обучение стало привлекать инвесторов. Благодаря глубокому обучению сильно изменились подходы к технической реализации компьютерного зрения: от распознавания рукописного текста до анализа видеопотоков в реальном времени и беспилотных автомобилей. Благодаря ему произошла революция в способах преобразовывать с помощью компьютера устную речь в письменный текст и переводить его на другие языки, даже в реальном времени, поэтому мы можем теперь поговорить с персональными цифровыми помощниками, такими как Siri, Google Now или Cortana. Раздражающие головоломки типа CAPTCHA, разгадывая которые мы должны убедить сайт, что мы люди, становятся все труднее, чтобы обогнать технологии машинного обучения. В 2015 году Google DeepMind выпустил систему с искусственным интеллектом, которая с помощью глубокого обучения осваивала десятки различных компьютерных игр примерно так же, как это делает ребенок, — то есть не пользуясь инструкциями, с той единственной разницей, что научалась играть лучше любого человеческого существа.

В 2016 году та же самая компания выпустила AlphaGo — компьютерную систему, играющую в го, которая при помощи глубокого обучения стала так точно оценивать позиционные преимущества расположения камней на доске, что победила сильнейшего игрока в мире. Этот успех служит положительной обратной связью, привлекая все больше финансирования и все больше талантливой молодежи в исследования искусственного интеллекта, которые приводят к новому успеху.

Мы посвятили эту главу природе интеллекта и его развитию до настоящего времени. Сколько времени потребуется, чтобы машины смогли обойти нас в решении всех когнитивных задач? Мы этого не знаем и должны быть готовы к тому, что ответом окажется “никогда”. Однако смысл этой главы в том, чтобы мы подготовили себя также и к тому, что это все-таки произойдет, и, не исключено, даже еще при нашей жизни. В конце концов, материя может быть устроена так, что, когда она подчиняется законам физики, она запоминает, вычисляет и учится, — причем материя не обязательно биологической природы. Исследователей искусственного интеллекта часто обвиняют в том, что они слишком много обещают и слишком мало своих обещаний выполняют, но справедливости ради надо заметить, что у многих таких критиков послужной список тоже далеко не безупречен. Некоторые из них просто жонглируют словами, то определяя интеллект как нечто такое, чего компьютеры пока еще не могут, то как нечто такое, что произведет на нас наибольшее впечатление. Компьютеры теперь стали очень хороши или даже превосходны в арифметике, в игре в шахматы, в доказательстве математических теорем, подборе акций, распознавании образов, вождении автомобиля, аркадных играх, го, синтезе речи, преобразовании устной речи в письменную, переводе с языка на язык и диагностике рака, но иной критик лишь презрительно хмыкнет: “Конечно же, для этого не нужен настоящий разум!”. Он будет продолжать утверждать, что настоящий разум должен добраться до вершин ландшафта Моравеца (рис. 2.2), пока еще не скрывшихся под водой, подобно тем людям в прошлом, которые утверждали, что ни субтитры под картинкой, ни игра в го машине не под силу, — а вода продолжала прибывать.

Исходя их того, что вода будет прибывать еще как минимум некоторое время, можно предположить, что влияние искусственного интеллекта на общество будет расти. Задолго до того как AI достигнет человеческого уровня в решении всех задач, он успеет открыть нам новые увлекательные возможности и задать нам много новых вопросов в самых разных областях, связанных с инфекционными болезнями, законодательными системами, разоружением и созданием новых рабочих мест. Каковы они, и как мы можем лучше подготовиться к ним? Давайте рассмотрим это в следующей главе.

Подведение итогов

• Интеллект, определяемый как способность достигать сложных целей, не может быть измерен одним только IQ, он должен быть представлен спектральной плотностью в соответствии со способностями к достижению любых целей.

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

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

• Любая материя может быть основой для памяти, если у используемого ее фрагмента достаточно разных стабильных состояний.

• Любая материя может стать компьюториумом, то есть вычислительным (компутационным) субстратом, надо только, чтобы в ней содержались определенные универсальные строительные блоки, которые могут быть объединены для вычисления любой функции. Гейты NAND и нейроны дают два важнейших примера таких универсальных “вычислительных атомов”.

• Нейронная сеть является мощным обучающимся субстратом, потому что, просто подчиняясь законам физики, она может преобразовываться, становясь все более пригодной для выполнения требуемых вычислений.

• Из-за поразительной простоты законов физики нас, людей, интересует лишь крошечная часть всех мыслимых вычислительных задач, а нейронные сети, как правило, именно для решения задач из этой крошечной части идеально подходят.

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

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

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Жизнь 3.0. Быть человеком в эпоху искусственного интеллекта предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Сноски

10

Чтобы лучше понять, о чем здесь речь, давайте представим, что вводится какой-то единый “атлетический коэффициент”, сокращенно AQ, для всех спортсменов олимпийского уровня, так, словно обладатель самого высокого AQ должен побеждать на Олимпиаде во всех видах спорта.

11

Некоторые предпочитают использовать термины “сильный AI” или “AI человеческого уровня” как синонимы AGI, что приводит к некоторым проблемам. В узком смысле слова даже карманный калькулятор — это “AI человеческого уровня”. Антонимом “сильному AI” должен служить “слабый AI”, но довольно странно называть слабым AI Deep Blue, Watson или AlphaGo.

12

NAND представляет собой сокращение от двух английских слов NOT (не) и AND (и). Гейт AND выдает на выходе 1 только в том случае, если на входе две единицы. NAND делает в точности противоположное.

13

В отечественной специальной литературе принято использовать для обозначения этих понятий термин “логический вентиль”, однако в последнее время транслитерация английского эквивалента “gate” стала выходить на первое место, в особенности в научно-популярной литературе. — Прим. перев.

14

Я называю “вполне определенной функцией” то же, что математики и информатики называют “вычислимой функцией”, — то есть функцию, которая может быть вычислена каким-то гипотетическим компьютером, при условии что ему предоставлены неограниченные память и время. Алан Тьюринг и Алонсо Чёрч доказали, что существуют функции, которые могут быть описаны, но не могут быть вычислены.

15

Добавим для тех, кто любит математику, что в качестве этой функции чаще всего выступает либо сигмоидальная функция σ(x) — 1/(1 + ex), либо пороговая функция σ(x) = max{0, x}, хотя доказано, что в этой роли можно использовать какую угодно, лишь бы она не была линейной (то есть не представлялась в виде прямой линии на графике). В знаменитой модели Хопфилда использовалась функция σ(x) = — 1 if x < 0 and σ(x) = 1 if x ≥ 0. Если состояния нейронов хранятся в памяти в виде вектора, то при переходе к следующему такту он обновляется умножением сначала этого вектора на матрицу, элементами которой служат силы синаптических связей, и последующим применением функции ⌠(x) ко всем новым вычисленным элементам.

Комментарии

3

Замечание по поводу происхождения термина AGI см.: http://goertzel.org/who-coined-the-term-agi/

4

Hans Moravec 1998, “When will computer hardware match the human brain”, Journal of Evolution and Technology, vol. 1.

5

Данные о стоимости вычислений в разные годы до 2011 взяты из книги Рэя Курцвейла How to Create a Mind, последующие данные вычислены на основании информации, приведенной в: https://en.wikipedia.org/wiki/FLOPS

6

Один из создателей теории квантовых вычислений Дэвид Дойч показывает, каким образом квантовые вычисления связаны с многомировой интерпретацией квантовой механики, в книге: David Deutsch. The fabric of reality. London: Penguin, 1997 (есть русский перевод: Дойч Д. Структура реальности. Наука параллельных вселенных. М.: Альпина нон-фикшн, 2015. — Прим. перев.). Если вас интересует мой собственный подход к квантовым параллельным вселенным как к третьему из четырех уровней мультиверсума, то смотрите мою книгу Our Mathematical Universe (см. рус. пер.: Тегмарк М. Наша математическая Вселенная. В поисках фундаментальной природы реальности. М.: Corpus, 2016 / пер. с англ. А. Сергеев. — Прим. перев.).

7

О прорыве, совершенном Google в распознавании образов, см.: https://arxiv.org/pdf/1411.4555.pdf

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я