Перейти к содержанию

Возможности перцептрона Розенблатта/Решение для "стрелка" и "самолётик"

Материал из Викиверситета

Детальные инструкции

[править]

Вначале нужно:

  1. Изображение нашего перцептрона
  2. Заполнить таблицу исходных данных входы-выходы.
  3. Рассчитать w:A-матрица перцептрона


Вход 1 (X1) Вход 2 (X2) Вход 3 (X3) Вход 4 (X4) Вход 5 (X5) Вход 6 (X6) Выход
Стимул 1 (стрелка)
Стимул 2 (самолетик)


Подсказка: дело в том, что перцептрон описывает только битами, если у нас один выходной элемент R, то выход 0 будет скажем "стрелка", а 1 - "самолетик". Теперь коррекция весов делается если произошла ошибка на выходе, вместо 0 получили 1, или наоборот. Делается так, +1 к весу всех активных А-элементов, если на выходе нужна 1, и -1 если на выходе нужно 0.

Ход решения

[править]

Рисунок и входы-выходы

[править]
Вариант студента
Сравните ваш и мой рисунок, у вас не хватает весовых коэффициентов, и у вас лишние входы и связи, и ЕЩЕ выход тоже должен быть один (для нашего примера)


  • Уже кое что. Но рисунок не правильный. Входов так много нету, от того, что мы подаем два образа, число входов не увеличивается подаем на те же самые. Т.е. половину входов и их связей с рисунка удаляйте. Далее каждая связь между точками имеет свой вес, для первого слоя выбирается случайно +1 или -1. Поэтому задайте их на рисунке ! Для второго слоя будем искать, но вначале они =0.

Вопрос студента: не понятно каким принципом придаётся +1 или -1. Зачем? Не могу понять как ставится +1 или на что нужно основываться?

Постарался усовершенствовать
Уже хорошо. +1 и -1 - это т.н. возбуждающие и тормозящие связи (чтобы определить возбужден ли А-элемент, надо сложить все связи, которые были активированы входами, если будет +1 и -1, то даже при наличии входов реакции не будет! это позволяет избавляться от чрезмерной активности на входах, а в А-элементах среднее стабильная активация. каким принципом? - в первом слое случайность), если были бы только +1 то более сложные примеры не могли бы решится. Но данный пример простой, поэтому пускай будут все +1.


Вход 1 Вход 2 Вход 3 Вход 4 Вход 5 Вход 6 Выход
Стимул 1 (стрелка) 0 1 0 0 0 0 0
Стимул 2 (самолетик) 0 1 1 1 1 0 1

А - матрица

[править]

Студент: Получается что А* будет равна суммированию умноженных (ради упрощения решения и только в данном задаче) на +1 входов (Х1,Х2,Х3...), и в одной строчке этой матрицы значений должно быть столько сколько используется А-элем. в перцепртроне, а стимулы в данный момент это фигурки? У меня выходят большие числа, превышающие 2 и 3, да и сама формула

 ;

тоже немного удлиняется, и не выглядит такой короткой как тут, это нормально?

Типа того, w - все будут 1. Стимулы - это фигурки. числа, привышающие 2 и 3 это нормально для A*, не забудьте перейти к A, там только 0 и 1. Порог по умолчанию , вы не теряйтесь - показывайте ход вашего решения, и если нужно поправим.

 ;

 ;

,

где элемент матрицы A*;

.

Студент: Что не так?
Вы уверены, что Стимул №1 - у Вас стрелка ? (перепутано). Откуда начинаете нумеровать А элементы сверху вниз ? Откуда взялись -1 если мы договорились, что все веса +1 ? Правильный ответ (найдите свою ошибку, и поясните в чем она была):

.

совсем забыл про плюсы .. Если повсюду ставить +1 то во втором стимуле что-то изменится, но в первом (стрелка, где активным является только один вход, а остольные 0) как не складываю всё-равно в порядке А сверху вниз получается (1.1.1). В самолётике (4.4.4) и в итоге =

. Что-то у меня явно не так как надо..

Вы подумайте чисто логически, стрелка "зажигает" только один S2 элемент, от него есть только одна связь к A2, который и активируется. Как же у вас активируются и A1 и A3 ? Вы складываете нули и получаете 1 :) ((4.4.4) - тоже не верно)
О !!! Я понял почему Вы ошибаетесь, там где нет связи нужно умножать не на -1, и не на +1, а на ноль.
упс, теперь кажется дошло что значит формула и как она работает... Пытаясь разобрать эти минусы и плюсы совсем забыл про логику.. :D Позже для полного усвоения постараюсь написать А-матрицу других фигур а пока полностью соглашусь что .
Но это чисто логически, а как это должно выглядеть по формуле?

 ;

 ; Так?

