このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。GydF4y2Ba
このトピックでは,长短期记忆(LSTM)ネットワークを使用して,分类タスクと回帰タスク用のシーケンスデータおよび时系列データを扱う方法を说明します.LSTMネットワークを使用してシーケンスデータを分类する方法を示す例については,GydF4y2Ba深層学習を使用したシーケンスの分類GydF4y2Baを参照してください。GydF4y2Ba
LSTMネットワークは,再帰型ニューラルネットワーク(RNN)の一种で,シーケンスデータのタイムステップ间の长期的な依存关系を学习できます。GydF4y2Ba
LSTMネットワークの中核コンポーネントはシーケンス入力層とLSTM層です。GydF4y2Ba“シーケンス入力层” は,ネットワークにシーケンスデータまたは时系列データを入力します。GydF4y2Ba“LSTM層“はシーケンスデータのタイムステップ間の長期的な依存関係を学習します。GydF4y2Ba
次の図は,分类用のシンプルなLSTMネットワークのアーキテクチャを示しています。このネットワークはシーケンス入力层で始まり,その后にLSTM层が続きます。クラスラベルを予测するために,このネットワークは全结合层,ソフトマックス层,および分类出力层で终わります。GydF4y2Ba
次の図は,回帰用のシンプルなLSTMネットワークのアーキテクチャを示しています。このネットワークはシーケンス入力层で始まり,その后にLSTM层が続きます。このネットワークは全结合层と回帰出力层で终わります。GydF4y2Ba
次の図は,ビデオの分类用のネットワークのアーキテクチャを示しています。イメージシーケンスをネットワークに入力するには,シーケンス入力层を使用します。畳み込み层を使用して特徴を抽出する,つまり,畳み込み演算をビデオの各フレームに个别に适用するには,シーケンス折りたたみ层の后に畳み込み层を使用し,その后にシーケンス展开层を使用します.LSTM层を使用してベクトルのシーケンスから学习するには,フラット化层の后にLSTM层と出力层を使用します。GydF4y2Ba
要标记的序列分類用の LSTMネットワークを作成するには、シーケンス入力層、LSTM層、全結合層、ソフトマックス層、および分類出力層を含む層配列を作成します。GydF4y2Ba
シーケンス入力層のサイズを入力データの特徴の数に設定します。全結合層のサイズをクラスの数に設定します。シーケンス長を指定する必要はありません。GydF4y2Ba
LSTM層では,隠れユニットの数と出力モードGydF4y2Ba'最后的'GydF4y2Ba
を指定します。GydF4y2Ba
numFeatures = 12;numHiddenUnits = 100;numClasses = 9;层= [GydF4y2Ba...GydF4y2BasequenceInputlayer(numfeatures)lstmlayer(numhidentunits,GydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'最后的'GydF4y2Ba)全连接列(numclasses)softmaxlayer分类层];GydF4y2Ba
sequence-to-label分類についてLSTMネットワークに学習をさせ,新しいデータを分類する方法の例については,GydF4y2Ba深層学習を使用したシーケンスの分類GydF4y2Baを参照してください。GydF4y2Ba
序列到序列分类用のLSTMネットワークを作成するには,序列至标签分类の场合と同じアーキテクチャを使用しますが,LSTM层の出力モードをGydF4y2Ba'顺序'GydF4y2Ba
に設定します。GydF4y2Ba
numFeatures = 12;numHiddenUnits = 100;numClasses = 9;层= [GydF4y2Ba...GydF4y2BasequenceInputlayer(numfeatures)lstmlayer(numhidentunits,GydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'顺序'GydF4y2Ba)全连接列(numclasses)softmaxlayer分类层];GydF4y2Ba
sequence-to-one回帰用のLSTMネットワークを作成するには,シーケンス入力層,LSTM層,全結合層,および回帰出力層を含む層配列を作成します。GydF4y2Ba
シーケンス入力層のサイズを入力データの特徴の数に設定します。全結合層のサイズを応答の数に設定します。シーケンス長を指定する必要はありません。GydF4y2Ba
LSTM層では,隠れユニットの数と出力モードGydF4y2Ba'最后的'GydF4y2Ba
を指定します。GydF4y2Ba
numFeatures = 12;numHiddenUnits = 125;numResponses = 1;层= [GydF4y2Ba...GydF4y2BasequenceInputlayer(numfeatures)lstmlayer(numhidentunits,GydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'最后的'GydF4y2Ba)fullyConnectedLayer(numResponses)regressionLayer];GydF4y2Ba
序列到序列回帰用のLSTMネットワークを作成するには,序列到一回帰の场合と同じアーキテクチャを使用しますが,LSTM层の出力モードをGydF4y2Ba'顺序'GydF4y2Ba
に設定します。GydF4y2Ba
numFeatures = 12;numHiddenUnits = 125;numResponses = 1;层= [GydF4y2Ba...GydF4y2BasequenceInputlayer(numfeatures)lstmlayer(numhidentunits,GydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'顺序'GydF4y2Ba)fullyConnectedLayer(numResponses)regressionLayer];GydF4y2Ba
顺序对顺序回帰について LSTMネットワークに学習をさせて、新しいデータを予測する方法の例については、GydF4y2Ba深層学習を使用したsequence-to-sequence回帰GydF4y2Baを参照してください。GydF4y2Ba
ビデオデータや医用画像などのイメージのシーケンスを含むデータ用の深層学習ネットワークを作成するには,シーケンス入力層を使用してイメージシーケンス入力を指定します。GydF4y2Ba
畳み込み層を使用して特徴を抽出する,つまり,畳み込み演算をビデオの各フレームに個別に適用するには,シーケンス折りたたみ層の後に畳み込み層を使用し,その後にシーケンス展開層を使用します。LSTM層を使用してベクトルのシーケンスから学習するには,フラット化層の後にLSTM層と出力層を使用します。GydF4y2Ba
inputSize = [28 28 1];filterSize = 5;numFilters = 20;numHiddenUnits = 200;numClasses = 10;层= [GydF4y2Ba...GydF4y2BasequenceInputLayer(inputSize,GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba'输入'GydF4y2Ba) sequenceFoldingLayer (GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba'折叠'GydF4y2Ba)卷积2dlayer(filterSize、NumFilter、,GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba“conv”GydF4y2Ba) batchNormalizationLayer (GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba‘bn’GydF4y2Ba)剥离(GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba“relu”GydF4y2Ba) sequenceUnfoldingLayer (GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba'展开'GydF4y2Ba)压扁层(GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba“扁平化”GydF4y2Ba) lstmLayer (numHiddenUnitsGydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'最后的'GydF4y2Ba那GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba“lstm”GydF4y2Ba) fullyConnectedLayer (numClassesGydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba'FC'GydF4y2Ba)softmaxLayer(GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba“softmax”GydF4y2Ba) classificationLayer (GydF4y2Ba'名称'GydF4y2Ba那GydF4y2Ba“分类”GydF4y2Ba)];GydF4y2Ba
層を層グラフに変換し,シーケンス折りたたみ層のGydF4y2BaminiBatchSizeGydF4y2Ba
出力をシーケンス展開層の対応する入力に結合します。GydF4y2Ba
lgraph = layerGraph(层);lgraph = connectLayers (lgraph,GydF4y2Ba'折叠/ miniBatchSize'GydF4y2Ba那GydF4y2Ba“展开/ miniBatchSize”GydF4y2Ba);GydF4y2Ba
ビデオの分类用の深层学习ネットワークに学习させる方法を示す例については,GydF4y2Ba深层学习を使用したビデオの分类GydF4y2Baを参照してください。GydF4y2Ba
出力モードがGydF4y2Ba'顺序'GydF4y2Ba
の追加のLSTM层をLSTM层の前に插入すると,LSTMネットワークを深くできます。过适合を防止するために,LSTM层の后にドロップアウト层を插入できます。GydF4y2Ba
sequence-to-label分類ネットワークでは,最後のLSTM層の出力モードはGydF4y2Ba'最后的'GydF4y2Ba
でなければなりません。GydF4y2Ba
numFeatures = 12;numHiddenUnits1 = 125;numHiddenUnits2 = 100;numClasses = 9;层= [GydF4y2Ba...GydF4y2BasequenceInputLayer numFeatures lstmLayer (numHiddenUnits1,GydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'顺序'GydF4y2Ba)dropoutLayer(0.2)lstmLayer(numHiddenUnits2,GydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'最后的'GydF4y2Ba)dropoutLayer(0.2)fullyConnectedLayer(numClasses)softmaxLayer classificationLayer];GydF4y2Ba
顺序对顺序分類ネットワークでは、最後の LSTM層の出力モードはGydF4y2Ba'顺序'GydF4y2Ba
でなければなりません。GydF4y2Ba
numFeatures = 12;numHiddenUnits1 = 125;numHiddenUnits2 = 100;numClasses = 9;层= [GydF4y2Ba...GydF4y2BasequenceInputLayer numFeatures lstmLayer (numHiddenUnits1,GydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'顺序'GydF4y2Ba)dropoutLayer(0.2)lstmLayer(numHiddenUnits2,GydF4y2Ba“OutputMode”GydF4y2Ba那GydF4y2Ba'顺序'GydF4y2Ba)dropoutLayer(0.2)fullyConnectedLayer(numClasses)softmaxLayer classificationLayer];GydF4y2Ba
层GydF4y2Ba | 说明GydF4y2Ba |
---|---|
シーケンス入力層は,ネットワークにシーケンスデータを入力します。GydF4y2Ba | |
LSTM層は,時系列データおよびシーケンスデータのタイムステップ間の長期的な依存関係を学習します。GydF4y2Ba | |
双方向LSTM (BiLSTM)層は,時系列データまたはシーケンスデータのタイムステップ間の双方向の長期的な依存関係を学習します。これらの依存関係は,各タイムステップで時系列全体からネットワークに学習させる場合に役立ちます。GydF4y2Ba | |
格勒乌層は,時系列データおよびシーケンスデータのタイムステップ間の依存関係を学習します。GydF4y2Ba | |
シーケンス折りたたみ層は,イメージシーケンスのバッチをイメージのバッチに変換します。シーケンス折りたたみ層を使用して,畳み込み演算をイメージシーケンスのタイムステップごとに個別に実行します。GydF4y2Ba | |
シーケンス展开层は,シーケンスの折りたたみ后に入力データのシーケンス构造を复元します。GydF4y2Ba | |
フラット化層は,入力の空間次元を折りたたんでチャネルの次元にします。GydF4y2Ba | |
|
単语埋め込み层は,単语インデックスをベクトルにマッピングします。GydF4y2Ba |
新しいデータで分類または予測を行うには,GydF4y2Ba分类GydF4y2Ba
およびGydF4y2Ba预测GydF4y2Ba
を使用します。GydF4y2Ba
LSTMネットワークは予測間のネットワークの状態を記憶できます。ネットワークの状態は,時系列全体が事前に存在しない場合や長い時系列について複数の予測が必要な場合に役に立ちます。GydF4y2Ba
时系列の一部について予测して分类し,ネットワークの状态を更新するには,GydF4y2BapredictAndUpdateStateGydF4y2Ba
とGydF4y2BaclassifyAndUpdateStateGydF4y2Ba
を使用します。予测间のネットワークの状态をリセットするには,GydF4y2Ba重置状态GydF4y2Ba
を使用します。GydF4y2Ba
シーケンスの将来のタイム ステップを予測する方法を示す例については、GydF4y2Ba深层学习を使用した时系列予测GydF4y2Baを参照してください。GydF4y2Ba
LSTMネットワークは,シーケンス长が异なる入力データをサポートしています。ネットワークにデータが渡されるとき,各ミニバッチのすべてのシーケンスが指定された长さになるように,パディング,切り舍て,または分割が行われます。シーケンス长とシーケンスのパディングに使用する値は,GydF4y2BatrainingOptionsGydF4y2Ba
の名前と値のペアの引数GydF4y2BaSequenceLengthGydF4y2Ba
およびGydF4y2Ba序列填充值GydF4y2Ba
を使用して指定できます。GydF4y2Ba
ネットワークの学習後,関数GydF4y2Ba分类GydF4y2Ba
那GydF4y2Ba预测GydF4y2Ba
那GydF4y2BaclassifyAndUpdateStateGydF4y2Ba
那GydF4y2BapredictAndUpdateStateGydF4y2Ba
,およびGydF4y2Ba激活GydF4y2Ba
の使用时に同じミニバッチサイズとパディングオプションを使用します。GydF4y2Ba
シーケンスのパディングまたは切り舍ての际に,パディングまたは破弃するデータの量を减らすには,シーケンス长でデータを并べ替えてみてください。シーケンス长でデータを并べ替えるには,まずGydF4y2BacellfunGydF4y2Ba
を使用してすべてのシーケンスにGydF4y2Ba大小(X, 2)GydF4y2Ba
を适用することによって各シーケンスの列数を取得します。次に,GydF4y2Ba种类GydF4y2Ba
を使用してシーケンス長を並べ替え,2番目の出力を使用して元のシーケンスを並べ替えます。GydF4y2Ba
sequenceLengths = cellfun(@(X) size(X,2), XTrain);[sequenceLengthsSorted, idx] = (sequenceLengths)进行排序;XTrain = XTrain (idx);GydF4y2Ba
次の図は,並べ替えたデータと並べ替えていないデータのシーケンス長を棒グラフで示しています。GydF4y2Ba
シーケンス长GydF4y2Ba“最长的”GydF4y2Ba
を指定した場合,ミニバッチのすべてのシーケンスがそのミニバッチにある最長のシーケンスと同じ長さになるようにシーケンスのパディングが行われます。このオプションは既定値です。GydF4y2Ba
次の図は、GydF4y2Ba'SequenceLength'GydF4y2Ba
をGydF4y2Ba“最长的”GydF4y2Ba
に设定した场合の效果を示しています。GydF4y2Ba
シーケンス长GydF4y2Ba“最短的”GydF4y2Ba
を指定した場合,ミニバッチのすべてのシーケンスがそのミニバッチにある最短のシーケンスと同じ長さになるようにシーケンスの切り捨てが行われます。シーケンスの残りのデータは破棄されます。GydF4y2Ba
次の図は、GydF4y2Ba'SequenceLength'GydF4y2Ba
をGydF4y2Ba“最短的”GydF4y2Ba
に设定した场合の效果を示しています。GydF4y2Ba
シーケンス长を整数値に设定した场合,ミニバッチの最长のシーケンスより大きい,指定长の最も近い倍数になるように,ミニバッチのすべてのシーケンスのパディングが行われます。その后,各シーケンスが指定长のより小さなシーケンスに分割されます。分割が発生すると,追加のミニバッチが作成されます。GydF4y2Ba
シーケンス全体がメモリに収まらない場合は,このオプションを使用します。または,GydF4y2BatrainingOptionsGydF4y2Ba
のGydF4y2Ba“MiniBatchSize”GydF4y2Ba
オプションをより小さい値に设定して,ミニバッチごとのシーケンス数を减らしてみることができます。GydF4y2Ba
シーケンス长を正の整数として指定している场合,连続する反复においてより小さいシーケンスが处理されます。ネットワークは,分割されたシーケンスとシーケンスの间にネットワークの状态を更新します。GydF4y2Ba
次の図は、GydF4y2Ba'SequenceLength'GydF4y2Ba
を5に设定した场合の效果を示しています。GydF4y2Ba
パディングと切り舍ての位置は,学习,分类,および予测の精度に影响する可能性があります。GydF4y2BatrainingOptionsGydF4y2Ba
でGydF4y2Ba“SequencePaddingDirection”GydF4y2Ba
オプションをGydF4y2Ba'剩下'GydF4y2Ba
またはGydF4y2Ba“对”GydF4y2Ba
に设定してみて,どちらがデータに适しているかを确认します。GydF4y2Ba
LSTM层は1タイムステップずつシーケンスデータを处理するため,层のGydF4y2Ba输出outputmodeGydF4y2Ba
プロパティがGydF4y2Ba'最后的'GydF4y2Ba
の場合,最後のタイムステップでパディングを行うと層の出力に悪影響を与える可能性があります。シーケンスデータの左側に対してパディングまたは切り捨てを行うには,GydF4y2Ba“SequencePaddingDirection”GydF4y2Ba
オプションをGydF4y2Ba'剩下'GydF4y2Ba
に設定します。GydF4y2Ba
序列到序列ネットワークの场合(各LSTM层についてGydF4y2Ba输出outputmodeGydF4y2Ba
プロパティがGydF4y2Ba'顺序'GydF4y2Ba
である场合),最初のタイムステップでパティングを行うと,それ以前のタイムステップの予测に悪影响を与える可能性があります。シーケンスの右侧に対してパディングまたは切り舍てを行うには,GydF4y2Ba“SequencePaddingDirection”GydF4y2Ba
オプションをGydF4y2Ba“对”GydF4y2Ba
に設定します。GydF4y2Ba
次の図は,シーケンスデータの左侧および右侧のパディングを示しています。GydF4y2Ba
次の図は,シーケンスデータの左侧および右侧の切り舍てを示しています。GydF4y2Ba
ゼロ中心正规化を使用して学习时に学习データを自动的に再センタリングするには,GydF4y2BasequenceInputLayerGydF4y2Ba
のGydF4y2Ba正常化GydF4y2Ba
オプションをGydF4y2Ba“zerocenter”GydF4y2Ba
に設定します。または,まず、すべてのシーケンスについて特徴あたりの平均値と標準偏差を計算することによって、シーケンス データを正規化できます。次に、各学習観測値について、平均値を減算し、標準偏差で除算します。
μ=意味着([XTrain {:}), 2);σ=性病([XTrain {}):, 0, 2);XTrain = cellfun(@(X) (X-mu)./sigma,GydF4y2Ba“UniformOutput”GydF4y2Ba、假);GydF4y2Ba
データが大きすぎてメモリに収まらない場合や,データのバッチを読み取る際に特定の演算を実行する場合,シーケンスデータ,時系列データ,および信号データについてデータストアを使用します。GydF4y2Ba
詳細は,GydF4y2Baメモリ外のシーケンス データを使用したネットワークの学習GydF4y2BaおよびGydF4y2Ba深层学习を使用したメモリ外のテキストデータの分类GydF4y2Baを参照してください。GydF4y2Ba
关节GydF4y2Ba激活GydF4y2Ba
を使用して活性化を抽出することによって,シーケンスデータと时系列データからLSTMネットワークによって学习された特徴を调べて可视化します。详细については,GydF4y2BaLSTMネットワークの活性化の可視化GydF4y2Baを参照してください。GydF4y2Ba
次の図は,LSTM層における長さSのC個の特徴(チャネル)を持つ時系列Xのフローを示しています。この図で,GydF4y2Ba およびGydF4y2Ba は,それぞれタイムステップtでの出力(GydF4y2Ba”“隠れ状態とも呼ばれる)およびGydF4y2Ba”“セル状態を表しています。GydF4y2Ba
最初のLSTMブロックは,ネットワークの初期状态とシーケンスの最初のタイムステップを使用して,最初の出力と更新后のセル状态を计算します。タイムステップ吨では,このブロックは,ネットワークの现在の状态GydF4y2Ba とシーケンスの次のタイム ステップを使用して、出力と更新後のセル状態GydF4y2Ba を計算します。GydF4y2Ba
层の状态は,GydF4y2Ba"隠れ状態" (GydF4y2Ba”“出力状態とも呼ばれる)およびGydF4y2Ba“セル状态” で构成されています。タイムステップ吨の隠れ状态には,このタイムステップのLSTM层の出力が含まれています。セル状态には,前のタイムステップで学习した情报が含まれています。各タイムステップで,层では情报をセル状态に追加したり,セル状态から削除したりします。その际,层では “ゲート” を使用して,これらの更新を制御します。GydF4y2Ba
以下のコンポーネントは,層のセル状態および隠れ状態を制御します。GydF4y2Ba
コンポーネントGydF4y2Ba | 目的GydF4y2Ba |
---|---|
入力ゲート(我)GydF4y2Ba | セル状态の更新レベルを制御GydF4y2Ba |
忘却ゲート(f)GydF4y2Ba | セル状態のリセット(忘却)レベルを制御GydF4y2Ba |
セル候補 ((g)GydF4y2Ba | セル状态に情报を追加GydF4y2Ba |
出力ゲート(o)GydF4y2Ba | 隠れ状态に追加されるセル状态のレベルを制御GydF4y2Ba |
次の図は,タイムステップtでのデータのフローを示しています。この図は,ゲートがセル状態や隠れ状態をどのように忘,却更新,および出力するかを示しています。GydF4y2Ba
LSTM层の学习可能な重みは,入力の重みW(GydF4y2BaInputWeightsGydF4y2Ba
)、再帰重み R(GydF4y2BaRecurrentWeightsGydF4y2Ba
)、およびバイアス b(GydF4y2Ba偏见GydF4y2Ba
)です。行列W, R,およびbはそれぞれ,各コンポーネントの入力の重み,再帰重み,およびバイアスの連結です。これらの行列は,次のように連結されます。GydF4y2Ba
ここで,f, g,およびoはそれぞれ,入力ゲート,忘却ゲート,セル候補,および出力ゲートを表します。GydF4y2Ba
タイムステップtでのセル状態は次で与えられます。GydF4y2Ba
ここで,GydF4y2Ba はアダマール积(ベクトルの要素単位の乘算)を表します。GydF4y2Ba
タイムステップtでの隠れ状態は次で与えられます。GydF4y2Ba
ここで,GydF4y2Ba
は状態活性化関数を表します。关节GydF4y2BalstmLayerGydF4y2Ba
は既定で,双曲線正接関数(双曲正切)を使用して状態活性化関数を計算します。GydF4y2Ba
次の式は,タイムステップ吨でのコンポーネントを记述しています。GydF4y2Ba
コンポーネントGydF4y2Ba | 式GydF4y2Ba |
---|---|
入力ゲートGydF4y2Ba | |
忘却ゲートGydF4y2Ba | |
セル候补GydF4y2Ba | |
出力ゲートGydF4y2Ba |
これらの計算では、GydF4y2Ba
はゲート活性化関数を表します。关节GydF4y2BalstmLayerGydF4y2Ba
は既定で,GydF4y2Ba
で与えられるシグモイド关数を使用して,ゲート活性化关数を计算します。GydF4y2Ba
[1] Hochreiter,S.,和J.施米德休伯。“长短期记忆。”神经计算。卷。9,第8号,1997,pp.1735-1780。GydF4y2Ba
激活GydF4y2Ba
|GydF4y2BabilstmLayerGydF4y2Ba
|GydF4y2BaclassifyAndUpdateStateGydF4y2Ba
|GydF4y2BaflattenLayerGydF4y2Ba
|GydF4y2BagruLayerGydF4y2Ba
|GydF4y2BalstmLayerGydF4y2Ba
|GydF4y2BapredictAndUpdateStateGydF4y2Ba
|GydF4y2Ba重置状态GydF4y2Ba
|GydF4y2BasequenceFoldingLayerGydF4y2Ba
|GydF4y2BasequenceInputLayerGydF4y2Ba
|GydF4y2BasequenceUnfoldingLayerGydF4y2Ba
|GydF4y2BawordEmbeddingLayerGydF4y2Ba
(文本分析工具箱)GydF4y2Ba