Электронная библиотека

Биография

Каталог ссылок



Магистр ДонНТУ Исаенко Александра Петровна

Исаенко (Чепурко) Александра Петровна

Донецкий национальный технический университет
Портал магистров ДонНТУ
Факультет вычислительной техники и информатики
Специальность - Системное программирование
Группа СП-01маг

Тема магистерской работы "Использование нейронных сетей для решения задач распознавания образов"
Руководитель : Святный В. А.

  :-)

Автореферат

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


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


Нейронные сети в каком-то смысле являются имитациями мозга, поэтому с их помощью успешно решаются разнообразные "нечеткие" задачи - распознавание образов, речи, рукописного текста, выявление закономерностей, классификация, прогнозирование. В таких задачах, где традиционные технологии бессильны, нейронные сети часто выступают как единственная эффективная методика решения. Генетические алгоритмы - это специальная технология для поиска оптимальных решений, которая успешно применяется в различных областях науки и бизнеса. В этих алгоритмах используется идея естественного отбора среди живых организмов в природе, поэтому они называются генетическими. Генетические алгоритмы часто применяются совместно с нейронными сетями, позволяя создавать предельно гибкие, быстрые и эффективные инструменты анализа данных[1].


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


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


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


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


Распознавание образов - это в общем случае отнесение объекта к какому-то множеству образов. В нашем случае все варианты написания отдельной буквы относятся к одному множеству.


В целом проблема распознавания образов состоит из двух частей: обучения и распознавания. Обучение осуществляется путем показа отдельных объектов с указанием их принадлежности тому или другому образу. В результате обучения распознающая система должна приобрести способность реагировать одинаковыми реакциями на все объекты одного образа и различными - на все объекты различных образов. Очень важно, что процесс обучения должен завершиться только путем показов конечного числа объектов без каких-либо других подсказок. В качестве объектов обучения могут быть либо картинки, либо другие визуальные изображения (буквы), либо различные явления внешнего мира, например звуки, состояния организма при медицинском диагнозе, состояние технического объекта в системах управления и др. Важно, что в процессе обучения указываются только сами объекты и их принадлежность образу. За обучением следует процесс распознавания новых объектов, который характеризует действия уже обученной системы. Автоматизация этих процедур и составляет проблему обучения распознаванию образов. В том случае, когда человек сам разгадывает или придумывает, а затем навязывает машине правило классификации, проблема распознавания решается частично, так как основную и главную часть проблемы (обучение) человек берет на себя[3].


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


В настоящее время для задач распознавания образов используются искусственные нейронные сети - набор нейронов, соединенных между собой. Искусственные нейронные сети в первом приближении построены по подобию биологической нейронной сети. На вход искусственного нейрона поступает некоторое множество сигналов, каждый из которых является выходом другого нейрона. Каждый вход умножается на соответствующий вес, аналогичный синаптической силе, и все произведения суммируются, определяя уровень активации нейрона. (Рисунок 1)

Рисунок 1. Модель искусственного нейрона


Как правило, передаточные функции всех нейронов в нейронной сети фиксированные, а весы являются параметрами нейронной сети и могут изменяться. Некоторые входы нейронов обозначены как внешние входы нейронной сети, а некоторые выходы - как внешние выходы нейронной сети. Подавая любые числа на входы нейронной сети, мы получаем какой-либо набор чисел на выходах нейронной сети. Таким образом, работа нейронной сети составляется в преобразовании входного вектора в исходный вектор, причем это преобразование задается весами сети. Простейшая нейронная модель, показанная на рис. 2 называется персептроном и работает по следующему принципу: элемент S умножает каждый вход х на вес w и суммирует взвешенные входы. Если эта сумма больше заданного порогового значения, выход равен единице, в противном случае - нулю[3].

Рисунок 2. - Простейшая модель нейрона - персептрона


Персептрон - это некоторый инструмент, который способен "запоминать" ("обучиться") - какой образ относится к какому классу. После такого "обучения", в идеале, он должен уметь правильно "узнавать" и другие образы, не входившие в обучающее множество, но достаточно похожие на них, или сообщать, что образ не похож ни на один из множества обучающих образов. Степень "достаточной похожести" определяется удачностью выбора признакового множества. А способность персептрона "обучиться" зависит от разделимости признакового множества, то есть от уникальности наборов признаков с точностью до класса (иными словами - не пересекаются ли области, ограничивающие свои классы)[2].


Отличительной чертой нейросетей (НС) является глобальность связей. Базовые элементы искусственных нейросетей - формальные нейроны - изначально нацелены на работу с множественной информацией. Каждый нейрон нейросети, как правило, связан со всеми нейронами предыдущего слоя обработки данных, архитектура нейросетей проста и универсальна. Специализация связей возникает на этапе их обучения под влиянием конкретных данных.


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


Наличие же обратных связей может сделать динамику нейросети (называемой в этом случае рекуррентной) непредсказуемой. В принципе, сеть может "зациклиться" и не выдать ответа никогда. Причем, согласно Тьюрингу, не существует алгоритма, позволяющего для произвольной сети определить придут ли когда-либо ее элементы в состояние равновесия (т.н. проблема останова)[3].


Вообще говоря, то, что нейроны в рекуррентных сетях помногу раз принимают участие в обработке информации позволяет таким сетям производить более разнообразную и глубокую обработку информации. Но в этом случае следует принимать специальные меры к тому, чтобы сеть не зацикливалась (Таблица 1).



