Главная страница
Культура
Искусство
Языки
Языкознание
Вычислительная техника
Информатика
Финансы
Экономика
Биология
Сельское хозяйство
Психология
Ветеринария
Медицина
Юриспруденция
Право
Физика
История
Экология
Промышленность
Энергетика
Этика
Связь
Автоматика
Математика
Электротехника
Философия
Религия
Логика
Химия
Социология
Политология
Геология

Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6. В. Г. Потемкин



Скачать 14.83 Mb.
Название В. Г. Потемкин
Анкор Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Дата 26.04.2017
Размер 14.83 Mb.
Формат файла doc
Имя файла Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Тип Книга
#3790
страница 42 из 50
1   ...   38   39   40   41   42   43   44   45   ...   50

11.5.1. Функции оценки качества обучения


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

сумма квадратов ошибок

(11.6)

средняя квадратичная ошибка

; (11.7)

комбинированная ошибка

; (11.8)

средняя абсолютная ошибка

. (11.9)

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

perf = <�имя_функции>(E,X,pp)

perf = <�имя_функции>(E,net,pp)

dPerf_dE = d<�имя_функции>('e',E,X,perf,pp)

dPerf_dX = d<�имя_функции>('x',E,X,perf,pp)

Входные аргументы:

E – матрица или массив ячеек вектора ошибки;

X – вектор весов и смещений;

pp – параметр функционала;

net – нейронная сеть в виде объекта network object;

'e', 'x' – аргументы операции дифференцирования;

perf – критерий качества обучения.

Выходные аргументы:

perf – критерий качества обучения;

dPerf_dE – производная критерия качества по вектору ошибки;

dPerf_dX – производная критерия качества по вектору параметров.

Входной аргумент E может иметь 2 формата: cell array и double array.

В формате cell array массив E имеет следующие размеры:

E – массив ячеек размера NtTS, каждый элемент которого E{i, ts} – числовой массив размера ViQ, где Nt – количество целевых выходов;

TS – число шагов по времени;

Q – количество реализаций для фиксированного момента времени;

Vi– количество элементов i-го вектора цели.

В формате double array Nt числовых массивов E размера ViQ преобразуются в единственный числовой массив размера Q.

Кроме того, все функции возвращают информацию о параметрах функции критерия качества, если используется следующий формат вызова:

info = <�имя_функции>(code).

В зависимости от значения аргумента code возвращается следующая информация:

'name' – полное название функции критерия качества;

'deriv' – имя производной функции критерия качества;

'pnames' – имена параметров функции критерия качества;

'pdefaults' – значения параметров функции критерия качества, принимаемые по умолчанию.


sSE, DSSE

Критерий суммы квадратов ошибок

Синтаксис:

perf = sse(E,X,pp)

perf = sse(E,net,pp)

info = sse(code)

dPerf_dE = dsse('e',E,X,perf,pp)

dPerf_dX = dsse('x',E,X,perf,pp)


Описание:

Функции perf = sse(E, X, pp) и perf = sse(E, net, pp) вычисляют критерий качества
обучения в виде сумм квадратов ошибок по формуле (11.6).

Функции dPerf_dE = dsse('e', E, X, perf, pp) и dPerf_dX = dsse('x', E, X, perf, pp) вычисляют градиенты функционала качества по векторам ошибки, а также весов и смещений.

Применение функции:

Для того чтобы использовать функцию критерия качества sse, необходимо установить свойство net.performFcn равным 'sse'. Это автоматически установит значения параметра net.performParam равными пустому массиву [ ], поскольку данная функция не имеет таких параметров.

Примеры:

Получим информацию о данной функции и ее производной:

sse('name'), sse('deriv'), sse('pnames')

ans = Sum squared error

ans = dsse

ans = {}

Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:

net = newff([–10 10],[4 1],{'tansig','purelin'});

Зададим векторы входа и целей:

P = [–10 –5 0 5 10];

T = [ 0 0 1 1 1];

Промоделируем исходную нейронную сеть и вычислим ее ошибку:

Y = sim(net, P);

E = T–Y

E = –0.4714 –1.4040 –0.2399 0.6419 0.0049

Вычислим функционал качества sse:

net.performFcn = 'sse';

perf = sse(E)

perf = 2.6629

Теперь вычислим градиенты функционала качества.

Градиент функционала по вектору ошибки вычисляется следующим образом:

dPerf_dE = dsse('e',E,X)

dPerf_dE = –0.9427 –2.8079 –0.4798 1.2837 0.0097

Для вычислений градиента функционала по вектору настраиваемых параметров сформируем этот вектор, который объединяет веса и смещения сети:

X = [net.IW{1}; net.b{1}]'

X = 0.5600 –0.5600 0.5600 –0.5600 –5.6000 1.8667 1.8667 –5.6000

Градиент функционала по вектору параметров

dPerf_dX = dsse('x',E,X)

dPerf_dX= 0 0 0 0 0 0

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


mSe, DMSE

Критерий средней квадратичной ошибки

Синтаксис:

perf = mse(E,X,pp)

perf = mse(E,net,pp)

info = mse(code)

dPerf_dE = dmse('e',E,X,perf,pp)

dPerf_dX = dmse('x',E,X,perf,pp)


Описание:

Функции perf = mse(E, X, pp) и perf = mse(E, net, pp) вычисляют критерий качества обучения в виде средней суммы квадратов ошибок по формуле (11.7).

Функции dPerf_dE = dmse('e', E, X, perf, pp) и dPerf_dX = dmse('x', E, X, perf, pp) вычисляют градиенты функционала качества по векторам ошибки, а также весов и смещений.

Применение функции:

Функция критерия качества mse используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.

Для того чтобы использовать функцию критерия качества mse, необходимо установить свойство net.performFcn равным 'mse'. Это автоматически установит значения параметра net.performParam равными пустому массиву [ ], поскольку данная функция не имеет таких параметров.

Пример:

Получим информацию о данной функции и ее производной:

mse('name'), mse('deriv'), mse('pnames')

ans = Mean squared error

ans = dmse

ans = {}

Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:

net = newff([–10 10],[4 1],{'tansig','purelin'});

Зададим векторы входа и целей:

P = [–10 –5 0 5 10];

T = [ 0 0 1 1 1];

Промоделируем исходную нейронную сеть и вычислим ее ошибку:

Y = sim(net, P);

E = T–Y

E = –0.4714 –1.4040 –0.2399 0.6419 0.0049

Вычислим функционал качества mse:

net.performFcn = 'mse';

perf = mse(E)

perf = 0.5326

Теперь вычислим градиенты функционала качества.

Градиент функционала по вектору ошибки вычисляется следующим образом:

dPerf_dE = dmse('e',E,X)

dPerf_dE = –0.1885 –0.5616 –0.0960 0.2567 0.0019

Для вычислений градиента функционала по вектору настраиваемых параметров сформируем этот вектор, который объединяет веса и смещения сети:

X = [net.IW{1}; net.b{1}]'

X = 0.5600 –0.5600 0.5600 –0.5600 –5.6000 1.8667 1.8667 –5.6000

Градиент функционала по вектору параметров

dPerf_dX = dmse('x',E,X)

dPerf_dX= 0 0 0 0 0 0

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

Сопутствующие функции: msereg, mae.


MSEREG, DMSEREG

Комбинированный критерий качества

Синтаксис:

perf = mse(E,X,pp)

perf = mse(E,net,pp)

info = mse(code)

dPerf_dE = dmsereg('e',E,X,perf,PP)

dPerf_dX = dmsereg('x',E,X,perf,PP)



Описание:

Функции perf = msereg(E, X, pp) и perf = msereg(E, net, pp) вычисляют комбинированный критерий качества обучения по формуле (11.8).

Функции dPerf_dE = dmsereg('e', E, X, perf, pp) и dPerf_dX = dmsereg('x', E, X, perf, pp) вычисляют градиенты функционала качества по векторам ошибки, а также весов и смещений.

Применение функции:

Функция критерия качества msereg используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.

Для того чтобы использовать функцию критерия качества msereg, необходимо установить свойство net.performFcn равным 'msereg'. Это автоматически установит значения параметра net.performParam равными значениям по умолчанию.

Пример:

Получим информацию о данной функции и ее производной:

msereg('name'), msereg('deriv'), msereg('pnames'), msereg('pdefaults')

ans = Mean squared error with regularization

ans = dmsereg

ans = 'ratio'

ans = ratio: 0.9000

Это единственный функционал качества, который состоит из двух слагаемых: среднеквадратичной ошибки с весом ratio и штрафной функции, оцениваемой суммой квадратов весов и смещений с весом 1–ratio.

Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:

net = newff([–10 10],[4 1],{'tansig','purelin'});

Зададим векторы входа и целей:

P = [–10 –5 0 5 10];

T = [ 0 0 1 1 1];

Промоделируем исходную нейронную сеть и вычислим ее ошибку:

Y = sim(net, P);

E = T–Y

E = –0.4714 –1.4040 –0.2399 0.6419 0.0049

Вычислим функционал качества msereg:

net.performFcn = 'msereg';

net.performParam.ratio = 0.9;

perf = msereg(E,net)

perf = 0.5326

Теперь вычислим градиенты функционала качества.

Градиент функционала по вектору ошибки вычисляется следующим образом:

dPerf_dE = dmsereg('e',E,X)

dPerf_dE = –0.1885 –0.5616 –0.0960 0.2567 0.0019

Для вычислений градиента функционала по вектору настраиваемых параметров сформируем этот вектор, который объединяет веса и смещения сети:

X = [net.IW{1}; net.b{1}]'

X = 0.5600 –0.5600 0.5600 –0.5600 –5.6000 1.8667 1.8667 –5.6000

Градиент функционала по вектору параметров

dPerf_dX = dmsereg('x',E,X,perf,net.performParam)

dPerf_dX = –0.0140 0.0140 –0.0140 0.0140 0.1400 –0.0467 –0.0467 0.1400

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

Сопутствующие функции: mse, mae.


mae, DMAE

Критерий средней абсолютной ошибки

Синтаксис:

perf = mae(E,X,pp)

perf = mae(E,net,pp)

info = mae(code)

dPerf_dE = dmae('e',E,X,perf,pp)

dPerf_dX = dmae('x',E,X,perf,pp)


Описание:

Функции perf = mae(E, X, pp) и perf = mae(E, net, pp) вычисляют критерий качества обучения в виде средней суммы абсолютных ошибок по формуле (11.9).

Функции dPerf_dE = dmae('e', E, X, perf, pp) и dPerf_dX = dmae('x', E, X, perf, pp) вычисляют градиенты функционала качества по векторам ошибки, а также весов и смещений.

Применение функции:

Функция критерия качества mae используется при создании сетей с помощью методов newff, newcf, newelm, а также при формировании сетей с атрибутами, определяемыми пользователем.

Для того чтобы использовать функцию критерия качества mae, необходимо установить свойство net.performFcn равным 'mae'. Это автоматически установит значения параметра net.performParam равными пустому массиву [ ], поскольку данная функция не имеет таких параметров.

Пример:

Получим информацию о данной функции и ее производной:

mae('name'), mae('deriv'), mae('pnames')

ans = Mean absolute error

ans = dmae

ans = {}

Сформируем двухслойную нейронную сеть прямой передачи с одноэлементным входом, изменяющимся в диапазоне [–10 10], которая имеет 4 скрытых нейрона с функцией активации tansig и 1 нейрон на выходе с функцией активации purelin:

net = newff([–10 10],[4 1],{'tansig','purelin'});

Зададим векторы входа и целей:

P = [–10 –5 0 5 10];

T = [ 0 0 1 1 1];

Промоделируем исходную нейронную сеть и вычислим ее ошибку:

Y = sim(net, P);

E = T–Y

E = –0.4714 –1.4040 –0.2399 0.6419 0.0049

Вычислим функционал качества mae:

net.performFcn = 'mae';

perf = mae(E)

perf = 0.5524

Теперь вычислим градиенты функционала качества.

Градиент функционала по вектору ошибки вычисляется следующим образом:

dPerf_dE = dmae('e',{E},X); [dPerf_dE{:}]

ans = –1 –1 –1 1 1

Для вычислений градиента функционала по вектору настраиваемых параметров сформируем вектор, который объединяет веса и смещения сети:

X = [net.IW{1}; net.b{1}]'

X = 0.5600 –0.5600 0.5600 –0.5600 –5.6000 1.8667 1.8667 –5.6000

Градиент функционала по вектору параметров

dPerf_dX = dmae('x',{E},{X})

dPerf_dX = 0

Сопутствующие функции: mse, msereg.
1   ...   38   39   40   41   42   43   44   45   ...   50
написать администратору сайта