Моделирование сети. (Использование для решения конкретной задачи.)

Задача 1. Моделирование фрагмента электрической цепи.

Построить нейросетевую модель цепи постоянного тока, изображенной на рисунке. Входные параметры - значение напряжения U, сопротивления R, r. Выходные параметры - показания вольтметра V. Диапазоны значений U = 0..10 V, R=0.1..10, r=0.1,..10.

При каких значениях параметров резисторов наблюдается наихудшая аппроксимация решения? Почему?


 

Анализ задачи

 

Данная задача по существу является задачей аппроксимации функции от трех переменных.  Определим в явном виде эту функцию. Показания вольтметра V прямо пропорциональны току через резистор r.

 Тогда 

но

значит

    

 

 - известная в электротехнике формула расчета резистивного делителя напряжения.

Выбор типа и архитектуры нейронной сети

 

Для решения задачи аппроксимации функциональных зависимостей обычно используются многослойные сети прямого распространения. Многослойные сети обладают весьма мощными возможностями. Например, двухслойная сеть, в которой первый слой содержит сигмоидальную, а второй слой - линейную функцию активации, может быть обучена аппроксимировать с произвольной точностью любую функцию с конечным числом точек разрыва. [1]

Для решения задачи была выбрана двухслойная сеть прямого распространения сигнала и обратного распространения ошибки.  Число нейронов в выходном слое – 1, по числу целевых выходов, в первом слое число нейронов будет подбираться в процессе обучения сети. Функция активации нейронов первого слоя – логистическая, второго слоя – линейная.

 

 

Реализация нейронной сети в среде MATLAB

 

При реализации нейронно – сетевого подхода для решения конкретной задачи можно выделить четыре основных этапа:

 

1. Подготовка данных для обучения сети.

2. Создание сети.

3. Обучение сети.

4. Тестирование сети.

5. Моделирование сети. (Использование для решения конкретной задачи.)

 

Подготовка данных для обучения сети.

 

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

Сформируем массив входных векторов P, каждый элемент которого содержит случайные значения U,R,r в заданном диапазоне, и массив целевых векторов T, каждый элемент которого содержит вычисленное значение функции от этих трех аргументов.

Фрагмент кода на языке MATLAB приведен ниже.

 

 

 

Размер обучающей выборки подбирался в процессе обучения сети. При меньшем размере падает точность, при большем – увеличивается время вычислений. Для данной задачи n=500- более или менее оптимальная величина.

 

Создание сети.

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

Необходимо отметить, что к моменту создания сети с помощью nntool необходимо иметь обучающую выборку. Иначе сеть не будет создана.

 

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

Была создана сеть прямого распространения сигнала и обратного распространения ошибки. (feed- forward backdrop)

 

Структура созданной сети приведена на Рисунке 1.

 

 

Рисунок 1

Первый(скрытый) слой сети содержит 20 нейронов с функцией активации logsig, выходной слой содержит один нейрон с функцией активации purelin. В процессе обучения подбиралось число нейронов в скрытом слое для получения достаточной точности с одной стороны, и разумного времени вычислений при обучении сети с другой.

В качестве обучающего алгоритма выбран алгоритм Levenberg-Marquardt (trainlm). Этот алгоритм обеспечивает быстрое обучение, но требует много ресурсов.[2]

 

Обучение сети

После того, как сеть была создана, необходимо инициализировать веса и смещения созданной сети начальными значениями. Это достигается выбором соответствующих пунктов меню nntool. Далее начинаем процесс обучения сети. В качестве входов назначаем массив векторов Р, а в качестве целей – массив T. Результат обучения показан на Рисунке 2.

              

 Рисунок 2

В данном случае оценка обучения сети – сумма квадратов отклонений выходов сети от эталонов. Процесс обучения иллюстрируется на Рисунке 3.

 

Рисунок 3. Процесс обучения сети.

