Главная       Скачать       Коммерческая поддержка       FAQ       Forum       О нас       Английская версия

Ансамбли нейронных сетей

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

Ансамбль нейронных сетей – это набор нейросетевых моделей, принимающий решение путем усреднения результатов работы отдельных моделей. В зависимости от того, как конструируется ансамбль, его использование позволяет решить одну из двух проблем: склонность базовой нейросетевой архитектуры к недообучению (эту проблему решает мета-алгоритм boosting), либо склонность базовой архитектуры к переобучению (мета-алгоритм bagging и другие алгоритмы).

В текущей версии пакета ALGLIB реализованы два алгоритма, конструирующих ансамбли: bagged neural networks и early stopping ensembles. Оба алгоритма используют усреднение, чтобы преодолеть склонность нейронной сети к переобучению. Алгоритмы бустинга на данный момент в пакете ALGLIB не представлены.

Содержание

    1 Основные принципы работы с ансамблями
    2 Bagged neural networks
    3 Early stopping ensembles
    4 Формат обучающего множества
    5 Manual entries

Основные принципы работы с ансамблями

Интерфейс для работы с ансамблями нейронных сетей во многом похож на средства для работы с отдельными нейронными сетями, доступные в модулях mlpbase и mlptrain. Работа с ансамблем осуществляется в следующей последовательности:

  1. Выбор базовой нейросетевой архитектуры и числа сетей в ансамбле, после чего при помощи соответствующей подпрограммы создается ансамбль. Интерфейс подпрограмм, использующихся для создания ансамбля, практически полностью копирует аналогичные подпрограммы модуля mlpbase. Нейронные сети, входящие в состав ансамбля, инициализированы случайными значениями, и нуждаются в обучении.
  2. Обучение при помощи одного из алгоритмов, рассмотренных ниже. Важной особенностью обучения является то, что в ходе него модифицируется уже созданный ансамбль, а не создается новый.
  3. Работа с полученной моделью (обработка данных, копирование/сериализация модели и т.д.). Подпрограммы, осуществляющие эти операции, почти полностью аналогичны аналогичным подпрограммам модуля mlpbase.

Реализация ансамблей нейронных сетей в ALGLIB имеет два ограничения:

Bagged neural networks

Мета-алгоритм bagging (сокращение от bootstrap aggregating) состоит в генерации на основе обучающего множества K выборок с повторениями и обучении на основе этих выборок K нейронных сетей. Элементы, не попавшие в очередную выборку, используются в качестве тестового множества для соответствующей нейронной сети. Более подробно этот алгоритм рассмотрен в Википедии.

Для обучения служат две подпрограммы – MLPEBaggingLM и MLPEBaggingLBFGS. Первая обучает индивидуальные нейронные сети с использованием алгоритма из семейства Левенберга-Марквардта, вторая – с использованием L-BFGS алгоритма.

Главным достоинством алгоритма является то, что в результате его работы помимо обученного ансамбля также генерируется и внутренняя оценка погрешности обобщения, аналогичная получаемой в ходе процедуры кросс-валидации. Главный недостаток – то, что трудоемкость алгоритма сопоставима с трудоемкостью кросс-валидации, а точность не лучше, чем у достаточно хорошо регуляризированной индивидуальной нейронной сети. Можно немного сэкономить время за счет того, что усреднение позволяет снизить требования к качеству обучения индивидуальных нейронных сетей (т.е. установить менее строгий критерий остановки алгоритма). Однако в целом этот алгоритм не намного превосходит связку "индивидуальная нейронная сеть + регуляризация + кросс-валидация".

Early stopping ensembles

Ранний останов является хорошо известным способом бороться с переобучением нейросетевой модели. Обучающее множество разбивается на две части, одна из которых используется для обучения, а другая – для валидации. В качестве модели используется нейронная сеть с избыточным количеством нейронов в скрытом слое (например, сеть с N входами, M выходами и одним скрытым слоем, содержащим 30-100 нейронов). Избыточность сети важна для успешности алгоритма – сеть должна быть в высшей степени гибкой, чтобы ранний останов был эффективен. Обучение прекращается, когда ошибка на валидационном множестве начинает расти (отсюда название – ранний останов).

Получаемые таким образом модели характеризуются низким смещением, но высокой дисперсией. На практике это обозначает, что отдельная нейронная сеть, обученная при помощи раннего останова, имеет слишком большую ошибку, чтобы быть полезной, однако усреднение нескольких нейронных сетей (десять – хорошее значение) приводит к существенному снижению ошибки. Эксперименты показывают, что ансамбль сетей раннего останова сопоставим по качеству с одиночной нейронной сетью оптимальной архитектуры, обученной традиционным алгоритмом. При этом одиночная нейронная сеть требует длительной настройки (перебора всех возможных сочетаний архитектуры и регуляризирующего параметра), в то время как ансамбль сетей раннего останова в такой настройке не нуждается.

Таким образом, ансамбли сетей раннего останова характеризуются следующими достоинствами:

Недостатки алгоритма:

Открытые вопросы:

Формат обучающего множества

Формат обучающего множества описан в статье об общих принципах работы алгоритмов классификации и регрессии. Обратите внимание - формат множества зависит от того, какую задачу решает ансамбль - регрессию или классификацию.

Manual entries

C++ mlpe subpackage   
C# mlpe subpackage   

This article is intended for personal use only.

Скачать ALGLIB

C#

Исходный код на C#

Downloads page

 

C++

Исходный код на C++

Downloads page

 

C++, арифметика высокой точности

Исходный код на C++, использующий библиотеки MPFR/GMP.

Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.

Downloads page

 

FreePascal

Исходный код на Free Pascal.

Downloads page

 

Delphi

Исходный код на Delphi.

Downloads page

 

VB.NET

Исходный код на VB.NET.

Downloads page

 

VBA

Исходный код на VBA.

Downloads page

 

Python

Исходный код на Python (CPython и IronPython).

Downloads page

 

 

ALGLIB® - numerical analysis library, 1999-2017.
ALGLIB is registered trademark of the ALGLIB Project.