Для стороннего наблюдателя событие 14 февраля 2011 года, когда машина одержала победу над двумя сильнейшими игроками в интеллектуальной телевизионной игре Jeopardy! ("Рискуй!"), может показаться фантастикой. Но если «препарировать" победителя — систему Watson — на составные части и проследить взаимосвязи между ними, то увиденное представится совершенно прозаично: годы работы сотен ученых плюс огромные вложенные средства, а в результате — вопрос-ответная система на архитектуре UIMA.

Библиотека знаний Сyc

Во всех опубликованных хрониках работ по искусственному интеллекту можно найти упоминания о работах по проекту Cyc, который сравнивают с компьютером HAL, описанным Артуром Кларком в «Космической одиссее 2001 года». Само существование Cyc не представляло никакого интереса до лета 2002 года, когда ситуация радикально изменилась — библиотека знаний Cyc стала доступна всем.

В отличие от поединка Deep Blue с Гарри Каспаровым, который за его бессмысленность справедливо назвали битвой человека с паровым катком, выигрыш компьютера Watson в телевизионной игре Jeopardy! имеет колоссальное значение как для будущего вообще, так и для развития класса аналитических систем в частности. Попутно надо заметить, что "Своя игра", ведущая происхождение от Jeopardy!, заметно эволюционировала и стала явно интереснее своего предка, и было бы занятно посмотреть, как Watson сыграл бы против наших соотечественников. Пока он этого не может — в оригинальной игре проще стратегия, и она формальнее. На Jeopardy! разработчики Watson продемонстрировали возможность создания работающей в режиме реального времени системы ответов на вопросы, сформулированные на естественном языке, с использованием накопленной базы знаний, хранящей неструктрированные данные также на естественном языке. Собственно игровой момент имеет очевидное значение, но важнее другое — перспектива применения такого рода систем безгранична: как утверждается, началом будет, скорее всего, медицина, а далее практически все, что угодно, в нее попадает практически любая область человеческой деятельности.

В СМИ игру Watson часто пытаются представить как самостоятельный феномен, на самом же деле перед нами побочный результат серьезной академической работы, с богатой предысторией, а участие в Jeopardy! стало для нее потрясающей маркетинговой кампанией. История искусственного интеллекта насчитывает несколько попыток создания машин, способных отвечать на задаваемые им вопросы, и исторически первой была вопрос-ответная система, разработанная Робертом Симмонсом в Техасском университете в 1969 году. Следующая значимая работа была связана с именем Дугласа Лената и его компанией Cycorp, где была создана база знаний Cус, которая действительно работала, но ее приходилось составлять вручную. С 2002 года ведутся работы по проекту Halo, который можно рассматривать как развитие Cyc, но под патронажем агентства DARPA (среди участников — Стэнфордский исследовательский институт и несколько ведущих американских и европейских университетов). Своим путем к построению машины, отвечающей на вопросы, пришел Стивен Вольфрам, создатель программного продукта Mathematica.

Wolfram Alpha — знающий компьютер

Если знания каким-то образом вложить в компьютер и научиться извлекать именно то, что нужно, заставив его отвечать на поставленные перед ним вопросы, то можно получить машину, вычисляющую знания. И это не фантастика.

Ближайшим предком Watson можно считать систему AQUAINT (Advanced Question Answering for Intelligence), созданную под патронажем Национального института стандартов (NIST). В IBM оценили ее перспективность и продолжили ее развитие, начав с того, что адаптировали этот проект под свои технологии, в результате получился практический вариант AQUAINT под именем PIQUANT (Practical Intelligent Question Answering Technology). Наследником PIQUANT является проект OpenEphyra, осуществленный IBM совместно с Университетом Карнеги-Меллона. От Watson он отличается возможностью поиска ответа в Web.

Открытые системы и проблемы сложности

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

После шахматной эпопеи "Deep Blue против Каспарова", привлекшей к себе всемирное внимание, IBM требовалось что-то новое, и тогда выбор пал на систему PIQUANT, которая на тот момент могла отвечать только на 35% заданных вопросов, тратя на каждый десятки минут. Но скрытый потенциал был, и тогда в 2006 году была образована группа из 15 человек, которой поручили за пять лет довести систему «до ума». В 2008 году Watson начал вполне успешно играть в Jeopardy!, а в заданный срок вышел и на телевизионный экран. Сверхплановой добавкой оказался созданный модным дизайнером Джошуа Дэвисом аватар, который способен изображать "эмоции" в процессе обдумывания системой Watson своих ответов.

 

Архитектура Watson

Когда говорят о Watson, то подразумевают систему, состоящую из трех компонентов: суперкомпьютера, работающего под управлением операционной системы Linux, связующего ПО, реализующего архитектуру UIMA (Unstructured Information Management Architecture), и системы ответов на вопросы DeepQA, специально "заточенной" под Jeopardy!. Центральной частью и, возможно, наиболее важной на последующую перспективу является UIMA.

Вопрос-ответные системы (Question Answering, QA) предназначены для поиска точных ответов на вопросы, поставленные на естественном языке (Natural Language Processing, NLP). Важно подчеркнуть, что речь идет о точных ответах, человек-пользователь должен иметь возможность для однозначной интерпретации ответа, поэтому ответ может сопровождаться какой-то детализирующей или конкретизирующей информацией. Источником сведений могут быть неструктурированные данные (книги, журналы, Web-страницы, блоги), квазиструктрированные (справочники, словари, энциклопедии, вики и ее аналоги) и базы данных. В Европе такие исследования объединяет организация Cross-Language Evaluation Forum (CLEF), а в Японии ведет рабочая группа NTCIR в рамках реализуемого Национальным институтом информатики проекта Cross-Language Information Retrieval (CLIR).

Технология управления неструктурированной информацией (Unstructured Information Management, UIM) и соответствующая архитектура UIMA разрабатывалась в IBM Research еще с 90-х годов группой, насчитывавшей порядка 200 сотрудников. Их деятельность была сосредоточена на средствах для работы с NLP и включала поддержку диалога на естественном языке, выделение полезной информации, анализ текстов, классификацию документов, машинный перевод и вопрос-ответные системы. Итогом стало создание связующего ПО, получившего название UIMA, которое может служить ядром для создания и внедрения распределенных аналитических машин (analysis engine), или UIM-приложений, позволяющих извлекать знания из неструктурированной информации, в том числе из текстов, аудио, видео и изображений.

 

Архитектура UIMA

 

Структура UIMA (рис.) состоит из нескольких компонентов.

Захват данных (Acquisition) обеспечивает сбор документов из разных источников и формирование необходимых коллекций (collection), предназначенных для определенных приложений. Функцию захвата могут, например, осуществлять Web-пауки (web crawler), а также иные средства, какие именно, для приложений не важно, поскольку имеется специальный уровень интерфейса Collection Reader, связывающий приложения с коллекциями данных и метаданных.

Анализ неструктурированной информации (Unstructured Information Analysis) делится на два последовательных этапа — сначала выполняется анализ документов, а затем анализ коллекций документов. Входные документы обрабатываются текстовыми аналитическими машинами (Text Analysis Engine), в том числе трансляторами и модулями, выполняющими грамматический разбор, классификацию, обобщение. Используя входные документы, текстовые аналитические машины вырабатывают обобщенные аналитические структуры (Common Analysis Structure). На этап анализа коллекций документы могут поступать напрямую или через промежуточный этап, на котором выполняется необходимая фильтрация и переформатирование для последующей параллельной обработки. Анализ на уровне коллекций (Collection Level Analysis) позволяет обобщить сведения, содержащиеся в коллекции документов.

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

В 2004 году были подведены предварительные итоги работ по созданию UIMA, и в качестве ближайшей цели была выбрана система подготовки ответов IBM Question Answering, которая к тому времени уже разрабатывалась в течение двух лет. В дальнейшем развитие UIMA продолжилось автономно от IBM. В 2005 году правительство США спонсировало создание рабочей группы UIMA Working Group, объединившей несколько компаний и университетов, заинтересованных в создании фреймворка для решения задач NLP, в 2006 году IBM опубликовала исходные коды UIMA на портале Source Forge , а университет Карнеги-Меллона взял на себя поддержку этого репозитория. Сейчас коды UIMA доступны на сайте Apache Software Foundation .

Hadoop против Big Data

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

