研报&论文

【华泰金工林晓明团队】强化学习初探与DQN择时

由iquant创建,最终由iquant 被浏览 155 用户

摘要

人工智能系列之59:强化学习初探与DQN择时

本文介绍强化学习基础概念和经典算法,并构建股指日频择时策略。有别于传统监督学习对真实标签的拟合,强化学习不存在标准答案,而是针对长期目标的试错学习。其核心思想是个体通过与环境交互,从反馈的奖励信号中进行学习,数学上使用马尔可夫决策过程刻画。本文围绕基于价值的方法和基于策略的方法两个方向,依次介绍蒙特卡洛、时序差分、Sarsa、Q学习、DQN、策略梯度、REINFORCE、演员-评委算法。使用DQN构建上证指数择时策略,原始超参数样本外2017年至2022年6月年化超额收益率18.2%,夏普比率1.31,年均调仓42.0次,优化后策略表现进一步提升。

强化学习的核心思想是智能体通过与环境的交互,从反馈信号中进行学习

强化学习的核心思想是智能体通过与环境的交互,从反馈信号中进行学习。智能体首先观察环境的状态,采取某种动作,该动作对环境造成影响。随后,环境下一刻的状态和该动作产生的奖励将反馈给智能体。智能体的目标是尽可能多地从环境中获取总奖励。总奖励不是下一时刻的即时奖励,而是未来每个时刻奖励的“折现”之和。强化学习的结果是某种动作选择规则,称为策略,主要采用迭代方式训练。

马尔可夫决策过程是强化学习的数学基础

马尔可夫决策过程是强化学习的数学基础。马尔可夫决策过程从马尔可夫过程、马尔可夫奖励过程出发,在状态空间、状态转移矩阵基础上,相继引入奖励函数、折扣因子、动作空间而来。状态价值函数v(s)代表状态s未来总回报的期望,动作价值函数q(s,a)代表状态s下采取动作a未来总回报的期望,可以借助贝尔曼方程求解。贝尔曼期望方程是线性方程,可以通过解析方法求解任意策略的v(s)和q(s,a)。贝尔曼最优方程是非线性方程,需要通过迭代方法求解最优策略的v*(s)和q*(s,a)。

强化学习分为基于价值的方法和基于策略的方法

强化学习分为基于价值的方法和基于策略的方法。基于价值的方法先估计动作价值函数,称为策略评估,再采用贪心策略选择动作价值最高的动作,称为策略改进。根据策略评估方法不同,分为蒙特卡洛方法和时序差分方法。时序差分方法分为同轨策略Sarsa和离轨策略Q学习。Q学习引入神经网络、经验回放、目标网络等改进得到DQN。基于策略的方法直接拟合策略函数,基础是策略梯度算法,根据动作价值函数计算方法不同,分为REINFORCE和演员-评委算法。

采用DQN构建股指日频多头择时策略

采用DQN构建股指日频多头择时策略。状态定义为回看区间内的行情数据,动作分为做多、平多、持有三种,奖励定义为预测区间内多头或空头收益。基于训练集数据训练DQN模型,多组随机数种子合成信号,基于测试集进行日频调仓回测。以上证指数为择时标的,2007至2016年为训练集,2017至2022年6月为测试集,交易费率单边0.5‰,原始超参数测试集年化超额收益率18.2%,夏普比率1.31,年均调仓42.0次。考察折扣因子、回放内存、回看区间、预测区间等超参数影响,优化后择时策略表现进一步提升。

风险提示:人工智能挖掘市场规律是对历史的总结,市场规律在未来可能失效。人工智能技术存在过拟合风险。强化学习模型对随机数、超参数敏感。强化学习模型可解释性较差。


林晓明 S0570516010001

​ SFC No. BPY421 研究员

李子钰 S0570519110003

​ SFC No. BRV743 研究员

何 康 S0570520080004

​ SFC No. BRB318 研究员

报告发布时间:2022年07月21日

\

导读

本文即将开启一段崭新而激动人心的研究旅程。我们将探索强化学习(reinforcement learning)在量化投资中的应用。

以往我们接触的机器学习算法大多属于监督学习(supervised learning)。监督学习的特点是研究对象包含明确的“标准答案”,一般称为标签(label)。例如人脸识别中,标签为人的真实身份;语音识别中,标签为语音对应的真实文字;截面选股中,标签为个股未来真实涨跌幅。监督学习的目标是尽可能逼近标准答案。

然而在现实世界,大多数时候并不存在标准答案。例如围棋中的每一步棋,俄罗斯方块中的每一次操作,不存在最优解。就如同人生,报考哪个专业,选择哪种工作,和谁共度一生,都没有标准答案,我们只能在试错中学习。尽管有即时反馈,但这种学习往往需要围绕更长期的目标。例如围棋中赢得棋局,俄罗斯方块中获取高分,人生中收获幸福。针对长期目标的试错学习,正是强化学习的特殊之处。

或许可以这么说,有标准答案的监督学习是人们对现实进行抽象与简化,构建出的乌托邦;而没有标准答案的强化学习,更接近世界的本质,也更接近真正意义上的“人工智能”。

强化学习理论的形成可追溯到上世纪七、八十年代。近十年来,融合深度学习的深度强化学习算法在游戏、机器人等领域展现出强大的统治力。谷歌DeepMind团队于2013年12月向公众展示,如何利用强化学习在雅达利游戏中击败人类专业玩家。2016年3月DeepMind开发的AlphaGo以4:1击败世界围棋冠军李世石。2019年1月,AlphaStar在星际争霸游戏中击败人类职业选手。强化学习不断刷新人类的想象,成为人工智能的重要研究领域之一。

强化学习择时策略案例

强化学习在投资领域同样具有广阔应用前景。下图展示我们构建的强化学习上证指数择时策略回测表现。采用上证指数样本内行情数据(2007-01-04至2016-12-30)训练深度Q网络(Deep Q-network,DQN),在样本外(2017-01-03至2022-06-30)进行回测。100组随机数种子合成信号,择时策略在样本外取得18.2%的年化超额收益,夏普比率达1.31,年均调仓42.0次。策略具体构建方法将在后面章节介绍。

图片{w:100}{w:100}{w:100}

强化学习应用于投资的风险

上图的净值曲线无疑具备吸引力,但我们需要提前给读者“泼冷水”。我们认为,强化学习应用于投资存在以下不可忽视的风险:

\1. 数据量不足。训练强化学习模型需要较大数据量。初代AlphaGo策略网络强化学习的样本量约在108数量级。对于股票择时场景,日频行情样本量约在103数量级,分钟频行情样本量约在106数量级,逐笔数据样本量约在107数量级。强化学习可能更适用于高频领域。低频领域如果要应用强化学习,就只能牺牲模型复杂度,并承担过拟合风险。

\2. 缺少仿真环境。强化学习注重个体与环境的交互。个体的决策作用于环境,并影响随后得到的数据。围棋中,我们的每步棋会影响到对手(可视作环境)的选择,进而得到新的棋局。设计一个可交互的环境,对训练强化学习模型至关重要,在提升数据量的同时,丰富了模型试错探索的空间。OpenAI团队开发的Gym工具包提供了广泛的仿真环境,从游戏到棋类再到机器人,几乎成为强化学习研究的“标配”。

​ 而在传统量化研究中,通常只使用历史数据,缺少对市场的仿真模拟,模型的每个决策实际上并不会影响到市场。这种对市场的简化处理,一方面限制了新样本的获取,另一方面也压缩了强化学习模型的试错空间。然而试图模拟市场又谈何容易,这是强化学习应用于投资领域,相比于游戏等领域的关键差异和难点所在。

\3. 可解释性差。深度强化学习相比深度学习“黑箱”程度更高。强化学习可解释性尚处于初步阶段,大量问题亟待解决。

\4. 模型不稳定。强化学习模型超参数较多,并且对超参数、随机数种子较敏感。以前述择时策略为例,每组随机数种子单独产生信号,样本外策略相对基准强弱如下图,各随机数种子表现差距较大。年化超额收益均值13.4%,最高28.0%,最低-0.3%,标准差高达8.0%,标准差超过均值的一半。

图片{w:100}{w:100}{w:100}

本文框架


