От программирования к обучению

09:52 21.11.2016   |  Леонид Черняк |

|   1302 прочтения



Рабочими инструментами новой «калифорнийской золотой лихорадки» стали не кирки, лопаты и промывочные лотки, а серверы на графических процессорах и ПО для глубинного обучения.

В последние несколько лет лет мы стали свидетелями бурного развития практического приложения искусственного интеллекта, получившего симптоматическое название «калифорнийская золотая лихорадка 2015» в память о знаменитой золотой лихорадке, случившейся в тех же местах полтора века назад. В прогнозе Gartner на 2017 год мы находим: «Искусственный интеллект и машинное обучение, включая глубинное обучение, а также нейронные сети и обработка текстов на естественных языках позволят создавать более совершенные системы, способные понимать, обучаться и действовать автономно. Такие системы, обучившись, смогут изменять свое поведение, что приведет к созданию более умного программного и аппаратного обеспечения. Сочетание технологий для параллельной обработки больших объемов данных с новыми алгоритмами открывает новую эру».

Итак, новую эру прежде всего обеспечивают параллельные процессоры и глубинное обучение (Deep Learning, DL). Трудно сказать, что первично: аппаратная база в лице графических процессоров общего назначения GPGPU, иногда просто GPU, или программное обеспечение. Созданием первых человечество обязано прежде всего компании Nvidia, появлению второго (в новейший период) — небольшой группе ученых, которую в шутку называют канадской мафией.

Возникает естественный вопрос: откуда возникло «обучение», почему не «программирование»? Последние годы, особенно после появления Интернета, мы жили в условиях беспрецедентного по своим масштабам распространения ПО, которое вдохновило Марка Андриссена, создателя браузера Mosaic и корпорации Netscape Communications, на его крылатое изречение — «программное обеспечение пожирает мир». Вот почему для начала попробуем разобраться в более общих причинах интереса к DL.

Эволюция инновационных сетей

Рис. 1. Эволюция инновационных сетей: станет ли машинный интеллект и глубинное обучение следующим шагом в инновационной цепочке?

Небольшой комментарий к графику, приведенному на рис. 1. Все без исключения нынешние инновации в области высоких технологий рождаются не в искусственно созданных замкнутых пространствах, а ведут свое происхождение из распределенных структур, поэтому сейчас говорят об инновационных сетях (Innovation Network). О распределенной природе современных инноваций стоит напомнить тем, кто мечтает создать свою собственную Кремниевую долину, например, в ближнем Подмосковье или в небольшой, но очень активной горной республике. Исследователь из МТИ Томас Малишкевич представил DL как следующий шаг в инновационной цепочке. Список выбранных им инноваций не бесспорен, несколько важнейших шагов в нем явно пропущено (скажем, все, что связано с Unix/Linux, и еще кое-что), но в целом график дает представление о месте DL.

Первую пятилетку DL (2010-2015 годы) Малишкевич назвал «DL приходит на праздник», а вторую (2015-2020) — «DL — революция в робототехнике». Предполагается, что помимо роботов DL найдет широкое применение в Интернете вещей, при обработке больших массивов данных, поступающих от различных сенсоров в реальном времени, в обработке текстов на естественных языках и т. п. Все эти области применения объединяет непосредственная привязка компьютеров к реальному миру, то есть они будут служить для той или иной обработки реальных данных из окружающего нас мира.

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

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

В III тысячелетии до нашей эры египтяне создают машины, внутри которых, правда, прятались жрецы, а в «Илиаде» (VIII век до нашей эры) упоминаются «механические слуги» бога-кузнеца Гефеста. В период до I века нашей эры греки создавали самые разнообразные машины и механизмы — например, Герон Александрийский в своей книге «Пневматика» описывает несколько десятков автоматических устройств. Примерно в то же время в Китае разрабатываются сложнейшие автоматы, включая целые механические оркестры.

Процесс автоматизации возобновился в Европе только спустя полторы тысячи лет. Хронологически первой стала легенда о железной голове, созданной Альбертом Великим (1193-1280), которая, якобы, могла воспроизводить человеческий голос. Намного более достоверны и многочисленны сведения о творениях механиков и ученых XVII — XVIII веков. В Сети можно найти огромное количество интересных материалов, но наиболее систематическую подборку можно найти на совершенно неожиданном ресурсе. Механизмы, имитирующие человека или животных, называли автоматонами, что в переводе с греческого (α?τ?ματον) означает «действующий по собственной воле», точнее, выполняющий с помощью внутреннего устройства определенный набор действий по жестко заданной программе без участия человека. Магия этих механизмов сохраняет их привлекательность до сих пор, неслучайно они занимают центральное место в таких популярных фильмах последних лет, как «Хранитель времени» и «Лучшее предложение».

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

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

Француз Жозеф Мари Жаккар в 1801 году заменил фиксированный барабан на сменные карты и снабдил этим устройством ткацкие станки, получившие его имя. Меняя карты, можно было получать различные рисунки переплетения нитей. Чарльз Бэббидж заимствовал идею карт для своих разностной и аналитической машин, совместив ее с принципом разделения вычислений на простые шаги. Наконец, до полного совершенства принцип записи программ и данных на перфокарты довел основатель IBM Герман Холлерит, создав машину для обработки данных переписи населения. Позже на том же принципе строились табуляторы, использовавшиеся еще пятьдесят лет.