В 2008 году был выпущен релиз Apache UIMA-AS (Asynchronous Scaleout), в котором к основной функциональности UIMA была добавлена возможность асинхронного масштабирования. Отличие этого релиза в том, что оригинальное монолитное решение Collection Processing Management заменено на решение, использующее Java Messaging Services и Apache ActiveMQ и поддерживающее обмен сообщениями. Деятельность сообщества привнесла еще одну разумную вещь — согласование Apache UIMA c Apache Hadoop. Обе эти новации были использованы при создании системы ответов DeepQA, обеспечивающей Watson способность играть в Jeopardy!.

Систему DeepQA разрабатывали 20 человек в течение трех лет. О значимости этой работы можно судить по тому, что ей присвоили имя основателя IBM Томаса Уотсона. Работа началась с фундаментального исследования самой игры и тактики игроков. Помимо таких очевидных задач, как генерация гипотез, сбор доказательств, анализ и численная оценка, авторам пришлось решать и специфичные задачи: улавливание иронии, обнаружение скрытого смысла и других человеческих особенностей. Поиск ответа на вопрос в игре совсем не похож на поиск данных в Web, здесь ищутся не сведения, а точный ответ, поэтому источником для поиска ответов служит собственная база данных, куда занесены и структурированные, и неструктурированные данные, собранные как в Интернете так и во множестве других источников. Сегодня Watson уступает настоящим игрокам в том, что является системой класса NLP, то есть аудио- и видеоданные он пока не понимает.

В DeepQA используется более 100 различных методик анализа данных на естественном языке. Параллельно с главной целевой задачей, разумеется, разрабатывались и технологии широкого применения. В некотором смысле Watson все же паровой каток — в DeepQA загружено 200 млн страниц текстов, то есть он "как бы" прочел миллион книг. С таким объемом без Apache Hadoop явно не справиться, поэтому специальные программы, обеспечивающие аннотацию (в DeepQA их называют UIMA-аннотаторами), создают средствами Hadoop конструкцию MapReduce и распределяют задания по процессорам в кластере. Аннотаторы просматривают тексты и создают что-то вроде коротких рефератов, это позволяет осуществлять суждение о содержании. UIMA умеет согласовывать работу этих аннотаторов и собирать от них сведения, чтобы потом интегрировать, оценивать и тестировать.

С появлением версии UIMA-AS открылась возможность распараллеливания, и действие, которое требовало раньше два часа на одном процессоре, теперь выполняется в режиме реального времени. Кластер Watson может быть построен на процессорах Power7, ядра которых одновременно выполняют фрагменты DeepQA. В конфигурации, использовавшейся 14 февраля 2011 года, было объединено в кластер 90 Linux-серверов IBM Power 750 с 32 ядрами Power7/3,55 ГГц на каждом. Эти серверы собраны в десять стандартных стоек, укомплектованных коммутаторами и узлами ввода/вывода. Размер памяти — 16 Тбайт, производительность 80 ТFLOPS. Сочетание высокой производительности ядра Power7 с памятью 512 Гбайт на ядро превращает аппаратную часть Watson в мощный инструмент для поддержки процессов, нуждающихся в большой памяти и высокой процессорной мощности. Преимущество Watson по сравнению с Deep Blue, который в свое время был собран из 30 узлов RS/6000 SP на процессорах Power2/120 МГц, состоит в том, что в последнем еще стояли 480 специальных шахматных процессоров, которые невозможно использовать ни для чего иного, а Watson собран из коммерчески доступных компонентов. Опыт его создания может быть распространен на другие приложения. Признание способности Watson понимать смысл и контекст сказанного на естественном языке, находить точные ответы на сложные вопросы может изменить представление людей о том, для чего могут быть использованы компьютеры.

И еще один важный момент, связанный с открытием кодов и их последующим использованием, — эволюция UIMA свидетельствует о рациональности подхода Open Source. Сначала была многолетняя исследовательская работа в стенах корпорации, потом стали доступны ее результаты. За время пребывания в открытом состоянии UIMA обогатилась асинхронным масштабированием Asynchronous Scaleout и поддержкой Hadoop, что существенно расширило функциональны возможности и сферу применения параллельных вычислений.

 

Интеллектуальный суперкомпьютер

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

