我有沒有機會來看看adapt
功能,但我懷疑這是更新而不是覆蓋。要驗證此語句,您可能需要選擇第一個數據塊的子集作爲培訓中的第二個塊。如果它是覆蓋,當你使用子集的訓練網測試你的第一個數據塊時,它應該很難預測那些不屬於這個子集的數據。
我用一個非常簡單的程序對它進行了測試:訓練曲線y=x^2
。在第一次訓練過程中,我學到的數據集[1,3,5,7,9]
:
m=6;
P=[1 3 5 7 9];
T=P.^2;
[Pn,minP,maxP,Tn,minT,maxT] = premnmx(P,T);
clear net
net.IW{1,1}=zeros(m,1);
net.LW{2,1}=zeros(1,m);
net.b{1,1}=zeros(m,1);
net.b{2,1}=zeros(1,1);
net=newff(minmax(Pn),[m,1],{'logsig','purelin'},'trainlm');
net.trainParam.show =100;
net.trainParam.lr = 0.09;
net.trainParam.epochs =1000;
net.trainParam.goal = 1e-3;
[net,tr]=train(net,Pn,Tn);
Tn_predicted= sim(net,Pn)
Tn
結果(注意,輸出被用相同的參考比例如果你是做標準的規範化,確保你總是適用的均值和從第1個訓練集STD值,其餘全部):
Tn_predicted =
-1.0000 -0.8000 -0.4000 0.1995 1.0000
Tn =
-1.0000 -0.8000 -0.4000 0.2000 1.0000
現在,我們正在實施第二訓練過程中,隨着訓練數據[1,9]
:
Pt=[1 9];
Tt=Pt.^2;
n=length(Pt);
Ptn = tramnmx(Pt,minP,maxP);
Ttn = tramnmx(Tt,minT,maxT);
[net,tr]=train(net,Ptn,Ttn);
Tn_predicted= sim(net,Pn)
Tn
結果:
Tn_predicted =
-1.0000 -0.8000 -0.4000 0.1995 1.0000
Tn =
-1.0000 -0.8000 -0.4000 0.2000 1.0000
注意與x=[3,5,7];
數據仍然準確地預測。
但是,如果我們從一開始就只x=[1,9];
訓練:
clear net
net.IW{1,1}=zeros(m,1);
net.LW{2,1}=zeros(1,m);
net.b{1,1}=zeros(m,1);
net.b{2,1}=zeros(1,1);
net=newff(minmax(Ptn),[m,1],{'logsig','purelin'},'trainlm');
net.trainParam.show =100;
net.trainParam.lr = 0.09;
net.trainParam.epochs =1000;
net.trainParam.goal = 1e-3;
[net,tr]=train(net,Ptn,Ttn);
Tn_predicted= sim(net,Pn)
Tn
觀察結果:
Tn_predicted =
-1.0071 -0.6413 0.5281 0.6467 0.9922
Tn =
-1.0000 -0.8000 -0.4000 0.2000 1.0000
注意訓練的網絡沒有對x=[3,5,7];
測試表現良好以上表示訓練是基於以前的網絡而不是重新啓動。性能惡化的原因是您僅對每個數據塊執行一次(隨機梯度下降而不是批梯度下降),因此總誤差曲線可能尚未收斂。假設你只有兩個數據塊,你可能需要在完成訓練塊2之後重新訓練塊1,然後重新訓練塊2,然後塊1,等等,直到滿足一些條件。如果你有更多的組塊,與第一次訓練效果相比,你可能不需要擔心第二組。無論最新的權重是否影響其性能,在線學習都會丟棄之前的數據集。
如何ÿ你知道它是覆蓋而不是更新嗎?你能展示一些數據的例子,因爲我不太明白你的意思,「在每次迭代中,它只根據訓練的數據集更新網絡。」?謝謝 – lennon310
我在時間序列中使用神經網絡來預測多點(90)。如果我使用train(),則在每次迭代時它會覆蓋已經訓練好的部分。我通過比較我的預測值和實際值來觀察它。到時候沒有任何改善,我的預測僅基於訓練的小部分數據。我認爲,不是訓練1,000,000個數據點,而是以迭代方式訓練它。 目前我正在嘗試adapt()函數,但是我看不到我的預測有任何改進。這是我的問題//是否可以使用adapt()。 謝謝。 – Alper
預測僅基於訓練的數據。在我的每次迭代訓練中,我都無法看到以前訓練過的數據的模式或行爲。 – Alper