Йа волосат и бородат!
Решил-таки выложить мат. часть проектной документации. Кому-то, может, будет интересно, а кому-то может и пригодится.
Начало документации по курсовой
Постановка задачи
Требуется сделать систему распознавания символов по их графическому представлению. Символы вводятся интерактивно. Результатом работы системы должен быть распознанный символ, представленный на выходе.
Формализация задачи
Т.к. ввод осуществляется графически или путем задания единичных значений элементов в пиксельной матрице, то ввиду большой размерности матрицы произведем ее разбиение с помощью некоторой сетки a*b. Для каждой ячейки посчитаем xi – величину отношения количества заполненных единичными значениями элементов ячейки к общему количеству элементов на ячейку. В результате получаем некоторый n-мерный вектор, элементами которого являются процентные количества заполнености ячеек. Будем рассматривать этот вектор в качестве входных данных нейросети.
Требуется построить нейросеть, способную по данному вектору выдать код соответствующего символа.
Краткий обзор основных видов нейросетей
Многослойный перцептрон
МП – это базовый класс нейросетей с прямым прохождением, представляет из себя набор слоев нейронов, причем все слои являются полносвязным между собой (внутри слоев связей нет). Может решать наиболее широкий спектр задач, но является крайне громоздким и медленным вследствие большой связности и большого числа нейронов, из-за чего процесс обучения очень долгий. Несмотря на то, что была предпринята оптимизация процесса обучения с помощью алгоритма обратного распространения ошибки, процесс тем не менее долог. Может обучаться как с учителем, так и без него.
Сеть Кохонена
В основном предназначена для решения задач классификации. Реализует алгоритм распознавания без обучающей выборки. Структура сети – 1 слой нейронов, которые генерируют сигналы, поступающие на интерпретатор, выбирающий максимальный сигнал и выдает номер класса (или соответствующего нейрона), которому соответствует этот сигнал. Количество классов определяется количеством нейронов в слое.
Сеть встречного распространения
Состоит из двух слоев – слоя Кохонена и слоя Гроссберга. Сеть строит однозначные соответствия между 2 векторными данными в обучающей выборке и затем позволяет восстановить второй вектор по предъявляемому первому. Другими словами – сеть реализует нахождение заданных эквивалентностей.
Сеть Хопфилда
Основой сети является предложенная Хеббом ансамблевая сеть, в которой впервые используются обратные связи. Однако, математическое обоснование получила только сеть Хопфилда, функционирование которой основано на последовательном приближении к эталону. Выходной сигнал каждого нейрона подается ему же на вход и производится поиск разницы между сигналом и эталонным значением. В общем, работа сети реализует распознавание по методу градиентного спуска, однако, очень острым является вопрос о сходимости к эталонам и устойчивость результата работы сети.
АРТ-сети
АРТ-сеть является приближением к биологическим нейросетям. Сеть способна динамически запоминать новые образы без полного переобучения и сохранение уже запомненных образов при предъявлении новых. Существует несколько моделей сети, различаемых по входным данным. Сеть имеет очень широкие возможности, но так же и очень сложную структуру, поэтому использование данных сетей в поставленной задачи нецелесообразно.
Для решения поставленной задачи в качестве основы сети была выбрана сеть Хопфилда, т.к. она дает возможность получения эталона из «зашумленного» образца, а также является более быстрой по сравнению с многослойным перцептроном ввиду меньшего числа нейронов и связей.
Структура сети
Сеть состоит из 2 слоев – слоя Хопфилда и слоя Кохонена. Первый слой приближает входной n-мерный вектор к некоторому эталонному, затем, результат проходит окончательную классификацию в слое Кохонена.
// здесь должна быть схема сети
Результатом работы сети будет являться код символа, соответствующий коду активированного нейрона слоя Кохонена.
Слой Хопфилда
Функционирование слоя во многом определяется выбором критерия близости между двумя векторами, именуемого функцией энергии сети. Т.к. вид этой функции определяется для каждой задачи индивидуально, то данной работе рассмотрим несколько видов этих функций и проанализируем качество работы сети.
Сам процесс работы заключается в минимизации значения функции энергии при итеративной обработке выходных сигналов сети. В каждой итерации при превышении значением некоторого порога производится корректировка весов, определяемая значением градиента функции энергии.
Предлагаются для рассмотрения следующие варианты определения функций энергии:
• Эвклидово расстояние между 2 векторами (все компоненты – действительные числа)
• Квадратичная ошибка – сумма разностей квадратов координат векторов
• Квадратичная форма
• Квадратичная форма с учетом некоторого порога
• Мера Махаланобиса //имхо, гемор, т.к. куча неясностей с ковариационной матрицей.
Требования к функции энергии:
• Точки глобального минимума функции энергии должны совпадать с эталонными значениями.
• Функция должна иметь непрерывную производную первого порядка.
• Градиент функции должен допускать вычисление с помощью НС. (в данной работе требование не играет роли, т.к. рассматривается программная реализация)
Алгоритм работы слоя:
1. Разорвать цепочку обратной связи и предъявить сети входной вектор. Рассчитать значения выходов.
2. Замкнуть обратную связь и предоставить сети возможность самостоятельно менять свое состояние (релаксация). Остановить процесс релаксации после того, как выходной вектор перестанет меняться, т.е. по достижении минимума функции энергии. Полученные выходы сети дают искомый близкий к эталону вектор.
Слой Кохонена[i]
Сеть работает в режиме аккредитации, т.е. производит подсчет расстояний между входным вектором и эталонами и подает на выход номер класса, в принадлежности к которому наиболее «уверена» (минимальное расстояние). В качестве меры близости обычно берется эвклидово расстояние. Каждый нейрон находит взвешенную сумму сигналов на входе и передает величину суммы в интерпретатор, который должен определить максимальное значение и вернуть код нейрона, в качестве результата.
Обучение сети
[i]Слой Хопфилда
Для слоя Хопфилда обучение заключается в определении соответствующей функции энергии. В рамках задачи целесообразно воспользоваться мерой близости к эталонам (эвклидова мера, мера Махаланобиса, квадратичная ошибка, средняя квадратичная ошибка и пр.). Выбранная мера должна удовлетворять предъявленным требованиям к функции энергии сети.
Эталоны для сети задаются отдельно, пользователем.
Слой Кохонена
1. Выбираем эталонный вектор mi из обучающего множества {m}.
2. Добавляем новый нейрон θi в слой Кохонена для данного эталона.
3. Подаем на вход сети вектор mi.
4. Изменяем веса для нейрона θi таким образом, чтобы результирующее значение на выходе нейрона было максимальным среди выходов всех нейронов слоя.
5. Переходим к следующему вектору множества {m}.
6. После прохождения всего множества, выполняем повторный проход по всем векторам обучающего множества и, подавая эти вектора на вход сети, проверяем верность классификации. В случае ошибки – уменьшаем веса для всех остальных нейронов.
7. Повторяем шаг 5, пока не будет достигнута однозначность классификации.
/* есть сомнения в том, что этот алгоритм вообще сходится. Можно попробовать как-то модифицировать стандартный алгоритм, но надо что-то делать с сопоставлением номера нейрона и номера эталона, а так же с необходимой уникальностью классификации, которую стандартный алгоритм не гарантирует.
Однако, описанный алгоритм позволяет интерактивно формировать обучающую выборку без полного переобучения слоя. Также может быть применен в качестве основы для алгоритма переобучения сети при изменении элементов обучающего множества. */
/* Так же есть предложение в качестве весов взять компоненты эталонного вектора, т.к. в этом случае взвешенная сумма становится скалярным произведением входного и эталонного векторов. */
Сел за требования к программе, надо сделать к понедельнику, т.к. уже во вторник Бажин едет в командировку на 2 недели. Надо успеть подготовить и утвердить полную версию документации, чтобы потом спокойно сесть за реализацию.
Начало документации по курсовой
Постановка задачи
Требуется сделать систему распознавания символов по их графическому представлению. Символы вводятся интерактивно. Результатом работы системы должен быть распознанный символ, представленный на выходе.
Формализация задачи
Т.к. ввод осуществляется графически или путем задания единичных значений элементов в пиксельной матрице, то ввиду большой размерности матрицы произведем ее разбиение с помощью некоторой сетки a*b. Для каждой ячейки посчитаем xi – величину отношения количества заполненных единичными значениями элементов ячейки к общему количеству элементов на ячейку. В результате получаем некоторый n-мерный вектор, элементами которого являются процентные количества заполнености ячеек. Будем рассматривать этот вектор в качестве входных данных нейросети.
Требуется построить нейросеть, способную по данному вектору выдать код соответствующего символа.
Краткий обзор основных видов нейросетей
Многослойный перцептрон
МП – это базовый класс нейросетей с прямым прохождением, представляет из себя набор слоев нейронов, причем все слои являются полносвязным между собой (внутри слоев связей нет). Может решать наиболее широкий спектр задач, но является крайне громоздким и медленным вследствие большой связности и большого числа нейронов, из-за чего процесс обучения очень долгий. Несмотря на то, что была предпринята оптимизация процесса обучения с помощью алгоритма обратного распространения ошибки, процесс тем не менее долог. Может обучаться как с учителем, так и без него.
Сеть Кохонена
В основном предназначена для решения задач классификации. Реализует алгоритм распознавания без обучающей выборки. Структура сети – 1 слой нейронов, которые генерируют сигналы, поступающие на интерпретатор, выбирающий максимальный сигнал и выдает номер класса (или соответствующего нейрона), которому соответствует этот сигнал. Количество классов определяется количеством нейронов в слое.
Сеть встречного распространения
Состоит из двух слоев – слоя Кохонена и слоя Гроссберга. Сеть строит однозначные соответствия между 2 векторными данными в обучающей выборке и затем позволяет восстановить второй вектор по предъявляемому первому. Другими словами – сеть реализует нахождение заданных эквивалентностей.
Сеть Хопфилда
Основой сети является предложенная Хеббом ансамблевая сеть, в которой впервые используются обратные связи. Однако, математическое обоснование получила только сеть Хопфилда, функционирование которой основано на последовательном приближении к эталону. Выходной сигнал каждого нейрона подается ему же на вход и производится поиск разницы между сигналом и эталонным значением. В общем, работа сети реализует распознавание по методу градиентного спуска, однако, очень острым является вопрос о сходимости к эталонам и устойчивость результата работы сети.
АРТ-сети
АРТ-сеть является приближением к биологическим нейросетям. Сеть способна динамически запоминать новые образы без полного переобучения и сохранение уже запомненных образов при предъявлении новых. Существует несколько моделей сети, различаемых по входным данным. Сеть имеет очень широкие возможности, но так же и очень сложную структуру, поэтому использование данных сетей в поставленной задачи нецелесообразно.
Для решения поставленной задачи в качестве основы сети была выбрана сеть Хопфилда, т.к. она дает возможность получения эталона из «зашумленного» образца, а также является более быстрой по сравнению с многослойным перцептроном ввиду меньшего числа нейронов и связей.
Структура сети
Сеть состоит из 2 слоев – слоя Хопфилда и слоя Кохонена. Первый слой приближает входной n-мерный вектор к некоторому эталонному, затем, результат проходит окончательную классификацию в слое Кохонена.
// здесь должна быть схема сети

