Верховный алгоритм - Педро Домингос 2 стр.


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

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

Ведь рак так сложно лечить, потому что это не одно, а целый комп­лекс заболеваний. Опухоли бывают вызваны невообразимо широким спектром причин, к тому же они мутируют и дают метастазы. Самый надежный способ уничтожить опухоль — секвенировать8 ее геном, определить, какие лекарства помогут без ущерба для пациента с учетом конкретного генома и истории болезни, и, возможно, даже разработать новое лекарство именно для данного случая. Ни один врач не в состоянии овладеть всеми необходимыми для этого знаниями, но решение таких задач — идеальная работа для машинного обучения. В сущности, это просто более сложная и серьезная версия поиска, которым каждый день занимаются Amazon и Netflix, только ищем мы не подходящую книгу или фильм, а подходящее лекарство. К сожалению, хотя обучающиеся алгоритмы уже умеют со сверхчеловеческой точностью диагностировать многие болезни, лечение рака выходит далеко за пределы их возможностей. Если нам удастся отыскать Верховный алгоритм, ситуация изменится. Поэтому вторая цель этой книги — помочь вам самостоятельно изобрести его. Можно подумать, что для этого нужны глубочайшие познания в математике и серьезная теоретическая работа. Отнюдь нет. Для этого нужно как раз отвлечься от тайн математики и посмотреть на всеобъемлющие механизмы обучения, и здесь неспециалист, подходящий к лесу издалека, во многом находится в более выгодном положении, чем профессионал, увязнувший в изучении отдельных деревьев. Концептуальное решение проблемы можно дополнить математикой, но это не самое главное, и к тому же не тема этой книги. Так что, когда мы будем заходить в гости к каждому «племени», надо будет собрать кусочки мозаики и сообразить, куда они подходят, не забывая при этом, что ни один слепец не может увидеть слона целиком. Мы увидим, какой вклад каждое из «племен» способно внести в лечение рака, чего ему не хватает, а затем шаг за шагом соберем кусочки в решение — вернее, одно из решений. Конечно, это не будет Верховным алгоритмом, но ближе к нему еще никто не подбирался. Будем надеяться, что результат станет удачной отправной точкой для вашего воображения. Потом мы посмотрим, как можно было бы использовать полученный алгоритм в качестве оружия в борьбе с раком. Читая эту книгу, не стесняйтесь пробегать глазами или пропускать сложные для понимания фрагменты. Важна общая картина, и, возможно, будет полезнее вернуться к этим местам уже после того, как мозаика сложится.

Я занимаюсь исследованиями машинного обучения более 20 лет. Интерес к этой теме во мне пробудила книга со странным названием, которую на последнем курсе колледжа я заприметил в книжном магазине. Она называлась «Искусственный интеллект». Машинному обучению в ней была посвящена одна короткая глава, но, прочитав ее, я немедленно пришел к убеждению, что в ней — ключ к искусственному интеллекту, что знаем мы об этой области так немного и что, может быть, я смогу внести свой вклад. Поэтому я распрощался с планами получить степень MBA и поступил в аспирантуру в Калифорнийском университете в Ирвайне. Машинное обучение было тогда второ­степенной дисципли­ной, а в Калифорнийском университете работала одна из немногих приличных исследовательских групп. Некоторые из моих однокурсников ушли, сочтя тему бесперспективной, но я не сдался. Для меня не было ничего важнее, чем научить компьютеры учиться — ведь если удастся это сделать, мы получим фору в решении любой другой проблемы. Прошло пять лет. Я заканчивал аспирантуру, а на дворе царила революция добычи данных. Диссертацию я посвятил объединению подхода символистов и аналогистов, большую часть последнего десятилетия соединял символизм и байесовский подход, а в последнее время — оба этих метода с коннекционизмом. Теперь пора сделать следующий шаг и попытаться свести воедино все пять парадигм.

Работая над этой книгой, я представлял себе несколько разных, но пере­секающихся групп читателей.

Если вам просто любопытно, откуда столько шума вокруг больших данных и машинного обучения, и вы подозреваете, что тут все не так просто, как пишут в газетах, вы правы! Эта книга станет для вас своеобразным путеводителем.

Если вы интересуетесь прежде всего применением машинного обучения в бизнесе, она поможет вам 1) стать более разборчивым потребителем аналитики; 2) получить максимальную отдачу от своих специалистов по обработке и анализу информации; 3) избежать ловушек, которые убили столь многие проекты по добыче данных; 4) узнать, какие области можно автоматизировать без затрат на ручное кодирование программ; 5) уменьшить жесткость своих информационных систем и 6) предвидеть появление ряда новых технологий, которые уже не за горами. Я много раз наблюдал, как деньги и время уходят впустую из-за того, что проблемы решаются неправильным обучающимся алгоритмом, и как неверно интерпретируют то, что алгоритм сообщает. Чтобы избежать фиаско, достаточно лишь прочитать эту книгу.

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

