Поделиться через


Простой построитель сетевых сетей

Позволяет SimpleNetworkBuilder использовать простые стандартные типы сети с несколькими строками конфигурации. Поддерживается только ограниченный набор параметров конфигурации. Вместо этого можно определить более сложные BrainScriptNetworkBuilder сети.

Чтобы использовать SimpleNetworkBuilder, включите блок конфигурации с тем же именем в конфигурацию обучения. Если параметр опущен, предполагается значение по умолчанию. Сначала мы предоставляем краткий пример и перечислим все параметры управления и параметры ниже.

SimpleNetworkBuilder = [
    # 2 inputs, 2 hidden layers with 50 element nodes each, 2 outputs
    layerSizes        = 2:50*2:2
    trainingCriterion = "CrossEntropyWithSoftmax"
    evalCriterion     = "ErrorPrediction"
    layerTypes        = "Sigmoid"
    applyMeanVarNorm  = true
]

В приведенном выше примере "trainingCriterion" и "layerTypes" можно опустить, так как они используют значения по умолчанию. Необходимо указать следующие параметры.

  • initValueScale: значение для масштабирования диапазона случайных чисел, используемых для инициализации. По умолчанию — 1. Если параметры модели инициализируются с помощью равномерного распределения, диапазон случайных чисел будет скорректирован на [-0.05 * initValueScale, 0.05 * initValueScale]. Если параметры модели инициализируются с помощью распределения Gaussian, стандартное отклонение будет скорректировано на 0.2 * initValueScale * fanout^(-1/2).

  • layerTypes: тип нелинейной операции в скрытых слоях. Допустимые значения: Sigmoid (по умолчанию), Tanh и RectifiedLinear.

  • uniformInit: определяет, следует ли использовать равномерное распределение для инициализации параметров модели. Допустимые значения: true (по умолчанию) и false (с помощью gaussian распределения для инициализации параметров модели).

  • applyMeanVarNorm: следует ли применять нормализацию среднего или дисперсии для входных данных. Допустимые значения: true и false (по умолчанию).

  • addDropoutNodes: следует ли добавлять узлы раскрывающегося списка. Значение по умолчанию — false. Если задано значение true, к входному узлу будет применен раскрывающийся узел и выходные данные каждого скрытого слоя.

  • layerSizes: указывает размеры слоев. Например, layerSizes=128:10:200:4000 описывает нейронную сеть с двумя скрытыми слоями. Первый скрытый слой имеет измерение 10, а второй скрытый слой имеет измерение 200. Входные и выходные слои имеют измерение 128 и 4000 соответственно.

  • trainingCriterion: критерий, используемый для обучения. Значение по умолчанию — CrossEntropyWithSoftmax. Альтернативные варианты: SquareError, CrossEntropyи ClassBasedCrossEntropyWithSoftmax. Это ClassBasedCrossEntropyWithSoftmax предназначено для обучения на основе классов, что было бы полезно, если измерение выходных данных большое и поэтому необходимо разделить на классы для ускорения обучения и оценки.

  • evalCriterion: критерий оценки. Выбор значений совпадает с выбранным значением trainingCriterion.

  • lookupTableOrder: указывает порядок расширения контекста в lookupNode. Значение по умолчанию — 1. Установка значения, например 3, расширит входное измерение в зависимости от контекста по порядку 3. Например, если входное наблюдение имеет измерение 20, присвойте этому значению значение 3, то для измерения входного узла задано значение 60.

Для повторяющихся нейронных сетей (RNN) существуют дополнительные параметры.

  • recurrentLayer: указывает слои, содержащие самократные соединения. По умолчанию не существует повторяющийся слой. Используйте синтаксис n1:n2:n3 , чтобы указать, что слои n1, n2 и n3 имеют повторяющиеся подключения.

  • defaultHiddenActivity: значение действия скрытого слоя по умолчанию, используемое узлом задержки при доступе к значениям перед первым наблюдением. Значение по умолчанию — 0.1.

  • rnnType: тип предопределенных сетей. Допустимые значения:

    • SIMPLENET: нейронная сеть пересылки канала. Это тип сети по умолчанию.
    • SIMPLERNN: простой RNN, который может быть глубоким RNN, в котором несколько слоев имеют повторяющиеся циклы.
    • CLASSLM: простой RNN на основе класса. Он использует разреженные входные данные, разреженные параметры и разреженные выходные данные. Это часто используется для задач моделирования языка.
    • LBLM: нейронная сеть log-bilinear.
    • LSTM: долгосрочная нейронная сеть памяти.
    • CLASSLSTM: долгосрочная нейронная сеть памяти на основе класса. Он использует разреженные входные данные, разреженные параметры и разреженные выходные данные. Это часто используется для задач моделирования языка.

Далее: определение собственных сложных сетей с помощью BrainScriptNetworkBuilder.