Машина
Что такое квантовый компьютер и в чем состоит проблема его создания?
Ячейка памяти обычного компьютера хранит один бит информации: либо нолик (конденсатор разряжен), либо единичку (конденсатор заряжен). 64 такие ячейки позволяют закодировать одно из 18 квинтиллионов (2 в степени 64) различных целых чисел.
Представьте, что одно число из этих 18 квинтиллионов является решением какой-то важной и сложной задачи, например описывает лекарство от рака. Часто такие задачи не имеют аналитического решения и решаются только полным перебором всех возможных вариантов. Если обычный компьютер может проверить миллиард (109) вариантов в секунду, то полный перебор займет примерно 585 лет.
Ячейка памяти квантового компьютера, которая называется кубит, может одновременно находиться в обоих состояниях: с некоторой вероятностью нолик, с некоторой вероятностью единичка. Соответственно, 64 таких кубита могут одновременно кодировать каждое из 18 квинтиллионов чисел от 0 до 264 – 1.
Программа для такого квантового компьютера может одновременно проверить все 18 квинтиллионов вариантов. По большому счету квантовому компьютеру из 64 кубитов нет разницы, перебрать миллиард вариантов или 18 квинтиллионов. Благодаря законам квантовой физики он делает это за одно и то же время.
К сожалению, технологии пока не позволяют создать квантовый компьютер, пригодный для практического применения. Ученые пробуют различные носители квантовой информации, такие как поляризация фотонов, сверхпроводящие кольца, спиновые состояния электронов и так далее. Пока что квантовые компьютеры содержат по два-три кубита, и никто не знает, как масштабировать их дальше и возможно ли это в принципе.
Как написали первую программу без программы для написания программ?
Если коротко, то новые языки программирования и другие инструменты создаются на основе уже существующих. Полная аналогия с другими областями техники, где новые станки и материалы позволяют создавать все более совершенные станки и материалы. Как все станки начались с палки-копалки и кремневого рубила, так и языки программирования начались с перфокарт и нечитаемого двоичного кода.
Центральный процессор вашего компьютера понимает только программы, написанные на языке ноликов и единичек. Например, команда «прибавить константу 5 к числу, записанному в регистре AL», записывается так: 0000 0100 0000 0101
Здесь 0000 0100 – код операции «прибавить число к регистру AL», а 0000 0101 – двоичное представление числа 5.
На заре индустрии для ввода программы в компьютер нужно было либо перещелкнуть сотни тумблеров на специальной панели (тумблер ВЫКЛ. – нолик, тумблер ВКЛ. – единичка), либо пробить дырочки в специальной перфокарте. Ошиблись в одной ячейке из тысячи – программа будет работать неправильно, будьте добры сами найти ошибку методом пристального взгляда.
Ясно, что такой способ программирования жутко неудобен и подвержен ошибкам. Чтобы не тратить время на это занудство, ленивые программисты начали думать, как переложить неблагодарную работу на машину.
Можно один раз хорошенько помучиться и написать на языке ноликов и единичек вспомогательную программу, которая называется ассемблер («сборщик»). Этот волшебный ассемблер принимает на вход человеко-читаемый текст и преобразует его в нолики и единички. Например, та же самая команда «прибавить константу 5 к числу, записанному в регистре AL», записывается на языке ассемблера x86 так:
ADD AL, 5
Думаю, вы согласитесь, что это все-таки более читаемо, чем 0000 0100 0000 0101. Здесь хотя бы понятно, что речь идет о сложении (ADD) и числе 5. Теперь уже дело ассемблера преобразовать эту строчку в 0000 0100 0000 0101. На языке ассемблера сложно писать большие программы, процессоры разных производителей могут требовать разных ассемблеров, но все равно это был большой шаг вперед.
Дальше инженерную мысль было не остановить. Нужно один раз помучиться, чтобы написать на ассемблере компилятор языка программирования, например Фортрана. Потом еще немного помучиться, чтобы написать на Фортране компилятор Алгола. Затем передохнуть, помучиться и написать на Алголе компилятор языка CPL. Еще немного мучений – и можно на основе CPL написать компилятор языка C. Дальше можно уже не мучиться и в свое удовольствие писать на C компиляторы C++, Java, C# и других современных языков. Впрочем, никто не запретит использовать Java, чтобы написать ассемблер x86 и замкнуть рекурсию.
Что такое большие данные? Почему это так популярно?
В буквальном понимании термин «большие данные» действительно означает большие по объему (в терабайтах, петабайтах и экзобайтах) данные. Но суть в другом.
Более точной формулировкой может служить «сложные данные». Когда говорят «большие данные», подразумевают данные с такими характеристиками: их сложно и дорого анализировать, необходимы значительные человеческие и вычислительные ресурсы; в них может находиться информация, использование которой приведет к конкретному, измеримому увеличению бизнес-показателей компании.
Примером больших данных может служить набор данных очень крупного интернет-магазина, аналитическая система которого собирает действия пользователей на сайте: каждую посещенную страницу, источник трафика, движения мышки, клики по ссылкам, статистику из социальных профилей пользователей, историю покупок и так далее. Результатом успешного анализа такого набора данных будет увеличение продаж, среднего чека или повторных покупок, что приведет к отслеживаемому росту дохода магазина.
О больших данных говорят, потому что эта методология работает. Компании (и не только) принимают стратегические решения на основании результатов анализа. На данный момент количество необработанных данных значительно превышает количество специалистов и вычислительную мощность серверов для их анализа. Спрос на анализ больших данных рождает предложение.
Именно коммерческое использование больших данных генерирует такой интерес вокруг этой области знании. Но большие данные очень важны и для науки. Большой Адронный Коллайдер, к примеру, генерирует невообразимо огромные объемы данных. И именно успешный анализ и обработка этих данных позволяют ученым открывать новые элементарные частицы.
Можно ли создать виртуальный банк без сотрудников?
Если исходить из определения банка как финансовой организации, которая предоставляет разнообразные финансовые услуги юридическим и физическим лицам, то все будет зависеть от вида услуг, предоставляющихся этим банком.
Ну, допустим, есть банки с широким спектром услуг – такие распространены в России, Украине и подобных странах – и те, которые имеют узкую специализацию, то есть предоставляют определенный список услуг, и он достаточно узкий, такой вид банков был распространен в Штатах.
Получается, если это какие-то мелкие услуги, денежные переводы из счета на счет, обмен валют, кассовые выплаты, открытие банковского счета или депозита, то уже, в принципе, есть интернет-банкинг – там, где действия человека практически не требуются, даже определенные виды кредитов могут выдавать без участия кредитного эксперта.
Но для обслуживания данной системы пока что все равно нужны люди, и, даже если такая система будет идеальной, все равно на сегодняшний день определенный вид услуг компьютер не способен провести, ну это из того, что мне известно, может в Японии уже сокращают рабочих в банковском секторе. Это что касается коммерческих банков. То есть в итоге в будущем, причем не очень далеком, вполне возможно.
Но что касается инвестиционного банка, то ИИ не достиг пока того необходимого уровня анализа.
В каком фильме показан наиболее правдоподобный искусственный интеллект?
На мой взгляд, такого фильма не существует. Главным образом не потому, что у сценаристов плохая фантазия, но по той причине, что правдоподобная версия ИИ слишком сильно отличалась бы от всего, что напоминает наш человеческий опыт. Нет никаких причин считать, что AI должен быть похож на злобных машин, мечтающих уничтожить человечество, из «Терминатора», трагических андроидов из повести Филипа Дика, по которой поставлен «Бегущий по лезвию бритвы», или трогательного робота из «Валл-и».
Правдоподобный ИИ лишен антропоморфных черт как на уровне физического строения, так и в когнитивном отношении. Он способен к самообучению и за очень короткие сроки получает опыт и строит когнитивную модель мира, на порядки превосходящие человеческое понимание ситуации. Фильм, который мы могли бы снять об этом сюжете, отличался бы предельной лаконичностью: вы приходите в кинотеатр, рассаживаетесь перед сеансом, и тут экран мгновенно гаснет – вы больше не имеете ни малейшего представления о том, что тут происходит.
Это как если бы орангутаны или даже тараканы пытались осмыслить жизнь людей и снимали о ней фильмы. Совершенно бесполезное занятие.
Фильм можно снять только о таком ИИ, чье поведение в достаточной степени похоже на человеческое, чтобы мы могли наделять его антропоморфными чертами – а тем самым сохраняли бы какое-то подобие контроля за происходящим и понимания. В культуре есть некоторое количество таких фильмов, от «Звездных войн» (где C3PO близко подбирается к правде, заявляя, что Люк Скайуокер все же довольно сообразительный малый – для человека, конечно; к слову, на форумах фанатов «Звездных войны» обсуждается популярная версия, согласно которой C3PO – это терминатор под прикрытием, пришедший в одну далекую галактику, чтобы поработить людей – очень романтическая и антропоцентрическая гипотеза), – так вот, от «Звездных войн» до «Her» и серии «Теории большого взрыва», в которой Кутрапали влюбляется в Сири. И эти фильмы свидетельствуют о том, что мыслящие машины стали повседневной частью нашей культуры еще до того, как они были изобретены. Но только при том условии, что эти машины останутся человекоподобными, в сущности – не более чем искусственными людьми.
Так что эти фильмы про людей и отношения между ними, а другие нам, людям, вероятно, и не было бы интересно смотреть. Фильм про реальный AI выглядел бы, пожалуй, как «Шоу Трумана», в котором за Труманом никто не наблюдает и ему некуда бежать.
Возможно ли, что наша вселенная на самом деле виртуальная реальность?
Возможно. Почему нет?
Здесь сразу на ум приходят (гениальный, на мой взгляд) фильм «Матрица» и слова Морфеуса, которые он сказал Нео, объясняя, что такое Матрица: «Что есть реальность? И как определить ее? Есть набор ощущений – зрительных, осязательных, обонятельных – это сигналы рецепторов, электрические импульсы, воспринятые мозгом». Многие необъяснимые вещи, происходящие на Земле, люди приписывают сверхъестественным силам. Но откуда они берутся? Может, это и есть сбои или изменения в коде Матрицы? Как бы оно ни было, на сегодняшний день это невозможно ни подтвердить, ни опровергнуть.
Или, например, очки и шлемы виртуальной реальности. На сегодняшний день графика в них довольно примитивна, но все же заставляет ваш вестибулярный аппарат работать так, словно вы падаете. То есть ваш мозг уже частично думает, что реальность – это 3D-картинка в шлеме и вы вовсе не стоите на полу. А что будет, если, скажем, в будущем создать некий шлем, который будет давать вам полный набор ощущений (сигналов рецепторов). Тогда вы полностью погрузитесь в виртуальную реальность и отличить ее от настоящей будет уже трудно. А если предположить, что вы с рождения лежите в таком шлеме и настоящей реальности не видели никогда?
Теорий может быть много, это лишь одна из них. И рассуждать можно часами. Я верю в возможность существования нашей вселенной как виртуальной реальности. И вообще, реальность – это философский термин. Тогда все становится еще сложнее.
Над какими основными функциями роботов сейчас работают инженеры?
Существует различие между тем, чем занимаются робототехники и чем – программисты искусственного интеллекта. Если моя информация об этой быстро изменяющейся сфере еще не устарела, то робототехники по-прежнему пытаются сделать так, чтобы движения роботов были естественными. Добиться двуногого хождения (как у людей) чрезвычайно сложно и с точки зрения физики, и с точки зрения дизайна.
С другой стороны, специалисты, которые занимаются машинным обучением, нейронными сетями, искусственным интеллектом и другими областями, в которых применяется алгоритмическое решение проблем, находятся в постоянном поиске тех алгоритмов, которые смогли бы научить машины «чему-нибудь» наилучшим образом. Например, обработка естественного языка (понимание языка и его использование) представляет собой «главную функцию», которая в настоящее время находится в разработке, – одним словом, работа здесь кипит.
Почему до сих пор никакой суперкомпьютер не просчитал дерево ходов в шахматах до конца?
В начальной позиции шахматной партии 20 вариантов ходов (16 ходов пешками и 4 конем). После первого хода у соперника столько же вариантов. После первых ходов возможных вариантов становится больше (так как вступают в игру ферзь, ладьи и слоны), но для простоты ограничимся 20 ходами. Тогда за 40 ходов (белыми и черными) у нас как минимум 2080 = 1080 × 280 >= 1090 веток дерева.
Теперь обратимся к производительности компьютеров. В ближайшее время ожидается компьютер с 1018 флопсов, то есть 1018 операций с плавающей запятой в секунду. Предположим, что перебор каждого варианта выполняется пусть даже в миллиард раз быстрее, чем одна простейшая операция с плавающей точкой. Тогда этот компьютер сможет перебрать 1027 вариантов за секунду. Но тогда на пересчет всех возможных вариантов ему понадобится минимум (1090 / 1027) 1063 секунд. Если учесть, что в году у нас примерно 3Ч108 секунд, то компьютеру понадобится минимум 1055 лет.
Как работал первый в мире компьютер?
Задолго до появления электронных компьютеров, которые, наверное, подразумеваются в вопросе, изобретались и создавались разнообразные механические вычислительные машины. Следует начать с них, так будет проще объяснить и понять.
Вспомните, как в школе вы решали примеры «в столбик»: вы записывали каждую цифру числа в отдельную клеточку и потом производили последовательность простых действий с числами в соседних клетках. Теперь подумайте о том, что числа можно представить механически, например как положение шестерни, наглядный пример – поворотные ручки с цифрами на кухонной плите. Можно изобрести механизм, в котором такие шестерни, выражающие числа, были бы хитро связаны другими шестернями друг с другом так, чтобы, когда машина работает, получались те же действия, что и с числами в соседних клетках вашей тетради по математике. Таким образом, можно сделать так, чтобы машина «считала» за вас. И такие машины изобретались и создавались, став предтечей компьютеров.
Современные компьютеры тоже выполняют операции с числами по заложенным в их устройство правилам. Вместо шестеренок и их механического движения теперь используются электронные компоненты и их электрическое взаимодействие. Надо заметить, что при этом чаще всего используется двоичная система – форма записи чисел при помощи цифр 0 и 1. Такая система удобна, потому что выразить 0 и 1 при помощи электронного компонента сравнительно легко – это своего рода «вкл./выкл.», как на выключателе. Кроме того, для чисел, записанных в такой форме, достаточно просто описать и реализовать правила, по которым проводятся математические операции.
Для меня в детстве главной загадкой было то, как вся эта возня с числами превращается в картинки, звук и так далее. Трюк в том, чтобы все описывать через числа – «кодировать» информацию. Например, обозначить числом высоту ноты, пронумеровать буквы в алфавите и цвета на палитре. Компьютер манипулирует огромным количеством таких чисел, представляющих информацию, с огромной скоростью. Он выполняет действия, которые заложили в него инженеры и программисты, которые придумали, как именно выразить информацию в числах и как манипулировать этими числами, так чтобы изменять закодированную ими информацию.
Первым «компьютером» часто называют американский ЭНИАК. В нем использовались электронные лампы, которые делали его весьма большим по размерам и требовали различных инженерных ухищрений, чтобы не ломаться слишком часто, ведь выход из строя даже одной нарушал логику работы машины. Когда нужно было задать последовательность действий, которые должен был проделать ЭНИАК, чтобы решить задачу, инженеры физически переключали соединения его частей, на что уходило очень много времени. Исходные числа для подсчетов вводились в компьютер на перфокартах. В отличие от более поздних моделей, ЭНИАК все еще оперировал числами в десятичной системе, подобно механическим счетным машинам до него.
Стоит ли опасаться восстания машин?
Сегодня многие люди этим обеспокоены. Инженеры компании Google создают алгоритмы безопасного обеспечения искусственного интеллекта. Существуют даже специальные фонды, куда вкладываются большие средства для реализации программ по развитию искусственного интеллекта. Так что сейчас профессионалы делают все, чтобы свести вероятность так называемого восстания машин к нулю и предотвратить возможность возникновения проблемы.
С другой стороны, мы должны понимать, что любое действие, не предписанное определенным алгоритмом, требующее морального усилия, лежит в плоскости свободы воли, свойственной только существам разумным. Проблема восстания машин – это проблема соотношения между каузальным порядком, детерминированностью событий и свободным самоопределением. На представлениях о свободе воли построено представление о личности и ответственности. Волюнтаризм Шопенгауэра предполагает волю как «вещь в себе», недоступную для познания и не подчиняющуюся принципу причинности.
Что касается искусственного интеллекта, то так или иначе – это рациональная система, поддающаяся прогнозированию и программированию. Вследствие этого любое отклонение от детерминизма будет являться не проявлением свободы воли, а системной ошибкой. Вероятно, подобные ошибки могут понести за собой плачевные для человека последствия: технологические катастрофы, транспортные бедствия.
Однако они будут носить скорее очаговый характер. Вспомним хотя бы недавний случай с автомобилем Tesla, который, двигаясь на автопилоте, не смог отличить ехавший навстречу грузовик от окружающей среды. Мы не можем отнести подобный случай к акту проявления свободы воли. Таким образом, восстание машин будет возможно только тогда, когда они будут способны к творчеству и свободному самоопределению, что произойдет еще очень нескоро.
Возможно ли создание искусственного интеллекта?
Этот вопрос стоит рассмотреть с нескольких сторон. На данный момент нет даже точного понимания, как правильно описать, что такое искусственный интеллект, и точно нет единого мнения на этот счет. Если говорить конкретно про информационные технологии, то большинство людей считает, что машина, способная ездить без водителя по городскому трафику, останавливаясь перед пешеходами, перебегающими в неположенном месте, и тому подобное – это и есть искусственный интеллект, но это всего лишь программный алгоритм, основывающийся на большой базе знаний, GPS, изображении с камер, датчиках и других данных. Даже пылесос, который чистит дом по заданному алгоритму, называют искусственным интеллектом.
Для определения, может ли машина мыслить, Тьюринг предложил тест, который звучит следующим образом: «Человек взаимодействует с одним компьютером и одним человеком. На основании ответов на вопросы он должен определить, с кем он разговаривает: с человеком или компьютерной программой. Задача компьютерной программы – ввести человека в заблуждение, заставив сделать неверный выбор». Этот тест был пройден современным чат-ботом, который совершенно точно не является искусственным интеллектом (хотя сразу же было заявлено, что все тестирование проходило некорректно).
Для искусственного интеллекта очень важна возможность самообучения, то есть создается программный код, который может обучаться на своих ошибках или успехах.
Например, робот, который играет в настольный теннис – в данном случае программа просто записывает результаты своих действий и в следующий раз делает действие, основанное на предыдущих экспериментах, например, если мячик отбивается совсем не в ту сторону, робот отобьет его в следующий раз по-другому и сравнит эти данные, чтобы получить идеальное отбивание со временем. Но алгоритм такого робота не предполагает, что, если посадить его за автомобиль, он сможет научиться им управлять, так как его программа написана только для обучения определенным действиям.
Таким образом, то, что подразумевается под искусственным интеллектом, должно иметь возможность обучаться всему так же, как человек, условно говоря, программа должна уметь «обучаться обучению» и принимать решения, не основанные на изначальном программном коде. Получается, что искусственный интеллект должен сам создавать новый программный код для своих компонентов для каждой ситуации, исходя из всего предыдущего опыта.
Конец ознакомительного фрагмента.