exponenta event banner

bilstmLayer

Уровень двунаправленной долговременной памяти (BiLSTM)

Описание

Уровень двунаправленного LSTM (BiLSTM) изучает двунаправленные долгосрочные зависимости между временными шагами временных рядов или данных последовательности. Эти зависимости могут быть полезны, если необходимо, чтобы сеть извлекала уроки из полного временного ряда на каждом временном шаге.

Создание

Описание

пример

layer = bilstmLayer(numHiddenUnits) создает двунаправленный уровень LSTM и устанавливает NumHiddenUnits собственность.

пример

layer = bilstmLayer(numHiddenUnits,Name,Value) устанавливает дополнительные OutputMode, Активации,, Параметры и инициализация, Скорость обучения и Регуляризация, и Name с использованием одного или нескольких аргументов пары имя-значение. Можно указать несколько аргументов пары имя-значение. Заключите каждое имя свойства в кавычки.

Свойства

развернуть все

BiLSTM

Число скрытых единиц (также называемое скрытым размером), указанное как положительное целое число.

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

Скрытое состояние не ограничивает количество временных шагов, обрабатываемых в итерации. Чтобы разделить ваши последовательности на меньшие последовательности для обучения, используйте 'SequenceLength' опция в trainingOptions.

Пример: 200

Формат вывода, указанный как один из следующих:

  • 'sequence' - Вывод полной последовательности.

  • 'last' - вывод последнего временного шага последовательности.

Размер ввода, указанный как положительное целое число или 'auto'. Если InputSize является 'auto', то программное обеспечение автоматически назначает размер ввода во время обучения.

Пример: 100

Активации

Функция активации для обновления ячейки и скрытого состояния, указанная как одно из следующих:

  • 'tanh' - используйте гиперболическую касательную функцию (tanh).

  • 'softsign' - Используйте функцию softsign softsign (x) = x1 + | x |.

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

