ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

bilstmLayer

双方向長短期記憶 (BiLSTM) 層

説明

双方向 LSTM (BiLSTM) 層は、時系列データまたはシーケンス データのタイム ステップ間の双方向の長期的な依存関係を学習します。これらの依存関係は、各タイム ステップで時系列全体からネットワークに学習させる場合に役立ちます。

作成

構文

layer = bilstmLayer(numHiddenUnits)
layer = bilstmLayer(numHiddenUnits,Name,Value)

説明

layer = bilstmLayer(numHiddenUnits) は、双方向 LSTM 層を作成し、NumHiddenUnits プロパティを設定します。

layer = bilstmLayer(numHiddenUnits,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、追加の BiLSTM パラメーターBiLSTM パラメーター学習率および L2 係数を設定します。複数の名前と値のペアの引数を指定できます。各プロパティ名を引用符で囲みます。

プロパティ

すべて展開する

BiLSTM パラメーター

層の名前。文字ベクトルとして指定します。Name'' に設定されている場合、学習時に名前が自動的に割り当てられます。

データ型: char

入力サイズ。正の整数または 'auto' として指定します。InputSize'auto' の場合、学習時に入力サイズが自動的に割り当てられます。

例: 100

隠れユニットの数 (隠れサイズとも呼ばれる)。正の整数として指定します。

例: 200

出力の形式。次のいずれかに指定します。

  • 'sequence' – シーケンス全体を出力します。

  • 'last' – シーケンスの最後のタイム ステップを出力します。

活性化

cell 状態と隠れ状態を更新する活性化関数。次のいずれかに指定します。

  • 'tanh' – 双曲線正接関数 (tanh) を使用します。

  • 'softsign' – ソフトサイン関数 softsign(x)=x1+|x| を使用します。

層は、cell 状態と隠れ状態を更新する計算における関数 σc としてこのオプションを使用します。LSTM 層での活性化関数の使用方法の詳細は、長短期記憶層を参照してください。

ゲートに適用する活性化関数。次のいずれかに指定します。

  • 'sigmoid' – シグモイド関数 σ(x)=(1+ex)1 を使用します。

  • 'hard-sigmoid' – ハード シグモイド関数

    σ(x)={00.2x+0.51if x<2.5if2.5x2.5if x>2.5.

    を使用します。

層は、入力ゲート、出力ゲート、および忘却ゲートの計算における関数 σg としてこのオプションを使用します。LSTM 層での活性化関数の使用方法の詳細は、長短期記憶層を参照してください。

学習率および L2 係数

バイアスの学習率係数。非負のスカラーまたは 1 行 8 列の数値ベクトルとして指定します。

この係数にグローバル学習率が乗算されて、この層のバイアスの学習率が決定されます。たとえば、BiasLearnRateFactor が 2 の場合、層のバイアスの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定された設定に基づいて、グローバル学習率が決定されます。

Bias に含まれる 4 つの個々の行列について学習率係数の値を制御するには、1 行 8 列のベクトルを割り当てます。ここで、エントリは以下の学習率係数に対応します。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

すべての行列に同じ値を指定するには、非負のスカラーを指定します。

例: 2

例: [1 2 1 1 1 2 1 1]

バイアスの L2 正則化係数。非負のスカラーとして指定します。

この係数にグローバル L2 正則化係数が乗算されて、この層のバイアスの学習率が決定されます。たとえば、BiasL2Factor が 2 の場合、この層のバイアスの L2 正則化はグローバル L2 正則化係数の 2 倍になります。グローバル L2 正則化係数は、関数 trainingOptions を使用して指定できます。

Bias に含まれる 4 つの個々の行列について L2 正則化係数の値を制御するには、1 行 8 列のベクトルを割り当てます。ここで、エントリは以下の L2 正則化係数に対応します。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

すべての行列に同じ値を指定するには、非負のスカラーを指定します。

例: 2

例: [1 2 1 1 1 2 1 1]

入力の重みの学習率係数。数値スカラーまたは 1 行 8 列の数値ベクトルとして指定します。

この係数にグローバル学習率が乗算されて、層の入力の重みの学習率係数が決定されます。たとえば、InputWeightsLearnRateFactor が 2 の場合、層の入力の重みの学習率係数は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定された設定に基づいて、グローバル学習率が決定されます。

InputWeights に含まれる 4 つの個々の行列について学習率係数の値を制御するには、1 行 8 列のベクトルを割り当てます。ここで、エントリは以下の学習率係数に対応します。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

すべての行列に同じ値を指定するには、非負のスカラーを指定します。

例: 0.1

入力の重みの L2 正則化係数。数値スカラーまたは 1 行 8 列の数値ベクトルとして指定します。

この係数にグローバル L2 正則化係数が乗算されて、層の入力の重みの L2 正則化係数が決定されます。たとえば、InputWeightsL2Factor が 2 の場合、層の入力の重みの L2 正則化係数は現在のグローバル L2 正則化係数の 2 倍になります。関数 trainingOptions で指定された設定に基づいて、L2 正則化係数が決定されます。

InputWeights に含まれる 4 つの個々の行列について L2 正則化係数の値を制御するには、1 行 8 列のベクトルを割り当てます。ここで、エントリは以下の L2 正則化係数に対応します。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

すべての行列に同じ値を指定するには、非負のスカラーを指定します。

例: 0.1

例: [1 2 1 1 1 2 1 1]

再帰重みの学習率係数。数値スカラーまたは 1 行 8 列の数値ベクトルとして指定します。

この係数にグローバル学習率が乗算されて、層の再帰重みの学習率が決定されます。たとえば、RecurrentWeightsLearnRateFactor が 2 の場合、層の再帰重みの学習率は現在のグローバル学習率の 2 倍になります。関数 trainingOptions で指定された設定に基づいて、グローバル学習率が決定されます。

RecurrentWeights に含まれる 4 つの個々の行列について学習率の値を制御するには、1 行 8 列のベクトルを割り当てます。ここで、エントリは以下の学習率係数に対応します。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

すべての行列に同じ値を指定するには、非負のスカラーを指定します。

例: 0.1

例: [1 2 1 1 1 2 1 1]

再帰重みの L2 正則化係数。数値スカラーまたは 1 行 8 列の数値ベクトルとして指定します。

この係数にグローバル L2 正則化係数が乗算されて、層の再帰重みの L2 正則化係数が決定されます。たとえば、RecurrentWeightsL2Factor が 2 の場合、層の再帰重みの L2 正則化係数は現在のグローバル L2 正則化係数の 2 倍になります。関数 trainingOptions で指定された設定に基づいて、L2 正則化係数が決定されます。

RecurrentWeights に含まれる 4 つの個々の行列について L2 正則化係数の値を制御するには、1 行 8 列のベクトルを割り当てます。ここで、エントリは以下の L2 正則化係数に対応します。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

すべての行列に同じ値を指定するには、非負のスカラーを指定します。

例: 0.1

例: [1 2 1 1 1 2 1 1]

状態パラメーター

cell 状態の初期値。2*NumHiddenUnits 行 1 列の数値ベクトルとして指定します。この値はタイム ステップ 0 での cell 状態に対応します。predictAndUpdateStateclassifyAndUpdateState の使用時には、このプロパティの値が変化する可能性があります。

このプロパティの設定後に関数 resetState を呼び出すと、cell 状態がこの値に設定されます。

隠れ状態の初期値。2*NumHiddenUnits 行 1 列の数値ベクトルとして指定します。この値はタイム ステップ 0 での隠れ状態に対応します。predictAndUpdateStateclassifyAndUpdateState の使用時には、このプロパティの値が変化する可能性があります。

このプロパティの設定後に関数 resetState を呼び出すと、隠れ状態がこの値に設定されます。

重み

層のバイアス。8*NumHiddenUnits 行 1 列の数値ベクトルとして指定します。

このバイアス ベクトルは、双方向 LSTM 層にあるコンポーネント (ゲート) の 8 個のバイアス ベクトルの連結です。8 個のベクトルは、以下の順で垂直に連結されています。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

入力の重み。8*NumHiddenUnitsInputSize 列の行列として指定します。

この入力重み行列は、双方向 LSTM 層にあるコンポーネント (ゲート) の 8 個の入力重み行列の連結です。8 個の行列は、以下の順で垂直に連結されています。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

再帰重み。8*NumHiddenUnitsNumHiddenUnits 列の行列として指定します。

この再帰重み行列は、双方向 LSTM 層にあるコンポーネント (ゲート) の 8 個の再帰重み行列の連結です。8 個の行列は、以下の順で垂直に連結されています。

  1. 入力ゲート (順方向)

  2. 忘却ゲート (順方向)

  3. cell 候補 (順方向)

  4. 出力ゲート (順方向)

  5. 入力ゲート (逆方向)

  6. 忘却ゲート (逆方向)

  7. cell 候補 (逆方向)

  8. 出力ゲート (逆方向)

すべて折りたたむ

名前が 'bilstm1' で、隠れユニットが 100 個の双方向 LSTM 層を作成します。

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

配列 Layer に双方向 LSTM 層を含めます。

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

R2018a で導入