Make your own free website on Tripod.com
 
Pattern Recognition

        Распознавание образов РО – одна из очень популярных тем для прикладной математики. Ею занимаются все кому не лень, но в последнее время она считается едва ли не основной составляющей искусственного интеллекта ИИ. Как будто в распознавании вся суть интеллекта. Разумеется это не так – есть еще и ответные действия, есть предвидение реакции на свои действия, есть еще что-то. Но очень важно, что такая внешне простая и очень прикладная задача признана за часть интеллекта. Ведь сам по себе ИИ всё еще неразрешим, значит и с РО не всё так просто как кажется на первый взгляд.
        Я с ней впервые столкнулся в незапамятные желторотые времена, когда заказчик попросил меня создать быстроработающий алгоритм распознавания. Причем меня поразило отсутствие постановки задачи – что распознать, насколько надежно, что такое вообще распознать? Как-то для заказчика само собой подразумевалось, что и так всё понятно. Позже я не раз с этим феноменом сталкивался и каждый раз испытывал некоторое чувство бессилия, даже не оттого, что не решить, а оттого, что люди не понимают чего хотят. Читал всевозможные статьи по этой теме, их пишут как правило люди далёкие от математики, хотя ловко оперирующие громоздкими формулами. Формул много, алгоритмов много, жизнь кипит, контора пишет, остановиться, подумать некогда.
        Представьте, что Вы смотрите на картину Пикассо и видите портрет Руссо. Желая рассмотреть поближе обнаруживаете, что это что-то другое, но поначалу не понять. Приближаетесь еще и видите, что это две монахини, арки какого-то строения и прочие детали, издали все вместе образующие вид человечьей головы.
Приближаемся еще больше и образ снова смазывается, разбиваясь на отдельные мазки кисти, еще ближе и видна структура холста, еще... . Там не один, там много образов. Если не задаваться глупыми вопросами и предполагать изначально, что вы с заказчиком мыслите по единому стандарту, то вы быстро распознаете то, что ему нужно и оба будете довольны друг другом.. Но в общем случае это не так тривиально и радужно.
        Потом, много лет спустя, обсуждал со специалистом вопрос распознававния аэрофотоснимков. Как распознать самолет на аэродроме если его никогда не видел? Программа исходно глаз не имеет и образа такого в ней нет если его туда не заложить и не привязать к понятию «самолет». Остается загадкой, почему остаются в живых «специалисты», желающие распознать «то не знаю что». Есть, есть такие.
Их упорное сопротивление очевидности понять можно. Представьте опять, что вам надо распознать с воздуха на земле самолет. Попутно попадаются миллионы всевозможных объектов или просто игра теней и рельефа местности. Многие из них с некоторой долей уверенности могут быть отнесены к самолетам. Но человек осмысливает, что это по виду самолет, но среди домов – скорее всего дом такого странного вида или случайная игра форм лужаек, дорог, тротуаров и детских площадок. Даже если все перечисленные объекты ввести в память компьютера, всё-равно каждый из них имеет неисчислимое количество вариаций. Ведь по каким-то признакам мы узнаем дом в конструкции никогда прежде невиданной. Почему-то люди мистически безошибочно узнают ловко спрятанное и замаскированное, когда любая мудрёная программа однозначно засбоит. В чем тут дело, в интеллекте? Да, в интеллекте.
        Но просто аппелирование к интеллекту есть аппелирование к мистике, поскольку интеллект так же как и божественное ещё не разгадан. Следовательно, таким образом мы неявно поднимаем руки вверх перед простейшей задачей, с которой любоё дитё справится не задумываясь. Интеллект-то интеллект, а неужели его не проимитировать в такой малости? Это же не шедевры Микеланжело создавать и не музыку Вивальди писать и не искривленные пространства Эйнштейна выдумывать, которые в черную дыру по спирали сами собой засасываются.
        Чего не хватает?
        Разумеется, для надежного распознавания объектов, в программу надо заложить сами эти объекты во всех видах, а также всевозможные другие объекты тоже во всех видах, под всеми углами и освещениями. Вы можете представить какое это море информации? Что бы её слегка уменьшить, можно ограничиться, к примеру, лишь моделями объектов, а затем их поворачивать мысленно по всякому, освещать по разному, чтобы получит тождество картинок. Разумеется, это уменьшит нагрузку на память. Но заставит нас-систему хранить не просто плоские виды, но истинный 3-мерный образ объекта с характеристиками геометрических деталей, их допустимого морфинга, характера отражающих свойств поверхностей их возможных раскрасок и т.д. Недурно? Как мы узнаём человека если он то стоит, то сидит, то скрючится и лицо спрячет и ноги подожмет – как? Однако же ничего ему не помогает - узнаём, причем быстро и надежно.
        Собственно, это говорит лишь о том, что в нашем мозгу сидит какой-то очень компактный и очень правильный образ данного объекта, который при распознании лишь изредка даёт сбои. Отсюда вытекает вполне математический вопрос для привыкших к евклидовой примитивности мозгов современных математиков: как правильно описать пространство объектов для быстрого и надежного их распознавания?
        Вот тут мы приходим к вопросу: а что же такое объект? Казалось бы чего проще? Да всё вокруг объекты, весь мир поделен на объекты и ничего в нем нет, кроме объектов. Что-то типа первичного и неопределяемого понятия, как то же множество в аксиоматической теории множеств… . И будете неправы! Если внимательно присмотреться к жизни, то можно понять, что понятие объекта человеческое, субъективное. Разбиваем мир на объекты и даем им имена мы с вами, это не есть объективная реальность, данная нам в ощущениях, это наше повседневное творчество. Мир младенца от рождения представляет собой нечто вроде разноцветного континуума, игра теней и красок и ничего больше. Но он быстро вылавливает связь между мамиными глазами и кормлением. Поэтому в его мире появляется первый явный объект, связанный с определенным действием – «мама». И накормит и оботрет и приласкает. Потом появляются новые объекты.Что их объединяет?
        Их объединяет функциональность.  Именно так: мир на объекты мы разбиваем по их функциональности. Дом – чтобы в нем жить, самолет - что бы в нем летать, человек – о, тут много всего, оттого и знаем и узнаем его больше чем какой-либо другой объект в мире. Посмотрите на фигуры фрактала. В них можно усмотреть разные «объекты», но на самом деле это видимости, поскольку напоминают то цветок, то глаз, то шар, то «танцующего кролика». На самом деле эти объекты не существуют как объекты, поскольку лишены функциональности, они лишь не привязанные к реальности аппроксимации реальных объектов, видимости, случайные промежуточные распознавания.
        Итак, объект определен функциональностью и по функциональности его можно распознать. А верно ли обратное, что функционально тождественное определяет один объект? Является ли тождество функциональности достаточным для тождества идентичности? Это тоже не такой простой вопрос. Можно его сформулировать иначе: всегда ли можно выбрать один объект из ряда однородных?
