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

Эта тема представляет часть типичного многоуровневого мелкого сетевого рабочего процесса. Для получения дополнительной информации и другие шаги, смотрите Многоуровневые Мелкие Нейронные сети и Обучение Обратной связи.

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

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

load bodyfat_dataset

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

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

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

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

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

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

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

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

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

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

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

net = init(net);