Инструмент… креативности (часть 2)

2 апрель, 2009 - 11:18Андрей Зубинский

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

На этот раз пространных отступлений не будет. Вместо них автор попробует самому себе ответить на самый, пожалуй, неприятный для любого автора вопрос: зачем и для кого пишется статья? Все дело в том, что для использования серьезных математических методов при решении реальных задач требуется фундаментальная подготовка. И «вербальные» объяснения таких методов подготовленным специалистам не нужны. Логично и очевидно. Как и логичен и очевиден тот факт, что специалист – системный аналитик и, например, вышестоящий управленец, должны все-таки говорить если не на одном языке, то хотя бы понимать друг друга. Так что брешь между строгим формальным описанием математического метода и пониманием фундаментальных принципов его «работы», безусловно, есть. И для ее уменьшения вербальное неформальное описание подходит почти идеально. Кроме того, появление доступных программных инструментов анализа данных, разработчики которых учли многие математические нюансы и упрятали их за удобным предельно простым пользовательским интерфейсом, создает иллюзию «дружелюбности к пользователю» не программы, а самого метода в целом. Но пользователь, не понимающий фундаментальных принципов, лежащих в основе функционирования сложного инструмента, сколь бы ни прост он казался внешне, никогда не сможет не только добиться эффективного его применения, но и даже гарантировать, что полученным результатам вообще можно доверять. Собственно говоря, все мотивы, побудившие написать эту статью, перечислены. И, что само собой разумеется, SOM – действительно исключительно красивый, изящный метод, одновременно очень полезный при решении практических задач и не попадающий в «затеоретизированные» области. Больше того, это даже не чистый математический метод – это скорее алгоритмика. Причем относительно несложная в реализации для программиста, имеющего опыт работы с матричными научными, статистическими и инженерными задачами.

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

Инструмент… креативности (часть 2)
Гексагональная топология сети карт Кохонена (ячейки – правильные шестиугольники)

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

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

После того как отработал механизм самоорганизации, узлы отыскали свои положения, «рыболовная» сеть деформировалась (эластичные «нити» «растянулись» или, напротив, «сжались»), расстояния между узлами известны (длины эластичных «нитей»), можно принять простые соглашения и нарисовать эту «сеть» (естественно, раз нарисовать, то на плоскости). Заметьте, что рисуется именно сеть, а не те многомерные данные, на которых она самоорганизовалась. Рисунков сети получится несколько – именно столько, сколько параметров-координат у многомерного пространства задачи. Для каждого параметра рисуется сетка, топологически аналогичная «рыболовной» сети Кохонена. То есть если ячейки «рыболовной» сети – прямоугольники, рисуется прямоугольный растр, если шестиугольники, то гексагональная сетка. Каждая «ячейка» этой растровой картинки окрашивается в свой оттенок какого-либо цвета, соответствующий значению параметра в ней. Самое простое соответствие – монохромная шкала, в которой, например, чем меньше значение параметра, тем ближе оттенок ячейки к черному, чем больше – к белому. Собственно говоря, цвет при этом может выбираться произвольно. Второй вариант отображения учитывает длины «нитей» сети, т. е. показывает, насколько удалены друг от друга узлы. В этом случае также используются рисунок сетки и градиентная раскраска, но уже соответствующая не величинам параметров, а расстояниям между узлами. Впрочем, это лучше пояснить на примере, который каждый желающий может «проиграть» на собственном компьютере благодаря, например, отличной легально бесплатной программе Deductor российской компании BaseGroup Labs. Ее версия Academic, распространяющаяся с минимальными ограничениями, доступна всем желающим . Возможности этой программы несоизмеримо шире тематики статьи, но подсистема, отвечающая за анализ данных на основе карт Кохонена, в ней более чем хорошо реализована.

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

Однако техника визуализации карт Кохонена не ограничивается схемой «сетка и раскраска». На самом деле создаются и реализуются альтернативные способы визуализации, порой весьма неожиданные и, даже можно сказать, художественные. Так, вместо банальных сеток, становящихся неинформативными при большом количестве ячеек, создатели системы REEFSOM предлагают рисовать... движение косяков рыбы над дном, при этом и профиль дна, и движение рыб отображают особенности положения точек-узлов и деформации «нитей» ячеек сети www.brains-minds-media.org/archive/305. И не только предлагают, но и дают возможность испытать реализацию идеи (правда, она доступна только пользователям UNIX-подобных ОС, загрузить файлы можно из раздела Article Resources оригинальной статьи).

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

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

Серебряные пули действуют только в кино

Как бы там ни было, но без этого очевидного уточнения не обойтись. Карты Кохонена – замечательный аппарат изучения многомерных данных и описываемых ими систем. Но. Как и любой алгоритмический и со строгой математической точки зрения весьма непростой и не совсем формальный механизм, он далек от совершенства. Главное, что следует понимать, – изучение карт Кохонена позволяет формировать гипотезы, а не находить готовые решения задач. Эти гипотезы требуют проверок и подтверждений и не могут огульно считаться «готовыми» озарениями или откровениями. Серьезные специалисты изучили особенности карт Кохонена и выявили главные из них (к слову, это не недостатки, а именно особенности, потому как создать аналогичный, но идеальный метод принципиально невозможно). К ним в первую очередь относится зависимость «качества» отображения от взаимозависимостей (в статистическом смысле) в изучаемых данных. Также следует учитывать, что у пользователя алгоритмики карт Кохонена есть достаточно много различных «регуляторов настройки», с помощью которых можно не только настроиться на получение качественного результата, но и, напротив, совершенно «сбить настройку» и получить неадекватную картину. К таких «регуляторам» относятся выбор топологии сети (прямоугольная или гексагональная ячейка), размер сети (количество узлов в ней), особенности реализации различных блоков алгоритма (например, инициализация положений узлов в пространстве), и наконец, спецификация нечетких понятий (например, «близко расположенные» – насколько близко и на основе какого способа оценки расстояния). Несмотря на все эти нюансы, SOM остаются весьма эффективным механизмом, что подтверждается практикой их использования в самых разных областях и для решения порой весьма далеких от очевидности задач, таких как многокритериальная оптимизация.