Часть третья. МАШИННОЕ ОБУЧЕНИЕ. Искусственные нейронные сети. Что значит учиться?

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

Что же такое обучение, и отчего возникает в нем потребность для интеллекта? Вполне очевидно, что процесс обучения связан с получением новой информации. Это видно не только на примере экспертных систем, но также и из повседневной жизни. Конечно, сложно, не прибегая к мистике, представить себе разум, который бы заранее обладал полной информацией обо всем мире — он должен был бы содержать в себе всю Вселенную или даже превосходить ее. Хотя такая ситуация не редкость в искусственных замкнутых мирах типа шахмат, но и там возникает потребность в обучении решению задач — поиску таких цепочек собственных действий, которые могут привести мир из текущего в желаемое состояние. Подобное обучение можно трактовать как накопление «дедуктивной» информации.

Однако просто накопление информации еще не означает обучения. Представим себе человека, обучающегося игре в шахматы, который смотрит на игры гроссмейстеров и запоминает ходы, сделанные в той или иной ситуации. Свои знания он сможет применить лишь в абсолютно таких же ситуациях, если они вдруг возникнут (на что, однако, надеяться вряд ли стоит). Или можно представить себе ученика, который запоминает решение каждого конкретного уравнения вместо того, чтобы понять общий принцип нахождения ответов. Подобную «зубрежку» вряд ли можно назвать обучением, разве что самым примитивным, несмотря на то, что при этом происходит запоминание максимального объема информации. Здесь уместно еще раз вспомнить пример из книги Феймана, приведенный выше. Очевидно, самим обучающимся интеллектом должна выполняться дополнительная обработка информации с формированием каких-то общих правил на основе частных примеров.

Но почему тогда просто не запоминать общие правила, уже выведенные кем-то ранее? Разработчики экспертных систем шли именно этим путем и натолкнулись на существенные трудности. Да и при обучении людей запоминание общих правил недостаточно, ведь не зря в образовании имеет столь большое значение дидактика как наука, исследующая закономерности усвоения знаний (результаты дидактики еще, правда, не востребованы при обучении систем, основанных на знаниях, в области искусственного интеллекта). Многие знания экспертов оказываются невербализованными — не выраженными в словесной форме. Эти знания сформированы на подсознательном уровне в результате обобщения большого личного опыта. Об этом свидетельствует большая трудоемкость работы инженеров по знаниям при разработке ЭС: те знания, которые эксперты могут ясно сформулировать, оказываются недостаточными для создания ЭС, и приходится производить сложную процедуру извлечения знаний — выявления и формализации результатов обобщения индивидуального опыта. Последнее означает, что осознаваемые общие правила — лишь малая часть информации, используемой интеллектом. Особенно ярко это проявляется в «низкоуровневых» задачах, таких как управление движением или распознавание образов. Объяснение мастера единоборств не позволит новичку (или тем более роботу) тут же овладеть каким-то приемом. Также и профессиональный дешифровщик аэрокосмических снимков или умелый игрок на бирже не сможет сформулировать правил, по которым другой человек или компьютер смог бы столь же эффективно решать соответствующую задачу.

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

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

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

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

При обучении с подкреплением в роли учителя выступает среда. Она не сообщает детального ответа, а лишь указывает на правильность или ошибочность выбранного решения. Например, когда организм ищет пищу, ему сообщается не правильный маршрут (как в обучении с учителем), а лишь то, нашел ли он в итоге пищу или нет, что сопровождается поощрением (удовольствием от еды) или наказанием (голодом).

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

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

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

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

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

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