1.2. Сигмоидальный нейрон

advertisement
МОДЕЛИ НЕЙРОНОВ И МЕТОДЫ ИХ ОБУЧЕНИЯ
1. Задача линейного разделения классов
1.1.Персептрон
Простой
персептрон
–
это
модель
МакКаллока-Питса
(рис.1).
Весовые
коэффициенты входов сумматора, на которые подаются входные сигналы
обозначаются w j , а пороговое значение - w0 . Нелинейная
xj ,
функция активации
персептрона является ступенчатой, вследствие чего выходной сигнал нейрона может
принимать только два значения – 0 и 1 в соответствии с правилом
1 для u  0,
y (u )  
,
0 для u  0,
 1 для u  0,
или y (u )  
1 для u  0.
где u обозначает выходной сигнал сумматора
N
u   wj x j .
j 0
Обучение персептрона требует наличия учителя и состоит в таком подборе весов
w j , чтобы выходной сигнал y был наиболее близок к заданному значению d .
1
x1
w0
w1
u
w2
x2
+
...
xN
wN
Рис.1. Нейрон МакКаллока-Питса
y
С персептроном связана задача четкого разделения двух классов по обучающей
выборке, которая ставится следующим образом: имеется два набора векторов X 1,..., X n и
Y 1,...,Y m . Заранее известно, что X i относится к первому классу, а Y i - ко второму.
Требуется построить решающее правило, т.е. определить такую функцию f ( X ) , что при
f ( X )  0 вектор X относится к первому классу, а при f ( X )  0 - ко второму.
Линейное разделение классов состоит в построении линейного решающего
правила, т.е. такого вектора w  ( w0 ,..., wn ) , w0 - порог, что при wx  0 вектор x относится
к первому классу, а при wx  0 - ко второму.
Разделение центров масс – простейший способ построения решающего правила.
Суть этого способа заключается в вычислении вектора весов персептрона по следующей
формуле
w


n
m
1
i
i
 X  Y .
i 1
n  m i 1
Линейные решающие правила, построенные на основании разделения центров
масс, могут ошибаться на примерах из обучающей выборки даже в тех случаях, когда
возможно и безошибочное линейное разделение. Однако метод центров масс полезен как
средство определения начального значения вектора весов для алгоритма обучения
персептрона:
1. При изначально заданных значениях весов wij на вход нейрона подается
обучающий вектор x и рассчитывается значение выходного сигнала yi . По результатам
сравнения y с d уточняются значения весов.
2. Если y  d , то w j не изменяются.
3. Если y  0 , а d  1, то значения весов уточняются по формуле
w j (t  1)  w j (t )   x j ,
где t - номер предыдущего цикла, 0    1  коэффициент обучения.
4. Если y  1, а d  0 , то значения весов уточняются по формуле
w j (t  1)  w j (t )   x j .
По завершении уточнения весовых коэффициентов представляются очередной
обучающий вектор x и связанное с ним ожидаемое значение d , и значения весов
уточняются заново. Этот процесс многократно повторяется на всех обучающих выборках,
пока
не
будут
минимизированы
различия
между
всеми
значениями
y
и
соответствующими им ожидаемыми значениями d .
1.2. Сигмоидальный нейрон
Нейрон сигмоидального типа имеет структуру, подобную модели МакКаллокаПитса, с той разницей, что функция активации является непрерывной и может быть
выражена в виде сигмоидальной униполярной или биполярной функции. Униполярная
функция, как правило, представляется формулой
f ( x) 
1
,
1  e  x
тогда как биполярная функция задается в виде
f ( x)  tanh(  x) .
Параметр  влияет на крутизну графика функции
f ( x) . При   
сигмоидальная функция превращается в функцию ступенчатого типа, идентичную
функции активации персептрона. На практике чаще всего используется значение
  1.
Важным
свойством
сигмоидальной
функции
является
ее
дифференцируемость. Для униполярной функции имеем
df ( x)
  f ( x)(1  f ( x))
dx
тогда как для биполярной функции
df ( x)
  (1  f 2 ( x)) .
dx
Применение непрерывной функции активации позволяет использовать при
обучении градиентные методы. Проще всего реализовать метод наискорейшего спуска,
в соответствии с которым уточнение вектора весов w   w0 , w1 ,..., wN  проводится в
T
направлении отрицательного градиента целевой функции
 N

y  f (u )  f   w j x j  . Компонента градиента имеет вид
 j 0

jE 
dE
df (u )
,
 e xj
dw j
du
E
1
( y  d ) 2 , где
2
где e  y  d
означает разницу между фактическим и ожидаемым значением
выходного сигнала нейрона. Если ввести обозначение   e
df (u )
, то можно
du
получить выражение, определяющее j -ю составляющую градиента в виде
 jE   xj .
Значения весовых коэффициентов уточняются по формуле
w j (t  1)  w j (t )   x j ,
где   (0,1) .
Применение градиентного метода для обучения нейрона гарантирует достижение
только локального минимума. Для выхода из окрестности локального минимума
результативным может оказаться обучение с моментом. В этом методе процесс
уточнения весов определяется не только информацией о градиенте функции, но и
предыдущим изменением весов. Подобный способ может быть задан выражением
w j (t  1)   x j  w j (t ) ,
в котором первый член соответствует обычному методу наискорейшего спуска, тогда как
второй член, называемый моментом, отражает последнее изменение весов и не зависит от
фактического значения градиента. Значение  выбирается из интервала (0,1) .
1.3. Модель нейрона Хебба
Структурная схема нейрона Хебба соответствует стандартной форме модели
нейрона (рис.1). Д.Хебб предложил формальное правило, в котором вес wi j связи нейрона
i с нейроном j изменяется пропорционально произведению их выходных сигналов
wij   yi y j ,
где   (0,1) - коэффициент обучения.
При обучении с учителем вместо выходного сигнала y j используется ожидаемая от
этого нейрона реакция d j . В этом случае правило Хебба записывается в виде
wij   yi d j .
В каждом цикле обучения происходит суммирование текущего значения веса и его
приращения wij :
wij (t  1)  wij (t )  wij .
В результате применения правила Хебба веса нейрона могут принимать
произвольно большие значения. Один из способов стабилизации процесса обучения по
правилу Хебба состоит в учете последнего значения wij , уменьшенного на коэффициент
забывания  . При этом правило Хебба представляется в виде
wij (t  1)  wij (t )(1   )  wij .
Значение  выбирается из интервала (0,1) и чаще всего составляет некоторый
процент от коэффициента обучения  . Рекомендуемые значения коэффициента
забывания   0.1 , при которых нейрон сохраняет большую часть информации,
накопленной в процессе обучения, и получает возможность стабилизировать значения
весов на определенном уровне.
2. Аппроксимация функций
2.1. Аппроксимация линейных функций. Нейрон типа «адалайн»
В нейроне типа «адалайн» (ADAptive LInear Neuron – адаптивный линейный
нейрон) адаптивный подбор весовых коэффициентов осуществляется в процессе
минимизации квадратичной ошибки, определяемой как
2
1
1
N

E ( w)  e2  d    w j x j  .
2
2
 j 0

В связи с выполнением условия дифференцируемости целевой функции стало
возможным
применение
алгоритма
градиентного
обучения.
Значения
весовых
коэффициентов уточняются следующим способом
w j (t  1)  w j (t )   e x j .
2.2. Паде-нейрон
Паде-нейрон вычисляет произвольную дробно-линейную функцию вектора x . Так
же как и для адаптивного сумматора, числитель и знаменатель можно сделать линейными
функциями x :
N
N
i 0
i 0
Ux / Lx , Ux   Ui xi , Lx   Li xi .
Паде-нейрон может использоваться как обобщение нейрона типа «адалайн» в тех
случаях, когда линейных функций становится недостаточно, в частности в задачах
интерполяции эмпирических зависимостей.
В случае Паде-нейрона квадратичная ошибка определяется как
E (U , L) 
1 2 1
2
e   d  Ux / Lx 
2
2
и значения весовых коэффициентов уточняются по следующим формулам
U j (t  1)  U j (t )   e
xj
N
 Lk xk
