Совокупность нейронов соединённых тем или иным способом называется искусственной нейронной сетью или просто нейронной сетью.
Закон по которому нейроны соединены в сеть носит название структуры или топологией сети.
Множество нейронов не соединённых между собой, но соедененные с другими нейронами носит название слоя нейрона.
Сети бывают 2х видов: однослойные, многослойные.
Простой перцептрон состоит из 1го нейрона (один слой) с n входами и пороговой функции активации
Поскольку выходами сети является +1 или -1. То перцептрон эффективен для решение задачи классификации 2х классов.
Если выход +1, то поданный на вход вектор принадлежит к I-классу, иначе — II классу.
Вначале на 0-шаге обучения, веса входа перцептрона задаются случайным образом.
Суть обучения состоит в изменение весов.
Для осуществления процедуры обучения для всякой нейронной сети в том числе и для простого перцептрона до начала формируется обучающая выборка состоящая из векторов, которые называются обучающими векторами, причем каждый обучающий вектор состоит их 2х частей:
Общий вид обучающего вектора: ( x1, x2, ..., Xn, {+1, -1}).
Вообще говоря, вторая часть может быть пустой, в этом случае говорят, что обучение происходит без учителя.
Если есть — с учителем.
Вектора обучающей выборки подаются на вход сети и в соответствии с поданными векторами меняются веса Wi, i=1,n в ходе процедуры обучения.
Для простого перцептрона процедура выглядит следующим образом.
Вообще говоря процедура завершена, если все вектора прошли.
Возможны 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.
В примере уже дана сетка весов.
Перцептрон отвечает что дали на вход, квадрат или пряму…
Дабы не захламлять примером, вынес отдельным архивом.
Или посмотреть здесь.
Закон по которому нейроны соединены в сеть носит название структуры или топологией сети.
Множество нейронов не соединённых между собой, но соедененные с другими нейронами носит название слоя нейрона.
Сети бывают 2х видов: однослойные, многослойные.
Простой перцептрон
Простой перцептрон состоит из 1го нейрона (один слой) с n входами и пороговой функции активации
Поскольку выходами сети является +1 или -1. То перцептрон эффективен для решение задачи классификации 2х классов.
Если выход +1, то поданный на вход вектор принадлежит к I-классу, иначе — II классу.
Вначале на 0-шаге обучения, веса входа перцептрона задаются случайным образом.
Суть обучения состоит в изменение весов.
Для осуществления процедуры обучения для всякой нейронной сети в том числе и для простого перцептрона до начала формируется обучающая выборка состоящая из векторов, которые называются обучающими векторами, причем каждый обучающий вектор состоит их 2х частей:
- Те значения, которые подаются на вход
- То, что должно быть с нашей точки зрения на выходе сети когда на вход сети поданы компоненты из 1й части
Общий вид обучающего вектора: ( x1, x2, ..., Xn, {+1, -1}).
Вообще говоря, вторая часть может быть пустой, в этом случае говорят, что обучение происходит без учителя.
Если есть — с учителем.
Вектора обучающей выборки подаются на вход сети и в соответствии с поданными векторами меняются веса Wi, i=1,n в ходе процедуры обучения.
Для простого перцептрона процедура выглядит следующим образом.
- Подаем на вход компоненты 1й части вектора обучающей выборки Xp = (X1p, ..., Xnp), p=1,P. P — индекс вектора обучающей выборки. На этой стадии считается выход y = (Xp).
- Сравниваем выход сети с желаемым значением.
y(xp)? d(xp),
— d(xp) — желаемое значение
— y(xp) — значение сети
Если y(xp) == d(xp) (как и надо), то p=p+1, переходим на шаг1.
Иначе — шаг 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.
В примере уже дана сетка весов.
Перцептрон отвечает что дали на вход, квадрат или пряму…
Дабы не захламлять примером, вынес отдельным архивом.
Или посмотреть здесь.