强化学习简介
强化学习(Reinforcement Learning):
- 机器学习的一个分支:监督学习、无监督学习、强化学习
- 强化学习的思路和人比较类似,是在实践中学习
- 比如学习走路,如果摔倒了,那么我们大脑后面会给一个负面的奖励值 => 这个走路姿势不好;如果后面正常走了一步,那么大脑会给一个正面的奖励值 => 这是一个好的走路姿势
- 与监督学习的区别,没有监督学习已经准备好的训练数据输出值,强化学习只有奖励值,但是这个奖励值和监督学习的输出值不一样,它不是事先给出的,而是延后给出的(比如走路摔倒)
- 与非监督学习的区别,在非监督学习中既没有输出值也没有奖励值的,只有数据特征,而强化学习有奖励值(为负是为惩罚),此外非舰队学习与监督学习一样,数据之间也都是独立的,没有强化学习这样的前后依赖关系
- 可以应用于不同领域:神经科学、心理学、计算机科学、工程领域、数学、经济学等
强化学习的特点:
- 没有监督数据、只有奖励信号
- 奖励信号不一定是实时的,很可能是延后的,甚至延后很多
- 时间(序列)是一个重要因素
- 当前的行为影响后续接收到的数据
强化学习有广泛的应用:游戏AI,推荐系统,机器人仿真,投资管理,发电站控制
强化学习与机器学习:
- 强化学习没有教师信号,也没有label,即没有直接指令告诉机器该执行什么动作
- 反馈有延时,不能立即返回
- 输入数据是序列数据,是一个连续的决策过程
基本概念:
- 个体,Agent,学习器的角色,也称为智能体
- 环境,Environment,Agent之外一切组成的、与之交互的事物
- 动作,Action,Agent的行为
- 状态,State,Agent从环境获取的信息
- 奖励,Reward,环境对于动作的反馈
- 策略,Policy,Agent根据状态进行下一步动作的函数
- 状态转移概率,Agent做出动作后进入下一状态的概率
四个重要的要素:状态(state)、动作(action)、策略(policy)、奖励(reward) - RL考虑的是个体(Agent)与环境(Environment)的交互问题
- 目标是找到一个最优策略,使Agent获得尽可能多的来自环境的奖励
- 比如赛车游戏,游戏场景是环境,赛车是Agent,赛车的位置是状态,对赛车的操作是动作,怎样操作赛车是策略,比赛得分是奖励
- 很多情况下,Agent无法获取全部的环境信息,而是通过观察(Observation)来表示环境(nvironment),也就是得到的是自身周围的信息
Markov状态:
- 指马尔可夫性质的随机变量序列X1,X2,…,Xn的当前状态,过去状态和未来状态
- 给定当前状态,将来状态和过去状态是相互独立的,即t+1时刻系统状态的概率分布只与t时刻的状态有关,与t时刻以前的状态无关
- 从t时刻到t+1时刻的状态转移与t的值无关
- 马尔可夫链模型可以表示为=(S,P,Q)
- S是系统所有可能的状态所组成的状态集(也称为状态空间)
- P是状态转移矩阵
- Q是系统的初始概率分布,Markov状态:
- 指马尔可夫性质的随机变量序列X1,X2,…,Xn的当前状态,过去状态和未来状态
- 给定当前状态,将来状态和过去状态是相互独立的,即t+1时刻系统状态的概率分布 只与t时刻的状态有关,与t时刻以前的状态无关
- 从t时刻到t+1时刻的状态转移与t的值无关
- 马尔可夫链模型可以表示为=(S,P,Q)
S是系统所有可能的状态所组成的状态集(也称为状态空间)
P是状态转移矩阵
Q是系统的初始概率分布,
Q
=
[
q
1
,
q
2
,
.
.
.
,
q
n
]
Q = [q_1,q_2,...,q_n]
Q=[q1,q2,...,qn]
强化学习Agent:
- 基于价值的强化学习,Value-Based
通过学习价值函数指导策略制定(例如Ɛ-greedy执行方法) - 基于策略强化学习,Policy-Based
没有价值函数,直接学习策略 - 结合策略梯度以及价值函数的强化学习,Actor-Critic
既学习价值函数也学习策略的方法
演员-评论,相当于演员在演戏的同时有评论家指点继而演员演得越来越好
策略网络:
S:状态集
A:动作集
R:奖励分布,给定(state,action)
P:状态转移概率,对于给定的(state,action),下一个状态的概率分布
γ
\gamma
γ:贴现因子,为了防止奖励r达到无穷大的预防措施 => 无穷大的奖励会忽略掉智能体采取不同行动的区别
π
\pi
π:最优策略
π
=
a
r
g
max
π
E
[
∑
t
≥
0
γ
t
r
t
∣
π
]
\pi =arg\underset{\pi}{\max}E\left[ \sum_{t\ge 0}{\gamma ^tr_t|\pi} \right]
π=argπmaxE[t≥0∑γtrt∣π]
价值网络(数值网络):
- 通过计算目前状态s的累积分数的期望,价值网络给游戏中的状态赋予一个分数(数值),每个状态都经历了整个数值网络
- 奖励更多的状态,会在数值网络中的数值Value更大
- 这里的奖励是奖励期望值,我们会从状态集合中选择最优的
- V :价值期望
V π = E [ ∑ t ≥ 0 γ t r t ∣ s 0 = s , π ] V^{\pi}=E\left[ \sum_{t\ge 0}{\gamma ^tr_t|s_0=s,\pi} \right] Vπ=E[t≥0∑γtrt∣s0=s,π]
随机策略有时候是最优的:
- 对于石头剪刀布的游戏,只要一方有一个确定性的策略,就会被对手抓住进而整体上输掉。最好的策略是随机选择每次出法,以得到最大可能的总体奖励
- 一共有5个格子,个体需要避免碰到骷髅而尽可能找到钱袋子,我们用对Agent观测到的特征来描述状态空间state,灰色的两个格子将会是无法区分的,此时就发生了状态重名Aliased
- 当发生状态重名的情况,如果采用确定性的策略话,Agent处于哪个灰色格子时,都只能选取相同的行为
- 价值函数给出的策略要么都是向东,要么都是向西。如果是向西,那么当个体处在左侧灰色格子时,它将一直(对于greedy执行)或很长时间(对于Ɛ-greedy执行)徘徊在左侧两个格子之间而无法到达有钱袋子的格子,因而很长时间得不到奖励
Policy-Based优势:
- 收敛性好,因为Policy-Based每次只改善一点点,但总是朝着好的方向在改善,而有些价值函数在后期会一直围绕最优价值函数持续小的震荡而不收敛
- 对于高维度或连续状态空间来说,更高效,使用基于价值函数的学习在得到价值函数后,制定策略时,需要比较各种行为对应的价值大小,这个比较过程就比较难,而采用Policy-Based会高效很多
- 能学到一些随机策略,而Value-Based通常是学不到随机策略
- 针对价值函数非常复杂的情况,采用Policy-Based更适合。比如当小球从从空中某个位置落下你需要左右移动接住时,计算小球在某一个位置时采取什么行为的价值是很难计算的,但基于策略就简单许多,只需要朝着小球落地的方向移动即可
AlphaGO Zero的强化学习
强化学习问题:
- 首先把要解决的问题转化成为一个环境(environment)
- 状态空间(state space):对于围棋来说,每一个棋盘布局(记为s)就是一个状态,所有可能的棋盘布局就是状态空间
- 动作空间(action space):对于围棋来说,所有可能落子的位置就是一个动作空间
- 可行动作(available action): 给定一个棋盘,哪里可以落子,哪里不可以
- 状态转化:下棋之后,对手可能会下的棋。如果是两个Alpha Zero对弈的话,相互是对方环境的一个部分
- 奖励函数:下棋之后得到的信号反馈。在围棋里面,就是胜率的一个正函数。胜率越大,奖励越大
AlphaGO Zero策略: - 落子概率也称为策略(policy)
- 有了落子概率,简单的方式是直接按照这个概率进行落子 =>这会导致神经网络原地踏步,因为Policy Value Network的训练数据是自我对弈(self-play)
- 仅仅自己学习自己是不会有改进的,需要有一个办法来利用值函数的信息来优化这个策略
- 在AlphaGo系列算法里面是使用蒙特卡洛树搜索(MCTS)来进行策略优化的
- MCTS的输出 是根据值函数V得到的一个更优策略,它将被用于通过self-play来生成数据供深度神经网络学习
- MCTS是AlphaGo能够通过self-play不断变强的重要原因
- 使用一个参数为θ的深度神经网络 f θ ( s ) f_\theta(s) fθ(s),将棋盘表示和历史记录作为输入,输出落子概率和价值 ( p , v ) = f θ ( s ) (p,v)=f_\theta(s) (p,v)=fθ(s)
- 落子概率向量p代表选择每个落子动作a(包括放弃行棋)的概率 p a = P r ( a / s ) p_a = Pr(a/s) pa=Pr(a/s)
- 价值v是标量评估,估计当前玩家在棋局状态为 s 时获胜的概率
- AlphaGo Zero神经网络将策略网络和价值网络合并成一个单一的体系结构,其中神经网络由13层的卷积神经网络组成
- 对于每个棋局s,通过神经网络 f θ ( s ) f_\theta(s) fθ(s)的指导来执行MCTS搜索,MCTS搜索输出每次落子的概率分布π。
- 经过搜索后的落子概率p 通常比神经网络 f θ ( s ) f_\theta(s) fθ(s)输出的落子概率p更强 => 将MCTS看作是一个强大的策略改进算法
利用MCTS(蒙特卡洛搜索树)实现策略改善:
- 在每个状态s处,原神网络的策略为 p θ ( s ) p_\theta(s) pθ(s),经过蒙特卡洛搜索树得到的策略为 π θ ( s ) \pi_\theta(s) πθ(s) ,因此在状态s处,策略改善为: p θ ( s ) → π θ ( s ) p_\theta(s)\rightarrow \pi_\theta(s) pθ(s)→πθ(s)
- 在每个状态s处,都会执行蒙特卡洛搜索树给出的策略,直到最终棋局结束
- 根据棋局的输赢会得到奖励 z 值
- 棋局的输赢是由当前策略决定的 => 将奖励值 z 当成是当前策略的评估
AlphaGo Zero神经网络的训练: - 每次试验我们都可以收集到训练数据
(
s
,
π
,
z
)
(s,\pi,z)
(s,π,z) ,根据训练数据可构造 Loss Function:
L o s s = ( z − v ) 2 − π T l o g P + c θ 2 Loss = (z-v)^2 - \pi^TlogP+c\theta^2 Loss=(z−v)2−πTlogP+cθ2
v为value,z是当游戏结束的时候的实际的胜负,即+1,-1
在这里我们做一个回归的loss,经过大数据的训练,神经网络会掌握一个宏观的胜负概率的
− π T l o g P - \pi^TlogP −πTlogP是神经网络的输出与MCTS探索出来的概率分支之间的交叉熵
c θ 2 c\theta^2 cθ2是L2正则项
优化器,可以采用Adam或者SGD进行优化
在每次迭代结束后,利用监督学习更新神经网络权值
AlphaGo的策略价值网络
神经网络:
- 神经网络结构可以自行设计的
- 输入为当前棋盘,输出为双端口,分别表示当前棋盘的状态值(value)和当前棋盘各个位置的走子的概率,这里的棋盘状态值,即机器评价的当前局面的“好坏”
策略网络(Policy Gradients)
- 基本思想,直接根据状态输出动作的概率 => 使用神经网络
- 作用,输入当前的状态,神经网络输出在这个状态下采取每个动作的概率
- 对于强化学习来说,我们不知道动作的正确与否,只能通过奖励值来判断这个动作的相对好坏
- 如果一个动作得到的reward多,那么就让它出现的概率增大,如果一个动作得到的reward少,就让它出现的概率减小
loss= -log(prob)*vt
log(prob)表示状态s对动作a的吃惊程度,如果概率越小,-log(prob)越大,vt表示当前状态s下采取动作a所能得到的奖励(即当前的奖励和未来奖励的贴现值的求和) - 因为要看到奖励,所以Policy Gradients算法必须通过完整的eposide才能进行参数更新,而不是像value-based方法那样,每一个(s,a,r,s’)都可以进行参数更新
- 如果在prob很小的情况下, 得到了很大的Reward,即vt数值高, 那么-log(prob)*vt就更大, 表示更吃惊, (选了一个不经常使用的动作, 却发现能得到了一个很好的 reward, 那么就对这次的参数进行一个大幅调整)
- 如果这个回合选择某一动作,下一回合选择该动作的概率就会大一些,同时看奖惩值,如果奖惩是正的,那么会放大这个动作的概率,如果奖惩是负的,就会减小该动作的概率
Policy Gradients算法: - 蒙特卡洛策略梯度reinforce算法, 使用价值函数v(s)来近似
- 输入:N个蒙特卡洛完整序列,训练步长α
- 输出:策略函数的参数θ
for 每个蒙特卡洛序列:
a. 用蒙特卡洛法计算序列每个时间位置t的状态价值vt
b. 对序列每个时间位置t,使用梯度上升法,更新策略函数的参数θ:
θ = θ + α ∇ θ l o g π θ ( s t , α t ) v t \theta = \theta+\alpha\nabla_\theta log\pi_\theta (s_t,\alpha_t)v_t θ=θ+α∇θlogπθ(st,αt)vt
返回策略函数的参数θ - 这里的策略函数可以是softmax策略,高斯策略或者其他策略
Policy-Based优点:
- 具有很好的收敛性
- 对于高维空间或者是连续空间更加收敛
- 能对随机策略进行学习
Policy-Based不足:
- 容易收敛到局部最优解,而非全局最优
- 对策略的估计有很大方差,求解过程比较低效
强化学习在推荐系统中的应用
强化学习:
- 属于机器学习的分支(其他还有监督学习、无监督学习)
- 与其他学习方法不同之处在于:强化学习是智能体从环境到行为映射的学习,目标是让奖励最大化。
- 如果智能体的某个行为决策得到了正向奖励,那么智能体在后续使用这个行为的决策趋势就会加强
- 强化学习是最接近于自然界的学习方式
- 强化学习与深度学习结合,可以解决海量数据泛化的问题(比如DeepMind的AlphaGO)
构建智能体与环境的反馈机制
- 以往的学习方式,大多为基于监督学习的方式 => 缺少有效的探索能力,造成system倾向给consumer推送曾经发生行为的item(比如商品、店铺、问题)
- 强化学习可以有效建立consumer与system之间的交互过程,同时可以最大化过程积累收益,在业务场景有很好的应用
搜索场景:
- 在电商领域中,用户浏览购买行为可以看成Markov过程,对马尔科夫决策过程进行建模,实现基于强化学习的排序决策决策模型,可以使得搜索更加智能化
- 天猫双11,通过强化学习搜索排序指标提升了20%
- 携程在酒店搜索排序中引入强化学习,来预测那些未知的情况,这里就需要一定的“随机探索”,只有这样我们才能知道实际中用户的反馈
- 随机探索所带来的短期损失是无法完全避免的,但最终的目标是在于探索所带来的收益能够弥补并超过其带来的损失
推荐场景:
- 使用强化学习与自适应在线学习,通过持续机器学习和模型优化建立决策引擎,对海量用户行为以及item特征进行实时分析,帮用户快速发现喜欢的item
- item 可以是文章,商品等
- 淘宝的猜你喜欢,通过引入强化学习,帮助每一个用户迅速发现喜欢的商品,提高人与商品之间的匹配效率,效果指标提升10%-20%
智能客服:
- 将智能客服机器人作为Agent,Agent的决策不是单一节点的直接收益来确定的,而是一个较为长期的人际交互的过程
- 把消费者与平台的互动看做一个马尔科夫决策过程,使用强化学习,可以建立一个消费者与系统互动的反馈系统
- 系统的决策是建立在最大化过程收益的基础上 => 达到一个系统与用户的动态平台
广告系统:
- 如果广告主能够根据每一条流量的价值进行单独出价,广告主就可以在各自的高价值流量上提高出价,而在普通流量上降低出价,这样就可以获得更好的ROI
- 同时,平台也可以提高广告与访问用户之间的匹配效率
- 通过强化学习,可以进行智能调价技术,对于每一位访问用户,根据他们当前状态来决定如何操作调价,给他们展示特定的广告,引导他们的状态向我们希望的方向上转移
- 天猫双11,点击率CTR、CPM以及GMV都有大幅提升