,
k 0
xj
N
L j (t  1)  L j (t )   e (  U k xk )
k 0
N
(  Lk xk ) 2
.
k 0
2.3. Нейрон с квадратичным сумматором
Квадратичный сумматор может вычислять произвольный полином второго порядка
от вектора входных сигналов
Q ( x )   qij xi x j   pi xi  r .
i, j
i
Для многомерных нормальных распределений нейрон с квадратичным сумматором
является наилучшим классификатором. Минимум вероятности ошибки дает квадратичная
разделяющая поверхность:
если Q ( x )  0 , то объект принадлежит первому классу;
если Q ( x )  0 , то объект принадлежит второму классу (при условии правильного
выбора коэффициентов Q ( x ) ).
Квадратичная ошибка здесь определяется как
E (q jk , p j , r ) 
1 2 1
2
e   d  Q( x)  .
2
2
Коэффициенты квадратичного сумматора уточняются по формулам
q jk (t  1)  q jk (t )  2 ex j xk ,
p j (t  1)  p j (t )   ex j ,
r (t  1)  r (t )   e .
Недостаток такого классификатора – большое число настраиваемых параметров.
3. Нейроны типа WTA. Самообучение нейронов.
Нейроны типа WTA (Winner Takes All – Победитель получает все) имеют входной
модуль в виде адаптивного сумматора. Выходной сигнал i -го сумматора определяется по
формуле
N
ui   wij x j .
j 0
По
результатам
сравнения
ui , i  1,2,..., N отдельных
сигналов
нейронов
победителем признается нейрон, у которого ui оказалось наибольшим. Нейрон-победитель
вырабатывает на своем выходе состояние 1, а остальные (проигравшие) нейроны
переходят в состояние 0.
Для обучения нейронов WTA учитель не требуется. На начальном этапе случайным
образом выбираются весовые коэффициенты wij каждого нейрона, нормализуемые
относительно 1 по формуле
wij 
После подачи входного вектора
wij
w  wi22  ...  wiN2
2
i1
.
x , компоненты которого нормализованы по
формуле
xi 
xi
x12  x22  ...  xN2
,
определяется победитель этапа. Победитель переходит в состояние 1, что позволяет
произвести уточнение весов его входных линий wij по правилу
wij (t  1)  wij (t )   [ x j  wij (t )] .
Проигравшие нейроны формируют на своих выходах состояние 0, что блокирует
процесс уточнения их весовых коэффициентов.
Выходной сигнал i -го нейрона может быть описан векторным отношением
ui  wT x  w x cosi .
Поскольку w  x  1 , значение ui определяется углом между векторами x и w ,
ui  cos i . Поэтому победителем оказывается нейрон, вектор весов которого оказывается
наиболее близким текущему обучающему вектору x . В результате победы нейрона
уточняются его весовые коэффициенты, значения которых приближаются к значениям
текущего обучающего вектора x .
Следствием
конкуренции
нейронов
становится
самоорганизация
процесса
обучения. Нейроны уточняют свои веса таким образом, что при предъявлении группы
близких по значениям входных векторов победителем всегда оказывается один и тот же
нейрон. Системы такого типа чаще всего применяются для классификации векторов.
Пример 1: Распознавание символов методом центров масс.
Ниже представлена программа на языке системы математического моделирования
MATLAB, описывающая решение простейшей задачи разбиения векторов на два класса
методом центров масс. В качестве входных векторов нейрона рассматриваются двоичные
векторы размерности 63, полученные из изображений букв А и В размером 7  9 пикселей.
Согласно методу центров масс, весовой вектор нейрона, различающего эти две буквы,
вычисляется по формуле
w
A B
,
2
где A - вектор, задающий букву А, B - вектор, задающий букву B. В результате, для
буквы А нейрон дает выходной сигнал, равный 1, а для буквы B – выходной сигнал,
равный –1.
function center
% СЧИТЫВАНИЕ ИЗОБРАЖЕНИЯ БУКВЫ А
A=imread('A.bmp');
% ВЫВОД ИЗОБРАЖЕНИЯ
subplot(1,2,1);
imshow(A)
% СЧИТЫВАНИЕ ИЗОБРАЖЕНИЯ БУКВЫ B
B=imread('B.bmp');
% ВЫВОД ИЗОБРАЖЕНИЯ
subplot(1,2,2);
imshow(B)
% РАСЧЕТ ВЕСОВЫХ КОЭФФИЦИЕНТОВ МЕТОДОМ ЦЕНТРОВ МАСС
W=(double(A)-double(B))/2;
% ТЕСТИРОВАНИЕ НЕЙРОНА
S=sum(sum(W.*double(A)));
yA=sgn(S)
S=sum(sum(W.*double(B)));
yB=sgn(S)
%----------------------------------------------------% ФУНКЦИЯ АКТИВАЦИИ НЕЙРОНА
function y=sgn(x)
if (x>=0)
y=1;
else
y=-1;
end
Пример 2. Обучение персептрона распознаванию букв (класс1) и цифр (класс 2)
function perceptron
% СЧИТЫВАНИЕ ИЗОБРАЖЕНИЙ
L(:,:,1)=imread('A.bmp');
L(:,:,2)=imread('B.bmp');
L(:,:,3)=imread('C.bmp');
L(:,:,4)=imread('D.bmp');
D(:,:,1)=imread('0.bmp');
D(:,:,2)=imread('1.bmp');
D(:,:,3)=imread('2.bmp');
D(:,:,4)=imread('3.bmp');
%ВЫВОД ИЗОБРАЖЕНИЙ
subplot(2,4,1); imshow(L(:,:,1));
subplot(2,4,2); imshow(L(:,:,2));
subplot(2,4,3); imshow(L(:,:,3));
subplot(2,4,4); imshow(L(:,:,4));
subplot(2,4,5);
subplot(2,4,6);
subplot(2,4,7);
subplot(2,4,8);
imshow(D(:,:,1));
imshow(D(:,:,2));
imshow(D(:,:,3));
imshow(D(:,:,4));
%МЕТОД ЦЕНТРОВ МАСС
% расчет вектора весовых коэффициентов
W=0;
for i=1:4
W=W+double(L(:,:,i))-double(D(:,:,i));
end
W=W/8
% тестирование нейрона на изображениях букв
for i=1:4
S=sum(sum(W.*double(L(:,:,i))));
yL(i)=sgn(S);
end
yL
% тестирование нейрона на изображениях цифр
for i=1:4
S=sum(sum(W.*double(D(:,:,i))));
yD(i)=sgn(S);
end
yD
%АЛГОРИТМ ОБУЧЕНИЕ ПЕРСЕПТРОНА
training=1;
epoch=0; % число итераций
while (training > 0)
% этап обучения
training=0;
epoch=epoch+1;
alpha=1/epoch; % коэффициент обучения
for i=1:4
delta=(1-yL(i));
if (delta~=0)
training=1;
W=W+alpha*delta*double(L(:,:,i));
end
delta=(-1-yD(i));
if (delta~=0)
training=1;
W=W+alpha*delta*double(D(:,:,i));
end
end
W % вывод весовых коэффициентов
%этап тестирования
% тестирование на буквах
for i=1:4
S=sum(sum(W.*double(L(:,:,i))));
yL(i)=sgn(S);
end
yL
% тестирование на цифрах
for i=1:4
S=sum(sum(W.*double(D(:,:,i))));
yD(i)=sgn(S);
end
yD
end % of while
epoch % число итераций
%------------------------------------------% ФУНКЦИЯ АКТИВАЦИИ НЕЙРОНА
function y=sgn(x)
if (x>0)
y=1;
else
y=-1;
end
ВАРИАНТЫ ЗАДАНИЙ
В системе моделирования MATLAB реализовать следующие модели нейронов:
1) Персептрон. Решить задачу линейного разделения входных данных на два
класса (класс букв и класс цифр) обучением по всему задачнику при значениях
 1 1 1
