このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
深層学習を使用したシ,ケンスの分類
この例では,長短期記憶(LSTM)ネットワークを使用してシーケンスデータを分類する方法を説明します。
シーケンスデータを分類するよう深層ニューラルネットワークに学習させるために,LSTMネットワークを使用できます。LSTMネットワ,クでは、シーケンス データをネットワークに入力し、シーケンス データの個々のタイム ステップに基づいて予測を行うことができます。
この例では,[1]および[2]に記載のある日本元音データセットを使用します。この例では,続けて発音された2つの日本語の母音を表す時系列データにおいて,その話者を認識するように,LSTMネットワークに学習させます。学習デ,タには,9人の話者の時系列デ,タが含まれています。各シ,ケンスには12個の特徴があり,長さはさまざまです。デ,タセットには270個の学習観測値と370個のテスト観測値が含まれています。
シ,ケンスデ,タの読み込み
日语元音学習デ,タを読み込みます。XTrain
は,次元12の可変長の270個のシ,ケンスが含まれるcell配列です。Y
は,9人の話者に対応するラベル"1","2",…,“9”から成る分类ベクトルです。XTrain
のエントリは行列で,行数が12(特徴ごとに1行)で,列数が可変(タイムステップごとに1列)です。
[XTrain,YTrain] =日本evowelstraindata;XTrain (1:5)
ans =5×1单元格数组{12x20双}{12x26双}{12x22双}{12x20双}{12x21双}
最初の時系列をプロットで可視化します。各ラ@ @ンは特徴に対応しています。
图(XTrain{1}')“时间步”)标题(“训练观察1”) numFeatures = size(XTrain{1},1);传奇(“特性”+字符串(1:numFeatures),“位置”,“northeastoutside”)
パディング用のデ,タの準備
既定では,学習中に,学習データはミニバッチに分割され,パディングによってシーケンスの長さが揃えられます。過度なパディングは,ネットワ,ク性能に悪影響を与える可能性があります。
学習プロセスでの過度のパディングを防ぐため,シーケンス長で学習データを並べ替えて,ミニバッチ内のシーケンスが似たような長さになるようにミニバッチのサイズを選択できます。次の図は,デ,タを並べ替える前と後におけるシ,ケンスのパディングの効果を示しています。
各観測値のシ,ケンス長を取得します。
numObservations = numel(XTrain);为i=1:numObservations sequence = XTrain{i};sequenceLengths(i) = size(sequence,2);结束
シ,ケンス長でデ,タを並べ替えます。
[sequenceLengths,idx] = sort(sequenceLengths);XTrain = XTrain(idx);YTrain = YTrain(idx);
並べ替えられたシ,ケンス長を棒グラフで表示します。
图bar(sequenceLengths) ylim([0 30]) xlabel(“序列”) ylabel (“长度”)标题(“排序数据”)
学習データを等分し,ミニバッチ内のパディングの量を減らすため,ミニバッチのサイズに27を選択します。次の図は,シ,ケンスに追加されたパディングを示しています。
miniBatchSize = 27;
LSTMネットワ,クア,キテクチャの定義
LSTMネットワ,クア,キテクチャを定義します。サズ12(入力デタの次元)のシケンスになるように入力サズを指定します。隠れユニットが100個の双方向LSTM層を指定して,シ,ケンスの最後の要素を出力します。最後に,サイズが9の全結合層を含めることによって9個のクラスを指定し,その後にソフトマックス層と分類層を配置します。
予測時にシ,ケンス全体にアクセスする場合は,ネットワ,クで双方向LSTM層を使用できます。双方向LSTM層は,各タ@ @ムステップでシ@ @ケンス全体から学習します。予測時にシーケンス全体にアクセスしない場合,たとえば,値を予想していたり一度に1タイムステップを予測していたりする場合は,代わりにLSTM層を使用します。
inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= [...sequenceInputLayer inputSize bilstmLayer (numHiddenUnits,“OutputMode”,“最后一次”fullyConnectedLayer(numClasses) softmaxLayer classificationLayer
2”BiLSTM BiLSTM与100个隐藏单元3”全连接9全连接层4”Softmax Softmax 5”分类输出crossentropyex
ここで,学習オプションを指定します。ソルバ,に“亚当”
,勾配のしきい値に1,エポックの最大数に100を指定します。ミニバッチのパディングの量を減らすために,ミニバッチサaaplズとして27を選択します。デ,タが最長のシ,ケンスと同じ長さになるようにパディングするために,シ,ケンスの長さに“最长”
を指定します。デ,タをシ,ケンス長で並べ替えたままにするために,デ,タをシャッフルしないように指定します。
ミニバッチが小さく、シ、ケンスが短いため、学習にはCPUが適しています。“ExecutionEnvironment”
を“cpu”
に指定します。Gpuが利用できる場合,Gpuで学習を行うには,“ExecutionEnvironment”
を“汽车”
に設定します(これが既定値です)。
maxEpochs = 100;miniBatchSize = 27;选项= trainingOptions(“亚当”,...“ExecutionEnvironment”,“cpu”,...“GradientThreshold”, 1...“MaxEpochs”maxEpochs,...“MiniBatchSize”miniBatchSize,...“SequenceLength”,“最长”,...“洗牌”,“永远”,...“详细”0,...“阴谋”,“训练进步”);
LSTMネットワ,クの学習
trainNetwork
を使用し,指定した学習オプションでLSTMネットワ,クに学習させます。
net = trainNetwork(XTrain,YTrain,图层,选项);
LSTMネットワ,クのテスト
テストセットを読み込み,シ,ケンスを話者別に分類します。
日语元音テストデ,タを読み込みます。XTest
は,次元12の可変長の370個のシ,ケンスが含まれるcell配列です。欧美
は,9人の話者に対応するラベル"1","2",…,“9”から成る分类ベクトルです。
[XTest,YTest] =日本evowelstestdata;XTest (1:3)
ans =3×1单元格数组{12x19 double} {12x17 double} {12x19 double}
LSTMネットワ,ク网
は,類似した長さのシ,ケンスのミニバッチを使用して学習しました。テストデ,タも同じ方法で構成されるようにします。シ,ケンス長でテストデ,タを並べ替えます。
numObservationsTest = numel(XTest);为i=1:numObservationsTest sequence = XTest{i};sequenceLengthsTest(i) = size(sequence,2);结束[sequenceLengthsTest,idx] = sort(sequenceLengthsTest);XTest = XTest(idx);YTest = YTest(idx);
テストデ,タを分類します。分類処理で導入されたパディングの量を減らすために,ミニバッチサaaplズを27に設定します。学習デ,タと同じパディングを適用するために,シ,ケンスの長さに“最长”
を指定します。
miniBatchSize = 27;YPred = category (net,XTest,...“MiniBatchSize”miniBatchSize,...“SequenceLength”,“最长”);
予測の分類精度を計算します。
acc = sum(YPred == YTest)./ nummel (YTest)
Acc = 0.9757
参照
[1]工藤M.,富山J.,辛波M.。“使用穿过区域的多维曲线分类”模式识别信。第20卷,11-13号,第1103-1111页。
[2] UCI机器学习库:日语元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
参考
trainNetwork
|trainingOptions
|lstmLayer
|bilstmLayer
|sequenceInputLayer