Функция активации, применяемая к затворам, определяемая одним из следующих параметров:

  • 'sigmoid' - Использовать сигмоидную функцию λ (x) = (1 + e − x) − 1.

  • 'hard-sigmoid' - Использовать жесткую сигмоидальную функцию

    λ (x) = {00 .2x + 0 .51if  x<−2.5if−2.5≤x≤2.5if x > 2,5.

Слой использует эту опцию в качестве функции startg в вычислениях для литников слоя.

Государство

Начальное значение состояния ячейки, указанное как 2*NumHiddenUnits-по-1 числовой вектор. Это значение соответствует состоянию ячейки на временном шаге 0.

После установки этого свойства вызывает resetState установка этого значения для состояния ячейки.

Начальное значение скрытого состояния, указанное как 2*NumHiddenUnits-по-1 числовой вектор. Это значение соответствует скрытому состоянию на временном шаге 0.

После установки этого свойства вызывает resetState установите это значение в скрытое состояние.

Параметры и инициализация

Функция инициализации входных весов, указанных как одно из следующих:

  • 'glorot' - Инициализируйте входные веса инициализатором Glorot [1] (также известным как инициализатор Xavier). Инициализатор Glorot независимо отсчитывает из однородного распределения с нулевым средним и дисперсией 2/(InputSize + numOut), где numOut = 8*NumHiddenUnits.

  • 'he' - Инициализируйте входные веса с помощью инициализатора He [2]. Выборка инициализатора He из нормального распределения с нулевым средним и дисперсией 2/InputSize.

  • 'orthogonal' - Инициализировать входные веса с Q, ортогональной матрицей, заданной QR разложением Z = QR для случайной матрицы Z, дискретизированной из единичного нормального распределения. [3]

  • 'narrow-normal' - Инициализация входных весов путем независимой выборки из нормального распределения с нулевым средним значением и стандартным отклонением 0,01.

  • 'zeros' - Инициализируйте входные веса нулями.

  • 'ones' - Инициализируйте входные веса единицами.

  • Дескриптор функции - инициализация входных весов с помощью пользовательской функции. Если указан дескриптор функции, то функция должна иметь вид weights = func(sz), где sz - размер входных весов.

Слой инициализирует входные веса только в том случае, если InputWeights пустое свойство.

Типы данных: char | string | function_handle

Функция для инициализации повторяющихся весов, указанных как одно из следующих:

  • 'orthogonal' - Инициализировать входные веса с Q, ортогональной матрицей, заданной QR разложением Z = QR для случайной матрицы Z, дискретизированной из единичного нормального распределения. [3]

  • 'glorot' - Инициализируйте повторяющиеся веса инициализатором Glorot [1] (также известным как инициализатор Xavier). Инициализатор Glorot независимо отсчитывает из однородного распределения с нулевым средним и дисперсией 2/(numIn + numOut), где numIn = NumHiddenUnits и numOut = 8*NumHiddenUnits.

  • 'he' - Инициализируйте повторяющиеся веса с помощью инициализатора He [2]. Выборка инициализатора He из нормального распределения с нулевым средним и дисперсией 2/NumHiddenUnits.

  • 'narrow-normal' - Инициализировать повторяющиеся веса путем независимой выборки из нормального распределения с нулевым средним и стандартным отклонением 0,01.

  • 'zeros' - Инициализируйте повторяющиеся веса нулями.

  • 'ones' - Инициализируйте повторяющиеся веса единицами.

  • Дескриптор функции - инициализация повторяющихся весов с помощью пользовательской функции. Если указан дескриптор функции, то функция должна иметь вид weights = func(sz), где sz - размер повторяющихся весов.

Слой инициализирует повторяющиеся веса только в том случае, если RecurrentWeights пустое свойство.

Типы данных: char | string | function_handle

Функция инициализации смещения, указанная как одно из следующих:

  • 'unit-forget-gate' - Инициализируйте смещение забытых ворот единицами, а остальные смещения нулями.

  • 'narrow-normal' - Инициализировать смещение путем независимой выборки из нормального распределения с нулевым средним и стандартным отклонением 0,01.

  • 'ones' - Инициализировать смещение с помощью таковых.

  • Дескриптор функции - инициализация смещения с помощью пользовательской функции. Если указан дескриптор функции, то функция должна иметь вид bias = func(sz), где sz - размер смещения.

Уровень инициализирует смещение только в том случае, если Bias пустое свойство.

Типы данных: char | string | function_handle

Входные веса, заданные как матрица.

Матрица входных весов представляет собой конкатенацию восьми матриц входных весов для компонентов (вентилей) на двунаправленном уровне LSTM. Восемь матриц соединены вертикально в следующем порядке:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

Входные веса являются обучаемыми параметрами. При обучении сети, если InputWeights является непустым, то trainNetwork использует InputWeights свойство в качестве начального значения. Если InputWeights пуст, затем trainNetwork использует инициализатор, указанный InputWeightsInitializer.

Во время обучения, InputWeights является 8*NumHiddenUnitsоколо-InputSize матрица.

Повторяющиеся веса, указанные как матрица.

Матрица рекуррентного веса представляет собой конкатенацию восьми матриц рекуррентного веса для компонентов (вентилей) двунаправленного уровня LSTM. Восемь матриц соединены вертикально в следующем порядке:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

Повторяющиеся веса являются обучаемыми параметрами. При обучении сети, если RecurrentWeights является непустым, то trainNetwork использует RecurrentWeights свойство в качестве начального значения. Если RecurrentWeights пуст, затем trainNetwork использует инициализатор, указанный RecurrentWeightsInitializer.

Во время обучения, RecurrentWeights является 8*NumHiddenUnitsоколо-NumHiddenUnits матрица.

Смещения слоев, заданные как числовой вектор.

Вектор смещения представляет собой конкатенацию восьми векторов смещения для компонентов (вентилей) двунаправленного уровня LSTM. Восемь векторов соединены вертикально в следующем порядке:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

Смещения слоя - это обучаемые параметры. При обучении сети, если Bias является непустым, то trainNetwork использует Bias свойство в качестве начального значения. Если Bias пуст, затем trainNetwork использует инициализатор, указанный BiasInitializer.

Во время обучения, Bias является 8*NumHiddenUnits-по-1 числовой вектор.

Скорость обучения и регуляризация

Коэффициент скорости обучения для входных весов, определяемый как числовой скаляр или числовой вектор 1 на 8.

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

Управление значением коэффициента скорости обучения для четырех отдельных матриц в InputWeights, назначьте вектор 1 на 8, где записи соответствуют коэффициенту скорости обучения:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

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

Пример: 0.1

Коэффициент скорости обучения для повторяющихся весов, определяемый как числовой скаляр или числовой вектор 1 на 8.

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

Управление значением скорости обучения для четырех отдельных матриц в RecurrentWeights, назначьте вектор 1 на 8, где записи соответствуют коэффициенту скорости обучения:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

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

Пример: 0.1

Пример: [1 2 1 1 1 2 1 1]

Коэффициент скорости обучения для смещений, заданный как неотрицательный скаляр или числовой вектор 1 на 8.

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

Управление значением коэффициента скорости обучения для четырех отдельных матриц в Bias, назначьте вектор 1 на 8, где записи соответствуют коэффициенту скорости обучения:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

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

Пример: 2

Пример: [1 2 1 1 1 2 1 1]

L2 коэффициент регуляризации для входных весов, определяемый как числовой скаляр или числовой вектор 1 на 8.

Программное обеспечение умножает этот коэффициент на глобальный коэффициент регуляции L2 для определения коэффициента регуляции L2 для входных весов слоя. Например, если InputWeightsL2Factor 2, тогда коэффициент регуляризации L2 для входных весов слоя в два раза превышает текущий коэффициент глобальной регуляризации L2. Программное обеспечение определяет коэффициент регуляции L2 на основе настроек, указанных в trainingOptions функция.

Управление значением коэффициента регуляризации L2 для четырех отдельных матриц в InputWeights, назначьте вектор 1 на 8, где записи соответствуют коэффициенту регуляризации L2 следующего:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

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

Пример: 0.1

Пример: [1 2 1 1 1 2 1 1]

L2 коэффициент регуляризации для повторяющихся весов, определяемый как числовой скаляр или числовой вектор 1 на 8.

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

Управление значением коэффициента регуляризации L2 для четырех отдельных матриц в RecurrentWeights, назначьте вектор 1 на 8, где записи соответствуют коэффициенту регуляризации L2 следующего:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

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

Пример: 0.1

Пример: [1 2 1 1 1 2 1 1]

L2 коэффициент регуляризации для смещений, определяемый как неотрицательный скаляр.

Программное обеспечение умножает этот коэффициент на глобальный коэффициент регуляризации L2, чтобы определить L2 регуляризацию для смещений на этом уровне. Например, если BiasL2Factor 2, то L2 регуляризация для смещений в этом слое вдвое превышает глобальный коэффициент регуляризации L2. Можно указать глобальный коэффициент регуляризации L2 с помощью trainingOptions функция.

Управление значением коэффициента регуляризации L2 для четырех отдельных матриц в Bias, назначьте вектор 1 на 8, где записи соответствуют коэффициенту регуляризации L2 следующего:

  1. Входной затвор (вперед)

  2. Забытые ворота (вперед)

  3. Сота-кандидат (вперед)

  4. Выходной затвор (прямой)

  5. Входной затвор (назад)

  6. Забытые ворота (назад)

  7. Кандидат в ячейку (назад)

  8. Выходной затвор (назад)

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

Пример: 2

Пример: [1 2 1 1 1 2 1 1]

Слой

Имя слоя, указанное как символьный вектор или строковый скаляр. Если Name имеет значение ''затем программа автоматически присваивает имя во время обучения.

Типы данных: char | string

Количество входов слоя. Этот слой принимает только один вход.

Типы данных: double

Входные имена слоя. Этот слой принимает только один вход.

Типы данных: cell

Количество выходов уровня. Этот уровень имеет только один выход.

Типы данных: double

Выходные имена слоя. Этот уровень имеет только один выход.

Типы данных: cell

Примеры

свернуть все

Создание двунаправленного уровня LSTM с именем 'bilstm1' и 100 скрытых единиц.

layer = bilstmLayer(100,'Name','bilstm1')
layer = 
  BiLSTMLayer with properties:

                       Name: 'bilstm1'

   Hyperparameters
                  InputSize: 'auto'
             NumHiddenUnits: 100
                 OutputMode: 'sequence'
    StateActivationFunction: 'tanh'
     GateActivationFunction: 'sigmoid'

   Learnable Parameters
               InputWeights: []
           RecurrentWeights: []
                       Bias: []

   State Parameters
                HiddenState: []
                  CellState: []

  Show all properties

Включение двунаправленного уровня LSTM в Layer массив.

inputSize = 12;
numHiddenUnits = 100;
numClasses = 9;

layers = [ ...
    sequenceInputLayer(inputSize)
    bilstmLayer(numHiddenUnits)
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer]
layers = 
  5x1 Layer array with layers:

     1   ''   Sequence Input          Sequence input with 12 dimensions
     2   ''   BiLSTM                  BiLSTM with 100 hidden units
     3   ''   Fully Connected         9 fully connected layer
     4   ''   Softmax                 softmax
     5   ''   Classification Output   crossentropyex

Вопросы совместимости

развернуть все

В R2019a изменилось поведение

В R2019a изменилось поведение

Ссылки

[1] Глорот, Ксавье и Йошуа Бенгио. «Понимание сложности обучения глубоким нейронным сетям». Материалы тринадцатой Международной конференции по искусственному интеллекту и статистике, 249-356. Сардиния, Италия: AISTATS, 2010.

[2] Хэ, Каймин, Сянъу Чжан, Шаоцин Жэнь и Цзянь Сунь. «Углубляясь в выпрямители: превосходя показатели на уровне человека по классификации ImageNet». В трудах Международной конференции IEEE 2015 по компьютерному зрению, 1026-1034. Вашингтон, округ Колумбия: Общество компьютерного зрения IEEE, 2015.

[3] Саксен, Эндрю М., Джеймс Л. Макклелланд и Сурья Гангули. «Точные решения нелинейной динамики обучения в глубоких линейных нейронных сетях». arXiv препринт arXiv:1312.6120 (2013).

Расширенные возможности

..
Представлен в R2018a