Если вы ученый или инженер, машинное обучение — мощнейший инструмент, который очень вам пригодится. Старые, проверенные временем статистические подходы не спасут вас в век больших (и даже средних) объемов данных. Для точного моделирования большинства явлений понадобятся нелинейные подходы машинного обучения, и оно несет с собой новое научное мировоззрение. В наши дни любят злоупот­реблять выражением «смена парадигмы», но я уверен, что тема моей книги именно так и звучит.

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

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

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

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

И последнее, но не менее важное. Если вы хотите ощутить вкус чуда, машинное обучение — настоящий пир для ума. Примите приглашение и угощайтесь!

ГЛАВА 1

РЕВОЛЮЦИЯ МАШИННОГО ОБУЧЕНИЯ

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

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

Самый простой алгоритм — «нажми переключатель». Положение одного транзистора — одна единица информации: «один», если тран­зистор включен, и «ноль», если выключен. Единичка где-то в компьютерах банка информирует, превысили ли вы кредит. Еще одна единичка в недрах Управления социального обеспечения сообщает, живы вы или уже умерли.

Второй простейший алгоритм — «соедини два бита». Клод Шеннон, признанный отец теории информации, первым осознал, что включение и выключение транзисторов в ответ на действия других транзисторов — это, в сущности, логический вывод. (Этой теме он посвятил свою дип­ломную работу в Массачусетском технологическом институте — самую важную дип­ломную работу в истории.) «Транзистор A включа­ется, только если включены транзисторы B и C» — это крохотное логическое рассуждение. «A включается, когда включен либо B, либо C» — еще одна крупица логики. «A включается всегда, когда выключен B, и наоборот» — третья операция. Хотите верьте, хотите нет, любой алгоритм, как бы сложен он ни был, сводится всего к трем операциям: И, ИЛИ и НЕ. Используя для этих операций специаль­ные символы, можно представить простые алгоритмы в виде диаграмм. Например, если у человека грипп или малярия и ему надо принять лекарство от температуры и головной боли, это можно выразить следующим образом:

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

Однако строить новый компьютер для каждой новой задачи, которая нам придет в голову, было бы невероятно дорого, поэтому современный компьютер представляет собой большую совокупность транзисторов, способных решать много разных задач в зависимости от того, какие из них активны. Микеланджело говорил, что вся его работа — увидеть статую в глыбе мрамора и открыть ее миру, убрав лишнее. Аналогично алгоритмы «отсекают» избыточные транзисторы в компьютере, пока не обнажается нужная функция, будь то автопилот авиалайнера или новый мультфильм студии Pixar.

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

С другой стороны, вот вам алгоритм игры в крестики-нолики.

Если вы или ваш противник поставили две отметки на одной линии, ставьте отметку в оставшейся на этой линии клетке.

Если такой ход невозможен, но есть ход, который создаст две линии по две отметки, — делайте его.

Если такой ход невозможен, но центральная клетка свободна, ставьте отметку в ней.

Если такой ход невозможен, но противник поставил отметку в углу, ставьте отметку в противоположном углу.

Если такой ход невозможен, но одна из угловых клеток свободна, ставьте отметку в ней.

Если такой ход невозможен, ставьте отметку в любой пустой клетке.

У этого алгоритма есть одно приятное свойство: он беспроигрышный! Конечно, ему не хватает многих деталей — как доска отображается в памяти компьютера и как это отображение меняется после каждого хода. Например, каждой клетке могут соответствовать два бита: 00 — если клетка пуста, 01 — если в ней поставили нолик и 10 — если крестик. Тем не менее предложенный алгоритм достаточно точен и однозначен, и любой грамотный программист сможет его дописать. Еще полезно не конкретизировать алгоритмы вплоть до отдельных транзисторов, а пользоваться уже существующими алгоритмами как кирпичиками. Их огромное количество, так что есть из чего выбирать.

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

Написать алгоритм непросто: есть очень много ловушек, и ни в чем нельзя быть уверенным. Интуитивные предположения вполне могут оказаться ошибочными, и тогда придется искать другой подход. Затем алгоритм надо выразить на понятном компьютеру языке, например Java или Python, и с этого момента алгоритм начнет называться программой. Потом программу надо отладить: найти все до единой ошибки и исправить их, пока компьютер не начнет выполнять ее без запинки. Но когда у вас наконец появится программа, которая умеет делает то, что вам нужно, вы получите все козыри. Компьютер станет послушно выполнять ваши задания миллионы раз со сверхвысокой скоростью. Созданной вами программой сможет пользоваться любой человек в мире. Она даже сделает вас миллиардером, если решенная проблема достаточно важна. Программист — человек, пишущий алгоритмы и кодирующий их, — маленький бог, создающий вселенные по своему желанию. Можно даже сказать, что сам Господь тоже был програм­мистом, ведь в Книге Бытия он творил с помощью слов, а не руками. Речения стали мирами. Сегодня, сидя в кресле перед ноутбуком, вы тоже можете почувствовать себя богом: нарисуйте в воображении Вселенную и сделайте ее реальной. Законы физики соблюдать необязательно.

Назад Дальше