为了准备Deecamp的面试,以及源于对自动驾驶的兴趣,笔者着手开始reinforcement learning的学习。写下笔记记录自己的学习过程。
首先,什么是强化学习?笔者的理解是,强化学习是一种半监督学习方式,系统与环境产生交互,做出一系列的行为,环境状态系统状态因此发生改变,环境最终给予系统一个反馈信号,也就是一个reward或punish。系统通过反馈信号来调整自己的行为,使其更加适应这个环境(接受更多的reward)。
强化学习的一个特点之一是,它每一次产生的行为不一定是当前最优的,但若算法收敛的情况下,将是一个全局最优解。每一步只选择当前最优,这属于贪心算法,例如梯度下降算法就属于这种类型,它很容易陷入局部最优解而难以跳出。人生又何尝不是如此呢?许多人往往重视眼前的利益而忽视了长远的发展,这从全局来看,自然对一个人的发展是不良的。
下面归结一下强化学习的特点:
- 没有监督数据,只有奖励信号;
- 奖励信号不一定是实时的,而很可能是延后的,有时甚至延后很多。比如下围棋,系统在游戏结束时候收到最终奖励/惩罚信号,当然,中间过程也可能会收到许多反馈信号。
- 时间(序列)是一个很重要的因素。
- 当前的行为影响后续接收到的数据。
强化学习主要基于这样的”奖励假设”:所有问题解决的目标都可以被描述成最大化累积奖励。
不过这个假设是否足够合理,或者是否足够优秀,笔者是存疑的。这儿涉及到现实社会中关于AI伦理问题的讨论。举一个比较接地气的例子,在自动驾驶系统的开发中,一个问题是,当汽车在大桥上行驶,前面出现了一批行人,车祸即将发生,而汽车此时无法立即停车,那么系统应该是选择保护驾驶员,还是前方的行人呢?这取决于强化学习中价值函数的选择。
未完待续