Интеллектуальный суперкомпьютер IBM WatsonСуперкомпьютером можно назвать вычислительную систему, обладающую значительной вычислительной мощностью и применяемую для решения задач, которые на более слабых компьютерах не могут быть решены за разумное время. Среди таких задач - всевозможные задачи моделирования физических процессов, например, вычислительная гидродинамика, моделирование электронной структуры вещества, вычислительная биология и многие другие. Очевидно, что решение этих задач обеспечивает прогресс человечества в целом. Создание новых моделей самолетов, поиск новых лекарств, разработка новых типов аккумуляторов для наших многочисленных мобильных устройств - все это было бы практически невозможно без применения суперкомпьютерного моделирования. Суперкомпьютерная история началась для компании 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 в текстовом виде (см. рис.) в тот момент, когда он появляется на экране перед остальными участниками. Процесс ответа на вопрос начинается с его анализа и разбиения на грамматические компоненты. На этом этапе выделяются семантические объекты: имена, места или даты, а также определяется лексический тип ответа, например, "животное", "человек" или "страна". С точки зрения типа вопросы можно характеризовать по-разному: например, по теме, по сложности, по грамматической конструкции, по типу ответа и т.д. В игре 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 (Москва). |