Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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

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

LRN 構成は、既に説明したフィルター処理およびモデル化の用途に多く使用されます。その動作を説明するために、この例では pH データセットを使用します。データを読み込み、ネットワークを作成して学習させるコードを以下に示します。

[p,t] = ph_dataset;
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);

Figure Neural Network Training (29-Aug-2023 21:21:06) contains an object of type uigridlayout.

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

y = lrn_net(p);
plot(cell2mat(y))
hold on 
plot(cell2mat(t))
legend(["Predicted" "Target"])
hold off

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Predicted, Target.

プロットは、ネットワークが溶液の pH を検出できたことを示しています。

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

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