我们假设我们有一个ODE系统来描述X如何影响Y:
dXdt = -k * X
dYdt = Kin *(1 - (Vmax * X)/(Km + X)) - kout * Y
我正在尝试使用神经网络输入X(0)
,Y(0)
和t
,并输出Y(t)
。我在TensorFlow中建立了一个前馈网络,并使用上述公式生成的数据对其进行训练,使用X的初始值为5和10生成的Y数据.YI的初始值保持不变,使用其稳态值(dYdt = 0且X = 0的值)。为了测试,我在我训练过的两个值之间和之外尝试了初始X值。对于所有测试,Y(0)保持不变。
中间值的测试结果非常好,外部值的结果也很好。但是,这只是在网络训练的时间段内,比如t = [0,10]。一旦我尝试预测这个时间段之后的值,预测就开始逐渐消失。
是否有更好的方法来实施网络,以便我可以预测超过训练间隔的值?理想情况下,一旦X达到0,我希望能够预测Y返回稳态。我一直在阅读有关使用RNN的信息,但我需要对稀疏数据进行训练,时间点不均匀分布的地方。我上面使用的网络能够做到这一点,至少在训练的时间间隔内。此外,我见过的大多数RNN示例(对于语言处理都不是这样)依赖于基于先前时间点预测未来时间点,而不是以我尝试使用它的方式。
我的想法是使用原始网络来预测训练时间范围内的值(其中很多都是为了创建丰富的数据集),然后将其输入RNN以预测过去的值时间范围。这是一个可行的想法,还是我可以尝试的其他方法可以更好地工作。