
- •Нейронные сети в пакете matlab План
- •Введение
- •Модель нейрона
- •Модель нейронной сети
- •Персептроны
- •Адаптивные линейные фильтры
- •Обратное распространение
- •Другие типы сетей Радиально базисные сети
- •Самоорганизующиеся сети
- •Квантизация обучающих векторов (lvq)
- •Рекуррентные сети
- •Сети Элмана
- •Сети Хопфилда
- •Создание пользовательских расширений
- •Литература:
Персептроны
Персептроны – один из наиболее простых типов нейронных сетей. Персептрон представляет собой сеть из нейронов со ступенчатой функцией передачи – т.е. нейрон сравнивает сумму взвешенных значений, поступивших на его входы с некоторым порогом и выдает на выход 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.
Обучение персептрона – это обучение с учителем. Входом алгоритма обучения является обучающая выборка – последовательность пар «вход/выход» сети. После предъявления сети очередной пары производятся следующие действия:
Если фактический и желаемый выход нейрона совпадают, не делать ничего.
Если фактический выход нейрона равен 0, а желаемый равен 1 – прибавить входной вектор к весовому вектору нейрона.
Если фактический выход нейрона равен 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)
В случае, если обучающее множество выбрано хорошо, персептрон будет способен правильно реагировать и на искаженных входные образы. Алгоритм обучения персептрона гарантированно сходится за конечное число шагов для входных множеств, которые персептрон способен представлять. Следует еще раз заметить, что обучаемость персептронной сети ограничена ее представимостью, и в случае, когда распознаваемые образы не являются заведомо линейно разделимыми, следует либо обратиться к многослойным персептронам, либо использовать другой тип сетей.