强化学习的核心思想是个体通过与环境的交互,从反馈信号中进行学习。正如新生儿通过哭闹、吮吸、抓握等探索环境,积累对世界的感知;游戏玩家通过尝试多种策略,积累对游戏规则的理解;投资者通过交易行为,积累对市场规律的认知。如果某种行为可以使得婴儿获得食物、游戏玩家获得高分、投资者获得收益,那么这种行为将得到“强化”。
强化学习由智能体和环境两部分构成。智能体(agent)是能够采取一系列行动并期望获得高收益或者达到某一目标的个体,如上文的新生儿、游戏玩家、投资者。影响智能体行动学习的其他因素统一称为环境(environment),如婴儿的父母和周围的物体、游戏的规则和敌人、投资标的和市场上其他参与者等。
智能体和环境每时每刻都会进行交互。智能体首先观察环境的状态(state),采取某种动作(action),该动作对环境造成影响。随后,环境下一刻的状态和该动作产生的奖励(reward)将反馈给智能体。智能体的目标是尽可能多地从环境中获取奖励。
我们以DeepMind科学家Vishal Maini在Machine Learning for Humans一书中展示的迷宫老鼠游戏为例,更直观地理解强化学习:假设我们控制老鼠在迷宫中自由行动,如果找到奶酪,就能得到+1000分奖励;如果找到沿途水源,也能得到+10分奖励;如果不幸触电,就会得到-100分奖励。
首先让老鼠自由探索整个环境。老鼠可能在初期探索中触电,得到负的奖励;下一轮中,老鼠会选择避开闪电;老鼠也可能很快发现入口附近的三个水源;从此花费全部时间收获这些微小奖励,不再有更高追求,因而错失更大的奖励。经历反复训练后,老鼠最终找到全部水源,并获得最大的奶酪奖励。
通过上述例子,我们得以重温强化学习模型的基本概念:智能体首先观察环境,采取行动与环境互动,获得正向或负向奖励。随后,智能体借助反馈修正策略,尽可能最大化奖励。这与投资交易场景非常匹配。投资者首先观察市场,采取买入、卖出、持有等动作,产生盈亏。随后,投资者通过复盘修正投资策略,目标是最大化预期收益。
强化学习的基本框架是智能体与环境的交互。环境接收到智能体的动作信号,并于下一时刻反馈给智能体新的状态信号St+1和即时奖励Rt+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):
动作(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,以γ为折扣因子,采用类似“折现”的方式计算:
策略(policy)
策略是指根据当前状态,从动作空间中采取某种动作的决策规则。超级玛丽中,假设当前状态下玛丽奥前方有敌人,上方有金币,应该如何决策?我们大概率会决定向上跳,既能避开敌人,又能吃到金币。从状态到动作的映射就是我们的策略。数学上通常以策略函数(policy function)表示,状态s下采取动作a的概率记为π(a|s):
超级玛丽中,状态是游戏屏幕画面,作为策略函数的输入,输出每个动作的概率值:
价值(value)
价值是指给定策略下状态回报的期望。对中国象棋高手来说,卧槽马局面较为有利,该状态的价值较高;归心马局面较为不利,该状态的价值较低。而对不懂象棋的人来说,这两种状态的价值可能没有差别。因此,状态的价值取决于所采取的策略。数学上通常以状态价值函数(state-value function)表示,策略π下状态s的价值记为vπ(s):