НЕЙРОННЫЕ СЕТИ

Романтика нейронных сетей иллюстрируется картинками, призванными отразить подобие нейронных сетей системам живого организма

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

РАБОТА С ФОТОГРАФИЯМИ

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

Искусственный нейрон рассматривается как сумматор x=w'u входных сигналов u, взятых с настраиваемыми весами w. Выход нейрона сглаживается функцией насыщения, например,

y=1/(1+e-x+q),

где x - выход сумматора, q - смещение (определяющее порогово малое значение сигнала x). Промоделируем эту S-функцию.


t=time(10), q=5, y=fun(1/(1+exp(-t+q))), x={t}, [x y]=??

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

e(w)=0.5(y-Y)2.

Этот критерий распознавания несложно минимизировать градиентным способом по той простой причине, что частные производные вложенных функций по любому аргументу (y, x, w) выглядят негромоздко. В самом деле, градиент

e'(w)=de/dy dy/dx dx/dw = (y-Y)y(1-y)u,

здесь использовано то обстоятельство, что производная S-функции dy/dx=y(1-y). Движение в области настраиваемых параметров по антиградиенту с малым шагом описывается, следовательно, простой зависимостью

w=w-pe'(w),

где p - достаточно малое число.

КАРТОШКА и МОРКОВКА

Результат оцифровки

Обучение нейрона распознавать близкие объекты можно производить по исходным картинкам или по их усеченным усеченным двумерным фурье-спектрам.

ДВУМЕРНЫЙ СПЕКТР

Величина объекта определяет размер отсекаемой высокочастотной части спектра.

АЛГОРИТМ ОБУЧЕНИЯ


%toolbox control, % preparation(),

% ОБУЧЕНИЕ НЕЙРОНА ПО 2D-СПЕКТРАМ,

u=receive('potatosf'), U=receive('carrotf'), 
w=ones(u), w=rands(w), g1=zero(50), g2=zero(50), p=0.25, 

% ОДИН СИГНАЛ ВЕДЕТСЯ В НОЛЬ (КАРТОШКА) 
% ДРУГОЙ СИГНАЛ ВЕДЕТСЯ В ЕДИНИЦУ (МОРКОВКА),

for i=0:size(g1), 
call w=backstepping(u w p 0), g1[i]=y, y=?,
call w=backstepping(U w p 1), g2[i]=y, y=?,
end,

t=line(g1), plot(t [g1 g2]),  

function: preparation(),  
'potatos'=send('potatos.jpg:10'),  
'carrot'=send('carrot.jpg:10'),   
% ПЕРЕХОД К ЧЕРНО-БЕЛОМУ ИЗОБРАЖЕНИЮ AND %send(),
P=receive('potatos'), iP=ones(P), P={iP-P}, 'potatos'=send(P),
C=receive('carrot'),  iC=ones(C), C={iC-C}, 'carrot'=send(C),
PF=ffts(P), PF=blocks(PF 0 4 0 4), 'potatosf'=send(PF), 
CF=ffts(C), CF=blocks(CF 0 4 0 4), 'carrotf'=send(CF),
end,

function: backstepping(u w p Y),
var n grad, call y=net(u w), % global, 
n=p*(y-Y)*y*(1-y), grad={n*u}, w={w-grad), 
return w,
end,

function: net(u w),
var x, x={w.*u}, x=sums(x), x=sum(x), 
call y=sigmoid(x 1), 
return y,
end,

function: sigmoid(x q),
y=1/(1+exp(-x+q)),
return y,
end,

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

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



Rambler's Top100