коэффициента обучения   
, , 2  , где n  номер итерации.
 n n n 
2) Сигмоидальный нейрон с униполярной функцией активации. Методом
наискорейшего спуска решить задачу линейного разделения входных данных на
два класса: класс букв и класс цифр. Обучать по отдельным примерам.
3) Сигмоидальный нейрон с униполярной функцией активации. Методом
наискорейшего спуска решить задачу линейного разделения входных данных на
два класса: класс букв и класс цифр. Обучать по всему задачнику.
4) Сигмоидальный нейрон с биполярной функцией активации. Методом обучения
с моментом решить задачу линейного разделения классов. Обучать по
отдельным примерам.
5) Сигмоидальный нейрон с биполярной функцией активации. Методом обучения
с моментом решить задачу линейного разделения классов. Обучать по всему
задачнику.
6) Нейрон Хебба. Решить задачу линейного разделения классов. Обучать по
отдельным примерам.
7) Нейрон Хебба. Решить задачу линейного разделения классов. Обучать по всему
задачнику.
8) Пусть для некоторого набора действительных чисел
x1 ,..., xn определены
значения функции f ( x1 )  f1 ,..., f ( xn )  f n . Требуется построить наилучшую
линейную аппроксимацию g  w1 x  w0 функции f , т.е. найти такой вектор
w   w0 , w1  , чтобы приближение давало наименьшую ошибку. Решить задачу
аппроксимации линейной функции нейроном типа «адалайн».
9) Паде-нейрон. Решить задачу аппроксимации функции sin( x ),0  x 
10) Паде-нейрон. Решить задачу аппроксимации функции cos( x), 0  x 

2

2
.
.
11) Нейрон
с
квадратичным
сумматором.
Решить
задачу
аппроксимации
квадратичной функции y  ax 2  bx  c .
12) На плоскости задать два класса объектов с нормальным распределением.
Используя нейрон с квадратичным сумматором построить на плоскости
оптимальную кривую, разделяющие классы.
13) Самообучение распознаванию объектов на изображении. Задать наборы
изображений объектов «прямоугольник», «треугольник», «крест» различных
размеров. Обучить слой нейронов типа WTA распознаванию этих объектов.
Download