Сравнение сетей: Без обратных связей (многослойные) С обратными связями
Преимущества Простота реализации. Гарантированное получение ответа после прохождения данных по слоям. Минимизация размеров сети - нейроны многократно участвуют в обработке данных. Меньший объем сети облегчает процесс обучения.
Недостатки Требуется большее число нейронов для алгоритмов одного и того же уровня сложности. Следствие - большая сложность обучения. Требуются специальные условия, гарантирующие сходимость вычислений.

Обучить нейронную сеть - значит, сообщить ей, чего мы от нее добиваемся. Этот процесс очень похож на обучение ребенка алфавиту. Показав ребенку изображение буквы "А", мы спрашиваем его: "Какая это буква?" Если ответ неверен, мы сообщаем ребенку тот ответ, который мы хотели бы от него получить: "Это буква А". Ребенок запоминает этот пример вместе с верным ответом, то есть в его памяти происходят некоторые изменения в нужном направлении. Мы будем повторять процесс предъявления букв снова и снова до тех пор, когда все 33 буквы будут твердо запомнены. Такой процесс называют "обучение с учителем".


Рисунок 3 - Процесс обучения нейросети


При обучении нейронной сети мы действуем совершенно аналогично. У нас имеется некоторая база данных, содержащая примеры (набор рукописных изображений букв). Предъявляя изображение буквы "А" на вход нейронной сети, мы получаем от нее некоторый ответ, не обязательно верный. Нам известен и верный (желаемый) ответ - в данном случае нам хотелось бы, чтобы на выходе нейронной сети с меткой "А" уровень сигнала был максимален. Обычно в качестве желаемого выхода в задаче классификации берут набор (1, 0, 0, ...), где 1 стоит на выходе с меткой "А", а 0 - на всех остальных выходах. Вычисляя разность между желаемым ответом и реальным ответом сети, мы получаем 33 числа - вектор ошибки. Алгоритм обратного распространения ошибки - это набор формул, который позволяет по вектору ошибки вычислить требуемые поправки для весов нейронной сети. Одну и ту же букву (а также различные изображения одной и той же буквы) мы можем предъявлять нейронной сети много раз. В этом смысле обучение скорее напоминает повторение упражнений в спорте - тренировку.


Оказывается, что после многократного предъявления примеров веса нейронной сети стабилизируются, причем нейронная сеть дает правильные ответы на все (или почти все) примеры из базы данных. В таком случае говорят, что "нейронная сеть выучила все примеры", "нейронная сеть обучена", или "нейронная сеть натренирована". В программных реализациях можно видеть, что в процессе обучения величина ошибки (сумма квадратов ошибок по всем выходам) постепенно уменьшается. Когда величина ошибки достигает нуля или приемлемого малого уровня, тренировку останавливают, а полученную нейронную сеть считают натренированной и готовой к применению на новых данных. Важно отметить, что вся информация, которую нейронная сеть имеет о задаче, содержится в наборе примеров. Поэтому качество обучения нейронной сети напрямую зависит от количества примеров в обучающей выборке, а также от того, насколько полно эти примеры описывают данную задачу. Так, например, бессмысленно использовать нейронную сеть для предсказания финансового кризиса, если в обучающей выборке кризисов не представлено. Считается, что для полноценной тренировки нейронной сети требуется хотя бы несколько десятков (а лучше сотен) примеров[1].


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


Начальными данными есть растровые белые изображения букв размером 10x10 пикселей. Для нейронной сети простейшее формулирование задачи есть таким: на входе вектор из 100 двоичных символов (100=10x10). При этом для определения критериев анализа входного изображения можно использовать разные подходы - определять наклон букв; разбивать изображение на блоки и оценивать процентное количество белых и черных пикселей; найти количество сечения параллельных прямых черными областями. Можно все эти средства комбинировать и использовать вместе, таким образом увеличивая достоверность верного ответа. Чем удачнее мы выберем - что брать за признаки образа - тем точнее и объективнее обучится персептрон, и тем эффективнее будет распознавать незнакомые образы.


Для нашей задачи надо построить нейронную сеть с 100 входами и 33 выходами, которые обозначены буквами. Если на входе нейронной сети изображения буквы "З", то максимальное значение исходного сигнала достигается на выходе "З". Аналогично нейронная сеть работает для всех 33 букв. Объясним, зачем нужно выбирать выход нейронной сети с максимальным уровнем сигнала. Дело в том, что уровень исходного сигнала, как правило, может принимать любые значения из какого-то отрезка. Однако, в данной задаче нас интересует не аналоговый ответ, а лишь номер категории (номер буквы в алфавите). Поэтому используется следующий подход - каждой категории подставляется свой выход, а ответом нейронной сети считается та категория, на чьем выходе уровень сигнала максимальный. В определенном значении уровень сигнала на выходе "З" - это достоверность того, что на вход нейронной сети была представлена буква "З".



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


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


Список использованной литературы

  1. NeuroProject - Обучение. Учебник
  2. Курсовая работа Смирнова Евгения
  3. И. В. Заенцев. Нейронные сети: основные модели (Учебное пособие к курсу "Нейронные сети")

P.S. При написании данного автореферата магистерская работа еще не завершена. Окончание завершения - январь 2007г. Полный текст работы и все материалы могут быть получены у автора или руководителя Святного Владимира Андреевича после указанной даты.


Электронная библиотека

Биография

Каталог ссылок