exponenta event banner

Создание, настройка и инициализация многоуровневых неглубоких нейронных сетей

В этом разделе представлена часть типичного многоуровневого неглубокого сетевого рабочего процесса. Дополнительные сведения и другие шаги см. в разделе Многоуровневые неглубокие нейронные сети и обучение обратному распространению.

После сбора данных следующим шагом обучения сети является создание сетевого объекта. Функция feedforwardnet создает многоуровневую сеть прямой связи. Если эта функция вызывается без входных аргументов, то создается сетевой объект по умолчанию, который не был настроен. Результирующая сеть может быть сконфигурирована с помощью configure команда.

Например, файл bodyfat_dataset.mat содержит предопределенный набор входных и целевых векторов. Входные векторы определяют данные относительно физических атрибутов людей, а целевые значения определяют процентное содержание жира в организме людей. Загрузите данные с помощью следующей команды:

load bodyfat_dataset

При загрузке этого файла создаются две переменные. Входная матрица bodyfatInputs состоит из 252 векторов столбцов 13 физических переменных атрибутов для 252 различных людей. Целевая матрица bodyfatTargets состоит из соответствующих 252 процентов жира в организме.

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

net = feedforwardnet;
net = configure(net, bodyfatInputs, bodyfatTargets);

Дополнительные аргументы могут быть предоставлены feedforwardnet. Например, первым аргументом является массив, содержащий количество нейронов в каждом скрытом слое. (По умолчанию установлено значение 10, что означает один скрытый слой с 10 нейронами. Один скрытый слой обычно дает отличные результаты, но вы можете попробовать два скрытых слоя, если результаты с одним недостаточны. Увеличение числа нейронов в скрытом слое увеличивает мощность сети, но требует большего количества вычислений и с большей вероятностью производит переоборудование.) Второй аргумент содержит имя используемой обучающей функции. Если аргументов не предоставлено, количество слоев по умолчанию равно 2, число нейронов по умолчанию в скрытом слое равно 10, а тренировочная функция по умолчанию равна trainlm. Функция переноса по умолчанию для скрытых слоев: tansig и значение по умолчанию для выходного слоя: purelin.

configure команда конфигурирует сетевой объект, а также инициализирует веса и смещения сети; поэтому сеть готова к обучению. Иногда может потребоваться повторная инициализация весов или пользовательская инициализация. Инициализация весов (init) объясняет подробности процесса инициализации. Можно также пропустить шаг конфигурирования и перейти непосредственно к обучению сети. train автоматически конфигурирует сеть и инициализирует весовые коэффициенты.

Другие связанные архитектуры

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

Функция cascadeforwardnet создает сети каскадной пересылки. Они аналогичны сетям прямой связи, но включают в себя весовое соединение от входа к каждому уровню и от каждого уровня к последовательным слоям. Например, трехуровневая сеть имеет соединения от уровня 1 к уровню 2, уровень 2 к уровню 3 и уровень 1 к уровню 3. Трехуровневая сеть также имеет соединения от входа ко всем трем уровням. Дополнительные соединения могут повысить скорость, с которой сеть узнает требуемые отношения.

Функция patternnet создает сеть, которая очень похожа на feedforwardnet, за исключением того, что он использует tansig передаточная функция на последнем уровне. Эта сеть обычно используется для распознавания образов. Другие сети могут изучать динамические или временные связи.

Инициализация весов (init)

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

net = init(net);