Выберите функции обработки ввода-вывода нейронной сети

В этом разделе представлена часть типового многослойного сетевого рабочего процесса. Для получения дополнительной информации и других шагов см. Multilayer Shallow Neural Networks and Backpropagation Training.

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

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

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

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

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

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

Чтобы увидеть список функций обработки массива ячеек, назначенных входу сети, обратитесь к этому свойству:

net.inputs{1}.processFcns

где индекс 1 относится к первому входному вектору. (Существует только один входной вектор для сети прямого распространения.) Чтобы просмотреть функции обработки, возвращенные выходом двухуровневой сети, обратитесь к этому свойству сети:

net.outputs{2}.processFcns

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

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

net.inputs{1}.processParams{i}

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

net.outputs{2}.processParams{i}

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

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

Функция

Алгоритм

mapminmax

Нормализуйте входы/цели, чтобы опуститься в области значений [− 1, 1]

mapstd

Нормализуйте входы/цели, чтобы иметь нулевое среднее и отклонение единства

processpca

Извлеките основные компоненты из вектора входа

fixunknowns

Обработка неизвестных входов

removeconstantrows

Удалите входы/цели, которые являются постоянными

Представление неизвестных или безразличных целей

Неизвестные или «не заботятся» цели могут быть представлены с NaN значения. Мы не хотим, чтобы неизвестные целевые значения оказывали влияние на обучение, но если сеть имеет несколько выходов, некоторые элементы любого целевого вектора могут быть известны, в то время как другие неизвестны. Одним из решений было бы удалить частично неизвестный целевой вектор и связанный с ним входной вектор из набора обучающих данных, но это включает потерю хороших целевых значений. Лучшим решением является представление тех неизвестных целей с NaN значения. Все функции эффективности тулбокса будут игнорировать эти цели в целях вычисления эффективности и производных от эффективности.