В этом разделе представлена часть типичного многоуровневого сетевого рабочего процесса. Дополнительные сведения и другие шаги см. в разделе Многоуровневые неглубокие нейронные сети и обучение обратному распространению.
Обучение нейронной сети может быть более эффективным, если вы выполняете определенные шаги предварительной обработки для сетевых входов и целей. В этом разделе описывается несколько процедур предварительной обработки, которые можно использовать. (Наиболее распространенные из них предоставляются автоматически при создании сети, и они становятся частью сетевого объекта, так что при каждом использовании сети данные, поступающие в сеть, обрабатываются таким же образом.)
Например, в многослойных сетях сигмоидные передаточные функции обычно используются в скрытых слоях. Эти функции становятся по существу насыщенными, когда чистый вход больше трёх (exp (− 3) ≅ 0,05). Если это произойдет в начале тренировочного процесса, градиенты будут очень маленькими, а сетевая тренировка будет очень медленной. На первом уровне сети чистый вход является произведением входного значения, умноженного на вес плюс смещение. Если вход очень большой, то вес должен быть очень маленьким, чтобы предотвратить насыщение передаточной функции. Стандартной практикой является нормализация входных данных перед их применением к сети.
Обычно этап нормализации применяется как к входным векторам, так и к целевым векторам в наборе данных. Таким образом, сетевой выход всегда попадает в нормированный диапазон. Затем сетевой выход может быть преобразован обратно в блоки исходных целевых данных, когда сеть вводится для использования в поле.
Проще всего считать, что нейронная сеть имеет блок предварительной обработки, который появляется между входом и первым уровнем сети, и блок последующей обработки, который появляется между последним уровнем сети и выходом, как показано на следующем рисунке.

Большинство функций создания сети на панели инструментов, включая функции создания многоуровневой сети, такие как feedforwardnetавтоматически присваивать функции обработки входам и выходам сети. Эти функции преобразуют вводимые и целевые значения в значения, которые лучше подходят для обучения сети.
Функции обработки ввода и вывода по умолчанию можно переопределить путем корректировки свойств сети после ее создания.
Для просмотра списка функций обработки массива ячеек, назначенных входу сети, откройте следующее свойство:
net.inputs{1}.processFcns
где индекс 1 относится к первому входному вектору. (Существует только один входной вектор для сети прямой связи.) Для просмотра функций обработки, возвращаемых выводом двухуровневой сети, обратитесь к этому свойству сети:
net.outputs{2}.processFcns
где индекс 2 относится к выходному вектору, поступающему от второго уровня. (Для сети прямой связи существует только один выходной вектор, который поступает с конечного уровня.) Эти свойства можно использовать для изменения функций обработки, которые должны применяться сетью к входам и выходам. Однако значения по умолчанию обычно обеспечивают отличную производительность.
Некоторые функции обработки имеют параметры, которые настраивают их работу. Вы можете получить доступ или изменить параметры iФункция обработки ввода для сетевого ввода:
net.inputs{1}.processParams{i}
Вы можете получить доступ или изменить параметры iфункция обработки выходного сигнала для сетевого выходного сигнала, связанного со вторым уровнем, следующим образом:
net.outputs{2}.processParams{i}
Для функций создания многоуровневой сети, таких как feedforwardnet, функции обработки ввода по умолчанию: removeconstantrows и mapminmax. Для выходных данных также используются функции обработки по умолчанию. removeconstantrows и mapminmax.
В следующей таблице перечислены наиболее распространенные функции предварительной и постобработки. В большинстве случаев использовать их напрямую не требуется, поскольку шаги предварительной обработки становятся частью сетевого объекта. При моделировании или обучении сети предварительная обработка и постобработка выполняются автоматически.
Функция | Алгоритм |
|---|---|
Нормализовать входы/цели в диапазоне [− 1, 1] | |
Нормализовать входы/цели, чтобы иметь нулевое среднее и единичную дисперсию | |
Извлечение основных компонентов из входного вектора | |
Обработка неизвестных входных данных | |
Удалить постоянные входы/цели |
Неизвестные или «не волнующие» цели можно представить с помощью NaN значения. Мы не хотим, чтобы неизвестные целевые значения влияли на обучение, но если сеть имеет несколько выходов, некоторые элементы любого целевого вектора могут быть известны, а другие неизвестны. Одним из решений было бы удаление частично неизвестного целевого вектора и связанного с ним входного вектора из обучающего набора, но это предполагает потерю хороших целевых значений. Лучшим решением является представление этих неизвестных целей с NaN значения. Все функциональные возможности инструментария будут игнорировать эти целевые показатели для целей расчета производительности и производных от производительности.