- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 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. Применение нейронных сетей
- •9.1. Аппроксимация и фильтрация сигналов
- •9.1.1. Предсказание стационарного сигнала Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.2. Слежение за нестационарным сигналом
- •Инициализация сети
- •Проверка сети
- •9.1.3. Моделирование стационарного фильтра
- •Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.4. Моделирование нестационарного фильтра
- •Постановка задачи
- •Инициализация сети
- •Проверка сети
- •9.2. Распознавание образов
- •Постановка задачи
- •Нейронная сеть
- •Архитектура сети
- •Инициализация сети
- •Обучение
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствие шума
- •Эффективность функционирования системы
- •9.3. Нейронные сети и системы управления
- •9.3.1. Регулятор с предсказанием
- •9.3.2. Регулятор narma-l2
- •9.3.3. Регулятор на основе эталонной модели
- •Часть2. Операторы, функции и команды
- •10. Вычислительная модель нейронной сети
- •10.1. Описание сети Описание архитектуры
- •Функции инициализации, адаптации и обучения
- •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]. Графики многочленов часто имеют весьма замысловатые формы, и чем выше степень многочлена, тем сложнее их форма. Если имеется некоторый набор данных, то можно поставить цель подобрать для него аппроксимирующий многочлен и таким образом получить подходящую математическую модель для этого набора данных. Поскольку исходные данные, как правило, заданы с погрешностями, то нельзя считать, что лучшая модель задается кривой, которая проходит точно через заданные точки. Многочлен низкого порядка может оказаться достаточно грубым для аппроксимации данных, в то время как многочлен высокого порядка может точно следовать данным, принимая при этом весьма замысловатую форму, не имеющую никакого отношения к форме истинной зависимости. Последняя ситуация и демонстрирует то, что называетсяявлением переобучения.
При работе с нейронными сетями пользователь сталкивается с той же проблемой. Сети с большим количеством весов позволяют воспроизводить очень сложные функции, и в этом смысле они склонны к переобучению. Сеть же с небольшим количеством весов может оказаться недостаточно гибкой, чтобы смоделировать имеющуюся зависимость. Например, однослойная линейная сеть способна воспроизводить только линейные функции. Если использовать многослойные линейные сети, то ошибка всегда будет меньше, но это может свидетельствовать не о хорошем качестве модели, а о том, что проявляется явление переобучения.
Для того чтобы выявить эффект переобучения, используется механизм контрольной проверки. Часть обучающих наблюдений резервируется как контрольные наблюдения и не используется при обучении сети. Вместо этого по мере работы алгоритма эти наблюдения применяются для независимого контроля результата. Вначале ошибка сети на обучающем и контрольном множествах будет одинаковой; если они существенно отличаются, то, вероятно, это означает, что разбиение наблюдений на 2 множества не обеспечило их однородность. По мере обучения сети ошибка убывает, и, пока обучение уменьшает функцию ошибок, ошибка на контрольном множестве также будет убывать. Если же контрольная ошибка перестала убывать или стала расти, это указывает на то, что сеть начала слишком близко следовать исходным данным и обучение следует остановить. В этом случае следует уменьшить количество нейронов или слоев, ибо сеть является слишком мощной для решения данной задачи. Если же, наоборот, сеть имеет недостаточную мощность, чтобы воспроизвести имеющуюся зависимость, то явление переобучения скорее всего наблюдаться не будет и обе ошибки – обучения и проверки – не достигнут достаточно малого уровня.
Возникающие при работе с нейронными сетями проблемы отыскания глобального минимума или выбора размера сети приводят к тому, что при практической работе приходится экспериментировать с большим числом сетей различных конфигураций, порой обучая каждую из них несколько раз и сравнивая полученные результаты. Главным критерием выбора в этих случаях является контрольная погрешность. При этом применяется правило, согласно которому из двух нейронных сетей с приблизительно равными контрольными погрешностями следует выбирать ту, которая проще.
Необходимость многократных экспериментов ведет к тому, что контрольное множество начинает играть ключевую роль в выборе модели нейронной сети, т. е. становится частью процесса обучения. Тем самым его роль как независимого критерия качества модели ослабляется, поскольку при большом числе экспериментов возникает рискпереобучениянейронной сети на контрольном множестве. Для того чтобы гарантировать надежность выбираемой модели сети, резервируют еще одно –тестовоемножество наблюдений. Итоговая модель тестируется на данных из этого множества, чтобы убедиться, что результаты, достигнутые на обучающем и контрольном множествах реальны. Разумеется, для того чтобы хорошо играть свою роль, тестовое множество должно быть использовано только 1 раз: если его использовать повторно для корректировки процесса обучения, то оно фактически превратится в контрольное множество.
Итак, процедура построения нейронной сети состоит из следующих шагов:
выбора начальной конфигурации сети; например, в виде одного слоя с числом нейронов, равным 1/2 общего количества входов и выходов;
моделирования и обучения сети с оценкой контрольной ошибки и использованием дополнительных нейронов или промежуточных слоев;
выявления эффекта переобучения и корректировки конфигурации сети.