Практическое использование нейронных сетей в Среде Matlab бесплатное чтение

© Дмитрий Степанович Магола, 2025
ISBN 978-5-0065-7322-2
Создано в интеллектуальной издательской системе Ridero
ВВЕДЕНИЕ
В учебном пособии предложены примеры практического применения активно используемого инструмента по направлению искусственного интеллекта: искусственным нейронным сетям.
Необычайно высокий интерес к нейронным сетям, проявляемый специалистами из разных областей деятельности, объясняется, прежде всего, очень широким диапазоном решаемых с их помощью задач, а также рядом преимуществ перед другими методами.
Анализ работ, связанных с использованием нейронных сетей для решения физико-математических задач, показывает, что нейросетевой и нечеткий подходы имеют преимущества перед традиционными математическими методами в трех случаях.
Во-первых, когда рассматриваемая задача в силу конкретных особенностей не поддается адекватной формализации, поскольку содержит элементы неопределенности, не формализуемые традиционными математическими методами.
Во-вторых, когда рассматриваемая задача формализуема, но на настоящее время отсутствует аппарат для ее решения.
В-третьих, когда для рассматриваемой, хорошо формализуемой задачи существует соответствующий математический аппарат, но реализация вычислений с его помощью на базе имеющихся вычислительных систем не удовлетворяет требованиям получения решений по времени, энергопотреблению и др. В такой ситуации приходится либо производить упрощение алгоритмов, что снижает качество решений, либо применять соответствующие нейросетевой подход при условии, что он обеспечит нужное качество выполнения задачи.
В пособии приведены примеры в системе MATLAB с использованием пакета нейронных сетей Neural Networks Toolbox. Предложены решения с помощью нейронных сетей практических задач регрессии, классификации, кластеризации, распознавания образов.
Практическая работа 1. Использование нейронных сетей для решения задач регрессии
Цель работы: научиться использовать нейронные сети для решения задач аппроксимации и прогнозирования.
Задание 1: В среде MATLAB необходимо построить и обучить многослойную нейронную сеть для аппроксимации таблично заданной функции yi=f (xi), i=1,2,…,20. Разработать программу, которая реализует нейросетевой алгоритм аппроксимации и выводит результаты аппроксимации в виде графиков. Варианты задания представлены в табл. 1.1.
Задание 2: Используя инструмент NNTool решить задачу прогнозирования на основе следующих данных: имеется 100 входных значений х от 0.1 до 10 с шагом 0.1 и соответствующие им значения выходной переменной y. Зависимость y от x следующая:,y (x) =x2—2x+1 но исследователю данная зависимость неизвестна, а известны лишь числовые значения yi, i=1,2,…,100. Требуется найти значение y от x> 10.
Задание 3: В среде MATLAB необходимо построить и обучить нейронную сеть радиально-базисных функций для аппроксимации заданной функции yi=f (xi) =sin (xi) -cos (xi), x=0, 0.5,…,10, i=1,2,…,21.
Варианты заданий
Значения xi=i*0.1, i=1,2,…,20 одинаковые для всех вариантов
1.1. Основные теоретические сведения
При изложении теоретических сведений использовались работы [1—4].
Под искусственными нейронными сетями (далее – нейронными сетями) подразумеваются вычислительные структуры, которые моделируют простые биологические процессы, обычно ассоциируемые с процессами человеческого мозга. Они представляют собой распределенные и параллельные системы, способные к адаптивному обучению путем анализа положительных и отрицательных воздействий. Элементарным преобразователем в данных сетях является искусственный нейрон или просто нейрон, названный так по аналогии с биологическим прототипом. К настоящему времени предложено и изучено большое количество моделей нейроподобных элементов и нейронных сетей.
Нейрон является составной частью нейронной сети. На рис. 1.1 показана его общая структура.
Рис. 1.1. Структура искусственного нейрона
Он состоит из элементов трех типов; умножителей (синапсов), сумматора и нелинейного преобразователя. Синапсы осуществляют связь между нейронами, умножают входной сигнал на число, характеризующее силу связи, (вес синапса). Сумматор выполняет сложение сигналов, поступающих по синаптическим связям от других нейронов, и внешних входных сигналов. Нелинейный преобразователь реализует нелинейную функцию одного аргумента – выхода сумматора. Эта функция называется функцией активации или передаточной функцией нейрона. Нейрон в целом реализует скалярную функцию векторного аргумента.
На рис. 1.1 S – результат суммирования (sum); wi – вес (weight) синапса, i=1,2,…,n; х – компонент входного вектора (входной сигнал),i=1,2,…,n; b – значение смещения (bias); n – число входов нейрона; у – выходной сигнал нейрона; f – нелинейное преобразование (функция активации).
В общем случае входной сигнал, весовые коэффициенты и смещение могут принимать действительные значения, а во многих практических задачах – лишь некоторые фиксированные значения. Выход y определяется видом функции активации и может быть как действительным, так и целым.
Синаптические связи с положительными весами называют возбуждающими, с отрицательными весами – тормозящими. Описанный вычислительный элемент можно считать упрощенной математической моделью биологических нейронов. Чтобы подчеркнуть различие нейронов биологических и искусственных, вторые иногда называют нейроноподобными элементами или формальными нейронами.
На входной сигнал S нелинейный преобразователь отвечает выходным сигналом f (S), который представляет собой выход y нейрона. Примеры активационных функций представлены в табл. 1.2.
Рис. 1.2. Примеры функций активации
Основные парадигмы обучения нейронных сетей
Существует три основные парадигмы (формы) обучения нейронных сетей:
– обучение с учителем (supervised learning);
– обучение с подкреплением (reinforcement learning)
– обучение без учителя (unsupervised learning, self-organized).
В первом случае обучение осуществляется под наблюдением внешнего «учителя». Нейронной сети предъявляются значения как входных, так и желательных выходных сигналов, и она по некоторому внутреннему алгоритму подстраивает веса своих синаптических связей.
Во втором случае обучение включает использование «критика», с помощью которого производится обучение на основе метода проб и ошибок.
В третьем случае выходы нейронной сети формируются самостоятельно, а веса и смещения изменяются по алгоритму, учитывающему только входные и производные от них сигналы. Здесь за основу взяты принципы самоорганизации нервных клеток. Для обучения без учителя не нужно знания требуемых ответов на каждый пример обучающей выборки. В этом случае происходит распределение образцов по категориям (кластерам) в соответствии с внутренней структурой данных или степенью корреляции между образцами.
Рассматривают также и смешанное обучение, при котором весовые коэффициенты одной группы нейронов настраиваются посредством обучения с учителем, а другой группы – на основе самообучения.
Основные правила обучения нейронных сетей
Известны четыре основных правила обучения, обусловленные связанными с ними архитектурами сетей: коррекция ошибки, правило Больцмана, правило Хебба и метод соревнования.
Коррекция ошибки
Для каждого входного примера задан требуемый выход, который может не совпадать с реальным. Правило обучения при коррекции по ошибке состоит в использовании разницы для изменения весов, с целью уменьшения ошибки рассогласования. Обучение производится только в случае ошибочного результата. Известны многочисленные модификации этого правила обучения.
Правило Больцмана
Правило Больцмана является стохастическим правилом обучения, обусловленным аналогией с термодинамическими принципами. В результате его выполнения осуществляется настройка весовых коэффициентов нейронов в соответствии с требуемым распределением вероятностей. Обучение правилу Больцмана может рассматриваться как отдельный случай коррекции по ошибке, в котором под ошибкой понимается расхождение корреляций состояний в двух режимах.
Правило Хебба
Правило Хебба является самым известным алгоритмом обучения нейронных сетей, суть которого заключается в следующем: если нейроны с обеих сторон синапса возбуждаются одновременно и регулярно, то сила синаптической связи возрастает. Важной особенностью является то, что изменение синаптического веса зависит только от активности связанных этим синапсом нейронов. Предложено большое количество разновидностей этого правила, различающихся особенностями модификации синаптических весов.
Метод соревнования
В отличие от правила Хебба, в котором множество выходных нейронов могут возбуждаться одновременно, здесь выходные нейроны соревнуются между собой. И выходной нейрон с максимальным значением взвешенной суммы является «победителем» («победитель забирает все»). Выходы же остальных выходных нейронов устанавливаются в неактивное состояние. При обучении модифицируются только веса нейрона-«победителя» в сторону увеличения близости к данному входному примеру.
Алгоритмы обучения с учителем
Алгоритмы обучения нейронной сети с учителем подразумевают наличие некоего внешнего звена, предоставляющего сети кроме входных так же и целевые выходные образы. Алгоритмы, пользующиеся подобной концепцией, называются алгоритмами обучения с учителем. Для их успешного функционирования необходимо наличие экспертов, создающих на предварительном этапе для каждого входного образа эталонный выходной.
Если имеется множество обучающих примеров и задана функция ошибки (функционал качества), то обучение нейронной сети превращается в задачу многомерной оптимизации, для решения которой могут быть использованы следующие четыре группы методов:
– итерационные методы локальной оптимизации с вычислением частных производных первого и второго порядков;
– методы стохастической оптимизации;
– методы глобальной оптимизации.
К методам локальной оптимизации с вычислением частных производных первого порядка относятся: градиентный метод (наискорейшего спуска); методы с одномерной и двумерной оптимизацией целевой функции в направлении антиградиента; метод сопряженных градиентов; методы, учитывающие направление антиградиента на нескольких шагах алгоритма.
К методам локальной оптимизации с вычислением частных производных первого и второго порядка относятся: метод Ньютона, методы оптимизации с разреженными матрицами Гессе, квазиньютоновские методы, метод Гаусса-Ньютона, метод Левенберга-Маркардта, байесовский метод обучения, при котором осуществляется регуляризация процесса обучения.
Стохастическими методами являются: поиск в случайном направлении, имитация отжига или метод модельной закалки, метод Монте-Карло (численный метод статистических испытаний).
Задачи глобальной оптимизации решаются с помощью перебора значений переменных, от которых зависит целевая функция. Здесь находят применение также и генетические алгоритмы обучения нейронных сетей.
Достоинством методов первой группы является их высокое быстродействие. Их очевидный недостаток, связанный с возможностью находить только локальные экстремумы, преодолевается путем применения специальных мер и они используются на практике для обучения НС с многоэкстремальными целевыми функциями. Одним из самых широко распространенных в силу своей простоты методов этой группы является итерационный метод обратного распространения ошибки, который явился обобщением на случай многослойных сетей алгоритма Видроу-Хоффа (дельта-правила) обучения однослойных сетей.
К достоинствам методов двух следующих групп можно отнести их более высокое качество обучения, а к их недостаткам – очень большое число шагов обучения, что затрудняет их применение для обучения НС больших размерностей.
Эффективное обучение рекуррентных нейронных сетей остается темой требующей внимания и активного исследования. Несмотря на огромный потенциал и возможности рекуррентных нейронных сетей, главной проблемой является трудность обучения их, сложность и низкая сходимость существующих алгоритмов обучения.
Нейронные сети радиально-базисных функций
При изложении теоретических сведений использовались работы [1, 12—13].
Сети радиально-базисных функций (РБФ) имеют ряд преимуществ перед рассмотренными многослойными сетями прямого распространения. Во-первых, они моделируют произвольную нелинейную функцию с помощью всего одного промежуточного слоя, тем самым избавляя разработчика от необходимости решать вопрос о числе слоев. Во-вторых, параметры линейной комбинации в выходном слое можно полностью оптимизировать с помощью хорошо известных методов линейной оптимизации, которые работают быстро и не испытывают трудностей с локальными минимумами, так мешающими при обучении с использованием алгоритма обратного распространения ошибки. Поэтому сеть РБФ обучается очень быстро – на порядок быстрее, чем с использованием алгоритма обратного распространения ошибки.
На рис. 1.3 представлена структурная схема нейронной сети радильно-базисных функций с n входами и m выходами, осуществляющая нелинейное преобразование.
Рис. 1.3. Нейронная сеть радиально-базисных функций
Нейронная сеть радиальных базисных функций содержит в наиболее простой форме три слоя: обычный входной слой, выполняющий распределение данных образца для первого слоя весов; слой скрытых нейронов с радиально симметричной активационной функцией, каждый i-й из которых предназначен для хранения отдельного эталонного вектора в виде вектора весов; выходной слой. Для построения сети РБФ необходимо выполнение следующих условий.
Во-первых, наличие эталонов, представленных в виде весовых векторов нейронов скрытого слоя. Во-вторых, наличие способа измерения расстояния входного вектора от эталона. Обычно это стандартное евклидово расстояние. В-третьих, специальная функция активации нейронов скрытого слоя, задающая выбранный способ измерения расстояния. Обычно используется функция Гаусса, существенно усиливающая малую разницу между входным и эталонным векторами. Выходной сигнал эталонного нейрона скрытого слоя – это функция (гауссиан) от расстояния между входным вектором x и сохраненным центром wi.
Обучение слоя образцов-нейронов сети подразумевает предварительное проведение кластеризации для нахождения эталонных векторов и определенных эвристик для определения значений.
Для нахождения значения весов от нейронов скрытого к выходному слою используется линейная регрессия.
К недостаткам сетей РБФ можно отнести то, что заранее должно быть известно число эталонов, а также эвристики для построения активационных функций нейронов скрытого слоя. Данные сети обладают плохими экстраполирующими свойствами и получаются весьма громоздкими при большой размерности вектора входов.
В моделях РБФ могут быть использованы различные способы измерения расстояния между векторами, а также функции активации нейронов скрытого слоя.
В среде MATLAB в качестве радиально-базисной функции по умолчанию используется функция radbas, пример которой приведен на рис. 1.4:
Рис. 1.4. Пример радиально-базисной функции
Пакет для работы с нейронными сетями математической среды MATLAB содержит множество функций для нейросетевого моделирования. Ниже приведен список основных функций Neural Network Toolbox.
Список функций Neural Network Toolbox
Функции создания новой сети
network – создание нейронной сети пользователя
Запись:
net=network
net=network (numInputs, numLayers, biasConnect, inputConnect, layerConnect, outputConnect, targetConnect)
Описание. Функция возвращает созданную нейронную сеть с именем net и со следующими характеристиками (в скобках даны значения по умолчанию):
numInputs – количество входов (0),
numLayers – количество слоев (0),
biasConnect – булевский вектор с числом элементов, равным количеству слоев (нули),
inputConnect – булевская матрица с числом строк, равным количеству слоев и числом столбцов, равным количеству входов (нули),
layerConnect – булевская матрица с числом строк и столбцов, равным количеству слоев (нули),
outputConnect – булевский вектор-строка с числом элементов, равным количеству слоев (нули),
targetConnect – вектор-строка, такая же, как предыдущая (нули).
newc – создание конкурентного слоя
net=newc (PR, S, KLR, CLR) – функция создания слоя Кохонена.
Аргументы функции:
PR – R 2 матрица минимальных и максимальных значений для R входных элементов,
S – число нейронов,
KLR – коэффициент обучения Кохонена (по умолчанию 0.01),
CLR – коэффициент «справедливости» (по умолчанию 0.001).
newcf – создание каскадной направленной сети
net=newcf (PR, [S1 S2…SNI], {TF1 TF2…TFNI}, BTF, BLF, PF) —
функция создания разновидности многослойной нейронной сети с обратным распространением ошибки – так называемой каскадной нейронной сети. Такая сеть содержит скрытых N1 слоев, использует входные функции типа dotprod и netsum, инициализация сети осуществляется функцией initnw.
Аргументы функции: