Скачиваний:
125
Добавлен:
01.05.2014
Размер:
8 Mб
Скачать

Персептроны

Персептроны – один из наиболее простых типов нейронных сетей. Персептрон представляет собой сеть из нейронов со ступенчатой функцией передачи – т.е. нейрон сравнивает сумму взвешенных значений, поступивших на его входы с некоторым порогом и выдает на выход 1, если она превышает порог. В противном случае на выход выдается 0.

Первые модели персептронов были рассмотрены Маккаллокком и Питсом в 1943 году. Позднее, в 60-х годах, Розенблатт доказал теорему об обучении персептронов, суть которой сводится к тезису, что персептрон способен обучиться всему, что может представлять. Благодаря этому персептроны вызвали большой интерес исследователей. Однако вскоре выяснилось, что возможности однослойных персептронов ограничены. Минский проанализировал проблему и показал, что однослойный персептрон способен реализовать только линейно разделимые функции. Так как эффективного способа обучения многослойных сетей в то время не существовало, интерес к персептронам угас.

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

Рисунок 17. Проблема линейной разделимости (Linearly non-separable vectors)

Модель персептрона в пакете MATLAB представлена сетью, состоящей из элементов, выполняющих взвешенное суммирование входов и смещения, а затем передачу его через единичную пороговую функцию.

a1 = hardlim(IW1,1p1 + b1)

Рисунок 18. Персептрон

Создание персептрона осуществляется функцией newp:

net = newp(PR, S);

где PR – матрица из R  2 элементов, содержащая максимальные и минимальные значения входов, а S – число нейронов.

Обработка входных данных сетью осуществляется, как и в других случаях, с помощью функции sim, на вход которой подается сеть и вектора входов, а на выходе получается выход сети для предложенных входных данных:

res = sim(net, p);

где net – сеть, а p – вектор ее входов.

Инициализацию персептрона (установку весов и смещений в начальные значения) можно осуществить с помощью функции init.

Обучение персептрона – это обучение с учителем. Входом алгоритма обучения является обучающая выборка – последовательность пар «вход/выход» сети. После предъявления сети очередной пары производятся следующие действия:

  1. Если фактический и желаемый выход нейрона совпадают, не делать ничего.

  2. Если фактический выход нейрона равен 0, а желаемый равен 1 – прибавить входной вектор к весовому вектору нейрона.

  3. Если фактический выход нейрона равен 1, а желаемый равен 0 – вычесть из весового вектора нейрона входной вектор.

Обобщив это правило и приняв во внимание наличие смещения, можно представить правило обучения следующим образом:

Wnew = Wold + epT

bnew = bold + e

где е = t – a,

W – матрица весов,

p – входной вектор,

t – желаемый выход,

a – действительный выход.

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

Проследить на практике обучение персептрона можно, воспользовавшись примером «Perceptron learning rule» пакета MATLAB. При этом вы сможете задавать классифицируемые множества и выбирать модель нейрона (со смещением или без него).

Рисунок 19. Обучение персептрона (Perceptron learning rule)

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

Соседние файлы в папке lecture8