ドキュメンテーション

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

層再帰型ニューラル ネットワークの設計

次に紹介する動的ネットワークは層再帰型ネットワーク (LRN) です。このネットワークの初期の簡略化バージョンは、Elman [Elma90] によって導入されました。LRN では、最後の層を除くネットワークの各層に、1 つの遅延を含むフィードバック ループがあります。元の Elman ネットワークでは、層は 2 つのみで、隠れ層に伝達関数 tansig が、出力層に伝達関数 purelin が使われていました。元の Elman ネットワークでは、逆伝播アルゴリズムに近いものを学習に使用しています。layrecnet コマンドは Elman ネットワークを汎化し、任意の数の層と各層における任意の伝達関数を可能にします。ツールボックスでは、浅い多層ニューラル ネットワークと逆伝播学習で説明した勾配ベースのアルゴリズムの正確なバージョンを使用して LRN に学習させます。次の図は 2 層 LRN を示しています。

LRN 構成は、既に説明したフィルター処理およびモデル化の用途に多く使用されます。その動作を説明するために、この例では、時系列分散型遅延ニューラル ネットワークの設計で説明した "音素" 検出の問題を使用します。データを読み込み、ネットワークを作成して学習させるコードを以下に示します。

load phoneme
p = con2seq(y);
t = con2seq(t);
lrn_net = layrecnet(1,8);
lrn_net.trainFcn = 'trainbr';
lrn_net.trainParam.show = 5;
lrn_net.trainParam.epochs = 50;
lrn_net = train(lrn_net,p,t);

学習後、次のコードを使用して応答をプロットできます。

y = lrn_net(p);
plot(cell2mat(y))

このプロットは、このネットワークが "音素" を検出できたことを示しています。応答は、TDNN を使用して得られたものと非常に似ています。

ニューラル ネットワークでは、学習を行うたびに異なる解が得られる可能性がありますが、これは初期の重みとバイアスの値が異なり、データの学習セット、検証セット、テスト セットへの分割が異なるためです。このため、別のニューラル ネットワークが同じ問題について学習した場合、入力が同じでも出力が異なる場合があります。ニューラル ネットワークで高い精度が得られるようにするためには、何度か再学習を行います。

高い精度が必要な場合は、初期解を改善するための手法が他にいくつかあります。詳細は、浅いニューラル ネットワークの汎化の改善と過適合の回避を参照してください。