Возможности перцептрона Розенблатта

Материал из Викиверситет
Перейти к: навигация, поиск
Эта статья — часть материалов: Факультет искусственного интеллекта

Здесь мы изучаем возможности перцептрона Розенблатта. (Если вы не знаете что это такое, вначале прочитайте статью в Википедии.)

Пример[править]

Имеется 6 образов черно-белых изображений размером 6х6 пикселей.

01 02 03 04 05 06                     01 02 03 04 05 06
07 08 09 10 11 12                     07 08 09 10 11 12
13 14 15 16 17 18   100 - квадрат     13 14 15 16 17 18    400 - бедный квадрат ;(
19 20 21 22 23 24                     19 20 21 22 23 24
25 26 27 28 29 30                     25 26 27 28 29 30
31 32 33 34 35 36                     31 32 33 34 35 
      03 04                                 03 04   
   08 09 10 11                        07 08 09 10 11 12
13 14 15 16 17 18   200 - Гриб        13 14 15 16 17 18    500 - самолётик
19 20 21 22 23 24                     19 20 21 22 23 24
25 26 27 28 29 30                     25 26 27 28 29 30
      33 34                                 33 34 
      03 04                                       05 
      09 10                                    10 11 12
   14 15 16 17      300 - пирамида          15 16 17       600 - стрелка
   20 21 22 23                           20 21 22 
25 26 27 28 29 30                     25 26 27 
31 32 33 34 35 36                     31 32 

Задание №1[править]

Один из вариантов перцептрона для данной задачи

Для упрощения работы в данном примере только точки - 06; 12; 18; 24; 30; 36 будут соединены с А-элементами А1; А2; А3 следующим образом:

06:А1 18:А1 12:А2 30:А2 36:А2 24:А3

Порог всех элементов по умолчанию .

Задача: Рассчитать весовые коэффициенты связей второго слоя (между А-элементами и R-элементом), которые образуются во время обучения двум-трём произвольно выбранным образам.

Частные решения[править]

В решение не подсматриваем, пока не решили сами :) :

Написание соответствующей программы[править]

После обязательного решения в ручную (чтобы прочувствовать задачу) нужно написать программу, которая это делает. Я настойчиво рекомендую язык C# (просто на другом языке, хоть я могу читать любой язык, я смотреть не буду, хотя комментарии могу дать. Просто считаю, что полезным является обучение на одном языке, программы на котором затем можно использовать в более сложных задачах. ) --S.J. 20:57, 29 сентября 2010 (UTC)

Задание №2[править]

Запрограммировать класс "Перцептрон", который умеет распознавать все 6 выше представленных образов (двухмерных). Образ должен считываться из файла. Связи первого слоя (SALink) - теперь задаем случайным образом, число А - элементов увеличиваем до 50 (нестрашно, что это излишнее), число R - элементов = 6 (по числу образов). Дополнительно нужно построить график обучения - число ошибок в зависимости от числа итераций обучения.

Задание №3[править]

  1. Скачайте базу MNIST, содержащую 60000 черно-белых изображений для обучения, и 10000 для экзамена. Изображения размером 21х21 изображают различные рукописные цифры от 0 до 9.
  2. Сделайте программу, которая преобразует строку вида 9:0000111110100000000000001111111110000... в графический файл. 9: - указывает на то, что строка кодирует цифру 9, 0 - белая точка, 1 - черная точка. Выложите сюда несколько произвольных изображений.
  3. Расширьте вашу программу, сделанную в задании №2, так чтобы данные изображения поставлялись перцептрону в виде образов.
  4. Выберите правильную архитектуру перцептрона. Расскажите о ней здесь.
  5. Проведите обучение перцептрона. Постройте графики обучения.
  6. На уже обученном перцептроне проведите экзамен, предложив распознать перцептрону 10000 изображений. Постройте таблицу ошибок для каждой цифры в отдельности и суммарную.

Задание №3a — оптимизация по С.Яковлеву[править]

Как можно видеть после выполнения задания №3, скорость обучения перцептрона в классическом варианте Розенблатта достаточно мала и ее можно оптимизировать. Для этого нужно заметить, что связи первого слоя перцептрона при обучении не изменяются. Если мы располагаем большим объемом памяти, то мы сможем ускорить данный процесс. Нужно просто запомнить массив всех активных А-элементов для каждого образа. В нашем случае получим массив 60000хА, где А - максимальное число активных А-элементов. Запоминать удобнее номера А-элементов. Тогда на второй итерации уже останется только выбрать соответствующие данные из массива.

Задание №3б — оптимизация по С.Яковлеву[править]

Еще более эффективная оптимизации расчетов активации А-элементов описана в первом разделе занятий «Возможности рефрактерного перцептрона».

См. также[править]

Задание №4[править]

Здесь мы попробуем изучить как возможно оптимизировать работу перцептрона с внешними данными. Для этого нам желательно уменьшить, число примеров на которых обучается перцептрон. Это позволит его существенно разгрузить. Но при этом мы не хотим потерять качество распознавания. Подобрать нужные примеры для обучения нам поможет кластерный анализ.

  1. Изучаем основы Кластерный анализ в действии (метод K-средних )
  2. Из 60000 примеров в обучающей выборке задания #3, с помощью кластеризации сокращаем это число ориентировочно вдвое - получим N примеров для обучения
  3. Сравним два варианта:
    1. Для обучения перцептрона используем из 60000 выбрав случайно N примеров, проведем экзамен на 60000+10000 примерах и отметим ошибку
    2. Для обучения перцептрона используем из N примеров полученных ранее с помощью кластерного анализа, проведем экзамен на 60000+10000 примерах и отметим ошибку
  4. Сравним результаты