Искусственный интеллект с алгоритмами нейрокибернетики
Вступление
Я занялся разработкой программ комплекса “Искусственный интеллект” потому что
ИИ (Искусственный интеллект) – это одна из самых перспективных и быстроразвивающихся областей науки. И в результате работы был создан программный комплекс, в составе которого:
Компонент нейронной сети
Программа распознавания графических образов на основе компонента НС (Нейронная сеть), способная распознавать графические файлы:
Образцы росписей
Образцы иконок программ
Образцы цифр шрифта AWARD BIOS
Компонент экспертной системы
Демонстрационная программа к компоненту ЭС (Экспертной системы)
Подробная справочная система
Проведен ряд экспериментов с нейронной сетью, данные систематизированы.
Т.О. программный комплекс содержит возможности построения программ на основе компонентов НС и ЭС, однако чтобы не разбрасываться я предпочел остановиться на Нейронной сети в силу ее наглядности, достаточной сложности и реальной возможности применения. Я намеренно уделил так мало внимания экспертным системам, по моему мнению НС являются гораздо более перспективным направлением в области программирования ИИ.
Область применения нейронных сетей
В литературе встречается значительное число признаков, которыми должна обладать задача, чтобы применение НС было оправдано и НС могла бы ее решить:
отсутствует алгоритм или не известны принципы решения задач, но накоплено достаточное число примеров;
проблема характеризуется большими объемами входной информации;
данные неполны или избыточны, зашумлены, частично противоречивы.
Таким образом, НС хорошо подходят для распознавания образов и решения задач классификации, оптимизации и прогнозирования. Ниже приведен перечень возможных промышленных применений нейронных сетей, на базе которых либо уже созданы коммерческие продукты, либо реализованы демонстрационные прототипы.
Банки и страховые компании:
автоматическое считывание чеков и финансовых документов;
проверка достоверности подписей;
прогнозирование изменений экономических показателей.
Административное обслуживание:
автоматическое считывание документов;
автоматическое распознавание штриховых кодов.
Нефтяная и химическая промышленность:
анализ геологической информации;
идентификация неисправностей оборудования;
разведка залежей минералов по данным аэрофотосъемок;
анализ составов примесей;
управление процессами.
Военная промышленность и аэронавтика:
обработка звуковых сигналов (разделение, идентификация, локализация, устранение шума, интерпретация);
обработка радарных сигналов (распознавание целей, идентификация и локализация источников);
обработка инфракрасных сигналов (локализация);
автоматическое пилотирование.
Промышленное производство:
управление манипуляторами;
управление процессами;
обнаружение неисправностей;
адаптивная робототехника;
Биомедицинская промышленность:
анализ рентгенограмм;
обнаружение отклонений в ЭКГ.
Кроме того, следует добавить, что в последние несколько лет вся информация о нейропрограммах исчезла из средств массовой информации – это говорит об интересах военных в этой области и следовательно перспективности данных проектов.
Нейронные сети - основные понятия и определения
В основу искусственных нейронных сетей положены следующие черты живых нейронных сетей, позволяющие им хорошо справляться с нерегулярными задачами:
простой обрабатывающий элемент - нейрон;
очень большое число нейронов участвует в обработке информации;
один нейрон связан с большим числом других нейронов (глобальные связи);
изменяющиеся по весу связи между нейронами;
массированная параллельность обработки информации.
Прототипом для создания нейрона послужил биологический нейрон головного мозга. Поведение искусственной нейронной сети зависит как от значения весовых параметров, так и от функции возбуждения нейронов. Известны три основных вида функции возбуждения: пороговая, линейная и сигмоидальная.
Нейронная сеть представляет собой совокупность большого числа сравнительно простых элементов - нейронов, топология соединений которых зависит от типа сети. Чтобы создать нейронную сеть для решения какой-либо конкретной задачи, мы должны выбрать, каким образом следует соединять нейроны друг с другом, и соответствующим образом подобрать значения весовых параметров на этих связях. Может ли влиять один элемент на другой, зависит от установленных соединений. Вес соединения определяет силу влияния.
Модели нейронных сетей
Модель Маккалоха
Нейроны имеют состояния 0, 1 и пороговую логику перехода из состояния в состояние. Пороговый вид функции не предоставляет нейронной сети достаточную гибкость при обучении и настройке на заданную задачу.
Модель Розенблата
Розенблат ввел в модель Маккаллока и Питтса способность связей к модификации, что сделало ее обучаемой. Эта модель была названа персептроном. Первоначально персептрон представлял собой однослойную структуру с жесткой пороговой функцией процессорного элемента и бинарными или многозначными входами. Также слабо формализован метод обучения персептрона.
Модель Хопфилда
Привлекательность подхода Хопфилда состоит в том, что нейронная сеть для конкретной задачи может быть запрограммирована без обучающих итераций. Веса связей вычисляются на основании вида функции энергии, сконструированной для этой задачи.
Модель сети с обратным распространением
Способом обратного распространения (back propogation) называется способ обучения многослойных НС. В таких НС связи между собой имеют только соседние слои, при этом каждый нейрон предыдущего слоя связан со всеми нейронами последующего слоя (рис. на стр. I) . Нейроны обычно имеют сигмоидальную функцию возбуждения. Первый слой нейронов называется входным и содержит число нейронов соответствующее распознаваемому образу. Последний слой нейронов называется выходным и содержит столько нейронов, сколько классов образов распознается. Между входным и выходным слоями располагается один или более скрытых (теневых) слоев. Определение числа скрытых слоев и числа нейронов в каждом слое для конкретной задачи является неформальной задачей.
Принцип обучения такой нейронной сети базируется на вычислении отклонений значений сигналов на выходных процессорных элементах от эталонных и обратном "прогоне" этих отклонений до породивших их элементов с целью коррекции ошибки. Еще в 1974 году
Поль Дж. Вербос изобрел значительно более эффективную процедуру для вычисления величины, называемой производной ошибки по весу, когда работал над своей докторской диссертацией в Гарвардском университете. Процедура, известная теперь как алгоритм обратного распространения, стала одним из наиболее важных инструментов в обучении нейронных сетей. Однако этому алгоритму свойственны и недостатки, главный из которых - отсутствие сколько-нибудь приемлемых оценок времени обучения. Понимание, что сеть в конце концов обучится, мало утешает, если на это могут уйти годы. Тем не менее, алгоритм обратного распространения имеет широчайшее применение. Например, успех фирмы NEC в распознавании букв, был достигнут именно благодаря алгоритму обратного распространения. Мой пример и является сетью с обратным распространением. Этот метод является достаточно сложным и очень наглядным, поэтому я остановлюсь на нём подробнее.
Реализация нейросети
Моя нейросеть является программной реализацией, ее параметры зависят от конкретной решаемой задачи и возможностей компьютера. Для моей демонстрационной задачи оказалось вполне достаточно двухслойной (без скрытых слоев) сети, однако вполне допустимо усложнять сеть, подгоняя под текущую работу.
Программа распознавания подписей.
Для своей сети я использовал алгоритм обратного распространения, и подробнее расскажу, как сеть обучается и распознаёт примеры, на основе демонстрационной программы распознавания 10 сканированных росписей.
Программа состоит из двух частей :
Алгоритм подготовки цифрового образа.
Алгоритмы обучения и распознавания этого образа.
Алгоритм подготовки цифрового образа.
На рисунке (рис. на стр. II) представлена матрица с росписью формата 125х85. Образцами послужили росписи некоторых людей, впоследствии отсканированные и приведенные к одинаковому размеру. Преобразование матрицы происходит следующим образом: Предположим во входном слое нейросети 210 нейрона. Тогда необходимо преобразовать двумерную матрицу в одномерную с 210 элементами, которую мы будем называть цифровым образом (Можно наоборот подогнать под пример число нейронов – зависит от вкуса и от возможностей компилятора). Я считаю сумму закрашенных точек по столбцам, умножаю на определяемый коэффициент и записываю получившееся число в нужный элемент массива, затем то же самое проделываю со строками, и записываю в остальные элементы массива. Получаю одномерный массив размером + , т.е. в данном случае – 210. Программа распознаёт пример, записанный в файл SAMPLE.BMP, который преобразуется по ТАКОМУ ЖЕ алгоритму. Вполне допустимо создать какой-либо свой алгоритм преобразования.
Так же есть демонстрация распознавания иконок к различным программам – нейросеть опознаёт пример и выдаёт имя программы. Преобразование матрицы производится по такому же алгоритму, что и для чисел, однако во входном слое нейросети используется уже 64 нейрона (формат иконки – 32х32).
Программа распознавания 10 образов цифр может послужить основой программы распознавания текстов (что-то типа FineReader).
Алгоритмы обучения и распознавания этого образа.
Эти цифровые образы передаются компоненту который обучается на них и становится способным классифицировать подобные образы. Обучение, согласно алгоритму обратного распространения проходит следующим образом: сеть делает попытку распознать данный образ, но если она ещё не достаточно обучена, то результат не будет соответствовать истинному. Программа улавливает эти несоответствия пытается исправить их, прогоняя эталонный образец. Когда подобные несоответствия становятся ниже какого-либо значения можно сказать, что сеть обучилась.
Компонент нейронной сети
Компонент нейронной сети содержит основные процедуры работы с нейронной сетью, например процедура распознавания, обучения сети: прямого и обратного хода. Все константы открыты для изменения, параметры подобраны для различных видов применений. Компонент оформлен с использованием объектно-ориентированного языка программирования Object Pascal. Компонент может использоваться для Delphi версий 2,3,4 и C++ Builder
Исходный текст находится в каталоге COMPONEN NN nnet.pas.
Используемые методы:
Обучение сети
Выбор оптимального варианта (распознавание, прогнозирование)
Сохранение результатов обучения
Загрузка обученной сети
Инициализация случайных значений характеристик сети.
Свойства нейросети
Возможность изменения числа нейронов
Возможность изменения числа скрытых слоёв
Возможность сохранения обученной сети в файл
Возможность загрузки без обучения
Изменяемость линейных коэффициентов преобразования
Справочная система
Выполнена в HTML формате, содержит описание двух видов ИИ:
Нейронная сеть
Экспертная система
В разделе нейронной сети приведено описание принципов функционирования НС, основные алгоритмы реализации, историческая справка. Позволяет запускать демонстрационные программы. Ниже приведены основные темы справки.
Что такое ИИ. Области применения. Основные виды, принципы |
Все об экспертных системах |
Все о нейронных сетях |
Принцип работы нейронных сетей |
Концепции экспертных систем |
Справочная система оформлена интерактивно, ее можно вызвать практически из любой программы, получить исчерпывающий ответ на любой вопрос.
Программа оболочка
Все программы комплексы “Искусственный интеллект” объединены единой программой оболочкой – из под нее можно вызвать все демонстрационные программы, справку, просмотреть исходные тексты модулей. Для этого необходимо, чтобы на компьютере был установлен Browser HTM файлов и Delphi желательно версии 3. Я использую программу работы с реестром Windows, сканирую программы, сопоставленные с расширениями HTM, PAS, DPR, поэтому для полной и качественной работы необходимо, чтобы на компьютере, в каталоге, доступном по переменной окружения PATH находилась программа Windows – start.exe .
Программа так же использует асинхронное воспроизведение звука WAW.
Практическое применение программного комплекса.
Перспективы использования.
Практически, данную программу можно использовать по назначению – распознавание образов, прогнозирование и т.д., но я вижу ещё несколько возможностей:
Разработка коммерческих продуктов на основе моих компонентов
Изучение свойств нейропрограмм, проведение экспериментов
Обучение основам искусственного интеллекта
Кроме того уже данную программу можно с успехом использовать в реальных условиях.
Рис. 1. Модель сети на основе обратного распространения.
На рисунке изображена простая модель нейронной сети. Данная сеть содержит 5 нейронов во входном слое и 3 в выходном. Т.е. с ее помощью можно по 5 признаком определить один из трех классов.
Рис. 2. Формат подписи. Масштаб 28:1.
Пример подписи, которую распознаёт демонстрационная программа нейронной сети. Увеличена в 28 раз. Пример содержит 10625 точек и является очень большим. Сеть обрабатывает подобные примеры на пределе, с шансом успешного распознавания 60-70%.
Рис. 3. Внешний вид нейрона.
Данный нейрон содержит 11 входов, т.е. может быть нейроном слоя, которому предшествовал слой из 11 нейронов. Каждый из входов имеет свой весовой коэффициент, сам нейрон имеет некоторый порог срабатывания, поэтому на выход подаётся исключительный, характерный лишь для данного нейроны сигнал.
Рис. 4. Зависимость времени обучения НС от размеров образца.