Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Нейросети.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
284.36 Кб
Скачать

Нейросеть Джордана

Начиная с нейронной сети Джордана, отчет о которой он публикует в 1986 году начинается новый этап в развитии нейронных сетей с обратной связью. Сеть Джордана — вид нейронных сетей, который получается из многослойного перцептрона, если на его вход подать, помимо входного вектора, выходной с задержкой на один или несколько тактов.

В первых рекуррентных сетях главной идеей было дать сети видеть свой выходной образ на предыдущем шаге. У такой сети только часть рецепторов принимает сигналы из окружающего мира, на другие рецепторы приходит выходной образ из предыдущего момента времени. Рассмотрим прохождение последовательности сигналов через сеть. Сигнал поступает на группу рецепторов соединенных с внешним миром (INPUT) и проходит в скрытый слой (HIDDEN). Преобразованный скрытым слоем сигнал пойдет на выходной слой (OUTPUT) и выйдет из сети, а его копия попадет на задержку. Далее в сеть, на рецепторы, воспринимающие внешние сигналы, поступает второй образ, а на контекстную группу рецепторов (CONTEXT) — выходной образ с предыдущего шага из задержки. Далее со всех рецепторов сигнал пойдет в скрытый слой, затем на выходной.

Рис. 4. Схема сети Джордана

Сеть Элмана

Сеть Элмана - частично рекуррентная сеть, подобна сетям Джордана. Разница между сетью Элмана и Джордана в том, что в сети Элмана контекстные нейроны берут вход не от выходных нейронов, а от скрытых. Кроме того, в контекстных нейронах нет никакой прямой обратной связи.

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

Эти сети могут применяться в системах управления движущимися объектами, так как их главной особенностью является запоминание последовательностей.

Рис. 5. Схема сети Элмана

5. Примеры

5.1. Программа распознавания букв русского языка

Разработка алгоритма работы сети

Требуется создать нейросеть, распознающую растровые изображения, содержащие буквы русского языка.

На вход подается битовый массив 30 на 30 в виде растрового изображения. Нейронов должно быть 33 (по количеству букв), у каждого из которых будет 30*30 = 900 входов.

Создаем необходимые нейроны, в которых должны быть определены: имя нейрона, вход, выход, а также место, где нейрон будет хранить свою память; то есть создаем класс "Нейрон" с атрибутами:

- Name - имя;

- Input - входной массив 30 на 30;

- Output - выход нейрона; его решение по задаче;

- Memory - массив 30 на 30, который хранит опыт о предыдущем опыте.

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

Алгоритм прохождения информации по нейронам (n – значение пикселя в памяти нейрона, m – значение пикселя в изучаемой картинке, q - порог):

  1. Изображение с буквой загружается в память первого нейрона;

  2. Нейрон берет первый пиксель и сравнивает его с первым пикселем в памяти (в обоих картинках в пикселе находится значение от 0 до 255);

  3. Сравниваем их разницу с неким порогом (выбирается заранее) - |m-n|>q?;

  4. Если разница меньше порога, то считаем, что пиксели схожи, и добавляем к весу +1;

  5. Процесс проходит по каждому пикселю.

Важно отсечь все белые пиксели, иначе могут возникнуть проблемы во время сравнения весов нейронов, то есть сеть не будет учитывать пиксели, в которых m = 255.

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

Разумеется, первые результаты сети будут далеки от правильных, ведь ее еще нужно обучить. Процесс обучения происходит следующим образом:

n = n + (n+m) div 2; (7)

Т.е. если данная точка в памяти нейрона отсутствует, но учитель говорит, что она есть в этой букве – мы её запоминаем, но не полностью, а только наполовину. С дальнейшим обучением, степень влияния данного урока будет увеличиваться.

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

Граф процессов сети

Упрощенный граф сети выглядит следующим образом:

Последний слой является слоем весов, а также, по сути, выводом работы нейросети. Рассмотрим поподробнее происходящее во втором слое (слое нейронов):