Реферат: Теория к проекту Искусственный интеллект
очень большое число нейронов участвует в обработке информации;
один нейрон связан с большим числом других нейронов (глобальные связи);
изменяющиеся по весу связи между нейронами;
массированная параллельность обработки информации.
Прототипом для создания нейрона послужил биологический нейрон головного мозга. Поведение искусственной нейронной сети зависит как от значения весовых параметров, так и от функции возбуждения нейронов. Известны три основных вида функции возбуждения: пороговая, линейная и сигмоидальная.
Нейронная сеть представляет собой совокупность большого числа сравнительно простых элементов - нейронов, топология соединений которых зависит от типа сети. Чтобы создать нейронную сеть для решения какой-либо конкретной задачи, мы должны выбрать, каким образом следует соединять нейроны друг с другом, и соответствующим образом подобрать значения весовых параметров на этих связях. Может ли влиять один элемент на другой, зависит от установленных соединений. Вес соединения определяет силу влияния.
Модели нейронных сетей
Модель Маккалоха
Нейроны имеют состояния 0, 1 и пороговую логику перехода из состояния в состояние. Пороговый вид функции не предоставляет нейронной сети достаточную гибкость при обучении и настройке на заданную задачу.
Модель Розенблата
Розенблат ввел в модель Маккаллока и Питтса способность связей к модификации, что сделало ее обучаемой. Эта модель была названа персептроном. Первоначально персептрон представлял собой однослойную структуру с жесткой пороговой функцией процессорного элемента и бинарными или многозначными входами. Также слабо формализован метод обучения персептрона.
Модель Хопфилда
Привлекательность подхода Хопфилда состоит в том, что нейронная сеть для конкретной задачи может быть запрограммирована без обучающих итераций. Веса связей вычисляются на основании вида функции энергии, сконструированной для этой задачи.
Модель сети с обратным распространением
Способом обратного распространения (back propogation) называется способ обучения многослойных НС. В таких НС связи между собой имеют только соседние слои, при этом каждый нейрон предыдущего слоя связан со всеми нейронами последующего слоя (рис. на стр. I) . Нейроны обычно имеют сигмоидальную функцию возбуждения. Первый слой нейронов называется входным и содержит число нейронов соответствующее распознаваемому образу. Последний слой нейронов называется выходным и содержит столько нейронов, сколько классов образов распознается. Между входным и выходным слоями располагается один или более скрытых (теневых) слоев. Определение числа скрытых слоев и числа нейронов в каждом слое для конкретной задачи является неформальной задачей.
Принцип обучения такой нейронной сети базируется на вычислении отклонений значений сигналов на выходных процессорных элементах от эталонных и обратном "прогоне" этих отклонений до породивших их элементов с целью коррекции ошибки. Еще в 1974 году
Поль Дж. Вербос изобрел значительно более эффективную процедуру для вычисления величины, называемой производной ошибки по весу, когда работал над своей докторской диссертацией в Гарвардском университете. Процедура, известная теперь как алгоритм обратного распространения, стала одним из наиболее важных инструментов в обучении нейронных сетей. Однако этому алгоритму свойственны и недостатки, главный из которых - отсутствие сколько-нибудь приемлемых оценок времени обучения. Понимание, что сеть в конце концов обучится, мало утешает, если на это могут уйти годы. Тем не менее, алгоритм обратного распространения имеет широчайшее применение. Например, успех фирмы NEC в распознавании букв, был достигнут именно благодаря алгоритму обратного распространения. Мой пример и является сетью с обратным распространением. Этот метод является достаточно сложным и очень наглядным, поэтому я остановлюсь на нём подробнее.
Реализация нейросети
Моя нейросеть является программной реализацией, ее параметры зависят от конкретной решаемой задачи и возможностей компьютера. Для моей демонстрационной задачи оказалось вполне достаточно двухслойной (без скрытых слоев) сети, однако вполне допустимо усложнять сеть, подгоняя под текущую работу.
Программа распознавания подписей.
Для своей сети я использовал алгоритм обратного распространения, и подробнее расскажу, как сеть обучается и распознаёт примеры, на основе демонстрационной программы распознавания 10 сканированных росписей.
Программа состоит из двух частей :
Алгоритм подготовки цифрового образа.
Алгоритмы обучения и распознавания этого образа.
Алгоритм подготовки цифрового образа.
На рисунке (рис. на стр. II) представлена матрица с росписью формата 125х85. Образцами послужили росписи некоторых людей, впоследствии отсканированные и приведенные к одинаковому размеру. Преобразование матрицы происходит следующим образом: Предположим во входном слое нейросети 210 нейрона. Тогда необходимо преобразовать двумерную матрицу в одномерную с 210 элементами, которую мы будем называть цифровым образом (Можно наоборот подогнать под пример число нейронов – зависит от вкуса и от возможностей компилятора). Я считаю сумму закрашенных точек по столбцам, умножаю на определяемый коэффициент и записываю получившееся число в нужный элемент массива, затем то же самое проделываю со строками, и записываю в остальные элементы массива. Получаю одномерный массив размером <число строк> + <число столбцов>, т.е. в данном случае – 210. Программа распознаёт пример, записанный в файл SAMPLE.BMP, который преобразуется по ТАКОМУ ЖЕ алгоритму. Вполне допустимо создать какой-либо свой алгоритм преобразования.
Так же есть демонстрация распознавания иконок к различным программам – нейросеть опознаёт пример и выдаёт имя программы. Преобразование матрицы производится по такому же алгоритму, что и для чисел, однако во входном слое нейросети используется уже 64 нейрона (формат иконки – 32х32).
Программа распознавания 10 образов цифр может послужить основой программы распознавания текстов (что-то типа FineReader).
Алгоритмы обучения и распознавания этого образа.
Эти цифровые образы передаются компоненту который обучается на них и становится способным классифицировать подобные образы. Обучение, согласно алгоритму обратного распространения проходит следующим образом: сеть делает попытку распознать данный образ, но если она ещё не достаточно обучена, то результат не будет соответствовать истинному. Программа улавливает эти несоответствия пытается исправить их, прогоняя эталонный образец. Когда подобные несоответствия становятся ниже какого-либо значения можно сказать, что сеть обучилась.