Список литературных источников

ЛАБОРАТОРНАЯ РАБОТА № 3

Инстар и aутстар Гроссберга

Дисциплина: Информационные технологии

Номер группы: 3751

Выполнил: Гюлмамедов Турал Орхан оглы

Номер варианта: 2

Проверила: Павлова А.И

Дата регистрации на кафедре: «__»___________2015 г.

 

 

Новосибирск – 2015

 

Содержание:

 

1. Инстар и аутстар Гроссберга. Правило обучения нейрона по правилу Гроссберга.

2. Программный код обучения нейрона Matlab,C#

3. Результаты обучения (таблицы 1 и 2, рисунки работы консольного приложения)

 

Нейрон инстар и оутстар был введен С. Гроссбергом. Это взаимодополняющие элементы.

Нейрон типа инстар адаптирует веса сигналов, поступающих на сумматор нейрона к входным сигналам.

Рисунок 1 – Структура нейрона типа инстар

Входные сигналы, подаваемые с весовыми коэффициентами Wij на вход i-го инстара, суммируются по формуле:

, (1)

При обучении нейрона типа инстар часто используют линейную форму функции активации, при которойyi = ui.

Процесс обучения инстара производится по правилу, предложенному С. Гроссбергом, в соответствии с которым подбор весовых коэффициентов:

, (2)

Входные данные в виде вектора xвыражаются в сети часто в нормализованном виде:

, (3)

Результаты обучения по методу Гроссберга сильно зависят от коэффициента обучения сети η. При η =l веса wij становятся равными значениям Хj уже после первой итерации. Ввод очередного входного вектора x вызовет адаптацию весов к новому вектору и полное «забывание» предыдущих значений.

При η <l в результате обучения wij весовые коэффициенты принимают усредненные значения вектораx.

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

Рисунок 2 – Структура нейрона типа aутстар

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

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

Обучение aутстара производится по правилу Гроссберга:

Wij (t+1) =Wij (t) +η*Yi*(Yi-Wij(t)),

где yi – выходной сигнал i-го нейрона, выступающего в качестве источника.

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

 

Таблица 1– Результаты обучения нейрона модели инстар Гроссберга при коэффициенте обучения koeff= 0.5+0.01*2=0.52 и числе итераций iteration= 200+2=202

 

Входные данные Весовые коэффициенты Выходные данные
X W=W+0.006 *2 Y
0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 0.312 0.212 0.312 0.612 0.512 0.312 0.312 0.412 0.112 0.212 0.612 0.312 0.412 0.312 0.112 0.512    

 

 

Таблица 2– Результаты обучения нейрона модели инстар Гроссберга при коэффициенте обучения koeff= 0.8+0.01*2=0.82 и числе итераций iteration= 1000+4=1002

 

Входные данные Весовые коэффициенты Выходные данные
X W=W+0.008*2 Y
0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 0.316 0.216 0.316 0.616 0.516 0.316 0.316 0.416 0.116 0.216 0.616 0.316 0.416 0.316 0.116 0.516  

Программный код на Matlab

 

X=[0 0 1 0; 0 0 1 0; 0 1 0 0; 0 1 0 1; 1 0 0 0; 1 0 0 1; 1 0 1 0;1 0 1 1; 1 1 0 0; 1 1 0 1] % вектор входных данных

weight =[0.316 0.216 0.316 0.616; 0.516 0.316 0.316 0.416; 0.116 0.216 0.616 0.316; 0.416 0.316 0.116 0.516] % матрица синаптических весов

koeff= 0.82 % коэффициент скорости обучения сети от 0 до 1

itteration=1002 % количество итераций

for t=1:itteration

fori=1:10

forj=1:4

w(j)=X(i,:)* weight (j,:)' % результат суммирования, сумматор

end

[vc]=max(w) % отобразить значение максимального элемента и номера строки в матрице

% ' знак апострофа применяется для транспонирования матрицы

% правило Гроссбергадля инстара

weight (c,:)= weight (c,:)+koeff*(X(i,:)- weight (c,:))

% правилоГроссбергадляаутстара

% weight (c,:)= weight (c,:)+koeff*(Y(i,:)- weight (c,:))

% правило Гроссберга для аутстараcучителем

% weight (c,:)= weight (c,:)+koeff*Y*(Y(i,:)- weight (c,:))

 

%display(weight)% вывести результаты на экран

% нормализуем веса от 0 до 1 по формуле (3)

k=power(weight (c,:), 2); % возвести в квадрат

f=sqrt(sum(k)); % извлечь корень из суммы

weight (c,:)= weight (c,:)/f;

end

end

display(weight)

 

Реализация программы на С#

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace InstarGrossbera

{

class Program

{

static void Main(string[] args)

{

double[,] X = new double[10, 4] { {0, 0, 1, 0}, //строки, столбцы

{0, 0, 1, 1},

{0, 1, 0, 0},

{0, 1, 0, 1},

{1, 0, 0, 0},

{1, 0, 0, 1},

{1, 0, 1, 0},

{1, 0, 1, 1},

{1, 1, 0, 0},

{1, 1, 0, 1}};

double[,] W = new double[4, 4] { {0.312, 0.212, 0.312, 0.612},

{0.512, 0.312, 0.312, 0.412},

{0.112, 0.212, 0.612, 0.312},

{0.412, 0.312, 0.112, 0.512}};

 

double koeff = 0.5+0.01*2;

double[] w = new double[4];

 

for (int k = 0; k < 202; k++)

{

for (int i = 0; i< 10; i++)

{

for (int j = 0; j < 4; j++)

{

w[j] = allRowValue(X, W, i, j);

}

int index = GetIndexMaxElement(w, w.Max());

redefinitionW(W, X, index, i, koeff);

}

}

 

Console.WriteLine("Weight = {");

for (int i = 0; i< 4; i++)

{

for (int j = 0; j < 4; j++)

{

Console.Write("\t" + Math.Round(W[i, j], 3, MidpointRounding.ToEven).ToString());

}

Console.Write("\n");

}

Console.WriteLine("\t}");

Console.ReadKey();

}

 

static double allRowValue(double[,] matrixA, double[,] matrixB,

int numberRowA, int numberRowB)

{

double a = 0;

for (int i = 0; i< 4; i++)

{

a += matrixA[numberRowA, i] * matrixB[numberRowB, i];

}

return a;

}

 

static int GetIndexMaxElement(double[] array, double maxElement)

{

for (int i = 0; i<array.Length; i++)

{

if (array[i] == maxElement)

return i;

}

return 0;

}

 

static void redefinitionW(double[,] W, double[,] X, int indexRow,

int indexRowX, double koeff)

{

double a = 0;

for (int i = 0; i< 4; i++)

{

W[indexRow, i] = W[indexRow, i] + koeff * (X[indexRowX, i] - W[indexRow, i]);

a += Math.Pow(W[indexRow, i], 2);

}

a = Math.Sqrt(a);

for (int i = 0; i< 4; i++)

{

W[indexRow, i] = W[indexRow, i] / a;

}

}

}

}


 

Рисунок 1 – Работа консольного приложения при коэффициенте обучения η =0.52 и числе итераций iteration=202

 

 

Рисунок 2 - Работа консольного приложения при коэффициенте обучения η =0.82 и числе итераций iteration=1002

 


Выводы

Был изученнейрон модели инстар Гроссберга. Результаты обучения по методу Гроссберга сильно зависят от коэффициента обучения сети η. При η =l веса wij становятся равными значениям Хj уже после первой итерации. Ввод очередного входного вектора x вызовет адаптацию весов к новому вектору и полное «забывание» предыдущих значений. При η <l в результате обучения wij весовые коэффициенты принимают усредненные значения вектораx.


Список литературных источников

1. Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы: пер. с польского, И.Д. Рудинского. – М.: Горячая линия-Телеком, 2013. – 384 с.

2. ЛюгерДжорж Ф.Искусственный интеллект: стратегия и методы решения сложных проблем.- М.: Издательский дом Вильямс, 2003. – 864 с.

3. Осовский С. Нейронные сети для обработки информации / Пер. с польского. – М.: Финансы и статистика, 2002. – 342с.

4. Круглов В. В. Дли М. И. Голунов Р. Ю. Нечёткая логика и искусственные нейронные сети. – М.: Физматлит, 2001. – 221 с.

5. Уоссермен Ф. Нейрокомпьютерная техника. – М.: Мир, 1992. – 240 c.