По нашему, вдолбленному в девственно чистые мозги разумению, на данный вопрос однозначный положительный ответ дает аксиома выбора АВ, которая является аксиомой и сомнениям с пререканиями не подлежит. Её можно вольно сформулировать так: 
        АВ: Пусть есть несколько множеств. Тогда из каждого множества можно выбрать по одному элементу и создать новое множество. 
Или поточнее так
        АВ: Для любого множества R попарно непересекающихся непустых множеств Z существует, по крайней мере, одно множество M, содержащее по одному и только по одному элементу из каждого из множеств Z множества R.
        Очевидность этой аксиомы не столь очевидна и её очевидность много раз подвергалась сомнениям. Но правда, более в варианте, когда R бесконечно. Я же укажу на самое очевидное из всего очевидного, что в ней содержится, на саму возможность выбора. Дело в том, что можно реально указать множества, в которых эту операцию провернуть не так-то просто, если вообще в принципе возможно. 
К примеру: летает в комнате рой мух. 
Задача: не вставая с дивана пересчитать их, при этом не используя мухобойки и не применяя других насильственных действий. Слабо?
        Далее я бы не хотел на этой интересной теме застревать, а позже постараюсь вынести её в отдельное производство. Сейчас главное понять, что совсем не обязательно, что выглядящие по разному объекты являются разными сущностями и что идентичные проявления всегда указывают на один объект. Более того, я не уверен, что мы в принципе можем отождествить объект с самим собой как единую сущность по результатам его наблюдений, проявлений. Всё это условно и относительно. Однако, в быту и для реальных целей нам всегда более важно, чтобы отождествленный объект вел себя так же как ему и положено. Т.е. отождествление по функциональности – практическая необходимость, а остальное – философия. 
        Как мы-люди распознаём объект? Во-первых, у нас в памяти содержатся все объекты, которые мы можем распознать. Те, которые там не содержатся, предстоит изучить. Во-вторых, распознаванию в первую очередь подлежат ожидаемые объекты. Т.е. у нас в голове заранее выстраиваются приоритетные образы, на которые мы можем натолкнуться. Им доверия куда больше чем не ожидаемым: мы долго не будем верить своим глазам, увидев летящего по небу слона. В третьих, распознавание идет поэтапно: в порядке ранжирования примеряются к образу имеющиеся в наборе модели, при этом происходят необходимые трансформации – шкалирование размеров, развороты под нужныи углом и даже, если понадобится, повороты трехмерных моделей и игры с текстурами и освещенностями. Далее ищется максимум критерия совпадения по всем таким трансформациям. Критерием обычно выступает суммарная величина исключительного ИЛИ или симметрической разности. А если более научно, то норма разности в L1 или L2.
        Обратите внимание, что мы легко и ненавязчиво подошли к задаче многомерной оптимизации уже на этом этапе: требуется минимизировать разницу образов по набору параметров, которыми являются трансформации подгонки. А еще я добавлю, что требуется как минимум простенькая нейронная сеть с пополняемой объектной базой, самообучаемость, какие-то наборы целей, текущие предпочтения, пороги точности и риска, где-то даже сомнения, дурные предчувствия и радости открытия. Если всё это в программу не вложить, добросовестно она работать не будет!