MATLAB Note/Neural Network Toolbox/その他のネットワーク
Last-modified: 2009-10-24 (土) 05:39:28
エルマンネットワーク †
- リファレンス - 関数newelmのドキュメント、応用例 波動の振幅の検出も参照してください。
- エルマンネットワークは、時系列学習ができるリカレントネットワークの一種です。
- 単語獲得、文法獲得のモデルとしても研究されています。
- エルマンネットの学習事例(東京女子大 浅川先生)
- 子供の語彙獲得戦略のモデル化に関する研究(北海道大 下斗米先生)
- 【例1】 過去の時系列データの学習
- 例えば、以下のような入力ベクトルに対して、
INPUT = 0 1 1 0 1 1 1 1 0
以下のような応答を得たいとします。
OUTPUT = 0 0 1 0 0 1 1 1 0
すなわち、「入力ベクトルで1が2回以上連続して与えられたときだけ、1を出力する」ルールを学習させます。 - エルマンネットワークの訓練は、以下のようにします。
%入力ベクトルを作成 P = [0 1 1 0 1 1 1 1 0] Pseq = con2seq(P) %Pをエルマンネットワークで使用可能なセル配列形式に変換 %ターゲットベクトル(教師データ、望ましい応答のベクトル)を作成 T = [0 (P(1:end-1)+P(2:end) == 2)] %P内で2回続けて1があるときには1、それ以外では0と定義 Tseq = con2seq(T) %Tをエルマンネットワークで使用可能なセル配列形式に変換 %ネットワークを生成 %入力ベクトルは0から1の範囲内、5個の中間層tansigニューロンと1個のlogsig出力層をもつ net = newelm([0 1],[5 1],{'tansig','logsig'}); %訓練 net.trainParam.epochs = 100; %訓練回数100エポック(全ての入力ベクトルを100回繰り返し入力) net = train(net,Pseq,Tseq); %結果を確認 P = [0 1 1 0 1 0 1 1 0 1 1 0] Pseq = con2seq(P); Yseq = sim(net,Pseq); Y = seq2con(Yseq); %セル配列形式を同時形式に変換 Y = Y{1,1} %結果を出力
- 例えば、以下のような入力ベクトルに対して、
- 学習結果は以下のようになります。(入力ベクトル=P、ネットワークの出力例=Y)
P = 0 1 1 0 1 0 1 1 0 1 1 0 Y = 0.1431 0.1036 0.6315 0.2082 0.5628 0.1791 0.3931 0.7862 0.2651 0.4113 0.7701 0.2473
- 1が2回以上連続して与えられたとき、Yの応答値が大きくなっていることが分かります。
- 同じ入力ベクトル「1」に対する応答でも、毎回値が異なっていることが分かります。これは、エルマンネットワークの中間層が、前回の入力ベクトルに対する応答状態を保持しているためです。
- 【例2】 将来の入力データの予測
- 例えば、以下のような入力ベクトルに対して、以下のような応答を得たいとします。
INPUT = 0 1 1 0 1 1 1 1 0 OUTPUT = 1 1 0 1 1 1 1 0 0
OUTPUTは次回のINPUTの値です。すなわち、「1が与えられたときは、高い確率で次の入力も1」というルールを学習させます。 - エルマンネットワークの訓練は、以下のようにします。
%入力ベクトルを作成 P = [0 1 1 0 1 1 1 1 0] Pseq = con2seq(P) %ターゲットベクトル(教師データ、望ましい応答のベクトル)を作成 T = [1 1 0 1 1 1 1 0 0] Tseq = con2seq(T) %ネットワークを生成 net = newelm([0 1],[5 1],{'tansig','logsig'}); %訓練 net.trainParam.epochs = 100; net = train(net,Pseq,Tseq); %結果を確認 P = [0 1 1 0 1 0 1 1 0 1 1 0] Pseq = con2seq(P); Yseq = sim(net,Pseq); Y = seq2con(Yseq); Y = Y{1,1} %結果を出力
- 例えば、以下のような入力ベクトルに対して、以下のような応答を得たいとします。
- 学習結果は以下のようになります。(入力ベクトル=P、ネットワークの出力例=Y)
P = 0 1 1 0 1 0 1 1 0 1 1 0 Y = 0.7188 0.9724 0.3087 0.9880 0.9699 0.9570 0.9935 0.3696 0.9934 0.9791 0.8621 0.9093
- 次回に1が与えられるとき、Yの応答値が大きくなっていることが分かります。
- 【例3】 単語境界の獲得シミュレーション