机器学习算法初探——强化学习DQN

机器学习
新手专区
标签: #<Tag:0x00007fc066858990> #<Tag:0x00007fc066858828>

(Arthas) #1

最近在github上看到了一篇用Deep-Q-Network 实现股票收益率的帖子,感觉这是一个很好的尝试,于是这几天看了一些DQN和强化学习的文章,希望能在BQ平台实现并优化该作者的策略。
下面是自己在学习DQN过程中记下的自认为比较重要的点,由于对DQN及RL了解不深刻,如有错误,欢迎批评指正!
1 . DQN是由DeepMind研发的一种学习算法。经过不断训练它可以在Atari的大多数游戏上表现的比人类玩家更好。通过这件事,DQN一战成名并且备受关注;
2. DQN中的learning算法主要基于CNN,其他机器学习方法也可以;
3. 强化学习的核心思想:


算法根据t时刻系统的状态(state)做出决断(action)并在系统上实施以改变系统的状态,然后系统将t时刻的决断造成的后果reward反馈至算法。将这个循环在时间步上展开可得:

4. ‘长远的眼光’:个人认为DQN与一般的监督学习算法(如RNN,CNN)的区别之一是DQN的“眼光”更长远。监督学习是一个样本与一个label对应,且label是不随时间以及训练过程改变的。而作为强化学习label不仅仅针对此次action的结果(reward in t),也会关心后续action的综合reward。设Rt为t时刻之后全部reward之和,则Rt表达式为(1).

为了平衡当前步的reward与之后的rewards,一般在之后的reward前增加一个取值范围在(0,1)的系数如公式(2),与当前时间步距离越远,reward的影响越小。
在将Reward反馈进行算法优化时,Reward不仅仅是本次预测的对错,也和将来多步的预测正确率有关。例如,算法根据t时刻的state利用t时刻的参数预测的action与本步最优解相差很大(即与实际label非常不符),但是根据t时刻的参数预测未来t+1、t+2、t+3步的actions却与最优解相差很小,那么在对t时刻预测值的改进幅度会相对较小。
5. DQN算法完整过程


关于强化学习是否能够应用于股票市场,在AlphaGo出现后知乎上就有专门的话题进行讨论,在此我只陈述我对DQN应用于股票市场的个人理解。
DQN算法中算法与环境之间有三个重要交互:state,action和reward。在股票市场可以很容易达到这三个交互条件:
state: 股票市场的状态,算法的输入。常见用来表示当前股票状态的有量、价、技术指标因子、市值因子等。
action:我们可以用“买”、“卖”、“空仓”等来表示action。对于投资组合,可以利用组合中各资产的资金比例的变化来表示action。
reward:对于一段时间的股票历史数据,每步的reward也是很容易得到的。

一切看起来很完美,但是DQN应用于股票市场的实际效果却惨不忍睹(包括原帖以及我自己的测试结果)。
不能否认的是,我们定义的state以及reward太过简单:原帖state为将过去数天的收盘价、RSI指标、MA5指标化成图后输入CNN,reward为未来一天收益;我自己写的代码state为过去数天收盘价、MA20和MA30,reward为未来五日收益率。

本文接下来要讨论的是除上述原因之外其他的一些思考。
DQN在玩游戏方面表现不俗,下图为几个DQN玩的非常好的游戏:
Video Pinball

Breakout

Robotank

在游戏中,DQN可以知道整个系统的完全信息。如在打砖块游戏中,球的运动速度、碰到什么样的边会怎样反弹这些都是确定的规律,且不随时间变化,通过数以千万次的训练,算法是可以学到这些规律的。但是,在股票市场,我们能够输入到算法中的信息占影响股票价格因素的多少呢?

DQN是不倾向于普适性的。用打砖块游戏训练出的算法只能在打砖块游戏中表现出色,换到其他游戏就失效了。我更倾向于DQN是一个过拟合过程,因为其训练集和测试集是同一数据集,其依据为state会不断重演。而股票市场的风格是随着时间推移不断变化的,未来一段时间的市场state很难与过去某段时间完全相同。用1至8关的游戏数据训练出来的DQN,面对第九关的BOSS会表现好吗?


当然,这并不能说明强化学习不能应用于股票市场。同其他机器学习算法一样,**对股票市场的深刻理解以及对算法的深刻理解**都是训练出一个好模型的必要条件。

在2006年一篇应用强化学习于股票市场的文章中,研究者并没有将强化学习应用于未来收益率的预测,而是让其学着卖股票:在给定时间内如何将一定数量的股票卖出去,尽量使其平均卖出价更高。这篇文章为我们提供了一个非常好的思路:将强化学习仅仅应用在一个比较小、比较细节的地方,这样就距离解决股票市场state不会重演的问题又近了一步。股票市场state不会重演,大家买卖股票时候的行为也是持续“更新”,没有规律吗?

近日报道的摩根大通计划用AI机器人执行金融交易的新闻中也有指出,摩根大通训练的AI并不是用来判断未来市场的涨跌,而是以最佳价格和最高速度执行客户交易指令,如怎样抛出大笔股份而不影响市场价格。

上述两个应用实例或许可以为我们将机器学习应用于股票市场提供新的思路:关注细节,在混沌中寻找秩序点,于无序中挖掘有序处。

参考文章:

  1. Nevmyvaka Y, Feng Y, Kearns M. Reinforcement learning for optimized trade execution[C]//Proceedings of the 23rd international conference on Machine learning. ACM, 2006: 673-680.
  2. Mnih V, Kavukcuoglu K, Silver D, et al. Human-level control through deep reinforcement learning[J]. Nature, 2015, 518(7540): 529-533.
  3. Mnih V, Kavukcuoglu K, Silver D, et al. Playing atari with deep reinforcement learning[J]. arXiv preprint arXiv:1312.5602, 2013.
  4. Using Keras and Deep Q-Network to Play FlappyBird
  5. 机器学习在量化投资中的应用(三)——再谈增强学习