wordEmbeddingLayer

Слой встраивания Word для нейронных сетей для глубокого обучения

Описание

Слой встраивания слова сопоставляет словари с векторами.

Используйте слой встраивания слова в сети долгой краткосрочной памяти (LSTM) глубокого обучения. Сеть LSTM является типом рекуррентной нейронной сети (RNN), которая может изучить долгосрочные зависимости между временными шагами данных о последовательности. Слой встраивания слова сопоставляет последовательность словарей к встраиванию векторов и изучает встраивание слова во время обучения.

Этот слой требует Deep Learning Toolbox™.

Создание

Описание

пример

layer = wordEmbeddingLayer(dimension,numWords) создает слой встраивания слова и задает размерность встраивания и размер словаря.

пример

layer = wordEmbeddingLayer(dimension,numWords,Name,Value) устанавливает дополнительные свойства с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.

Свойства

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

Word Embedding

Размерность встраивания слова, заданного как положительное целое число.

Пример: 300

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

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

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

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

  • 'glorot' – Инициализируйте веса с инициализатором Glorot [1] (также известный как инициализатор Ксавьера). Инициализатор Glorot независимо выборки от равномерного распределения с нулевым средним значением и отклонением 2/(numIn + numOut), где numIn = NumWords + 1 и numOut = Dimension.

  • 'he' – Инициализируйте веса с Ним инициализатор [2]. Он выборки инициализатора от нормального распределения с нулевым средним значением и отклонением 2/numIn, где numIn = NumWords + 1.

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

  • 'zeros' – Инициализируйте веса с нулями.

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

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

Слой только инициализирует веса когда Weights свойство пусто.

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

Веса слоя, заданные как Dimension- (NumWords+1) массив.

Для входных целых чисел i меньше чем или равный NumWords, слой выводит векторный Weights(:,i). В противном случае слой сопоставляет выходные параметры векторный Weights(:,NumWords+1).

Изучите уровень и регуляризацию

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

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

Пример 2

Фактор регуляризации L2 для весов, заданных как неотрицательный скаляр.

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

Пример 2

Слой

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

Создайте слой встраивания слова со встраиванием размерности 300 и 5 000 слов.

layer = wordEmbeddingLayer(300,5000)
layer = 
  WordEmbeddingLayer with properties:

         Name: ''

   Hyperparameters
    Dimension: 300
     NumWords: 5000

   Learnable Parameters
      Weights: []

  Show all properties

Включайте слой встраивания слова в сеть LSTM.

inputSize = 1;
embeddingDimension = 300;
numWords = 5000;
numHiddenUnits = 200;
numClasses = 10;

layers = [
    sequenceInputLayer(inputSize)
    wordEmbeddingLayer(embeddingDimension,numWords)
    lstmLayer(numHiddenUnits,'OutputMode','last')
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer]
layers = 
  6x1 Layer array with layers:

     1   ''   Sequence Input          Sequence input with 1 dimensions
     2   ''   Word Embedding Layer    Word embedding layer with 300 dimensions and 5000 unique words
     3   ''   LSTM                    LSTM with 200 hidden units
     4   ''   Fully Connected         10 fully connected layer
     5   ''   Softmax                 softmax
     6   ''   Classification Output   crossentropyex

Чтобы инициализировать слой встраивания слова в нейронной сети для глубокого обучения с весами от предварительно обученного встраивания слова, используйте word2vec функционируйте, чтобы извлечь веса слоя и установить 'Weights' пара "имя-значение" wordEmbeddingLayer функция. Слой встраивания слова ожидает столбцы векторов слова, таким образом, необходимо будет транспонировать выход word2vec функция.

emb = fastTextWordEmbedding;

words = emb.Vocabulary;
dimension = emb.Dimension;
numWords = numel(words);

layer = wordEmbeddingLayer(dimension,numWords,...
    'Weights',word2vec(emb,words)')
layer = 
  WordEmbeddingLayer with properties:

         Name: ''

   Hyperparameters
    Dimension: 300
     NumWords: 999994

   Learnable Parameters
      Weights: [300×999994 single]

  Show all properties

Чтобы создать соответствующее кодирование слова из встраивания слова, введите словарь встраивания слова к wordEncoding функционируйте как список слов.

enc = wordEncoding(words)
enc = 
  wordEncoding with properties:

      NumWords: 999994
    Vocabulary: [1×999994 string]

Ссылки

[1] Glorot, Ксавьер и Иосуа Бенхио. "Изучая трудность учебных глубоких нейронных сетей feedforward". В Продолжениях тринадцатой международной конференции по вопросам искусственного интеллекта и статистики, стр 249-256. 2010.

[2] Он, Kaiming, Сянюй Чжан, Шаоцин Жэнь и Цзянь Сунь. "Копаясь глубоко в выпрямителях: Превосходная производительность человеческого уровня на imagenet классификации". В Продолжениях международной конференции IEEE по вопросам компьютерного зрения, стр 1026-1034. 2015.

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

Введенный в R2018b