Суперкомпьютерная история началась для компании IBM примерно 60 лет назад, когда в IBM совместно с Гарвардским университетом построили машину Mark I — первый программируемый электромеханический арифмометр. В 1952 году Артур Самуэль написал программу для игры в шашки для системы IBM 701. Через пару лет Самуэль добавил в программу способность к самообучению и оставил ее играть саму с собой на дня дня. После этого программа стала обыгрывать своего создателя и других сильных игроков в шашки, а в 1956 году ее показали по телевидению. В 1997 году суперкомпьютер Deep Blue победил в шахматы чемпиона мира Гарри Каспарова, показав, что компьютеры могут решать задачи, которые ранее считались доступными только человеку, однако шахматы хорошо формализуемы, и победа обеспечивалась перебором и оценкой огромного числа комбинаций.

В 2007 году возникла амбициозная идея – продемонстрировать возможности суперкомпьютера на примере популярной в США игры Jeopardy, вопросы в которой организованы по категориям и их названия можно учитывать при ответе на вопрос, однако иногда это только запутывает участника. Дополнительная сложность заключается в том, что смысл вопроса зачастую скрыт под сленгом, игрой слов, шутками, двусмысленностями, омонимами и т.п. Для того чтобы успешно соревноваться с людьми, компьютерная система должна уметь находить ответ не более, чем за 5 секунд как минимум на 70% вопросов в течение игры.

По существу Watson представляет собой программный комплекс, который работает на кластере из 10 стоек по 9 стандартных серверов IBM Power 750 на базе процессоров POWER7. Общее число ядер равно 2880, и они распоряжаются 15 Тбайт оперативной памяти. Процессор POWER7 работает на частоте 3,55 ГГц и имеет 8 ядер, каждое из которых, в свою очередь, аппаратно поддерживает одновременное выполнение четырех потоков команд. Такой процессор подходит для задач обработки огромных объемов информации в параллельном режиме. Кластер работает под управлением операционной системы SUSE Linux Enterprise Server 11. Комплекс программ, реализующий многочисленные алгоритмы искусственного интеллекта (обработка естественного языка, извлечение информации, представление знаний, автоматический логический вывод и машинное обучение), написан на языках Java, C++ и Prolog.

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

 

Алгоритм работы системы Watson

 

Во время игры вопрос поступает системе Watson в текстовом виде (см. рис.) в тот момент, когда он появляется на экране перед остальными участниками. Процесс ответа на вопрос начинается с его анализа и разбиения на грамматические компоненты. На этом этапе выделяются семантические объекты: имена, места или даты, а также определяется лексический тип ответа, например, «животное», «человек» или «страна». С точки зрения типа вопросы можно характеризовать по-разному: например, по теме, по сложности, по грамматической конструкции, по типу ответа и т.д. В игре Jeopardy наиболее распространены «фактические» вопросы, основанные на информации об определенных фактах. Человек, как правило, может мгновенно понять, в чем заключается вопрос и какие его части важны для поиска ответа, а для компьютерной системы необходимы различные алгоритмы определения предмета вопроса и его типа. Тип имеет большое значение, так как вопросы по литературе или вопросы, основанные на игре слов, обрабатываются разными алгоритмами.

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

Затем начинается процесс генерации гипотез. По базе знаний проводится первичный поиск кусочков текста, содержащих информацию о частях вопроса, определенных на предыдущем шаге. Для поиска применяются различные методы, в том числе текстовый поиск (Indri, Lucene и т.п.), семантический поиск на основе технологии SPARQL и др. Во время текстового поиска генерируются различные варианты для одного и того же запроса — здесь важно найти как можно больше информации о вопросе, чтобы повысить вероятность того, что среди результатов первичного поиска содержится правильный ответ. На этом шаге Watson генерирует несколько сотен гипотез.

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

Затем для каждой гипотезы проводится поиск дополнительных фактов в базе знаний, чтобы более точно оценить вероятность того, что она является правильным ответом. Например, одна из методик заключается в том, что в текст вопроса подставляется найденный ответ-кандидат, и в базе разыскиваются похожие предложения.

