题主的问题我觉得可以按照两个方面来回答:DQN的必要性
DQN的可行性
先来回答第一个问题:
到底有没有必要使用DQN算法来进行天气预报呢?
我认为不用。
天气预报实际上可以看成一个时序分类/回归混合问题,完全可以用end2end的架构去解决。
而一个end2end的架构则需要特征网络,预测网络和可微分损失函数。
先说特征网络。
每一天的天气(阴天,晴天,多云等)可以看成是一个one-hot的single-label特征向量,而每一天的最低/最高温度则可以看成是两个需要回归的scalar.
当然,为了归一化所有的特征,我们可以将高斯分布的先验应用到最低/最高温度上,提取出来均值和标准差作为我们的特征。
同时,因为这个数据是有时序特征的(分先后顺序),我们会使用某种RNN/带positional encoding的其他网络来进行特征提取。
这样总结起来,我们的特征提取网络就是一个embedding,两个输入神经元(均值,方差),结构就假设是LSTM.
接下来就是预测网络了。
预测网络的设计一般比较精简。一般可以直接将LSTM所有的特征concat到一起塞到几个fully-connected层里面,然后直接进行输出。
这里我们一共是两个预测网络。一个是预测天气的(使用和天气种类一样多的神经元数量),另外一个是预测温度的(神经元数量为2)。
最后是损失函数。
预测天气的损失函数可以直接套cross entropy来当分类问题解决,而预测温度则可以直接套MSE当回归问题解决。
有了特征提取网络,预测网络和损失函数以后,我们就可以用end2end的架构来解决这个问题了。
DQN的可行性
当然,没必要这样做不代表不能这样做。DQN也是可以解决这个问题的。
我们把前几天的天气+温度看成是environment,把下一天的天气看成action,再给正确的action一个reward就可以了。
然而,这样做最大的问题就是没有利用DQN,或者说RL所带来的“长远考虑”的优势。
Recall DQN的loss function:
可以看到,我们想要的optimal q-value 不仅包含了这个episode的reward, 也包含了下一个episode的q-value.
但是,在这个问题中,我们却不应该让它考虑更长远的reward,因为我们需要保证前一天天气的正确性才能是后面的天气预测有意义。
所以,DQN做,不是不行,而是并不optimal.