本文是华泰金工强化学习系列研究的开篇,各章节安排如下:

\1. 强化学习概述和术语:以相对通俗的方式介绍强化学习基本概念,介绍状态、动作、奖励、策略等强化学习重要术语。

\2. 马尔可夫决策过程:介绍强化学习的数学基础——马尔可夫过程、马尔可夫奖励过程和马尔可夫决策过程。

\3. 强化学习经典算法:围绕基于价值的方法和基于策略的方法两个方向,依次介绍蒙特卡洛、时序差分、Sarsa、Q学习、DQN、策略梯度、REINFORCE、演员-评委算法。

\4. 强化学习日频择时策略:介绍DQN上证指数日频择时策略构建方法,并进行参数敏感性测试。

强化学习难度较大。对于不同类型读者,建议在阅读上有所侧重:

\1. 仅对投资策略感兴趣的读者,可阅读(1)(4)。

\2. 有一定机器学习基础,但初次接触强化学习的读者,可阅读(1)(3)(4)。

\3. 希望进一步理解强化学习数学基础的读者,可阅读(1)(2)(3)(4)。

强化学习概述和术语

基本概念


强化学习的核心思想是个体通过与环境的交互,从反馈信号中进行学习。正如新生儿通过哭闹、吮吸、抓握等探索环境,积累对世界的感知;游戏玩家通过尝试多种策略,积累对游戏规则的理解;投资者通过交易行为,积累对市场规律的认知。如果某种行为可以使得婴儿获得食物、游戏玩家获得高分、投资者获得收益,那么这种行为将得到“强化”。

强化学习由智能体和环境两部分构成。智能体(agent)是能够采取一系列行动并期望获得高收益或者达到某一目标的个体,如上文的新生儿、游戏玩家、投资者。影响智能体行动学习的其他因素统一称为环境(environment),如婴儿的父母和周围的物体、游戏的规则和敌人、投资标的和市场上其他参与者等。

智能体和环境每时每刻都会进行交互。智能体首先观察环境的状态(state),采取某种动作(action),该动作对环境造成影响。随后,环境下一刻的状态和该动作产生的奖励(reward)将反馈给智能体。智能体的目标是尽可能多地从环境中获取奖励。

我们以DeepMind科学家Vishal Maini在Machine Learning for Humans一书中展示的迷宫老鼠游戏为例,更直观地理解强化学习:假设我们控制老鼠在迷宫中自由行动,如果找到奶酪,就能得到+1000分奖励;如果找到沿途水源,也能得到+10分奖励;如果不幸触电,就会得到-100分奖励。

图片{w:100}{w:100}{w:100}

首先让老鼠自由探索整个环境。老鼠可能在初期探索中触电,得到负的奖励;下一轮中,老鼠会选择避开闪电;老鼠也可能很快发现入口附近的三个水源;从此花费全部时间收获这些微小奖励,不再有更高追求,因而错失更大的奖励。经历反复训练后,老鼠最终找到全部水源,并获得最大的奶酪奖励。

通过上述例子,我们得以重温强化学习模型的基本概念:智能体首先观察环境,采取行动与环境互动,获得正向或负向奖励。随后,智能体借助反馈修正策略,尽可能最大化奖励。这与投资交易场景非常匹配。投资者首先观察市场,采取买入、卖出、持有等动作,产生盈亏。随后,投资者通过复盘修正投资策略,目标是最大化预期收益。

下面我们将强化学习问题以数学语言描述。

图片{w:100}{w:100}{w:100}

强化学习的基本框架是智能体与环境的交互。如上图所示,t时刻智能体接受到环境的状态信号St,并从该状态允许的动作空间中选择一种动作At。环境接收到智能体的动作信号,并于下一时刻反馈给智能体新的状态信号St+1和即时奖励Rt+1。

强化学习的目标是智能体从环境中获得尽可能高的总奖励。前述例子中,老鼠可能在初期获得较多水源,从而得到较高的短期奖励;但这一行为可能使得老鼠错失更大的奶酪奖励,从而得到较低的长期奖励。因此,强化学习目标中的总奖励不是下一时刻的即时奖励,而是未来每个时刻奖励的“折现”之和

图片{w:100}{w:100}{w:100}

上式中,Gt为t时刻计算的总奖励,也称为回报(return);γ为折扣因子(discount factor),类似金融里的折现率,满足0≤γ≤1。

强化学习的结果是某种动作选择规则,称为策略(policy)。策略可以记做π(a|s),表示在某种状态s下采取某种动作a的概率。

强化学习主要采用迭代方式训练。理想情况下,如果可以准确计算某种状态s下采取某种动作a后的回报G,那么最优策略就只需要采取回报最大的动作即可。在模型迭代训练的过程中,通过智能体与环境的不断交互,对回报的估计逐渐逼近真实值,同时策略也逐步达到理想情况。

专业术语

强化学习有一套区别于传统机器学习的术语体系,厘清这些术语对理解强化学习至关重要。

智能体(agent)

由谁做动作或决策,谁就是智能体。如超级玛丽中,玛丽奥是智能体;无人驾驶中,无人车是智能体;算法交易中,自动交易员是智能体。

环境(environment)

环境是智能体与之交互的对象,可以抽象理解为交互过程中的规则或机理。超级玛丽中,游戏程序是环境;无人驾驶中,真实的物理世界是环境;算法交易中,市场是环境。

状态(state)

状态可以理解为对当前时刻环境的概括。超级玛丽中,可以将屏幕当前画面(或最近几帧画面)视作状态。玩家只需要知道当前画面(或最近几帧画面)就能够做出正确的决策,决定下一步是让玛丽奥向左走、向右走或向上跳。算法交易中,市场中的可观测变量,如行情数据、资金流向、新闻舆情等,都可以视作状态。状态是决策的依据。

状态空间(state space)

状态空间是指所有可能存在状态的集合,常以花体字母S表示。状态空间可以是离散的,也可以是连续的;可以是有限集,也可以是可数无限集。五子棋、象棋、围棋中,状态空间是离散有限集,可以枚举出所有可能存在的状态,即棋盘上的局面。超级玛丽、无人驾驶、算法交易中,状态空间是无限集,存在无穷多种可能的状态。

状态转移(state transition)

状态转移是环境从当前t时刻状态s转移到下一时刻状态s’的过程。超级玛丽中,基于当前状态(屏幕上的画面),玛丽奥向上跳了一步,那么环境(游戏程序)就会计算出新的状态(下一帧画面)。中国象棋中,基于当前状态(棋盘上的局面),红方将“车”走到黑方“马”的位置,那么环境(游戏规则)就会将黑方的“马”移除,生成新的状态(棋盘上的新局面)。算法交易中,自动交易员基于当前状态(账户余额及盘口信息),执行一手市价买单,那么环境(市场)就会撮合交易,并给出新的状态(更新的账户余额及盘口信息)。数学上通常以状态转移函数(state transition function)表示,在当前状态s,智能体执行动作a,下一时刻状态转移至s’的概率记为pt(s’|s,a):

图片{w:100}{w:100}{w:100}

动作(action)

动作是智能体基于当前状态所做出的决策。超级玛丽中,假设玛丽奥只能向左走、向右走或向上跳,那么动作是左、右、上三者之一。围棋中,棋盘上有361个位置,对应361种动作。算法交易中,动作可以是执行指定价格、指定方向、指定数量的交易单,或是等待。动作的选择可以是确定性的,也可以是随机的。

动作空间(action space)

动作空间是指所有可能动作的集合,常以花体字母A表示。超级玛丽中,动作空间是A={左、右、上}。围棋中,动作空间是A={1,2,……,631}。动作空间可以是离散或连续集合,可以是有限或无限集合。

奖励(reward)

奖励是指智能体执行动作后,环境反馈智能体的一个数值。奖励可以自行定义,如何定义奖励对于强化学习的结果至关重要。如超级玛丽中可以这样定义:玛丽奥吃到一枚金币,奖励+1;玛丽奥通过关卡,游戏结束,奖励+1000;玛丽奥碰到敌人,游戏结束,奖励-1000;无特殊事件发生,奖励为0。通常假设奖励是当前状态s、当前动作a和下一时刻状态s’的函数,记为r(s,a,s’)。有时也假设奖励仅仅是s和a的函数,记为r(s,a)。

回报(return)

回报是从当前时刻开始到结束的所有奖励的总和,也称为累计奖励(cumulative future reward)。通常将t时刻的回报记为Gt,以γ为折扣因子,采用类似“折现”的方式计算:

图片{w:100}{w:100}{w:100}

策略(policy)

策略是指根据当前状态,从动作空间中采取某种动作的决策规则。超级玛丽中,假设当前状态下玛丽奥前方有敌人,上方有金币,应该如何决策?我们大概率会决定向上跳,既能避开敌人,又能吃到金币。从状态到动作的映射就是我们的策略。数学上通常以策略函数(policy function)表示,状态s下采取动作a的概率记为π(a|s):

图片{w:100}{w:100}{w:100}

超级玛丽中,状态是游戏屏幕画面,作为策略函数的输入,输出每个动作的概率值:

图片{w:100}{w:100}{w:100}

价值(value)

价值是指给定策略下状态回报的期望。对中国象棋高手来说,卧槽马局面较为有利,该状态的价值较高;归心马局面较为不利,该状态的价值较低。而对不懂象棋的人来说,这两种状态的价值可能没有差别。因此,状态的价值取决于所采取的策略。数学上通常以状态价值函数(state-value function)表示,策略π下状态s的价值记为vπ(s):

图片{w:100}{w:100}{w:100}

在t时刻,未来可能有多种轨迹,回报Gt具有不确定性,价值是随机变量Gt的期望。强化学习的最终目标是寻找一种最优策略,使得价值最大化。

至此我们完成了与强化学习重要术语的初次接触。下一章我们将在马尔可夫决策过程的语境下重温这些术语。

马尔可夫决策过程

强化学习的基础框架是马尔可夫决策过程(Markov decision process,MDP)。本章我们遵循马尔可夫过程(Markov process,MP)、马尔可夫奖励过程(Markov reward process,MRP)、马尔可夫决策过程的顺序展开介绍。

马尔可夫过程

马尔可夫性是马尔可夫过程的基础。马尔可夫性假设未来的状态仅仅取决于现在的状态,独立于过去的状态。数学上可表示为:

图片{w:100}{w:100}

其中St代表t时刻状态。由上式可知,t时刻包含了1至t时刻的全部信息。

马尔可夫过程也称为马尔可夫链(Markov chain),是一组具有马尔可夫性质的随机过程,可以表示为二元组<S,P>,其中S代表状态空间,P代表状态转移矩阵(state transition matrix),的元素代表从当前状态s转移至下一状态s’的概率,的每行元素之和为1:

图片{w:100}{w:100}{w:100}

我们通过DeepMind首席科学家、伦敦大学学院教授David Silver在强化学习课程中展示的学生上课案例,更直观地理解马尔可夫过程。Class 1为学生的开始状态,Sleep为学生的结束状态,箭头所标数字为学生的状态转移概率。学生从开始到结束可能会经历不同轨迹:既可能按部就班完成Class 1、Class 2、Class 3的学习并通过考试;也可能陷入刷Facebook的循环;还可能因通宵去Pub导致错过考试而重修课程。

图片{w:100}{w:100}{w:100}

该马尔可夫过程的状态空间S可以表示为:

图片{w:100}{w:100}{w:100}

该马尔可夫过程的状态转移矩阵P可以表示为:

图片{w:100}{w:100}{w:100}

马尔可夫奖励过程

前文提到强化学习的目标是智能体从环境中获得尽可能高的总奖励,因此需要将奖励引入马尔可夫过程,这就是马尔可夫奖励过程。

奖励函数和折扣因子

马尔可夫奖励过程在马尔可夫过程基础上,引入奖励函数R与折扣因子,可以表示为四元组。奖励函数为t时刻转移至状态s的即时奖励Rt+1(下标习惯上采用t+1),奖励可能具有随机性,因此用期望表示:

图片{w:100}{w:100}{w:100}

折扣因子γ表示未来奖励在当前时刻的“折现率”,介于0和1之间,折扣因子越大,未来奖励的影响越大。

下图为学生上课的马尔可夫奖励过程,红色R代表相应状态的即时奖励。上课的即时奖励为负值-2,Pub的即时奖励为较小的正值+1,通过考试的即时奖励为较大的正值+10。奖励函数可以表示为:

图片{w:100}{w:100}{w:100}

图片{w:100}{w:100}{w:100}

回报和价值函数

回报是从当前时刻开始到结束的所有奖励的“折现”之和:

图片{w:100}{w:100}{w:100}

回报的定义不考虑历史奖励。“往者不可谏,来者犹可追”。强化学习的意义是寻找未来的最优策略。基于马尔可夫性,未来仅取决于当前状态,与历史无关。

马尔可夫奖励过程中,价值函数是当前状态s下的回报期望,由于未来轨迹有多种可能,回报是随机变量,因此价值函数用期望表示:

图片{w:100}{w:100}{w:100}

下图圆圈中的红色数字表示折扣因子γ=0.9时,对应状态的价值函数值。观察可知,状态的即时奖励R和价值v并不等价。例如:

\1. 左上角的圆圈对应Facebook状态,刷Facebook的即时奖励为较小的负值-1,但由于有90%的概率陷入刷Facebook的循环,未来有较大可能持续获得-1的奖励,将未来奖励折现后,该状态的价值为较大的负值-7.6。即时、廉价的快乐是慢性毒药。

\2. Class 1、Class 2、Class 3的即时奖励均为-2,但价值递增,分别为-5.0、0.9、4.1。Class 3状态有60%的概率通过考试,在下一时刻获得+10的奖励,折现后价值较高。学习总是痛苦的,但随着日积月累,学习的价值会逐渐体现。

图片{w:100}{w:100}{w:100}

贝尔曼方程

以上我们仅给出价值函数的定义,未涉及价值函数的求解方法。学生上课案例中各状态的价值函数值应如何计算?我们需要引入贝尔曼方程(Bellman equation)。

从价值函数的定义出发,进行如下推导:

图片{w:100}{w:100}{w:100}

上述推导将t时刻状态s的回报Gt拆解为两部分:前半部分是当前状态的即时奖励Rt+1,后半部分是下一时刻状态St+1的价值函数的折现γv(St+1)。

下面考虑如何计算期望,期望具有可加性,因此前后两部分可分别计算。

\1. 前半部分表示状态s的即时奖励期望,等于即时奖励R;

\2. 折扣因子γ为常数,可提取到期望外部。此时后半部分表示下一时刻状态价值的期望。下一时刻的状态存在多种可能,其中任意状态s’的价值函数为v(s’),出现概率为。对所有可能的s’进行加权求和,求得下一时刻状态价值的期望。

至此,我们得到马尔可夫奖励过程的贝尔曼方程:

图片{w:100}{w:100}{w:100}

简化为矩阵形式:

图片{w:100}{w:100}{w:100}

贝尔曼方程是线性方程,可以直接求解:

图片{w:100}{w:100}{w:100}

已知状态转移矩阵P、奖励函数R、折扣因子γ,可以直接求出价值函数v的解析解。

仍以学生上课为例,已知状态转移矩阵P和奖励函数R,假设折扣因子γ=0.9,根据贝尔曼方程可以解出价值函数v:

图片{w:100}{w:100}{w:100}

解析解只适用于小规模的马尔可夫奖励过程。大规模的马尔可夫奖励过程由于参数过多,通常采用迭代方式求数值解,例如蒙特卡洛方法,时序差分方法等,将在下一章强化学习经典算法中予以介绍。

马尔可夫决策过程

马尔可夫奖励过程中,状态转移以一定概率发生,智能体只能被动接受状态转移的结果,无法主动选择进入某种状态。强化学习强调智能体与环境的交互,智能体理应能影响环境。因此需要将智能体的动作引入马尔可夫奖励过程,这就是马尔可夫决策过程。

动作

马尔可夫决策过程在马尔可夫奖励过程基础上,引入动作空间A,可以表示为五元组。此时,状态转移矩阵代表在当前状态s下执行动作a时,下一时刻状态转移至s’的概率:

图片{w:100}{w:100}{w:100}

奖励函数R代表在当前状态s下执行动作a时,下一时刻获得奖励的期望:

图片{w:100}{w:100}{w:100}

和马尔可夫奖励过程相比,马尔可夫决策过程在条件部分引入动作,从而赋予智能体主观能动性。

下图仍以学生上课为例展示马尔可夫决策过程。在状态转移时引入动作,只有在执行特定动作后,才可实现相应的状态转移,并获得奖励。例如在Class 3状态(右侧圆圈):当智能体选择动作Study时,下一时刻将以100%的概率转移至结束状态(上侧方块),并获得+10的奖励;而当智能体选择动作Pub时,下一时刻将以100%的概率转移至Pub(下侧圆点),并获得+1的奖励。这里的100%概率仅是便于读者理解,实际可以是任意概率值。

图片{w:100}{w:100}{w:100}

策略、状态价值函数和动作价值函数(Q函数)

强化学习的结果是确定根据当前状态从动作空间中采取某种动作的决策规则,称为策略。策略可以记为π(a|s),代表状态s下采取动作a的概率:

图片{w:100}{w:100}{w:100}

根据马尔可夫性,马尔可夫决策过程的策略仅与当前状态有关,与历史无关。

下面我们进一步将策略引入马尔可夫决策过程。对于给定的马尔可夫决策过程五元组<S,A,P,R,γ>和策略π,状态转移矩阵和奖励函数可分别表示为:

图片{w:100}{w:100}{w:100}

在马尔可夫奖励过程中,状态的价值仅取决于状态本身,因此价值函数v(s)是状态s的函数。在马尔可夫决策过程中,由于动作的引入,状态的价值同时受到动作影响。定义两种基于策略的价值函数:状态价值函数(state-value function)和动作价值函数(action-value function)。

状态价值函数和前述价值函数定义类似,沿用字母v,仍为状态s的函数,代表策略π下状态s的回报期望:

图片{w:100}{w:100}{w:100}

下图展示学生上课案例中的状态价值函数。假设学生采取随机策略,如Class 1状态学习和刷Facebook的概率均为0.5,Class3状态学习和Pub的概率也均为0.5,即π(a|s)=0.5,同时假设折扣因子γ=1,那么各状态内部的红色数字就是该状态的价值函数值。在后续的贝尔曼期望方程部分我们将展示状态价值函数的计算方法。

图片{w:100}{w:100}{w:100}

动作价值函数采用字母q,是状态s和动作a的函数,也称为Q函数(Q-function),代表策略π、状态s下执行动作a的回报期望:

图片{w:100}{w:100}{w:100}

Q函数是对智能体动作价值的评估,智能体可以根据不同动作的Q函数大小进行决策,如选择Q函数最大的动作。

贝尔曼期望方程

在马尔可夫奖励过程中,我们从价值函数出发,推导出贝尔曼方程。类似地,在马尔可夫决策过程中,从状态价值函数和动作价值函数出发,也可以推导各自的贝尔曼方程,称为贝尔曼期望方程(Bellman expectation equation)。

状态价值函数的贝尔曼期望方程为:

图片{w:100}{w:100}{w:100}

展开并整理得到:

图片{w:100}{w:100}{w:100}

动作价值函数的贝尔曼期望方程为:

图片{w:100}{w:100}{w:100}

展开并整理得到:

图片{w:100}{w:100}{w:100}

两者存在下面的转换关系:

图片{w:100}{w:100}{w:100}

基于贝尔曼期望方程,我们可以求解不同策略的状态价值函数和动作价值函数。

将状态价值函数的贝尔曼期望方程简化为矩阵形式:

图片{w:100}{w:100}{w:100}

可得到状态价值函数的解析解:

图片{w:100}{w:100}{w:100}

同样以学生上课为例,这里不考虑Pass和Pub状态,新的状态空间为:

图片{w:100}{w:100}{w:100}

假定策略为π(a|s)=0.5,该策略下状态转移矩阵为:

图片{w:100}{w:100}{w:100}

Class3状态下,有0.5的概率转移至Sleep;另有0.5的概率转移至Pub,进而以0.1、0.2、0.2的概率转移至Class 1、Class 2、Class 3。另外,由于Sleep为终止状态,状态转移矩阵最后一行各元素均为0。

该策略下奖励函数为:

图片{w:100}{w:100}{w:100}

假设折扣因子γ=1,根据贝尔曼期望方程可以解出状态价值函数vπ:

图片{w:100}{w:100}{w:100}

最优策略、最优价值函数和贝尔曼最优方程

强化学习的目标是智能体从环境中获得尽可能高的总奖励。在马尔可夫决策过程中,我们定义最优策略(optimal policy)π*,满足在任意状态s和动作a下,状态价值函数和动作价值函数取最大值:

图片{w:100}{w:100}{w:100}

上面两式分别称为最优状态价值函数(optimal state-value function)和最优动作价值函数(optimal action-value function),统称最优价值函数(optimal value function)。马尔可夫决策过程的最优策略π*(s),是采取该状态s下最优动作价值函数值最高的动作:

图片{w:100}{w:100}{w:100}

左下图和右下图分别展示学生上课案例中,假定折扣因子γ为1时,最优状态价值函数和最优动作价值函数。观察左图左侧红色的Class 1状态,可以转移至右侧Class 2或上方的Facebook,两种轨迹下的回报分别为-2+8=6以及-1+6=5,因此Class 1状态的最优状态价值为两者的最大值6。观察右图左上角的Facebook状态,继续刷Facebook的最优动作价值q*=5,退出Facebook的最优动作价值q*=6,此时最优策略为后者,其余状态下最优策略也均以红色箭头表示。

图片{w:100}{w:100}{w:100}

最优策略下的状态价值函数,应等于该状态下最优动作的动作价值函数:

图片{w:100}{w:100}{w:100}

最优策略下的动作价值函数,应等于采取该动作的即时奖励,加上状态转移后各状态最优状态价值函数的加权和:

图片{w:100}{w:100}{w:100}

分别将q*(s,a)代入v*(s)式,将v*(s)代入q*(s,a)式,可以得到贝尔曼最优方程(Bellman optimality equation):

图片{w:100}{w:100}{w:100}

和前述贝尔曼方程、贝尔曼期望方程不同,贝尔曼最优方程不是线性方程,一般而言无法求解析解,需要采用迭代方式求数值解。下一章我们将介绍求解最优策略的各种强化学习经典算法。

强化学习经典算法

应用强化学习的基本思路是:首先对现实问题进行马尔可夫决策过程(MDP)建模,进而求解贝尔曼最优方程,得到最优策略。根据智能体对环境的掌握程度,可分为两种情况。当MDP的状态转移矩阵P和奖励函数R已知,智能体了解环境的一切信息,此时强化学习属于有模型(model-based)方法,通常采用动态规划精确求解MDP。然而,大部分现实问题的状态转移矩阵P和奖励函数R未知,智能体必须与环境互动收集信息,此时强化学习属于免模型(model-free)方法,需要采用其他方式估计MDP。本文主要关注免模型方法。

免模型的方法中,根据智能体学习的对象,又可以分为两种情况。基于价值(value-based)的方法学习价值函数,从而间接地学习策略。基于策略(policy-based)的方法不学习价值函数,而是直接学习策略。通俗地说,基于价值的方法会对每种状态下的动作进行评分,训练模型相当于训练评委,根据评委的评分选择得分最高的动作。基于策略的方法不会对状态和动作评分,训练模型相当于直接训练演员,演员知道每种状态下应选择何种动作。

图片{w:100}{w:100}{w:100}

基于价值的方法

基于价值的方法中,采用策略迭代(policy iteration)方式学习最优策略π*,每轮迭代可分为两个阶段:

\1. 策略评估(policy evaluation):基于策略π(非最优),估计动作价值函数Q。这步也称为预测(prediction)。

\2. 策略改进(policy improvement)基于估计的动作价值函数Q,更新策略π,通常采用ε-贪心算法。这步也称为控制(control)。

当迭代次数足够多,动作价值函数Q将收敛至最优动作价值函数q*,策略π将收敛至最优策略π*。

图片{w:100}{w:100}{w:100}

蒙特卡洛方法

顾名思义,基于价值的方法关键在于计算价值函数。状态价值函数vπ(s)是策略π下状态s的未来回报Gt的期望;动作价值函数qπ(s,a)是策略π及状态s下采取动作a的未来回报Gt的期望。Gt分布未知时,如何估计随机变量的期望?直观的思路之一是蒙特卡洛方法(Monte-Carlo methods)。

蒙特卡洛方法的核心思想是通过重复生成随机样本近似计算目标函数。蒙特卡洛方法应用广泛,不仅仅局限于强化学习。经典例子是估算圆周率,如下图所示,在x∈[0,1]及y∈[0,1]范围内以均匀分布生成随机点(x,y),将满足x2+y2≤1的点标记为红色,其余点标记为蓝色。当重复次数足够多时,理论上红色点占比等于1/4圆面积除以正方形面积,即π/4。将实际红色点占比乘以4,即得到估算的圆周率。当重复次数达10000次时,估算误差仅为0.45%。

图片{w:100}{w:100}{w:100}

强化学习中,如何采用蒙特卡洛方法计算状态价值函数呢?对于策略π,可以利用该策略进行多次重复(如多次对弈、交易),每次重复从任意初始状态开始直到终止(如确定胜负、交易时间结束)。我们将每次重复称作(episode),每一幕中的状态s、动作a、奖励r的时间序列称为轨迹(trajectory)。若策略存在随机性,则每一幕的轨迹应不同。统计每种状态s下的未来回报Gt,计算平均值,得到状态价值函数vπ(s)的估计量V(S)。统计每组状态s和动作a下的未来回报Gt,计算平均值,得到状态价值函数qπ(s,a)的估计量Q(S,A)。

蒙特卡洛方法可分为首次访问型(first-visit)和每次访问型(every-visit)两种。由于每一幕中访问同一状态的次数不唯一,既可以计算首次访问该状态后的回报均值,也可以计算每次访问该状态后的回报均值。首次访问型相比每次访问型更简单,下面将以首次访问型为例。

策略评估

策略评估阶段,首次访问型蒙特卡洛方法的状态价值函数可表示为:

图片{w:100}{w:100}{w:100}

其中G21(s)代表第2幕第1次访问状态s获得的回报,N(s)代表状态s的总访问次数。只要N(s)足够大,V(s)就能收敛到真实状态价值函数vπ(s):

图片{w:100}{w:100}{w:100}

上述状态价值函数中,计算V(s)需要保存全部历史幕的轨迹,若幕的数量非常大,会引起空间开销问题。我们可以将计算均值从全量方式改为增量方式:

图片{w:100}{w:100}{w:100}

其中新增下标t代表每一幕中的t时刻,每次进入新的幕、新的时刻t,V(St)都会得到更新,这样只需要保存最新幕的轨迹。增量方式和全量方式是等价的。

我们给出首次访问型蒙特卡洛方法策略评估伪代码。

图片{w:100}{w:100}{w:100}

与状态价值函数类似,动作价值函数可表示为:

图片{w:100}{w:100}{w:100}

至此,我们得到了策略π下的状态价值函数和动作价值函数。但此时策略π并非最优策略,我们需要基于价值函数对策略进行改进。

策略改进

策略改进阶段,通常采用ε-贪心算法(ε-greedy methods)结合迭代方式进行优化。

贪心算法选择动作价值函数最高的动作,选择的结果是确定性的:

图片{w:100}{w:100}{w:100}

此时策略不具备随机性,在状态s下将采取唯一的动作argmax q(s,a)。贪心算法看似最优,实则不然。模型训练初期,智能体对环境的探索不够,很多状态-动作配对(s,a)从未经历过或出现次数较少,对动作价值函数q(s,a)的估计不准确。贪心算法只选择当前Q(S,A)最高的动作,限制了对环境的探索,很有可能错失q(s,a)更高的动作。

联系前文迷宫老鼠游戏的例子,游戏初期老鼠可能很快会发现入口附近的水源,此时贪心算法的决策是每一幕只收获这些微小奖励,不对整个迷宫进行探索,从而错失更大的奶酪奖励。贪心算法为了眼下的最优,将动作局限在舒适区内,放弃了对环境的探索,错过了长远的、真正的最优。

为了鼓励智能体探索环境,我们将随机性引入贪心算法,这就是ε-贪心算法:

图片{w:100}{w:100}{w:100}

此时策略π的输出是状态s下采取动作a的概率,具有随机性。假设共有m种可选动作,其中动作价值最高的动作a*被选中的概率为ε/m+1-ε,其余动作被选中的概率为ε/m。参数ε∈[0,1],ε越大则随机性越强,ε为0时退化为贪心算法,ε为1时相当于完全随机策略。

蒙特卡洛方法采用策略迭代方式进行优化,以第k轮迭代为例:

\1. 策略评估阶段:基于策略πk-1,计算动作价值函数Q。

\2. 策略改进阶段:基于动作价值函数Q,采用ε-贪心算法得到新的策略πk。

当迭代次数足够多,动作价值函数Q将收敛至最优动作价值函数q*,策略π将收敛至最优策略π*。

最后我们给出首次访问型蒙特卡洛方法策略改进伪代码。

图片{w:100}{w:100}{w:100}

时序差分方法


应用蒙特卡洛方法时,每一幕需要从初始状态开始直到终止,采用完整轨迹数据进行策略评估和策略改进。以下棋为例,只有整盘棋结束,才能计算动作价值函数并更新策略。该方法只适用于有终止状态的马尔可夫决策过程,且学习效率较低。

与蒙特卡洛方法不同,时序差分方法(temporal-difference learning,TD)只需要下一时刻数据,就可以进行策略评估和策略改进。换言之,只要下一步棋走完,就能计算动作价值函数并更新策略。因此时序差分方法适用范围更广泛,学习效率较高。

回忆蒙特卡洛方法的状态价值函数,使用t时刻的回报Gt更新t时刻的状态价值函数V(St):

图片{w:100}{w:100}{w:100}

将1/N(St)替换为自由参数α,代表学习率,α越大,则Gt对V(St)的影响程度更大,即学习新信息Gt的速率越快,Gt可以视作每次更新V(St)时新的学习目标:

图片{w:100}{w:100}{w:100}

蒙特卡洛方法的学习目标为Gt,需要每一幕进入终止状态才能得到。针对这一局限,时序差分方法对学习目标Gt进行替换,站在每一时刻进入下一时刻即可得到。根据贝尔曼方程,t时刻的回报Gt等于t+1时刻的奖励Rt+1,再加上折扣因子γ与t+1时刻的状态价值V(St+1)的乘积:

图片{w:100}{w:100}{w:100}

图片{w:100}{w:100}{w:100}

因此,可以将蒙特卡洛方法的学习目标由Gt替换为Rt+1+γV(St+1)。这就是最简单的TD(0)时序差分方法,使用t+1时刻的奖励Rt+1和估计的状态价值V(St+1)函数,更新t时刻的状态价值函数V(St):

图片{w:100}{w:100}{w:100}

其中Rt+1+γV(St+1)- V(St)也称为时序差分误差(TD error)。

以上我们介绍了时序差分方法在策略评估阶段的状态价值函数。那么,如何估计动作价值函数Q?围绕这个问题,时序差分方法又可以进一步分为两类,将在下面两节分别介绍:

\1. 同轨策略(on-policy):使用同一套策略更新动作价值函数和选择新的动作,代表算法是Sarsa。

\2. 离轨策略(off-policy):使用两套策略,一套策略用于更新价值函数,另一套策略用于选择新的动作,代表算法是Q学习(Q-learning)。

我们给出时序差分方法策略评估伪代码。

图片{w:100}{w:100}{w:100}

Sarsa

时序差分方法的状态价值函数V(St):

图片{w:100}{w:100}{w:100}

将上式中的V直接替换为Q,即可得到Sarsa的动作价值函数Q(St,At):

图片{w:100}{w:100}{w:100}

我们重新梳理时间线:t时刻,智能体面对状态St,基于策略π选择了动作At;t+1时刻,获得奖励Rt+1,状态转移至St+1,此时Sarsa基于相同的策略π选择了动作At+1。时间顺序为

图片{w:100}{w:100}{w:100}

Sarsa也由此得名。

Sarsa在更新策略π的动作价值函数Q(St,At)时,使用相同策略π所选择的动作At+1。因此Sarsa属于同轨策略。

Sarsa在策略改进阶段可采用与蒙特卡洛方法相同的ε-贪心算法,这里不再重复。我们给出Sarsa策略评估伪代码。

图片{w:100}{w:100}{w:100}

Q学习


Sarsa的动作价值函数可表示为:

图片{w:100}{w:100}{w:100}

Q学习的动作价值函数可表示为:

图片{w:100}{w:100}{w:100}

我们重新梳理时间线:t时刻,智能体面对状态St,基于策略π选择了动作At;t+1时刻,获得奖励Rt+1,状态转移至St+1,此时Q学习采用贪心算法,选择使得Q函数最大的动作a,此时该动作的价值即为maxQ(St+1,a)。

Q学习在更新策略π的动作价值函数Q(St,At)时,使用贪心算法(而非策略π)选择动作At+1,因此Q学习属于离轨策略。

我们可以对比Sarsa与Q学习两种时序差分方法:

\1. 两者的唯一区别是更新策略π的动作价值函数时,如何选择t+1时刻的动作At+1。Sarsa基于策略π本身选择动作,而Q学习采用贪心算法选择动作价值函数最高的动作。

\2. 类比篮球比赛,将策略π视作教练既定的战术,在t时刻状态St下,根据该战术选择动作At。在t+1时刻状态St+1下,Sarsa仍然忠实地执行既定战术π,选择动作At+1;Q学习则随机应变,忽略教练的战术π,自主选择最优动作a。

\3. Sarsa较为保守,Q学习较为激进。Q学习可以大胆利用贪心算法探索环境,从而更有可能得到最优策略。

Q学习在策略改进阶段采用ε-贪心算法,这里不再重复。我们给出Q学习策略评估伪代码。

图片{w:100}{w:100}{w:100}

DQN


2015年,DeepMind在Nature发表论文Human-level control through deep reinforcement learning,首次将深度强化学习应用于游戏领域并战胜人类,论文采用的强化学习算法正是深度Q网络(Deep Q-learning Network,下文称DQN)。

DQN在Q学习基础上加以改进,主要体现在以下三方面:引入神经网络逼近动作价值函数;引入经验回放训练神经网络;引入目标网络提升训练稳定性。

引入神经网络逼近动作价值函数

前文介绍的蒙特卡洛方法、时序差分方法、Sarsa、Q学习中,动作价值函数(Q函数)的估计至关重要。上述方法的Q函数,可以理解成一张二维的Q表格(Q-table),两个维度分别是状态S和动作A,每个单元格代表特定状态s和特定动作a下的动作状态函数值Q(s,a)。换言之,包含Q学习在内的前述强化学习算法,均以表格形式表征动作价值函数

当状态空间和动作空间较小时,Q表格或许可以较好表征动作价值函数。但是现实问题中,状态空间和动作空间往往非常大,甚至可能存在无穷多种状态及可选动作。此时需要借助价值函数近似(value function approximation),用一个函数表征Q表格:

图片{w:100}{w:100}{w:100}

其中Q(s,a;θ)是以θ为参数的函数。由于多层神经网络可以拟合任意连续函数,通常将Q(s,a;θ)设计为神经网络,称为Q网络(Q-network),θ为网络参数。与Q学习不同,DQN利用Q网络逼近动作价值函数。

引入经验回放训练神经网络

Q学习使用最新采样得到的单条四元组样本(st,at,rt+1,st+1)来计算学习目标,并更新Q函数。训练神经网络一般使用小批量(mini-batch)样本的预测误差,通过反向传播算法更新网络参数。那么Q网络训练所需的小批量样本如何获取?

DQN引入经验回放(experience replay)技巧,将历史训练过程中收集到的四元组样本(st,at,rt+1,st+1)存储在回放内存(replay memory)中,随机抽取小批量样本,训练Q网络。当回放内存装满时,删除旧数据,补充新数据。DQN原始论文中,回放内存容量为1000000,小批量样本量(batch size)为32。

引入经验回放的优点在于:随机采样降低了样本间的关联;回放内存提升了样本利用率,单条样本在DQN中可以多次参与Q网络训练,而在Q学习中仅参与一次Q函数更新。

图片{w:100}{w:100}{w:100}

图片{w:100}{w:100}{w:100}

引入目标网络提升训练稳定性

DQN网络的输入为四元组(st,at,rt+1,st+1),输出为动作价值函数的预测值Q(st,at;θ)。参照Q学习,将学习目标设为rt+1+γ·maxQ(st+1,a;θ)。学习目标担任了监督学习中正确标签(label)的角色。类似监督学习中的回归问题,可以计算预测值和学习目标的均方误差,通过反向传播算法更新Q网络参数。

Q网络训练的难点在于,Q(st,at;θ)既是预测值,又出现在学习目标rt+1+γ·maxQ(st+1,a;θ)中。随着迭代的进行,预测值时刻发生变化,这就意味着学习目标也会时刻发生变化。如果说传统神经网络训练是“固定靶”,那么Q网络训练就是“移动靶”,这样会导致训练不稳定。

DQN引入目标网络(target network)解决训练不稳定问题。对于随机采样的小批量样本(s,a,r,s’),将原始动作价值函数:

图片{w:100}{w:100}{w:100}

改为:

图片{w:100}{w:100}{w:100}

此时,学习目标从r+γ·maxQ(s,a;θ)改为r+γ·maxQ(s,a;θ-)。我们称以θ-为参数的网络为目标网络,有别于以θ为参数的Q网络。关键之处在于,目标网络不参与梯度下降,参数θ-不会时刻更新,而是每隔固定步数从Q网络中复制参数θ。换言之,DQN将“移动靶”改成每隔一段时间才移动一次的“准固定靶”,提升了训练稳定性。DQN原始论文中,目标网络每隔10000步更新一次。DQN的损失函数为:

图片{w:100}{w:100}{w:100}

采用梯度下降法更新网络参数,损失函数的梯度为:

图片{w:100}{w:100}{w:100}

最后我们给出DQN的算法流程图和伪代码。

图片{w:100}{w:100}{w:100}

图片{w:100}{w:100}{w:100}

基于策略的方法

强化学习的最终目标是得到最优策略。基于价值的方法采取了“迂回”方式,先估计动作价值函数,再采用贪心算法选择动作价值函数最大值对应的动作。例如DQN使用神经网络建立了从四元组(s,a,r,s’)到动作价值函数Q(s,a)的映射,拟合动作价值函数。既然神经网络可以拟合任意连续函数,是否有更直接的方式,使用神经网络建立从输入信息到策略函数π(a|s)的映射,从而直接拟合策略函数呢?这就是基于策略的方法的基本思想。

在深入具体算法前,我们先介绍基于策略的方法相比于基于价值的方法的优势:

\1. 基于价值的方法要求动作空间是有限集,例如围棋的动作至多有361种。但部分现实场景中,动作空间可能是无限集,例如控制机器人运动的速度和加速度。此时就要使用基于策略的方法。

\2. 基于价值的方法中,最优策略通过贪心算法给出,π*(s)=argmax Q(s,a),每种状态下的动作是唯一的,属于确定性策略。尽管可以通过ε-贪心算法为策略引入随机性,总体仍是确定性的。

但部分现实场景需要随机性策略。例如剪刀石头布游戏,如果智能体采取确定性策略,就会很快被对手摸清规律,最优策略是剪刀、石头、布各占1/3概率。基于策略的方法可以输出每种状态下各动作的概率分布,属于随机性策略,适用于这种场景。

策略梯度算法

策略梯度算法(policy gradient)是最基础的基于策略的方法。采用神经网络拟合策略函数π(a|s;θ),代表在状态s下采取动作a的概率,其中θ为网络参数:

图片{w:100}{w:100}{w:100}

定义目标函数J(θ)来衡量策略表现,神经网络的目标是最大化J(θ),采用梯度上升法更新神经网络参数θ:

图片{w:100}{w:100}{w:100}

其中,

图片{w:100}{w:100}{w:100}

为策略目标函数梯度的估计,策略梯度算法由此得名。

J(θ)有多种具体定义方式。直观地看,策略π的状态价值函数越高,意味着策略表现越好。不失一般性,我们将J(θ)定义为起始状态s0的状态价值函数:

图片{w:100}{w:100}{w:100}

此时可以对J(θ)求导,计算策略梯度∇J(θ)。策略梯度定理(policy gradient theorem)直接给出了答案:

图片{w:100}{w:100}{w:100}

其中,μ(s)代表状态s在全部轨迹中的出现概率,∝代表成正比。策略梯度定理的详细推导过程可参考Sutton(2018)Reinforcement Learning:An Introduction第二版13.2节。

策略梯度中包含对状态s的积分,由于μ(s)为状态s的概率,根据数学期望的定义,策略梯度可以简化为期望形式:

图片{w:100}{w:100}{w:100}

计算策略梯度需要对状态s和动作a进行积分,但大多数时候我们不知道s和a的分布,因此无法求出策略梯度的解析解。此时,可以借助蒙特卡洛方法的思想,重复多次采样求均值,求出策略梯度的近似值。

然而在近似策略梯度时,还有一个关键问题:如何估计上式中策略π的动作价值函数qπ(St,a)?下面我们将介绍两种方法:REINFORCE采用蒙特卡洛方法计算的回报Gt近似qπ(St,a),演员-评委算法(actor-critic)采用神经网络Q(s,a;w)近似qπ(St,a)。

REINFORCE

下面推导REINFORCE的策略梯度:

图片{w:100}{w:100}{w:100}

其中,回报Gt可采用蒙特卡洛方法,对每一幕各时刻的折现奖励进行加总得到:

图片{w:100}{w:100}{w:100}

网络参数θ通过梯度上升法更新:

图片{w:100}{w:100}{w:100}

我们进一步理解REINFORCE策略梯度的内在含义。REINFORCE的损失函数和监督学习分类问题的损失函数有异曲同工之妙。分类问题常用的损失函数是交叉熵(cross entropy):

图片{w:100}{w:100}{w:100}

图片{w:100}{w:100}{w:100}

对于REINFORCE策略梯度:

图片{w:100}{w:100}{w:100}

可以反推目标函数:

图片{w:100}{w:100}{w:100}

定义损失函数L(θ)为目标函数J(θ)的相反数:

图片{w:100}{w:100}{w:100}

损失函数和目标函数的区别在于,前者追求最小化,后者追求最大化。

对比交叉熵损失和REINFORCE损失,两者在形式上接近,均为随机变量负对数的期望。交叉熵损失希望最小化真实标签分布Y和预测值分布的距离。类比REINFORCE损失,可以视作最小化“真实动作分布”a和“预测动作分布”π(At|St;θ)的距离。

但问题在于,真实动作分布a只是实际执行的动作,不一定是最优动作,因此还需要乘以回报Gt。如果Gt较大,说明真实动作重要,计算损失时权重应更高;反之则说明真实动作不重要,计算损失时权重应更低。REINFORCE某种意义上可以理解成以真实动作a为标签,以回报Gt为权重的监督学习。

实现策略梯度的技巧之一是添加基线(baseline),主要作用是降低模型的方差:

图片{w:100}{w:100}{w:100}

其中基线b(St)通常为状态St的函数,可任意设置,只要与动作a正交即可。一般设为状态St的价值V(St):

图片{w:100}{w:100}{w:100}

添加基线的REINFORCE梯度和梯度上升表示为:

图片{w:100}{w:100}{w:100}

最后我们给出不添加基线的REINFORCE伪代码。

图片{w:100}{w:100}{w:100}

演员-评委算法

下面推导演员-评委算法的策略梯度:

图片{w:100}{w:100}{w:100}

其中,Q(St,At;w)是以w为参数的神经网络,用来拟合动作价值函数,称为价值网络(value network)。

演员-评委算法包含两组神经网络:策略网络π(a|s;θ)和价值网络Q(s,a;w)。策略网络执行动作,相当于演员;价值网络评估动作的价值,相当于评委。演员-评委算法由此得名。该方法可以看作基于价值的方法和基于策略的方法的交集,习惯上仍归入基于策略的方法。

演员-评委算法和生成对抗网络(generative adversarial networks,GAN)有异曲同工之妙。

在生成对抗网络中,包含生成器和判别器两组网络。前者生成假数据,相当于假钞制造机,后者判别真假,即评估假数据质量,相当于验钞机,两者交替训练,“左右互搏”。在演员-评委算法中,策略网络生成动作,价值网络评估动作价值,两者同样交替训练。

图片{w:100}{w:100}{w:100}

对于策略网络(演员),目标函数沿用前述策略梯度算法思想,每一轮迭代中,参数θ通过梯度上升法更新:

图片{w:100}{w:100}{w:100}

其中

图片{w:100}{w:100}{w:100}

为策略网络学习率。添加基线的策略网络梯度和梯度上升表示为:

图片{w:100}{w:100}{w:100}

对于价值网络(评委),目标函数采用前述时序差分方法和Sarsa的思想,将当前时刻价值网络输出的动作价值Q(St,At;w)视作“预测值”,将实际奖励Rt+1与折现后的下一时刻动作价值Q(St+1,At+1;w)视作“真实值”,希望最小化两者的均方误差。两者之差即时序差分误差。价值网络的损失函数为:

图片{w:100}{w:100}{w:100}

求导得到损失函数的梯度:

图片{w:100}{w:100}{w:100}

每一轮迭代中,参数w通过梯度下降法更新:

图片{w:100}{w:100}{w:100}

其中

图片{w:100}{w:100}{w:100}

为价值网络学习率。

最后我们给出演员-评委算法伪代码。

图片{w:100}{w:100}{w:100}

强化学习日频择时策略

本章介绍如何应用强化学习中的DQN算法构建股指日频择时策略:

\1. 强化学习的第一步是正确定义问题,对现实问题进行马尔可夫决策过程建模,定义状态空间 、动作空间、状态转移矩阵、奖励、折扣因子构成的五元组,核心是定义奖励。

\2. 第二步是确定强化学习算法。择时问题中,我们将智能体的决策简化为全仓做多、持有、平多三种动作,动作空间属于离散集,因此选择基于价值的方法中的DQN。进而构建深度神经网络,包括确定网络结构、训练参数等。

\3. 强化学习对超参数敏感,我们将进行参数敏感性分析。

马尔可夫决策过程构建

状态空间

表征状态的原始数据为股指在回看区间内日度开盘价、最高价、最低价、收盘价。预处理方式为计算t-lookback+1至t日行情数据相对于过去252个交易日收盘价的Z分数。因此状态空间为lookback*4维实空间。回看区间lookback取5个交易日,同时测试10和15。

动作空间

动作空间定义为:

图片{w:100}{w:100}{w:100}

其中buy代表全仓做多,sell代表平多,hold代表持有多仓或者保持空仓,不涉及做空。基于t日收盘价的状态选择动作,以t+1日开盘价执行交易。

状态转移矩阵

我们无法对股票市场的状态转移进行精确描述,状态转移矩阵对于智能体而言是未知的。因此采用免模型方法中的DQN,免模型方法不需要状态转移矩阵,智能体通过与环境互动进入下一状态。

奖励

奖励分四种情况:

\1. 当前未持仓,且At为buy时,奖励为预测区间内扣费后多头收益率:

图片{w:100}{w:100}{w:100}

\2. 当前未持仓,且At为sell或hold时,奖励为预测区间内空头收益率:

图片{w:100}{w:100}{w:100}

\3. 当前持多仓,且At为sell时,奖励为预测区间内扣费后空头收益率:

图片{w:100}{w:100}{w:100}

\4. 当前持多仓,且At为buy或hold时,奖励为预测区间内多头收益率:

图片{w:100}{w:100}{w:100}

其中TC为单边交易费率,本文取万分之五;Closet+horizon为horizon日收盘价,预测区间horizon取5个交易日,同时测试1和10。

上述奖励的本质是允许做多和做空下的择时策略收益率。回测时只允许做多,但训练时可以做多和做空。如果奖励和回测一致,只允许做多,那么空仓状态下奖励始终为0,奖励变化不敏感,Q网络难以学习。

折扣因子

折扣因子γ取0.9,同时测试γ=0.5和0.7。

DQN模型构建

网络结构和流程

Q网络是DQN的核心组件,本文Q网络结构为3层全连接网络,如下图所示。

图片{w:100}{w:100}{w:100}

DQN训练和测试流程图如下。

图片{w:100}{w:100}{w:100}

主要步骤为:

\1. 初始化Q网络和目标网络:随机初始化Q网络Q(s,a;θ)的参数θ,将θ复制给目标网络Q(s,a;θ-)的参数θ-。

\2. 数据预处理,获取状态s:每个交易日t,计算t-lookback+1至t日指数开高低收价格相对过去252日收盘价的Z分数,作为该日的状态s。可类比监督学习的特征工程。

\3. 遍历训练集,构建四元组:按时间顺序,遍历训练集内每个交易日。通过Q网络计算该日状态s的动作价值Q(s,a;θ),通过ε-贪心算法得到动作a;根据动作和奖励规则,确定奖励r,即t至t+horizon日多头或空头收益;将t+horizon日状态视作新的状态s’。由此得到每个交易日的(s,a,r,s’)四元组。

\4. 存入回放内存:将该条经验存入回放内存。当回放内存装满时,删除最早的一条数据。

\5. 经验回放,优化Q网络:每得到一条经验,都对回放内存进行随机采样,得到小批量样本。基于Q网络和目标网络计算Q网络损失L(θ),采用优化器更新Q网络参数θ。

\6. 每隔指定幕数更新目标网络:每完整遍历一轮训练集,视作一幕。每隔指定幕数,将θ复制给θ-。当训练轮数达到指定幕数,停止训练。

\7. 各随机数种子合成信号,测试集回测:每组随机数种子训练一组Q网络。按时间顺序,遍历测试集内每个交易日。根据该日状态s及训练好的Q网络计算动作价值,选择动作价值最高的动作argmaxaQ(s,a;θ)。100组随机数种子结果以多数票规则合成,得到最终交易信号。当处于空仓状态时,若动作为sell或hold则继续保持空仓,若动作为buy则于次日开盘做多。当处于做多状态时,若动作为buy或hold则继续保持做多,若动作为sell则于次日开盘平仓。

数据和超参数

数据为上证指数2007-01-04至2022-06-30日度行情数据。其中2007至2016年为训练集,用来训练智能体;2017至2022年为测试集,用来评估智能体表现。

DQN模型超参数如下表所示。

图片{w:100}{w:100}{w:100}

结果和参数敏感性分析

全部超参数样本外回测评价指标如下表所示。

图片{w:100}{w:100}{w:100}

原始超参数表现

原始超参数为:折扣因子γ=0.9,回放内存replay_memory=32,回看区间lookback=5,预测区间horizon=5。择时策略样本外年化超额收益率为18.2%,夏普比率为1.31,年均调仓42.0次。

图片{w:100}{w:100}{w:100}

折扣因子的影响

不同折扣因子收益率表现:γ=0.5和0.7接近,γ=0.9较差。折扣因子γ越小,远期奖励权重越低,越关注短期收益,有利于择时策略。

图片{w:100}{w:100}{w:100}

回放内存的影响

不同回放内存收益率表现:replay_memory=32最好,replay_memory=16次之,replay_memory=64最差。回放内存和另一个超参数小批量样本数有关联。此处小批量样本数为16,那么当回放内存为16时,每次取回放内存中的全部样本参与训练,失去了随机采样的意义,有损于模型训练。当回放内存较大时,回放内存中包含了相对久远的经验,好比成年人用儿童的经验学习,也会有损于模型训练。

图片{w:100}{w:100}{w:100}

回看区间的影响

不同回看区间收益率表现:lookback=5最好,lookback=10和15接近,lookback=15略好。过于久远的信息指示意义可能有限,降低数据信噪比,回看区间取短一些较好。

图片{w:100}{w:100}{w:100}

预测区间的影响

不同预测区间收益率表现:horizon=10最好,horizon=5次之,horizon=1最差。预测区间越大,计算奖励时目光越长远,有利于择时策略。预测区间horizon=1时,模型始终发出buy信号,因此策略和基准一致,这可能是因为下一日收益率随机性较大,模型难以学习。

图片{w:100}{w:100}{w:100}

优化后超参数表现

优化后的超参数为:折扣因子γ=0.5,回放内存replay_memory=32,回看区间lookback=5,预测区间horizon=10。此时,择时策略样本外年化超额收益率提升至37.0%,夏普比率提升至3.27,年均调仓35.5次。

图片{w:100}{w:100}{w:100}

总结

本文介绍强化学习基础概念和经典算法,并构建股指日频择时策略。有别于传统监督学习对真实标签的拟合,强化学习不存在标准答案,而是针对长期目标的试错学习。其核心思想是个体通过与环境交互,从反馈的奖励信号中进行学习,数学上使用马尔可夫决策过程刻画。本文围绕基于价值的方法和基于策略的方法两个方向,依次介绍蒙特卡洛、时序差分、Sarsa、Q学习、DQN、策略梯度、REINFORCE、演员-评委算法。使用DQN构建上证指数择时策略,原始超参数样本外2017年至2022年6月年化超额收益率18.2%,夏普比率1.31,年均调仓42.0次,优化后策略表现进一步提升。

强化学习的核心思想是智能体通过与环境的交互,从反馈信号中进行学习。智能体首先观察环境的状态,采取某种动作,该动作对环境造成影响。随后,环境下一刻的状态和该动作产生的奖励将反馈给智能体。智能体的目标是尽可能多地从环境中获取总奖励。总奖励不是下一时刻的即时奖励,而是未来每个时刻奖励的“折现”之和。强化学习的结果是某种动作选择规则,称为策略,主要采用迭代方式训练。

马尔可夫决策过程是强化学习的数学基础。马尔可夫决策过程从马尔可夫过程、马尔可夫奖励过程出发,在状态空间、状态转移矩阵基础上,相继引入奖励函数、折扣因子、动作空间而来。状态价值函数v(s)代表状态s未来总回报的期望,动作价值函数q(s,a)代表状态s下采取动作a未来总回报的期望,可以借助贝尔曼方程求解。贝尔曼期望方程是线性方程,可以通过解析方法求解任意策略的v(s)和q(s,a)。贝尔曼最优方程是非线性方程,需要通过迭代方法求解最优策略的v(s)和q(s,a)。

强化学习分为基于价值的方法和基于策略的方法。基于价值的方法先估计动作价值函数,称为策略评估,再采用贪心策略选择动作价值最高的动作,称为策略改进。根据策略评估方法不同,分为蒙特卡洛方法和时序差分方法。时序差分方法分为同轨策略Sarsa和离轨策略Q学习。Q学习引入神经网络、经验回放、目标网络等改进得到DQN。基于策略的方法直接拟合策略函数,基础是策略梯度算法,根据动作价值函数计算方法不同,分为REINFORCE和演员-评委算法。

采用DQN构建股指日频多头择时策略。状态定义为回看区间内的行情数据,动作分为做多、平多、持有三种,奖励定义为预测区间内多头或空头收益。基于训练集数据训练DQN模型,多组随机数种子合成信号,基于测试集进行日频调仓回测。以上证指数为择时标的,2007至2016年为训练集,2017至2022年6月为测试集,交易费率单边0.5‰,原始超参数测试集年化超额收益率18.2%,夏普比率1.31,年均调仓42.0次。考察折扣因子、回放内存、回看区间、预测区间等超参数影响,优化后择时策略表现进一步提升。

本文存在以下未尽之处:本研究仅对上证指数进行择时测试,可扩展至更多可交易标的。状态空间仅采用原始行情数据,可扩展至择时指标,或使用神经网络编码。强化学习算法仅测试DQN,可扩展至其他算法。强化学习存在过拟合风险,需探索过拟合检验方法。

参考资料

图片{w:100}{w:100}{w:100}

图片{w:100}{w:100}{w:100}

风险提示

人工智能挖掘市场规律是对历史的总结,市场规律在未来可能失效。人工智能技术存在过拟合风险。强化学习模型对随机数、超参数敏感。强化学习模型可解释性较差。

\

标签

人工智能经典算法量化择时
{link}