Сделай Сам Свою Работу на 5

Приложение. Обучение нейросети распознаванию различных видов объектов.

Постановка задачи

 

Перцептрон – это одна из разновидностей нейронных сетей.

На вход программы подаётся рисунок типа:

или

Программа должна этот рисунок воспринять, как обучающую выборку – под рисунком написано, что рисунок содержит.

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

Совсем не обязательно распознавать графические объекты. Можно распознавать объекты по их свойствам и др. Но в любом случае что-то предъявить программе в каком-то виде надо. А программа должна использовать для распознавания методологию нейронной сети.

 

Представление задачи

 

Для реализации нейронной сети, в первую очередь, необходимо разобраться с ее моделью, представленной на рисунке 1.

Рис.1. Модель нейронной сети.

 

На вход поступает только двоичный сигнал, т.е. либо 0 либо 1. Элемент Сумматор умножает каждый вход xn на вес wn и суммирует взвешенные входы. Если эта сумма больше заданного порогового значения, выход равен единице, в противном случае – нулю.

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

Рис.2. Перцепрон

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

 

Алгоритм обучения персептрона следующий:

1) Присвоить синаптическим весам w1,w2, ... ,wN некоторые начальные значения. Например, нулю.

2) Подать входной образ X и вычислить OUT. Если OUT правильный, то переходят к шагу 4. Иначе к шагу 3.

3) Применяя дельта-правило (см. ниже) вычислить новые значения синаптических весов.



4) Повторить шаги 2-4 данного алгоритма обучения персептрона пока сеть не станет выдавать ожидаемый выход на векторах из обучающей выборки или пока отклонение не станет ниже некоторого порога.

Т.о. логика обучения персептрона следующая: если сигнал персептрона при некотором образе верен, то ничего корректировать не надо, если нет – производится корректировка весов.

Правила корректировки весов следующие:

· Если OUT неверен и равен нулю, то необходимо увеличить веса тех входов, на которые была подана единица.

· Если OUT неверен и равен единице, то необходимо уменьшить веса тех входов, на которые была подана единица.

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

Дельта-правило является математической моделью правил корректировки весов. Введем величину delta, которая равна разности между требуемым T и реальным OUT выходом:

Delta = T - OUT

Тогда, веса персептрона после коррекции будут равны:

wN(i+1) = wN(i) +eta * delta xN

где:

i – номер текущей итерации обучения персептрона;

eta (греческая буква «эта») – коэффициент скорости обучения, позволяет управлять средней величиной изменения весов;

xN – величина входа соответствующая wN синаптическому весу. Добавление величины xN в произведение позволяет избежать изменения тех весов, которым на входе соответствовал ноль.

 

Руководство пользователя

 

При запуске программы открывается окно, типа изображенного на рисунке 3.

Рис.3. Начало работы с нейронной сетью

 

Для того чтобы появилось поле, для задания символа, необходимо провести мышкой по пустому месту на форме, после чего вы увидите сетку, в которой вы будете рисовать символы (рисунок 4).

Рис.4. Программа, готова к работе.

 

Прежде чем использовать сеть, необходимо ее обучить. Для начала необходимо ввести обозначение символа в поле «Обучение», как показано на рисунке 5.

 

Рис.5. Ввод символа, которому будет обучаться программа.

 

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

Рис.6. Изображение символа единицы на сетке.

Выделение клеток происходит с помощью левой кнопки мыши, но если вы ошиблись, то с помощью правой кнопки мыши снять это выделение.

Итак, после того как символ изображен и написан его идентификатор в поле обучение, необходимо нажать на кнопку «Обучить» (рисунок 7).

Рис.7. Обучение

После нажатия на эту кнопку символ будет запомнен сетью, в чем можно удостовериться взглянув на поле «Символы нейросети», где перечислены все выученные символы (рисунок 8).

 

Рис.8. Обученная сеть.

 

Выучим еще несколько символов, чтобы сложнее было системе распознавать вводимые знаки.

Для того чтобы начать обучение новому символу, необходимо сначала стереть то, что представляет из себя текущий символ. Делается это с помощью кнопки «Очистка окна ввода» (рисунок 9).

Рис.9. Очистка окна ввода

После того, как мы обучили свою программу, необходимо проверить правильно ли она угадывает введенные символы. Для этого снова очищаем окно ввода и теперь используем его для того, чтобы программа угадывала то, что мы рисуем в сетке.

Теперь рисуем любой символ исходя из известного списка и нажинаем на кнопку «Угадать» (Рисунок 10).

Рис.10. Угадывание символов

 

После нажатия на эту клавишу всплывает сообщение с угаданным символом (рисунок 11).

Рис.11. Угаданный символ

Так же может случится ситуация, когда мы вводим один символ, но система указывает на другой. Это нормальная ситуация для слабообученного перцептрона, это значит, что нужно ему принудительно указать, что это за символ (рисунок 12).

Рис.12. Неугаданный символ

Для того, чтобы перцепторн лучше понимал вас, необходимо после неверно отгаданного символа сначала нажать «ОК», а затем в строке «Обучение» ввести правильный символ (рисунок 13). Тогда система подучится и будет лучше узнавать символы, а так же уменьшится вероятность возникновения ошибки. После чего программа правильно воспримет введенный уже немного иначе символ (рисунок 14)

Рис.13. Дообучение программы.

 

Рис.14. Дообученная программа

 

Если возникает необходимость очистки сети, то для этого можно нажать на кнопку

и тогда все обучение сотрется и сеть будет создана «с чистого листа» (рисунок 15).

Рис.15. Новая сеть

В приложении 1 можно рассмотреть оставшиеся скриншоты введенных и угаданных символов.

 

Список литературы

 

1) http://www.aiportal.ru/articles/neural-networks/neural-networks.html // Нейронные сети

2) http://www.aiportal.ru/articles/neural-networks/learning-neunet.html //обучение нейронной сети

3) http://www.aiportal.ru/articles/neural-networks/perceptron.html //перцептрон

4) http://www.aiportal.ru/articles/neural-networks/perceptron-learning.html //обучение перцептрона, дельта-правило

 

 

Приложение. Обучение нейросети распознаванию различных видов объектов.



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.