- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 1. Ппп Neural Network Toolbox
- •1. Система matlab 6
- •1.1. Операционная среда matlab 6
- •Командное окно
- •Окно предыстории
- •Окно запуска
- •Окно текущего каталога
- •Окно рабочей области
- •Справочная подсистема
- •1.3. Демонстрационные примеры ппп nnt
- •2. Модель нейрона и архитектура сети
- •2.1. Модель нейрона
- •2.1.1. Простой нейрон
- •2.1.2. Функция активации
- •2.1.3. Нейрон с векторным входом
- •2.2. Архитектура нейронных сетей
- •2.2.1. Однослойные сети
- •2.2.2. Многослойные сети
- •2.2.3. Сети с прямой передачей сигнала
- •2.3. Создание, инициализация и моделирование сети Формирование архитектуры сети
- •Инициализация сети
- •Моделирование сети
- •3. Обучение нейронных сетей
- •3.1. Процедуры адаптации и обучения
- •Явление переобучения
- •Свойство обобщения
- •3.1.1. Способы адаптации и обучения
- •Адаптация нейронных сетей
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel(' Циклы'), ylabel('Ошибка'),grid
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel('Циклы'), ylabel('Ошибка'),grid
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel('Циклы'), ylabel('Ошибка'),grid
- •Обучение нейронных сетей
- •3.2. Методы обучения
- •3.2.1. Обучение однослойной сети
- •3.2.2. Обучение многослойной сети
- •Метод обратного распространения ошибки
- •Характеристика методов обучения
- •3.3. Алгоритмы обучения
- •3.3.1. Градиентные алгоритмы обучения Алгоритм gd
- •Алгоритм gdm
- •Алгоритм gda
- •Алгоритм Rprop
- •3.3.2. Алгоритмы метода сопряженных градиентов
- •Алгоритм cgf
- •Алгоритм cgp
- •Алгоритм cgb
- •Алгоритм scg
- •3.3.3. Квазиньютоновы алгоритмы Алгоритм bfgs
- •Алгоритм oss
- •Алгоритм lm
- •3.3.4. Алгоритмы одномерного поиска
- •Алгоритм gol
- •Алгоритм bre
- •Алгоритм hyb
- •Алгоритм cha
- •Алгоритм bac
- •3.3.5. Расширение возможностей процедур обучения
- •Переобучение
- •Метод регуляризации
- •Формирование представительной выборки
- •Предварительная обработка и восстановление данных
- •Пример процедуры обучения
- •4. Персептроны
- •4.1. Архитектура персептрона
- •4.2. Модель персептрона
- •Моделирование персептрона
- •Инициализация параметров
- •4.3. Процедуры настройки параметров
- •Правила настройки
- •Процедура адаптации
- •5. Линейные сети
- •5.1. Архитектура линейной сети
- •5.2. Создание модели линейной сети
- •5.3. Обучение линейной сети
- •Процедура настройки
- •Процедура обучения
- •5.4. Применение линейных сетей Задача классификации векторов
- •Фильтрация сигнала
- •Предсказание сигнала
- •Подавление шумов
- •Многомерные цифровые фильтры
- •6. Радиальные базисные сети
- •Модель нейрона и архитектура сети
- •Создание сети
- •Радиальная базисная сеть с нулевой ошибкой
- •Итерационная процедура формирования сети
- •Примеры радиальных базисных сетей
- •6.1. Сети grnn
- •Архитектура сети
- •Синтез сети
- •6.2. Сети pnn
- •Архитектура сети
- •Синтез сети
- •7. Сети кластеризации и классификации данных
- •7.1. Самоорганизующиеся нейронные сети
- •7.1.1. Слой Кохонена
- •Архитектура сети
- •Создание сети
- •Правило обучения слоя Кохонена
- •Правило настройки смещений
- •Обучение сети
- •7.1.2. Карта Кохонена
- •Топология карты
- •Функции для расчета расстояний
- •Архитектура сети
- •Создание сети
- •Обучение сети
- •Одномерная карта Кохонена
- •Двумерная карта Кохонена
- •Архитектура сети
- •Создание сети
- •Обучение сети Правила настройки параметров
- •Процедура обучения
- •8. Рекуррентные сети
- •8.1. Сети Элмана
- •Архитектура
- •Создание сети
- •Обучение сети
- •Проверка сети
- •8.2. Сети Хопфилда
- •Архитектура сети
- •Синтез сети
- •Синтез сети
- •Проверка сети
- •9.1.2. Слежение за нестационарным сигналом
- •Инициализация сети
- •Проверка сети
- •9.1.3. Моделирование стационарного фильтра
- •Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.4. Моделирование нестационарного фильтра
- •Постановка задачи
- •Инициализация сети
- •Проверка сети
- •9.2. Распознавание образов
- •Постановка задачи
- •Нейронная сеть
- •Архитектура сети
- •Инициализация сети
- •Обучение
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствие шума
- •Эффективность функционирования системы
- •9.3. Нейронные сети и системы управления
- •9.3.1. Регулятор с предсказанием
- •9.3.2. Регулятор narma-l2
- •9.3.3. Регулятор на основе эталонной модели
- •Функции инициализации, адаптации и обучения
- •10.2. Описание элементов сети
- •Описание входов
- •Описание слоев
- •Описание выходов
- •Описание целей
- •Описание смещений
- •Описание весов входа
- •Описание весов слоя
- •Матрицы весов и векторы смещений
- •Информационные поля
- •11. Формирование моделей нейронных сетей
- •11.1. Модели сетей
- •11.1.1. Однослойные сети Персептрон
- •Линейные сети
- •11.1.2. Многослойные сети
- •Радиальные базисные сети
- •Самоорганизующиеся сети
- •Сети – классификаторы входных векторов
- •Рекуррентные сети
- •11.2. Функции активации
- •Персептрон
- •Линейные сети
- •Радиальные базисные сети
- •Самоорганизующиеся сети
- •Рекуррентные сети
- •11.3. Синаптические функции
- •Функции взвешивания и расстояний
- •Функции накопления
- •11.4. Функции инициализации
- •11.5. Функции адаптации и обучения Функции адаптации
- •Функции обучения
- •Градиентные алгоритмы обучения
- •Алгоритмы метода сопряженных градиентов
- •Квазиньютоновы алгоритмы обучения
- •11.5.1. Функции оценки качества обучения
- •11.6. Функции настройки параметров
- •11.6.1. Функции одномерного поиска
- •11.7. Масштабирование и восстановление данных
- •11.8. Вспомогательные функции
- •Утилиты вычислений
- •Операции с массивами данных
- •Графические утилиты
- •Информация о сети и ее топологии
- •11.9. Моделирование нейронных сетей и система Simulink Функции моделирования сети
- •11.9.1. Применение системы Simulink
- •Библиотеки блоков для моделирования нейронных сетей
- •Построение моделей нейронных сетей
- •Индексный указатель Команды, функции и операторы ппп Neural Network Toolbox
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
- •1. Система matlab 6 9
- •2. Модель нейрона и архитектура сети 33
- •3. Обучение нейронных сетей 47
- •10. Вычислительная модель нейронной сети 228
- •11. Формирование моделей нейронных сетей 245
Алгоритм lm
Алгоритм LM Левенберга – Марквардта [17] реализует следующую стратегию для оценки матрицы Гессе. В предположении, что функционал определяется как сумма квадратов ошибок, что характерно при обучении нейронных сетей с прямой передачей, гессиан может быть приближенно вычислен как
, (3.29)
а градиент рассчитан по формуле
(3.30)
где
– матрица Якоби производных функционала
ошибки по настраиваемым параметрам; e
– вектор ошибок сети. Матрица Якоби
может быть вычислена на основе стандартного
метода обратного распространения
ошибки, что существенно проще вычисления
матрицы Гессе.
Алгоритм LM использует аппроксимацию гессиана следующего вида:
(3.31)
Когда коэффициент равен 0, мы получаем метод Ньютона с приближением гессиана в форме (3.29); когда значение велико, получаем метод градиентного спуска с маленьким шагом. Поскольку метод Ньютона имеет большую точность и скорость сходимости вблизи минимума, задача состоит в том, чтобы в процессе минимизации как можно быстрее перейти к методу Ньютона. С этой целью параметр уменьшают после каждой успешной итерации и увеличивают только тогда, когда пробный шаг показывает, что функционал ошибки возрастает. Такая стратегия обеспечивает уменьшение ошибки после каждой итерации алгоритма.
Вновь обратимся к сети, показанной на рис. 3.8, но будем использовать функцию обучения trainlm:
net = newff([–1 2; 0 5],[3,1],{'tansig','purelin'},'trainlm');
Функция trainlm характеризуется следующими параметрами, заданными по умолчанию:
net.trainParam
ans =
epochs: 100
goal: 0
max_fail: 5
mem_reduc: 1
min_grad: 1.0000e–010
mu: 0.0010
mu_dec: 0.1000
mu_inc: 10
mu_max: 1.0000e+010
show: 25
time: Inf
В этом перечне появилось несколько новых параметров. Параметр mu – начальное значение для коэффициента . Это значение умножается либо на коэффициент mu_dec, когда функционал ошибки уменьшается, либо на коэффициент mu_inc, когда функционал ошибки возрастает. Если mu превысит значение mu_max, алгоритм останавливается. Параметр mem_reduc позволяет экономить объем используемой памяти, что обсуждается ниже.
Установим параметры обучающей процедуры по аналогии с предшествующими примерами:
net.trainParam.epochs = 300;
net.trainParam.show = 5;
net.trainParam.goal = 1e–5;
p = [–1 –1 2 2;0 5 0 5];
t = [–1 –1 1 1];
net = train(net,p,t); % Рис.3.18
На рис. 3.18 приведен график изменения ошибки обучения в зависимости от числа выполненных циклов обучения.
Рис. 3.18
a = sim(net,p)
a = –1.0000 –0.9998 1.0000 0.9999
Как видим, здесь потребовалось всего 3 цикла обучения. Этот алгоритм, видимо, является самым быстродействующим и пригоден для обучения больших нейронных сетей с несколькими сотнями настраиваемых параметров. Этот алгоритм имеет очень эффективную реализацию в системе MATLAB, являющейся интерпретатором векторной машины, где операция скалярного произведения реализуется с высокой точностью и быстродействием на математическом сопроцессоре компьютера. Поэтому достоинства алгоритма Левенберга – Марквардта становятся еще более ощутимыми при работе в среде системы MATLAB.
Демонстрационный пример nnd12m иллюстрирует применение алгоритма LM.
Экономия памяти. Главный недостаток алгоритма LM состоит в том, что он требует памяти для хранения матриц больших размеров. Например, размер матрицы Якоби составляет Qn, где Q – число обучающих наборов и n – число параметров сети. Это означает, что при оценке гессиана согласно соотношению (3.28) потребуются значительные ресурсы для ее хранения и вычисления. Как это часто делается при работе с матрицами, выполним ее декомпозицию, т. е. представим ее в виде разбиения на несколько подматриц. Допустим, что выделены 2 подматрицы; тогда соотношение (3.28) может быть записано в виде:
. (3.32)
В этом случае уже не требуется хранить полную матрицу Якоби, а оценка гессиана может быть вычислена с использованием подматриц меньших размеров. Причем в процессе формирования матрицы Гессе использованные подматрицы могут быть удалены из оперативной памяти.
При применении М-функции trainlm с помощью параметра mem_reduc можно указывать, на какое число подматриц разбивается исходная матрица. Если параметр mem_reduc равен 1, то используется полная матрица Якоби; если mem_reduc = 2, то матрица Якоби разбивается по строкам на 2 части и сначала обрабатывается одна половина, а затем вторая. Это экономит половину объема памяти, требуемой для вычисления полного якобиана. Что же касается быстродействия, то оно будет частично потеряно. И если вам доступна достаточная оперативная память, то лучше устанавливать параметр mem_reduc равным 1. Это особо касается системы MATLAB, которая позволяет извлечь все преимущества при использовании математического сопроцессора. Если же все-таки имеющаяся память оказалась исчерпанной, то следует назначить параметр mem_reduc равным 2 и выполнить расчеты заново. Если и при этом памяти не будет достаточно, следует еще увеличить значение этого параметра.
