フィードフォワード ネットワークを使用して予測アプリケーションを開発しています。私が抱えている問題は、予測したいデータがほとんどトレンドになっていることです。Therfore、私が開発しようとしているモデルは次のとおりです。
y_model = f(x) + g(t)
ここで、x は入力ベクトル、f(x) はニューラル ネットワーク、g(t) は時間に応じたトレンド関数 (線形、指数) です。
これを行う最も簡単な方法は、エラー関数を変更することです。これにより、傾向が含まれます。
E=1/2 * sum(y_ideal - y_model)^2 = 1/2 * sum(y_ideal - f(x) - g(t))^2
私が理解しているように、ソリューションは理論的には非常に単純です。モデル パラメーター (ニューラル ネット ウェイト + トレンド モデル パラメーター) に応じた勾配は次のように計算できるからです。
grad E = - sum[(y_ideal-y_model)*(grad f + grad g)]
ニューラル ネットワークの最適化手法を使用してトレンドと共に NN を検索し、ニューラルの重みが更新されているのと同じ方法でトレンド モデルのパラメーターを更新することは、理論的な問題はないと思います。
問題は、Encog でこれを行う方法を管理できなかったことです。学習ルールは、可能な限り高速になるように書かれているため、理解するのが非常に困難です。また、Encog のニューラル ネットワーク構造は固定されているため、パラメーターのベクトルを拡張して誤差関数と勾配式を書き換えるだけでは簡単ではないと思います。