Лучшее значение квадрата ошибки выхода сети достигнуто на 67 шаге алгоритма обучения. Она составляет примерно

 

Тестирование сети.

 Качество обучения, оцененное с помощью регрессионного анализа, показано на Рисунке 4.

 

Рисунок 4. Регрессионный анализ результата обучения сети.

 Видно, что коэффициент корреляции на тестовых данных, которых не было в обучающей выборке, близок к 1 (Test: R=0.99997). На этом обучение и тестирование сети можно считать законченным, и можно приступать к моделированию сети.

 

 

Моделирование сети. (Использование для решения конкретной задачи.)

 

После обучения и верификации сеть была экспортирована в рабочую область MATLAB, и помощью команды gensim была получена модель для подсистемы имитационного моделирования  SIMULINK для дальнейшего использования. Тестовый стенд в среде SIMULINK показан на Рисунке 5.

 

 

 

Рисунок 5. Тестовый стенд для работы с нейросетью для решения задачи моделирования делителя напряжения.

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

 

Тест №1: R=5, r=5, U=0..10. Выход сети V, аналитическая зависимость (эталон), и ошибка изображены на Рисунках 6 и 7.

 

 

Рисунок 6. Выход сети и эталон.

 

Рисунок 7. Ошибка – разность между выходом сети и эталоном.

На графиках по горизонтали – параметр U, по вертикали – на Рис .6  – V, на Рис.7 – абсолютная величина ошибки между выходом сети и эталоном.

 Результат теста – сеть правильно воспроизводит зависимость между U и V при R=r=5. Абсолютная ошибка не превосходит 0.02.

 

Тест №2: R=0.1..10, r=5, U=10.

 

 

Рисунок 8. Выход сети и эталон.

 

Рисунок 9. Ошибка – разность между выходом сети и эталоном.

На графиках по горизонтали – параметр R, по вертикали – на Рис .8 – V, на Рис.9 – абсолютная величина ошибки между выходом сети и эталоном.

 Результат теста – сеть правильно воспроизводит зависимость между U и V при U=10, R=0.1-10, r=5. Абсолютная ошибка не превосходит 0.15. При близких к нулю значениях резистора R наблюдается наихудшая аппроксимация решения.

 

Тест №3: R=10, r=0.1..10, U=10.

 

 

Рисунок 10.  Выход сети и эталон.

 

Рисунок 11. Ошибка – разность между выходом сети и эталоном.

На графиках по горизонтали – параметр r, по вертикали – на Рис .10 – V, на Рис.11 – абсолютная величина ошибки между выходом сети и эталоном.

 Результат теста – сеть правильно воспроизводит зависимость между U и V при U=10, R=0.1-10, r=5. Абсолютная ошибка не превосходит 0.1. При близких к нулю значениях резистора r наблюдается наихудшая аппроксимация решения.

 

Выводы

 

В работе решалась задача моделирования работы делителя напряжения с помощью нейронной сети. Был выбран тип сети, ее архитектура, функции активации нейронов в слоях. Был получен набор данных для обучения и тестирования сети, проведено обучение, проверка качества обучения. Обученная сеть была экспортирована в среду имитационного моделирования SIMULINK, в которой было проведено моделирование работы делителя напряжения с помощью полученной сети. В процессе моделирования выяснено, что сеть в целом правильно аппроксимирует функциональную зависимость между параметрами, поданными на вход, и получаемых с выхода. При значениях параметра R, близких к нулю, наблюдалась наихудшая аппроксимация решения, ошибка достигала -0.15. В остальных случаях ошибка не превосходила 0.1,что для диапазона изменения параметров 0..10 составляет 0.1%.

 


 

Список литературы

1.Нейронные сети MATLAB 6. В.С. Медведев

2. http://matlab.exponenta.ru/neuralnetwork/book1/task1/task1.php


Дата добавления: 2018-08-06; просмотров: 60; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!