Приходится признать, что какими бы совершенными ни были все современные компьютеры, они являются наследниками старинных программных автоматов, пусть и с несколькими существенными отличиями. Как известно, на протяжении первых десятилетий компьютерной истории данные и программы набивались на те же самые карты Холлерита. Показательно, что изданная в СССР в 1971 году классическая книга К. Джермейна «Программирование на IBM/360» начинается с истории перфокарт. С появлением алфавитно-цифровых терминалов и многочисленных языков программирования, и особенно с массовым распространением графического интерфейса, видимая связь с прошлым потерялась, но любой компьютер точно так же, как шарманка, работает по программе, но эта программа, в отличие от записанной на карты, может быть модифицирована в процессе исполнения. Принцип хранения программы в оперативной памяти обычно связывают с именем Джона фон Неймана, который первым опубликовал и распространил его в научной среде. Главное отличие компьютера от шарманки — в большей гибкости по отношению к программе. В железных или картонных записях программ не может быть команд условного и безусловного перехода, нельзя организовать цикл, а в остальном все то же, разве что работают компьютеры побыстрее. Компьютер, построенный по схеме фон Неймана, остается программным автоматом, или системой с разомкнутой связью. Он отрабатывает последовательность команд, обычно называемую алгоритмом, которая приводит к заранее поставленной цели.

Позволю себе процитировать собственную статью «Будущее компьютеров и обратная связь», написанную тринадцать лет назад: «Мы настолько привыкли к программному обеспечению как к предмету нашей деятельности, что совершенно забыли исходный смысл слова 'программа'... Корни у него греческие, prographein означает «написанное заранее». Управление по программе предполагает, что программа, написанная заранее для какого-либо устройства, выполняется им так, как было задумано. Искусство любого программирования, в том числе и компьютерного, заключается в учете всех возможных факторов и условий внешней среды, и если они учтены совершенно точно, то программа будет выполнена успешно, но достаточно любого внешнего непредусмотренного возмущающего воздействия — и программный автомат идет вразнос. Программное управление может успешно манипулировать устройством, слабо связанным с внешней средой, например, стиральной машиной или компьютером, предназначенным для обработки известных данных.

Как ни странно, но именно архаичное программное управление было и остается основой современных компьютерных систем; компьютер работает по заранее созданной программе. В итоге и совершенные современные методы программирования, и сами высокотехнологичные компьютеры, за редким исключением, остаются идейно близки самым первым примитивным программируемым автоматам. Медный диск с отверстиями заменила память, систему рычагов — процессоры, но идея выполнения наперед заданной программы осталась. По сути, в самом современном компьютере все точно так же, как было в аналитической машине Чарльза Бэббиджа. Единственное отличие — схема фон Неймана, согласно которой программы и данные хранятся в одной памяти».

Главная слабость программного управления в его негибкости, оно по определению лишено способности к адаптации: если что-то меняется во вне, нужна новая версия программы, и как следствие — бесконечный цикл выпуска новых релизов. Скажите, вам не надоело постоянное обновление операционной системы Windows, или то, что используемая вами редакция браузера имеет индекс 42.5.7, например?

В начале прошлого десятилетия даже на умозрительном уровне было понятно, что программное управление компьютером и фон-неймановская схема имеют конечный срок жизни. Его продлению способствуют две вещи. Во-первых, в подавляющем большинстве приложений компьютеры остаются совсем или слабо связанными с окружающей средой, а во-вторых, статус-кво поддерживается ростом производительности, коррелирующим с законом Мура, и постоянным совершенствованием технологий программирования. Размышления автора по этому поводу изложены в статье «Третья опора компьютинга». До тех пор, пока требования со стороны внешней среды позволяют, останется существующее разделение на умную программу и глупый исполнительный механизм, этим и объясняется справедливость утверждения Андриссена о программном обеспечении, пожирающем мир, — весь интеллект, за малым исключением, сосредоточен именно в программе.

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

Новую парадигму иногда называют перцептуальными, или воспринимающими, вычислениями. Perceptual Computing — это такое направление в развитии компьютеров, которое сделает их лучше приспособленными к взаимодействию с окружающей средой, в том числе и в части развития новых форм взаимодействия человека с компьютером. Заметим, что в Wikipedia приведена иная трактовка термина Perceptual Computing, связывающая его с работами Лотфи Заде, американского математика и логика, основателя теории нечетких множеств и нечеткой логики, профессора Калифорнийского университета в Беркли.

Появление новой парадигмы определенным образом коррелирует с новыми трендами в науке, с тем что сейчас принято называть eScience. Ниже приводится фрагмент из статьи «От данных к знанию»: «В 2006 году журнал Nature опубликовал статью 'Наука в экспоненциальном мире', в которой астроном и футуролог Алекс Шалаи и компьютерный гуру Джим Грей разделили научное прошлое человечества на четыре периода в соответствии с тем, как оно использовало данные. В античные времена наука ограничивалась описанием наблюдаемых феноменов и логическими выводами, сделанными на основе наблюдений. В XVII веке данных стало больше, и тогда люди начали создавать теории, используя в качестве доказательств те или иные аналитические модели. В XX веке компьютеры открыли возможности для использования методов численного моделирования, а в XXI веке начали складываться научные методы, основанные на анализе данных (eScience), и здесь для работы с колоссальными объемами данных стали применяться синтезирующие теории, статистические и другие методы извлечения полезной информации».

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


Теги: Авторские колонки