От Юма до домашних роботов

Скачать обучающийся алгоритм, который я только что описал, можно на сайте alchemy.cs.washington.edu. Мы окрестили его Alchemy, чтобы напомнить самим себе, что, несмотря на все свои успехи, наука о машинном обучении все еще находится на стадии алхимии. Скачав его, вы увидите, что он включает намного больше элементов, чем приведенный выше базовый алгоритм, и что ему все еще не хватает целого ряда аспектов, которые, как мы выяснили, универсальный обучающийся алгоритм должен иметь, например кроссинговера. Тем не менее для простоты давайте называть нашего кандидата в универсальные обучающиеся алгоритмы Alchemy.

Alchemy отвечает на вопрос Юма тем, что кроме данных у него еще один вход: исходные знания в виде набора логических формул, с весами или без них. Эти формулы могут быть непоследовательными, неполными и просто ошибочными: алгоритм машинного обучения и вероятностное рассуждение с этим справятся. Ключевой момент заключается в том, что Alchemy не обязан учиться с нуля. Вообще говоря, мы даже можем приказать алгоритму оставить формулы без изменений и узнавать только веса. В таком случае Alchemy, вооруженный соответствующими формулами, может превратиться в машину Больцмана, байесовскую сеть, обучающийся алгоритм, основанный на случаях, и многие другие модели. Это объясняет, почему, несмотря на теорему «бесплатных обедов не бывает», универсальный обучающийся алгоритм возможен. Alchemy похож скорее на индуктивную машину Тьюринга, которую мы программируем вести себя или как очень мощный, или как очень ограниченный алгоритм — все зависит от нас. Alchemy объединяет машинное обучение так же, как интернет объединяет компьютерные сети, реляционные модели — базы данных, а графический пользовательский интерфейс — бытовые приложения.

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

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

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

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

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

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

Байесовцы убеждены, что ключ к обучению — моделирование неопределенности, и применяют для этого формальные представления, например байесовские и марковские сети. Как мы уже видели, марковские сети — это особый тип логической сети Маркова, а байесовские сети можно легко представить с помощью основного уравнения логической сети Маркова со свойством для каждого возможного состояния переменной и ее родителей и логарифмом соответствующей условной вероятности в качестве весов. (Нормировочная константа Z удобно сводится к единице, то есть ее можно проигнорировать.) Верховный алгоритм байесовцев — это теорема Байеса, внедренная с помощью алгоритмов вероятностного вывода, например распространения степени уверенности и MCMC. Как вы, может быть, заметили, теорема Байеса — это частный случай верховного уравнения, где P = P(A|B), Z = P(B), а свойства и веса соответствуют P(A) и P(B|A). Система Alchemy включает для логического вывода и распространение степени уверенности, и MCMC, обобщенные, чтобы оперировать взвешенными логическими формулами. Применяя вероятностный вывод к предоставленным логикой линиям доказательств, Alchemy взвешивает аргументы «за» и «против» и выдает вероятность вывода. Это контрастирует с «типовой» логикой «все или ничего», которую применяют символисты и которая не работает, если дать ей противоречивые доказательства.

