hi
大家好
欢迎回来
这一节我们还是继续基于神经网络的人工智能
系统当中的强化学习
我们来看看我们对于FlappyBird这样的一个玩
游戏的一个强化学习的案例当中
如何去分析强化学习当中的各种要素
那么我们说作为一个强化学习
那么它首先是要有一个主体
这个主体负责做出一些决策
那么当然决策是负责说他会采取一些行动的
这种决策
那么所谓的主体
比如说作为一个算法对抗的一方
比如下棋的AlphaGo或者说人
或者说玩AlphaGo Zero这个游戏的AI
那么它都算是一个主体
也就是说它会采取行动
做出一些做出决策来采取行动
那么第二个要素就是所谓的环境
那么整个主体会存在一个环境之中
那么主体的行为他一旦做出决策
然后再采取行动了之后
他就会跟环境交互
它会影响到环境
然后环境变化了之后会向主体进行反馈
比如说一个完整的游戏程序
就是一个典型的一个环境
当我比如说像围棋的程序
当我在决定在某一个交叉点上下棋
那么环境就会告诉我
你下棋的效果会是什么样子的
当然首先我把这个棋子投下去
它其实就改变了整个的局面
改变了环境
那么改变了以后
环境会反馈给你
你这个是你这样的一个行动对环境造成了
什么样的影响的反馈
是积极的还是消极的
那么所以第三个就是所谓的状态
环境本身它是一个跟主体相对的一个要素
那么环境的本身会它有一些状态会不断地发生变化
那么这个状态其实在不同的应用当中
不同的程序里边他有不同的定义
比如说在下棋的程序里头
所谓的状态就是棋盘的布局
每一个棋盘布局发生变化
那么就是它的状态发生了变化
那么像在一些小游戏当中
这个状态就是游戏的画面
当你采取了行动之后
游戏的画面就会发生变化
比如说你的人物控制的人物的角色会发生跳跃
或者说环境当中的画面会发生扭转
或者或者触发一些爆炸
这些都是状态
那么游戏画面就各不相同了
那么接下来就是动作
那么主体会通过决策
然后采取一些行动
那么行动就通过执行动作来改变环境的一个状态
比如说在下棋当中
这个动作就是在某一个位置上下我的棋子
这就是动作了
或者在FlappyBird这样的游戏当中
你戳一下屏幕
那就是一个动作
那么这些动作都会引起环境的状态的改变
最后一个要素就是回报
这个是强化学习当中最关键的一个部分了
就是环境
不光是这个状态发生改变
那么改变之后它还会告诉主体返回一个回报
告诉主体说回报是一个正反馈
还是一个负面的一个反馈
也就是说你这个动作是好还是不好
必须要有这么一个回报来告诉主体说你做的这
件事情是好还是不好
那么将做最后有这些所有的要素之后
我们就可以构成一个强化学习的这么一个整个
的流程
那么所以我们说强化学习的主要流程就是我们
作为一个主体
做一个具有智能的主体
那么它会去观察环境的状态
然后通过一些决策
采取一些动作来影响这个环境
那么影响环境就改变了这个环境的状态
同时环境会有一个回报反馈给智能的主体
那么这样的一个交互不断的进行产生多次的
尝试的这些经验
那么主体再利用这些经验去修改自身的一个策略
因为所谓的策略就是当我观察到这个环境处于
什么状态的情况下
我要做什么动作
这就叫策略
那么最终我们说一个人工智能会不会玩这个游戏
或者说玩这个游戏玩得好不好
其实最关键就在于最终通过大量的学习能够
得到一个最佳策略
也就是我在环境处于什么状态的情况下
我应该采取什么样的动作
这就是强化学习整个的流程
大家看是不是跟我们人学习一个游戏的过程
其实也是类似的
或者是说是一样的
那么我们来分析FlappyBird游戏本身的这几个要素
当然环境就是本身FlappyBird游戏程序了
那么主体就是我们玩这个游戏的AI
就是强化学习AI就是主体
那么现在剩下几个要素
比如说第一状态
那么在FlappyBird这个游戏当中
每个画面每一帧的画面
我们可能一秒钟会有30帧
或者说能够跑20帧
大概就够了
一秒钟会刷新的每一帧的画面都算是一个状态
所以这个画面是由像素构成的一个数字图像
当然我们在原装的游戏里边
他为了这个游戏的美观
它还有什么蓝天
还有白云
还有城市还有树木这些背景
那么这些背景其实跟我们玩游戏无关
我们所以我们在训练我们的游戏的AI的时候
把这些背景去掉
把这个画面进行简化
当然最主要的水管是被保留了
小鸟也被保留
那么其实下边的这一部分地面的这份无所谓
因为他都没有变化
那么保留下AI用于学习的最关键的信息
而同时不影响游戏的本质
那么这样可以把状态大大的简化
那么这个是所谓的状态
就是每一个画面都是状态
那么什么是动作呢
在每一个状态下
当你观察到这个画面的时候
你可以有两个选择
一个选择就是点击这个屏幕点击触摸屏
或者另一个选择不点击
那么点击触摸屏就是会让小鸟往上跳一下
往上跳一下
那么你如果什么都不做
那么小鸟它会持续的往下掉落
就这么很简单的两个动作
就是点或者不点
这就是FlappyBird化学习当中的动作
那么不同的动作
其实它会产生不同的新的状态
比如说你点一下
那么这个小鸟就会往上抬一点
那么引起了下一个画面的不同
是吧
那么如果说你点一下接下来改变了这个画面
恰巧小鸟在下一帧
他就碰上了水管
那么这个就形成了一定的回报
那么这个就是主体在得到环境所给的新状态的时候
也会有一个回报
就你戳小鸟它会往上一跳
这个跳可能不影响
不影响
那么小鸟还活着
那么回报就是
一如果因为你这个戳或者说不戳引起了
导致了下一帧的画面是小鸟撞上了水管
这个小鸟就死了
死了以后回报就是零
所以我们知道在强化学习过程当中
我们要尽量获得更多的一
而一个零都不要获得
这个回报
因为一旦你获得了一个零回报
那么整个游戏就结束了
你就不能再玩下去
只要你的回报一直是一
那么你就可以得到越来越高的分数
这个就是FlappyBird游戏当中的整个的一个
强化学习的各个要素的这么一个分析