Смекни!
smekni.com

Нейронные сети (стр. 2 из 3)

Он дает на выходе 1 если

и 0 если
. Таким образом, он разбивает пространство входов на две части с помощью некоторой гиперплоскости. Если у нас всего два входа, то это пространство двухмерно и нейрон будет разбивать его с помощью прямой линии. Это разбиение определяется весовыми коэффициентами
нейрона.

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

Рис. 6. Кошка, характеризуемая ее линейными размерами.

Таким образом, такая нейронная сеть пригодна для решения задачи многомерной классификации или распознавания образов. Допустим у нас есть некий объект, имеющий набор свойств

. Это может быть, скажем, кошка, характеризуемая ее линейными размерами. Мы можем подать эти параметры на вход нашей сети и сказать, что определенная комбинация нулей и единиц на выходе соответствует объекту «кошка». Таким образом, наша сеть способна выполнять операцию распознавания.

Рис. 7. Простая задача распознавания – линейно разделимые множества.


Однако очевидно, что не для всякой задачи распознавания, существует однослойная сеть ее решающая. Хорошо, если у нас, например, стоит задача различения кошек и собак, причем распределение точек в пространстве параметров такое, как показано на рисунке, когда достаточно провести одну линию (или гиперплоскость) чтобы разделить эти два множества. Тут достаточно одного нейрона.

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

Рис. 8. Задача распознавания с линейно неразделимыми множествами.


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

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

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

2. Аппроксимация функций.

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

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

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

Как частный случай задачи аппроксимации можно рассмотреть задачу предсказания временных рядов. На вход сети мы подаем некоторое количество предыдущих значений, затем, а на выходе ожидаем получить значение в следующий момент времени.

Мы рассмотрели некоторые возможности только многослойных сетей прямого распространения. Ясно, что они могут практически все, что угодно. Возникает вопрос, как подобрать такие весовые коэффициенты, чтобы сеть решала задачу распознавания или аппроксимировала некоторую функцию? Замечательное свойство нейронных сетей состоит в том, что их этому можно научить.

Алгоритмы обучения бывают 3-х видов:

Обучение с учителем. При этом сети предъявляется набор обучающих примеров. Каждый обучающий пример представляют собой пару: вектор входных значений и желаемый выход сети. Скажем, для обучения предсказанию временных рядов это может быть набор нескольких последовательных значений ряда и известное значение в следующий момент времени. В ходе обучения весовые коэффициенты подбираются таким образом, чтобы по этим входам давать выходы максимально близкие к правильным.

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

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

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

. Через Y обозначим реальное выходное значение нашей сети, которое в начале практически случайно из-за случайности весовых коэффициентов.

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

(6)

где

реальный выход N-го выходного слоя сети для p-го нейрона на j-м обучающем примере,
желаемый выход. То есть, минимизировав такой функционал, мы получим решение по методу наименьших квадратов.

Поскольку весовые коэффициенты в зависимость

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

(7)

где

весовой коэффициент j-го нейрона n-го слоя для связи с i-м нейроном (n-1) - го слоя. Параметр
называется параметром скорости обучения.

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

(8)

где

- выход, а
- взвешенная сума входов j-го нейрона n-го слоя. Заметим, что, зная функцию активации, мы можем вычислить
. Например, для сигмоида в соответствии с формулой (5) эта величина будет равняться

. (9)

Третий сомножитель

/
есть ни что иное, как выход i-го нейрона (n-1) - го слоя, то есть

. (10)

Частные производные целевой функции по весам нейронов выходного слоя теперь можно легко вычислить. Производя дифференцирование (6) по

и учитывая (8) и (10) будем иметь

(11)

Введем обозначение

. (12)

Тогда для нейронов выходного слоя

. (13)

Для весовых коэффициентов нейронов внутренних слоев мы не можем сразу записать, чему равен 1-й сомножитель из (9), однако его можно представить следующим образом: