Добавил:
Преподаватель Колледжа информационных технологий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.pdf
Скачиваний:
4
Добавлен:
08.05.2022
Размер:
4.69 Mб
Скачать

На рисунке 3.38 представлена диаграмма рассеяния для обученной модели

NARX.

Рисунок 3.38 – Оценка коэффициента корреляции Из графика видно, что отклонения прогнозируемых значений от эталонов

минимальны и коэффициент корреляции близок по значению к 1, что свидетель-

ствует о сильной прямой связи между переменными.

На рисунке 3.39 представлено окно с результатами обучения модели

NARX с одним скрытым слоем и 40 нейронами в нем.

91

Рисунок 3.39 – Окно обучения нейронной сети На рисунке 3.40 представлен график зависимости СКО от количества эпох

обучения для построенной на предыдущем шаге модели.

Рисунок 3.40 – Среднеквадратичная ошибка обучения На графика видно, что значение погрешности на обучающей выборке

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

92

На рисунке 3.41 представлена диаграмма рассеяния для обученной модели

NARX.

Рисунок 3.41 – Оценка коэффициента корреляции Из графика видно, что отклонения прогнозируемых значений от эталонов

минимальны и коэффициент корреляции близок по значению к 1, что свидетель-

ствует о сильной прямой связи между переменными.

На рисунке 3.42 представлено окно с результатами обучения модели

NARX с двумя скрытыми слоями по 40 нейронов в каждом.

93

Рисунок 3.42 – Окно обучения нейронной сети На рисунке 3.43 представлен график зависимости СКО от количества эпох

обучения для построенной на предыдущем шаге модели.

Рисунок 3.43 – Среднеквадратичная ошибка обучения На рисунке 3.44 представлена диаграмма рассеяния для обученной модели

NARX.

94

Рисунок 3.44 – Оценка коэффициента корреляции Из графика видно, что отклонения прогнозируемых значений от эталонов

минимальны и коэффициент корреляции близок по значению к 1, что свидетель-

ствует о сильной прямой связи между переменными.

Произведем анализ программного модуля, сгенерированного после созда-

ния нейронной сети инструментарием NNTool. Структура созданной программы будет иметь следующие элементы:

1) name_network = network (Inputs, Layers, biasCon, inputCon, layerCon, outputCon, targetCon) – функция, которая возвращает созданную нейронную сеть

сименем name_network и с нижеперечисленными свойствами:

Inputs – число входов сети;

Layers – число скрытых слоев сети;

biasCon – вектор с количеством элементов, равным количеству

слоев;

inputCon – матрица с количеством строк, равным количеству слоев и числом столбцов, равным количеству входов;

95

layerCon – матрица с количеством строк и столбцов, равным количе-

ству слоев;

outputCon – вектор-строка с количеством элементов, равным количе-

ству слоев;

targetCon – вектор-строка, такая же, как предыдущая.

2) name_network = newp (MINMAX, N, FA, FL) – функция, создающая нейросетевую модель типа «многослойный персептрон» и содержащая следую-

щие аргументы:

MINMAX – матрица, хранящая минимальные и максимальные зна-

чения для входных элементов из таблицы исходных данных:

N – число нейронов в скрытом слое;

FA – активационная функция;

FL – обучающая функция.

3)[name_network, training_record] = trainbr (name_network, Pd, Tl, Ai, Q, TS,

VV)– функция, которая реализует алгоритм обучения Левенберга-Марквардта,

который работает по принципу минимизации комбинации квадратов ошибок и весов с выбором наилучшей такой (для получения наилучших обобщающих свойств нейронной сети). Аргументы функции:

name_network – название обучаемой нейронной сети;

Pd – название массива, хранящий задержанные входы обучающей

выборки;

Tl – название массива, хранящий целевые значения выходов;

Ai – матрица, хранящая начальные условия входных задержек;

Q – количество обучающих пар в одном цикле обучения;

TS – вектор временных интервалов;

VV – массив, хранящий проверочные значения (validation value);

TV – массив, хранящий тестовые значения (test value).

Функция trainbr возвращает обученную нейронную сеть name_network и

набор записей training_record для каждого цикла обучения (training_record.epoch

96

– номер цикла, training_record.perf – текущая ошибка обучения, training_record.vperf – текущая ошибка для проверочной выборки, training_record.tperf – те-

кущая ошибка для тестовой выборки).

Процесс обучения зависит от значений следующих параметров:

name_network.paramTrain.epochs – количество циклов обучения;

name_network.paramTrain.show – количество циклов для показа про-

межуточных результатов;

name_network.paramTrain.goal – целевая ошибка обучения;

name_network.paramTrain.time – максимальное время обучения в се-

кундах;

name_network.paramTrain.min_grad – целевое значение градиента;

name_network.paramTrain.max_fai – максимально допустимая крат-

ность превышения ошибки проверочной выборки по сравнению с достигнутым

минимальным значением;

name_network.paramTrain.searchFcn – имя используемого одномер-

ного алгоритма оптимизации.

Процесс обучения останавливается в случае выполнения любого из следу-

ющих условий:

достигнута верхняя граница заданного количества циклов обучения

(name_network. paramTrain.epochs);

достигнута верхняя граница заданного времени обучения сети

(name_network.paramTrain.time);

среднеквадратичная ошибка обучения сети стала меньше заданной

(name_network.paramTrain.goal);

градиент стал меньше заданного

(name_network.paramTrain.min_grad);

возрастание ошибки проверочной выборки по сравнению с достиг-

нутым

минимальным

превысило

предопределенное

значение

(name_network.paramTrain.max_fail).

97

4)sim – функция, позволяющая моделировать работу нейронной сети

[Y, Pf, Af] = sim (name_network, P, Pi, Ai) – функция, моделирующая работу

сети.

Аргументы функции:

name_network – имя сети;

P – входы сети;

Pi – массив, который хранит начальные условия входных задержек

(по умолчанию они равны нулю);

Ai – массив, который хранит начальные условия задержек слоя нейронов (по умолчанию они равны нулю).

Аргументы Pi, Ai, Pf, Af используются только в случаях, когда сеть имеет задержки по входам или по слоям нейронов.

Структура данных аргументов имеет следующий вид:

P – массив размерностью × , элементами массива { , } будут являться матрицы размерностью × ;

Pi – массив размерностью × , элементами массива { , } (i-й

вход в момент = − ) будут являться матрицы размерностью × ;

Ai – массив размерностью × , элементами массива { , } (вы-

ход i-го слоя в момент = − ) будут являться матрицы размерностью ×

;

Y – массив размерностью × , элементами массива Y{i, ts} бу-

дут являться матрицы размерностью × ;

Pf – массив размерностью × , элементами массива { , } (i-й

вход в момент = + − ) будут являться матрицы размерностью × ;

Af – массив размерностью × , элементами массива { , } (вы-

ход i-го слоя в момент, когда = + − ) будут являться матрицы размер-

ностью × ,

при этом Ni = name_network.numInputs - количество входов сети;

Nl = name_network.numLayers - количество слоев сети;

98

No = name_network.numOutputs - количество выходов сети;

ID = name_network.numInputDelays - входные задержки;

LD = name_network.numLayerDelays - задержки слоя;

TS = Number of time steps - число временных интервалов;

Q = Batch size - размер набора подаваемых векторов;

Ri = name_network.inputs{i}.size - размер i-го входного вектора;

Si = name_network.layers{i}.size - размер i-го слоя;

Ui = name_network.outputs{i}.size - размер выходного вектора.

5)init – инициализация нейронной сети

name_network = init(name_network) – функция инициализирует нейронную сеть с именем name_network, устанавливая веса и смещения сети в соответствии

сустановками name_network.initFcn и name_network.initParam.

6)adapt – функция адаптации сети

[name_network, Y, E, Pf, Af] = adapt(name_network, P, T, Pi, Ai) – функция адаптации сети. Устанавливает адаптацию сети в соответствии с установками name_network.adaptFcn и name_network.adaptParam. Здесь E – ошибка сети, T –

целевые значения выходов; остальные аргументы – как у команды sim.

7)train – тренировка нейронной сети

[name_network, tr] = train(name_network, P, T, Pi, Ai) – функция осуществ-

ляет обучение сети в соответствии с установками name_network.trainFcn и name_network.trainParam. Здесь tr – информация о выполнении процесса обуче-

ния (количество циклов и соответствующая ошибка обучения).

8)disp – функция отображения свойств нейронной сети

disp(name_network) – функция возвращает развернутую информацию о структуре и свойствах сети.

9)display – функция отображения имен переменных и свойств сети.

99

3.5.Выводы

Вданной главе в качестве инструментальных средств для прогнозирования гликемии была выбрана аналитическая платформа Deductor и среда разработки

MATLAB. Была разработана структура нейросетевой модели, описаны пара-

метры и результаты обучения модели линейной регрессии и нейросетевых моде-

лей, произведена оценка точности прогнозирования на обучающих моделях.

В таблице 3.2 представлен сравнительный анализ результатов обучения моделей.

Таблица 3.2. – Сравнительный анализ эффективности обучения моделей

 

 

1 слой /

1 слой /

2 слоя /

Тип модели

Показатели

20 нейро-

40 нейро-

40 нейро-

 

 

нов

нов

нов

 

Время обуче-

 

1 секунда

 

 

ния

 

 

Линейная регрес-

 

 

 

СКО

 

5,55 10−4

 

сия

 

 

Коэффициент

 

0,99122

 

 

 

 

 

корреляции

 

 

 

 

 

 

 

Время обуче-

10 секунд

6 секунд

2 минуты 39

 

ния

секунд

Многослойный

 

 

СКО

6,12 10−7

5,46 10−6

1,02 10−6

персептрон

Коэффициент

1

0,99999

1

 

 

корреляции

 

 

 

 

Нелинейная авто-

Время обуче-

19 секунд

1 минута

10 минут

регрессионная

ния

41 секунда

51 секунда

 

нейросетевая мо-

СКО

1,74 10−6

1,73 10−6

3,77 10−7

дель с внешним

Коэффициент

0,99285

0,99311

0,99337

выходом

корреляции

 

 

 

Среди вышеперечисленных моделей многослойный персептрон с одним скрытым слоем с 20 нейронами в нем имел наилучшее значение среднеквадрати-

ческого отклонения и коэффициента корреляции.

100