Результатом работы сети будет являться код символа, соответствующий коду активированного нейрона слоя Кохонена.
Слой Хопфилда
Функционирование слоя во многом определяется выбором критерия близости между двумя векторами, именуемого функцией энергии сети. Т.к. вид этой функции определяется для каждой задачи индивидуально, то данной работе рассмотрим несколько видов этих функций и проанализируем качество работы сети.
Сам процесс работы заключается в минимизации значения функции энергии при итеративной обработке выходных сигналов сети. В каждой итерации при превышении значением некоторого порога производится корректировка весов, определяемая значением градиента функции энергии.
Предлагаются для рассмотрения следующие варианты определения функций энергии:
• Эвклидово расстояние между 2 векторами (все компоненты – действительные числа)
• Квадратичная ошибка – сумма разностей квадратов координат векторов
• Квадратичная форма
• Квадратичная форма с учетом некоторого порога
• Мера Махаланобиса //имхо, гемор, т.к. куча неясностей с ковариационной матрицей.
Требования к функции энергии:
• Точки глобального минимума функции энергии должны совпадать с эталонными значениями.
• Функция должна иметь непрерывную производную первого порядка.
• Градиент функции должен допускать вычисление с помощью НС. (в данной работе требование не играет роли, т.к. рассматривается программная реализация)
Алгоритм работы слоя:
1. Разорвать цепочку обратной связи и предъявить сети входной вектор. Рассчитать значения выходов.
2. Замкнуть обратную связь и предоставить сети возможность самостоятельно менять свое состояние (релаксация). Остановить процесс релаксации после того, как выходной вектор перестанет меняться, т.е. по достижении минимума функции энергии. Полученные выходы сети дают искомый близкий к эталону вектор.
Слой Кохонена[i]
Сеть работает в режиме аккредитации, т.е. производит подсчет расстояний между входным вектором и эталонами и подает на выход номер класса, в принадлежности к которому наиболее «уверена» (минимальное расстояние). В качестве меры близости обычно берется эвклидово расстояние. Каждый нейрон находит взвешенную сумму сигналов на входе и передает величину суммы в интерпретатор, который должен определить максимальное значение и вернуть код нейрона, в качестве результата.
Обучение сети
[i]Слой Хопфилда
Для слоя Хопфилда обучение заключается в определении соответствующей функции энергии. В рамках задачи целесообразно воспользоваться мерой близости к эталонам (эвклидова мера, мера Махаланобиса, квадратичная ошибка, средняя квадратичная ошибка и пр.). Выбранная мера должна удовлетворять предъявленным требованиям к функции энергии сети.
Эталоны для сети задаются отдельно, пользователем.
Слой Кохонена
1. Выбираем эталонный вектор mi из обучающего множества {m}.
2. Добавляем новый нейрон θi в слой Кохонена для данного эталона.
3. Подаем на вход сети вектор mi.
4. Изменяем веса для нейрона θi таким образом, чтобы результирующее значение на выходе нейрона было максимальным среди выходов всех нейронов слоя.
5. Переходим к следующему вектору множества {m}.
6. После прохождения всего множества, выполняем повторный проход по всем векторам обучающего множества и, подавая эти вектора на вход сети, проверяем верность классификации. В случае ошибки – уменьшаем веса для всех остальных нейронов.
7. Повторяем шаг 5, пока не будет достигнута однозначность классификации.
/* есть сомнения в том, что этот алгоритм вообще сходится. Можно попробовать как-то модифицировать стандартный алгоритм, но надо что-то делать с сопоставлением номера нейрона и номера эталона, а так же с необходимой уникальностью классификации, которую стандартный алгоритм не гарантирует.
Однако, описанный алгоритм позволяет интерактивно формировать обучающую выборку без полного переобучения слоя. Также может быть применен в качестве основы для алгоритма переобучения сети при изменении элементов обучающего множества. */
/* Так же есть предложение в качестве весов взять компоненты эталонного вектора, т.к. в этом случае взвешенная сумма становится скалярным произведением входного и эталонного векторов. */
Сел за требования к программе, надо сделать к понедельнику, т.к. уже во вторник Бажин едет в командировку на 2 недели. Надо успеть подготовить и утвердить полную версию документации, чтобы потом спокойно сесть за реализацию.