Аналогизаторы учатся, выдвигая гипотезу, что у объектов со схожими известными качествами неизвестные качества тоже схожи: пациенты с аналогичными симптомами имеют аналогичные диагнозы, читатели, которые купили в прошлом те же самые книги, будут их покупать и в будущем и так далее. Логические сети Маркова могут представлять схожесть между объектами в виде формул, например «Люди с одинаковыми вкусами покупают одинаковые книги». В таком случае чем больше одинаковых книг купили Элис и Боб, тем больше вероятность, что у них одинаковые вкусы, и (применяя ту же самую формулу в противоположном направлении) тем больше вероятность, что Элис купит книгу, если ее купил Боб. Сходство между ними представлено вероятностью совпадения вкусов. Чтобы извлечь из этого настоящую пользу, можно ввести разный вес для частных случаев одного правила: если Элис с Бобом купили одну и ту же редкую книгу, это, вероятно, дает больше информации, чем если бы они купили бестселлер, поэтому вес события будет выше. В данном случае свойства, сходства которых мы вычисляем, дискретны (купил / не купил), но можно представить сходство и между непрерывными характеристиками, например расстоянием между двумя городами, если ввести в логическую сеть Маркова такое сходство в виде свойства. Если функция оценки — не апостериорная вероятность, а похожая на зазор функция присвоения очков, получится обобщение метода опорных векторов, верховного алгоритма аналогизаторов. Более серьезным вызовом для нашего варианта верховного обучающего алгоритма будет воспроизведение отображения структур — мощной разновидности аналогии, способной переносить выводы из одной области (например, Солнечной системы) в другую. Этого можно достичь путем выведения формул, которые не обращаются к конкретным отношениям в исходной области. Например, утверждение «Друзья курильщиков тоже курят» относится к дружбе и курению, а «Связанные объекты имеют схожие свойства» — к любому отношению и свойству. Такие формулы можно получить путем обобщения частных случаев: «Друзья друзей тоже курят», «Коллеги экспертов тоже эксперты» и других таких паттернов в социальной сети, а затем применить полученные формулы, скажем, к сети с частными случаями вроде «Интересные страницы имеют ссылки на интересные страницы» или к молекулярной биологи, где случаями будут «Белки, которые взаимодействуют с регулирующими гены белками, тоже регулируют гены». Ученые в моем и не только моем коллективе сделали все это и многое другое.

Благодаря Alchemy возможны пять типов обучения без учителя, которые мы видели в предыдущей главе. Очевидно, что он способен на реляционное обучение, и пока в большинстве случаев его применяли именно так. Alchemy использует логику для представления отношений между объектами, а сети Маркова — чтобы они могли быть неопределенными. Его можно превратить в обучающийся алгоритм с подкреплением, обернув вокруг него отложенные награды и применяя его для получения значений каждого состояния таким же образом, как в традиционных обучающихся алгоритмах с подкреплением, например нейронных сетях. Мы можем выполнять с помощью Alchemy образование фрагментов, если введем новую операцию, которая будет сжимать цепочки правил в отдельные правила. (Например, «Если A, то B» и «Если B, то C» в «Если A, то С».) Логическая сеть Маркова с одной ненаблюдаемой переменной, соединенной со всеми наблюдаемыми, выполняет кластеризацию. (Ненаблюдаемая переменная — это переменная, значение которой мы никогда не видим в данных. Можно сказать, что она «скрыта» и ее можно только вывести.)

Если в логической сети Маркова более одной ненаблюдаемой переменной, она выполняет своего рода дискретное понижение размерности, делая выводы о значении этих (менее многочисленных) переменных на основе (более многочисленных) наблюдаемых. Alchemy может справиться и с логической сетью Маркова с непрерывными ненаблюдаемыми переменными, которые нужны, например, для анализа главных компонентов и Isomap. Таким образом, Alchemy в принципе может делать все, что мы хотим от Робби, или по меньшей мере все, что мы обсуждали в этой книге. В действительности мы использовали Alchemy, чтобы научить робота картировать среду, определяя по данным из сенсоров, где находятся стены и двери, их углы и расстояния и так далее, а это первый шаг к созданию квалифицированного домашнего робота.

Наконец, Alchemy можно превратить в метаалгоритм наподобие стэкинга, если закодировать индивидуальные классификаторы, как логическая сеть Маркова, и добавить или вывести обучающие формулы, чтобы их соединить. Именно это сделали в DARPA. Проект PAL (Personalized Assistant that Learns) был для них крупнейшим в области искусственного интеллекта и стал предшественником Siri. Целью PAL было создание автоматического секретаря. Марковская логика использовалась в нем как всеобъемлющее представление, соединяя выходы из разных модулей в решения, что делать. Кроме того, это позволяло модулям PAL учиться друг у друга путем эволюции в сторону консенсуса.

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

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

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК