簡體   English   中英

神經網絡預測變成一條直線

[英]Neural network Prediction becomes a straight line

我實現了一個兩層神經網絡(根據 Kolmogorov-Arnold 定理,這足以表示 n 個變量的任何非線性函數)來預測時間序列。 然而,到神經網絡結束時,接收到的預測波動率下降到幾乎為零,並變成一條直線(我附上預測屏幕和神經網絡的源代碼)。 我增加了隱藏層的神經元數量、epoch 數、訓練樣本的大小、學習率,改變了訓練樣本數據的歸一化范圍,改變了初始權重的范圍。 沒有什么幫助。 訓練樣本大小為336個樣本,訓練方法為誤差反向傳播,歸一化方法為minimax。 此外,當使用雙曲正切作為激活函數時,情況有所改善,但圖形看起來也很奇怪。 ReLU 輸出“直接預測”。 有人對這個問題有任何想法嗎?

import random
import sys
import numpy
import math

eta=0.0001 #learning rate
n=200 #number of training epoch. There were also 500, 1000, 5000
inp=30 #input layer size
m=60 #hidden layer size
y=0 #output signal
t=0 #target signal
e=0 #error
d_y=0 #local gradient for the last neuron
err=0 #calculated network error for output neuron
err_av=0 #average network error
path='dataTrain.txt' #training sample
path2='dataLaunch.txt' #launching a forecast
day = 365 #number of days of forecasting
...

其余的在網站上: https ://ideone.com/vV2QW6

截圖(激活函數-sigmoid): https ://ibb.co/GHrTGLr

截圖(激活函數-雙曲正切): https ://ibb.co/WHFX3Sc

感謝關注。

這個問題很難回答,因為您正在嘗試使用不是為此目的設計的工具來解決時間序列問題。 RNN 或 LSTM 會更合適。

根據我對您編寫的代碼的理解,您似乎已將輸入大小(至 30 天)固定為預測第 31 天。 然后滑動 30 天窗口以包含該預測(並排除第 1 天),以便您可以預測第 32 天。 如果我的理解是正確的,你遇到的現象可以簡單解釋(我希望):

預計第 31 天和第 32 天的預測不會有那么大的不同,因為它們是由非常相似的輸入做出的。 32 和 33 等相同。最終所有輸入變得更加相似(因為這些包括我們已經建立的預測是相似的)並且輸出變得更加相似,直到你得到看起來恆定的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM