23 September 2008

Нейронные сети: Лекция 2 (+пример на РНР).

Artificial Intelligence
Совокупность нейронов соединённых тем или иным способом называется искусственной нейронной сетью или просто нейронной сетью.
Закон по которому нейроны соединены в сеть носит название структуры или топологией сети.

Множество нейронов не соединённых между собой, но соедененные с другими нейронами носит название слоя нейрона.
Сети бывают 2х видов: однослойные, многослойные.

Простой перцептрон


Простой перцептрон состоит из 1го нейрона (один слой) с n входами и пороговой функции активации

Поскольку выходами сети является +1 или -1. То перцептрон эффективен для решение задачи классификации 2х классов.


Если выход +1, то поданный на вход вектор принадлежит к I-классу, иначе — II классу.

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

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

Общий вид обучающего вектора: ( x1, x2, ..., Xn, {+1, -1}).

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

Вектора обучающей выборки подаются на вход сети и в соответствии с поданными векторами меняются веса Wi, i=1,n в ходе процедуры обучения.

Для простого перцептрона процедура выглядит следующим образом.
  1. Подаем на вход компоненты 1й части вектора обучающей выборки Xp = (X1p, ..., Xnp), p=1,P. P — индекс вектора обучающей выборки. На этой стадии считается выход y = (Xp).
  2. Сравниваем выход сети с желаемым значением.
    y(xp)? d(xp),
    — d(xp) — желаемое значение
    — y(xp) — значение сети
    Если y(xp) == d(xp) (как и надо), то p=p+1, переходим на шаг1.
    Иначе — шаг 3.
  3. Новое значение i-веса: Wi(t) = Wi(t-1) + d(Xp)*Xi.
    p=p+1, шаг 1


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

Теорема сходимости (Новикова):
Если существует набор весов W* способный разделить 2 класса с помощью простого перцептрона, то предложенный алгоритм сходится к некому решению не обязательно совпадающего с W*, причем сходится за конечное число шагов.

Доказательство.
В силу использовании функции sign в определении нейрона мы можем считать ||W*||=1.
Введем в рассмотрение косинус угла между текущим значением набора весов и W*.

cos угол = (W, W*)/||W||.

(1) (W(t+1), W*) = (W(t), W*) + d(X)*(X, W*).
Поскольку W* является точным решением, то |(W*, X)|>=delta>0.

Коль скоро происходит процедура обучения, то текущий набор векторов W(t) неправильно осуществляет классификацию для текущего вектора X, а значит величина d(x)*(x,W*) = |(X,W*)|, а потому имеем (1) >= (W(t), W*)+delta.

|| W(t+1) || **2 = ||W(t)||**2 + ||X||**2 + 2d(X)*(x,w(t)).

В силу той же логики, коль скоро происходит обучение, то знаки d(x)*(X,W(T))<0 < W2+M2.

Где М — радиус n-мерного шара, внутри которого располагаются все вектора обучающей выборки.
Их конечное число, следовательно такой шар существует.

После t-шагов, имеем неравенство.
(1) > (W(0), W*)+tdelta.

||W(t+1)|| < ((W2(0)+tM2))1/2

Следовательно cos угла -> +inf.

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

Доказано.

Замечания 1: Если положить W(0) = 0, то из равенства косинуса tmax = M2/Delta.
Очевидно, что tmax здесь чем больше разброс векторов выборки и тем больше, чем меньше расстояние между классами.

Замечание 2: Существенно важно при формировании существования W*.
Если классы неразделимы, то простого перцептрона не хватит для решения задачи.


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

UPD Пример реализующие простой перцептрон.
Написано на РНР5.
В примере уже дана сетка весов.
Перцептрон отвечает что дали на вход, квадрат или пряму…

Дабы не захламлять примером, вынес отдельным архивом.
Или посмотреть здесь.
Tags:нейронные сети
Hubs: Artificial Intelligence
+23
24.1k 125
Comments 92
Top of the last 24 hours