Этап оценки гипотез является наиболее сложным с вычислительной точки зрения, так как оценка каждой гипотезы состоит из более чем 50 компонентов. Рассмотрим, например, такой вопрос: «Он был помилован президентом 8 сентября 1974 года». Правильный ответ – «Никсон» (президент США Форд помиловал бывшего президента Никсона после Уотергейтского скандала). Система Watson нашла в базе знаний следующее предложение: «Форд помиловал Никсона 8 сентября 1974 года» — два объекта с лексическим типом «человек» из этого предложения являются кандидатами в ответы: «Форд» и «Никсон». Один из компонентов оценки определяется количеством общих слов между вопросом и предложением-гипотезой. Другой компонент основан на вычислении длины наибольшей общей подпоследовательности между ними (в нашем случае «8 сентября 1974 года») — эта метрика часто используется при сравнении последовательностей ДНК и белков в вычислительной биологии. Обе оценки присвоят кандидатам «Форд» и «Никсон» примерно равные значения. Однако третий пример оценки измеряет соответствие между логическими формами вопроса и найденного предложения. Логическая форма – это представление текста в виде графа, где узлы — это слова, а ребра — грамматические или семантические отношения между ними. Сравнение логических форм показывает, что Никсон — объект помилования и что смыслом вопроса является именно объект помилования, поэтому правильный ответ «Никсон» получает более высокую оценку, чем «Форд».

При оценке ответов на вопросы, связанные с положением в пространстве или времени, применяются правила логического вывода. Например, если в вопросе упоминается город в Азии, то из кандидатов Сидней и Пекин будет выбран Пекин. Аналогично, если в вопросе о каком-то человеке упоминается конкретная дата, то Watson при выборе ответа учтет годы жизни человека.

На этапе синтеза, если вопрос был разбит на части на этапе декомпозиции, кандидаты в ответы, полученные для частей, объединяются в один ответ.

Слияние необходимо для того, чтобы объединить ответы-кандидаты, полученные разными алгоритмами, найти и удалить эквивалентные. На последнем этапе происходит окончательная оценка гипотез и вычисляется оценка достоверности каждого ответа-кандидата. Для окончательной оценки применяются несколько методов машинного обучения (hierarchical mixture of experts, stacked generalization и другие), которые были натренированы заранее на базе вопросов с известными ответами. В процессе обучения были подобраны веса между компонентами окончательной оценки так, чтобы максимизировать число правильных ответов на тестовом наборе вопросов. Разные методы применяются для разных типов ответов, так как, например, в вопросах о фактах и вопросах-загадках разные компоненты оценки могут быть более важными.

Ответ с максимальным значением оценки достоверности и будет окончательным. Если оценка достоверности превышает некий заданный порог, Watson нажмет на кнопку и озвучит его во время игры.

Ядром такой технологии DeepQA (Deep Question Answering) является архитектура UIMA (Unstructured Information Management Architecture), изначально разработанная в IBM для создания, анализа и интеграции неструктурированной информации. Впоследствии эта архитектура была переведена в проект Open Source.

Все компоненты DeepQA реализованы как UIMA-аннотаторы, анализирующие текст и формирующие аннотации к нему. Со временем количество компонентов в системе превысило несколько сотен, но благодаря развитию UIMA для параллельных вычислительных систем – UIMA-AS – система в целом хорошо масштабируется и каждый компонент может работать на отдельном процессоре. Компоненты взаимодействуют друг с другом асинхронно, посредством стандарта Java Message System. Для параллельной обработки данных в Watson используется технология Hadoop, в которой аннотаторы реализованы как map-компоненты. Такая архитектура позволяет распараллелить DeepQA и находить ответ на вопрос за 3-5 секунд.

Кроме Watson, технология UIMA применяется в других продуктах IBM, например, пакет IBM InfoSphere Warehouse может анализировать и извлекать информацию как из структурированных, так и из неструктурированных данных.

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

***

Сейчас Watson способен находить ответы на 85% вопросов в течение 5 секунд, причем все его основные компоненты — это стандартные серверы под управлением открытой операционной системы, использующие технологии Hadoop и UIMA.

-- Ирина Федулова (irina@ru.ibm.com) — руководитель группы высокопроизводительных вычислений и моделирования вычислительных систем, Российская лаборатория систем и технологий IBM (Москва).