Вот теперь правильно. Но надеюсь Вы не забыли, что это только подготовка, а найти нужно весовые коэффициенты второго слоя.

Весовые коэффициенты второго слоя

[править]

Теперь отталкиваемся от матрицы А, и по той же самой логике определяем, что на выходе R, когда подаем стрелку - дает 0, ошибки нет, подаем второй стимул самолетик - ошибка, как изменятся весовые коэффициенты w1, w2 и w3 ?

Теоритически: показываем перцептрону объект первого класса. При этом некоторые A-элементы возбудятся. Коэффициенты , соответствующие этим возбуждённым элементам, увеличиваем на 1.


Веса Итерации
1 2 3 4
w1 0 1 1 х х х х х
w2 0 1 0 х х х х х
w3 0 1 1 х х х х х
№ стимула 1 2 1 2 1 2 1 2
вновь ничего не понял... Как туда вставить полученные коэффициенты и каким методом их уровнять или применить ту теорию?
Вначале размерность, у нас только два стимула. Показываем стрелку - ошибки нет веса не изменяются. Следующий столбик, показываем самолетик, на выходе 0 вместо 1, как изменятся веса ?
Как я понял моя проблема состоит в том что я не знаю весовых коэффициентов Р, так как не посчитал их.. :D Наверно именно это заставило меня подумать от куда взялось три нуля и вообще откуда взялись эти w1,w2,w3.. Но как их собственно получить? тем же способом у меня как-то не получается ?
Эти w1,w2,w3 - это связи между A1-R, A2-R, A3-R. Вначале они нули. Первый стимул ничего не меняет - ответ правильный коррекции нет. Далее читаем : При этом некоторые A-элементы возбудятся. Коэффициенты , соответствующие этим возбуждённым элементам, увеличиваем на 1., сколько будет ? Какие А-элементы возбудились при втором стимуле мы знаем из А-матрицы ...
Я понимаю всё что там написано, но три нуля, они меня убивают... Я два дня бился головой об стенку чтобы достать от куда-то 0.1.0 и 1.1.1, после ещё один день чтобы понять от куда я их достал.. В это время вы утверждаете что там должно быть три нуля.. как? от куда? 2 входа, 3 "А" один выход он даёт два сигнала если правильно распределить весы.. веса +1 0 и -1 мы используем только +1, чтобы что? и тогда как можно использовать -1? Меня путают три нуля, если от первого стимула которым я считал 0.1.0 получился 0.0.0. то что получится от 1.1.1. или почему если изменился первый стимул также может не изменится второй.. При этом некоторые A-элементы возбудятся. Коэффициенты , соответствующие этим возбуждённым элементам, увеличиваем на 1. Но тут только нули, которые как видно идут от первого стимула, и не одного "возбуждённого элемента" как видно они равны нулю а значит в состоянии покоя. Тогда что увеличивать? Или увеличить все сразу записав их в первом стимуле второй колонки? Но тогда что делать в следующих 2 колонках и как поступать со вторым стимулом, представления о котором вообще пока что не имею...
первый слой мы УЖЕ рассчитали, НЕ ПУТАЙТЕ его сюда. Мы сейчас считаем ВТОРОЙ слой. Вначале там нету связей - нули! Затем мы их изменяем, чтобы получить требуемый нам выход. Я написал ответ. Второй стимул активировал все А-элементы (теперь А-элементы являются входами), значит к тому чтобы было (нулям) прибавляем 1, получаем все единицы, идем на вторую итерацию, снова показываем первый стимул - получаем ошибку - на выходе дает 1, а нужно ноль, активирован только второй А элемент - уменьшаем вес на единицу. Ответ получен, теперь на первый стимул - выход 0, на второй 1.
Но тут только нули, которые как видно идут от первого стимула, и не одного "возбуждённого элемента" как видно они равны нулю а значит в состоянии покоя. - ВОТ грубая ошибка, смотрите на А-матрицу , как это не одного возбужденного элемента ? Там что в А-матрице есть строка из нулей !?
а почему итерации четыре? И почему единицы добавили к w1, w3 а к w2 не добавили? Если мы уже имеем на выходе 0 и 1, то что делать с оставшимися столбиками?
Число итераций не известно - до отсутствия ошибок, 4 - это просто заготовка места. Вы не внимательны, вначале единицы добавили ко всем, а лишь затем отняли от w2.
теперь кажется всё понятно.. Хотелось бы как-нибудь закрепить материал.