David Silver说,AI = RL + DL = Deep Reinforcement Learning
他的课程:RL Cource by David Silver
RL圣经:Reinforcement Learning: An Introduction
RL是多学科的,有自己的框架体系,具体可学习上面的资料。
Je pense, donc je suis
讲点题外话,我们思考一下学习的本质。当一个新生命诞生时,没有人去教他该做什么,该怎么做,他只有去试探身边的环境,观察给他的反应。在不断和环境交互感知过程中,他知道了一些行动会带来什么。其实小孩子大家都知道有时候可能会做一些事情,大人感觉很傻,或许抱着为他好的态度纠正甚至惩罚他,逐渐变成了大人的样子。哈哈哈,这个过程中小孩有些事情可能真的是错的,有些事情可能是他的潜力,但是就被抑制住了。那这种learn by interacting with our environment就是RL的思想,再多说一点,其实人本身是不了解自己的,也是和环境交互的过程中,你了解了环境,可能也了解了自己。假设你生于野人环境,想必你也就明白了吧。那么请问,假设你不安于现状,那你是改变环境呢?还是改变自己呢?好了,废话太多了。
总结一句话RL是关注从与环境交互(interaction)中学习,一种结果导向的方法,应用于一系列决策过程。可以表示为Markov Decision Processes(MDPs)。RL关注的从交互中学习使它强于其他方法,如博弈论中最小最大原则,它假定环境按一定规则来;常用的动态规划,假定对环境完全可知等。
简单来说,RL中有一个机器人(agent),根据看到的环境(environment)现状(observation/state),采取一定的行动(action),环境的状态随之改变并会返回一定的奖惩(reward)给agent。
RL的学习目标就是采取决策,根据state采取action,最大化累计reward。
RL特点
- agent的action会影响后面inputs(closed-loop)
- agent不知道应该采取什么action,只能不断尝试(非有监督)
- action不但会影响目前的reward,还会影响未来的reward(foresight)
这里简单举例谈一下RL与一般机器学习区别。(supervised learning)
- 下围棋
supervised learning 就是有个老师会教机器,你看到这个盘势,你该在哪落子,但围棋,其实人也不知这个盘势到底该在哪落子最好,他可以学会下围棋,但可能不是最厉害的!
Reinforcement learning 就是没有老师教你,有一个对手陪你下,如果赢了就得到positive reward,输了就得到negative reward,下了很多盘下来,机器大概知道怎么下比较好,是从经验来学习,要想变得厉害需要下很多盘,人不可能陪它下很多盘,alpha狗就是train两个棋手互下!alphago 是先supervised learning让他大概知道怎么下,然后再和机器互下的supervied learning + reinforcement learning,这个supervised的过程理论上是提升效率,让机器不至于走太多弯路,当然最近出来的alphago zero似乎并没有先学习棋谱,残虐了第一代alphago。
那么这个先验的知识提供了这个问题的有用的信息,但是过多的信息似乎又会影响机器的发挥,真正决定机器能力的还是从交互中学到的。这如同过拟合与欠拟合的关系了 - 对话
针对chat-bot来说,supervied learning就是说,我告诉你你该怎么说话;
RL的话就是让机器和人说话,说着说着人如果发火了,这时候机器得到negative reward,他可能某一句话不好,但是他其实不知道哪句话不好,这时候他要自己想办法去反省了哈哈
但是人也是累的,不会陪它一直讲,那采取alpha go思想,learn 两个chat-bot互讲,但是容易陷入无穷循环。。
但是两个机器聊天你不知道他们说的话是不是人话。。一些paper有设定一些对话规则。但这样其实也不一定是最好的办法。
如果用GAN的方法的话,就是你要train一个D来说判断这对话是不是人话,是的话给reward,也就是train一个给reward的方法,那其实听起来还不错哦 - 打游戏
和游戏里面的电脑区别是什么呢?游戏里面的电脑是人编程写出来,按照一定规则来做,RL玩游戏其实是和人一样的,它看到的也是游戏图像(inputs),然后他采取相应的操作,得到相应的reward,比如游戏分数,行动会影响environment,下一次看到的游戏图像就会改变,(环境的变化也可能和action无关),这个过程不断进行直到游戏结束。(一个episode),他学习如果在这个episode中得到最多的reward,以下是一些开源资料
Gym: https://gym.openai.com/
universe: https:// openai.com/blog/universe/
supervised learning目标是generalization,unsupervised learning目标是找潜在结构模式。所以RL不属于他们。一般的机器学习是从一些子问题考虑,不会考虑整体大框架。而RL正好相反,它是通过对寻求完整的goal-directed agent与未知环境交互的问题,agent被置于一个未知世界,决策时它必须考虑实时选择和未来影响作用,以及对环境改变。当RL用于子问题时,这时候就要跳出局部看到问题的本质,找到通用的框架!
RL的基本元素
-
policy
策略:一个从state到action的映射,也是我们最终需要得到的。广义上它可以是有随机性的 -
reward
衡量某个state好坏,直接由环境给出(属性),不能被agent所改变,表示当前行动的收益(短期) -
value
衡量一个state的reward的价值(长期),它考虑了未来可能得到的reward和当下的reward,通过把未来的价值折现到此刻。这是agent在决策时考虑的的目标,间接表现出agent的长远目光 -
model of enironment(可选)
允许对环境做出预测,根据当前state和action预测未来的state和reward,进而辅助agent进行决策。如果用model则问题叫model-based,否则为model-free
如何把一个问题放到RL框架呢?
那首先你这个问题肯定得有agent,environment,action。agent通过action和environment交互实现一个目标,其中的agent要求如下
- agent可以感知environment,采取action可以影响environment
- agent不知道应该采取什么action,只能不断尝试
- agent有一个关于state的goal
RL的挑战及难点
-
trade-off between exploration and exploitation
agent需要知道有什么已经做过的action来获得reward,还要不断探索新的action是否可以获得更多的reward,既要保守又要开放。 -
reward delay
比如会发现只有某个action会有reward(比如下棋只有赢了才有reward),但是如果不用其他action肯定不行的,其他action会在未来给你更多的reward,agent需要有远见,短期的牺牲会换来更好未来的 -
如何控制产生不想要的后果
RL能做到智能就要通过explore未知的行动,这使他在遇到未知领域时能有效解决(比如alphago zero),但是怎么保证它不会触及一些底线呢(比如agent学坏了)?现有的方法比如,加约束,改变objective function让他对风险敏感等
上面简单介绍了RL的一些特点,那它最适合做什么样的任务呢?其实涉及决策都可以用RL框架,但它的特点决定了它更适合做人也不知道怎么做是最好的事情!比如interactive retrieval,让机器根据人的查询来反问问题,得到更精准的查询,开无人机,无人车,下棋(Alpha Go),投资决策,仿人类行动机器人,打游戏虐人类等(我倾向于做一个保姆,恩)
下次了解一下RL的解法