请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  数理科学 帖子:3353727 新帖:38

【量化课堂】强化学习入门

你在说什么呢发表于:5 月 9 日 17:24回复(1)

导语:

可能大家都知道前段时间非常火的alpha-go战胜李世石的故事,alpha-go算法就是一个对强化学习应用的炉火纯青的大师。强化学习能够帮助alpha-go战胜人类中的顶尖棋手,那么强化学习是什么呢?能不能帮助我们进行投资呢?我们通过一个小例子介绍一下。


1.强化学习介绍

一般来说,机器学习分为监督学习(Supervised learning),非监督学习(Unsupervised learning)以及强化学习(Reinforcement learning)三类。与监督学习,非监督学习不同,强化学习是一种多阶段的接收环境反馈的机器学习方法。强化学习的学习目标是从环境状态到行为映射关系,从而使得系统的一系列行为从环境中获得的累计奖赏最大(损失最小)。
图片名称
强化学习的应用范围非常广泛,人们可以利用强化学习来控制直升机的飞行姿态,使得直升机可以按照既定的路线飞行;也可以利用强化学习来控制机器人,使机器人保持站立状态,不会摔倒;还可以利用强化学习学习打游戏,下围棋,学习之后的算法能够完爆人类能力;当然还可以利用强化学习来做股票交易,这里我们举一个例子

假设我们需要在一个固定的时间内买入一定数量的股票,我们希望买入的总价尽可能的小。很显然我们不能直接扔一个大单到市场里,原因有二:首先,这样直接下单会造成冲击成本。其次,就算没不考虑冲击成本,当前时间单也不一定是价格最优的,后面可能出现更低的价格。一个比较好的方案是一直下限价单,只要控制好限价单的价格,就可以比较好的完成任务。

下面通过一个例子来介绍强化学习的结构及其所需的要素。

2.强化学习结构

图片名称
强化学习结构
强化学习系统接受环境状态的输入s,系统输出相应的行为动作a。环境在系统输出动作a作用下,变迁到新的状态s′。系统接受环境新状态的输入,同时得到环境对于系统的瞬时奖惩反馈r。对于强化学习系统来讲,其目标是学习一个行为策略π:S→A,其中,S是环境状态空间,A是动作空间。使系统选择的动作能够获得环境奖赏的累计值最大(也就是损失函数最小)。
图片名称
买入股票强化学习结构
在本文例子中,强化学习系统接受环境状态的输入s,也就是剩余的订单量和剩余时间,系统输出相应的最佳动作a,也就是最佳的限价单价格。随着限价单的执行,剩余的订单量会减少,而且剩余时间也会减少,环境就变迁到了新的状态s‘。系统接收新的环境状态输入s’,同时将上一个限价单的执行成本,成交成本(成交部分)作为系统的瞬时奖惩反馈r也反馈给强化学习系统。对于强化学习系统来说,目标就是学习一个多阶段的行为策略π:S→A。系统能够根据剩余订单量以及剩余时间,确定当前的最佳的限价单价格,从而使全部订单成交成本最低。

3.    强化学习状态到动作的学习机制

强化学习的目的是学习一个状态到动作的映射,这一节介绍下强化学习的一种学习策略——动态规划。
现在我们把买入股票问题细化为要在5分钟内买入5手某股票。每隔一分钟,我们可以查看一次现在的状态,修改限价单的价格,环境状态确定为剩余时间以及未成交股票手数。动作为当前状态下限价单价格。强化学习的目标是在规定的时间内买到所有的股票,并且付出的成本最小。

我们的状态空间:
图片名称
动作空间:
图片名称
学习的目标就是状态空间到动作空间的对应关系,例如在剩余4分钟,还剩余5手的情况下,应该以当前价格下限价单还是以当前价格   2个点差的价格下限价单。

因为我们的目标是让成交价格更低,可以让成交金额作为我们的损失函数(也就是环境奖赏的累计值),很显然,在某一个状态中,我们只需要选取损失函数最小的动作即可,损失函数用L函数表示。损失函数中参数中前两个变量是一组描述状态空间的变量,最后一个变量是描述动作状态的变量。L(5,5,0)表示剩余5分钟,剩余5手,按照当前价格执行的损失函数值。BL函数表示采用最优动作之后的损失函数,BL(5,5)表示L(5,5,-2)到L(5,5,2)中的最小值。

剩余5分钟,剩余5手,按照当前价格下限价单,一分钟之后可能的状态可能有多种,可能是剩余4分钟,剩余5手,也可能是剩余4分钟,剩余0手。我们用PaSSPSS′a

P{SS}^a

表示从S状态,采用动作a,到达S‘状态的概率。raSSrSS′a

r
{SS}^a

表示从S状态,采用动作a,到达S’状态的瞬时奖惩反馈。也就是成交的数量与成交价格的乘积。

L(s,a)=sPass[rass BL(s)]L(s,a)=∑s′Pss′a[rss′aBL(s′)]

L(s,a)= \sum{s}P{ss}^a [r_{ss}^a BL(s)]


BL(s)=argmaxaL(s,a)BL(s)=argmaxaL(s,a)

BL(s)=argmax_aL(s,a)


从上式可以看出,要想知道5分钟,5手时的最优动作,我们需要知道4分钟,0-5手情况下的最优动作以及最小损失。很显然,这种情况下,我们可以利用动态规划的方法帮助我们解决这个问题。

我们先确定0分钟,0-5手的损失函数,由于0分钟表示时间已经用完,损失函数可以直接按照固定价格执行,表示对于超时的惩罚,比如可以使用当日涨停价成交,或者按照当日的最高价成交等,或者直接设置为无穷大。之后通过0分钟时的信息,更新1分钟时的信息,直到5分钟时的信息,从而得到目前的最优策略。
图片名称

需要注意的是:强化学习提供的是一套框架,他的学习对象是环境到动作的映射。它的学习方式就是通过损失函数来决定最优动作。有多种损失函数的更新方法,常用的损失函数更新方法有动态规划方法(上面粗略介绍了),Monte Carlo采样法,时间差分学习法。大家可以根据自己的需要进行学习。


文章更迭记录:
v1.0,2016-08-23,文章上线

全部回复

0/140

量化课程

    移动端课程