这篇笔记为概述,记录使用模拟退火算法(Simulated Anneling)解决,迁移学习(Transfer Learning)应用在增强学习(Reinforcemet Learning)任务间整体效率的问题。实现过程看这里。
增强学习
增强学习是一个agent在与它所处的环境相互作用中学习的过程。比如把一只老鼠放在一个迷宫中,让它自己试错找到出口。agent与环境的相互作用由三个变量体现:状态,动作,奖励。状态指agent当前的位置,动作指agent在当前位置有哪些行动的选择。比如老鼠在迷宫中的当前位置可以向前,后,左,右移动。奖励指agent在每次行动后得到的奖励。比如迷宫中的老鼠每找到一粒花生得+10奖励,若它掉进陷阱里得到-10的奖励,且本次学习结束。为了让老鼠尽快学习,一般设置,如果每次执行一个动作,没有正负效果的话,获得-1奖励。这激励agent用较少的步数达到目标,对于老鼠说,吃到花生。
增强学习的可视化环境使用开源BURLAP可视化RL环境。其中agent是个像素小人儿,小人儿的目标是执行不同的动作来找到出口。使用Q-learning学习算法后,可以得到关于本阶段相关数据。一个阶段可能要执行多次学习,比如100次学习。这个项目使用3列数据:Episode Index,#Actions,Reward。这些数据在学习过程中生成,并且保存在外部文件中。
经过一个阶段的学习后,可视化这个阶段学习:Reward-EpisodesIndex图像。E-R图像表示每一个episode对应的reward。可以观察到小人儿确实学习了的。因为钱若干次的R值较小且波动,但是呈上升趋势,直到上升到一个稳定值。此时可以认为小人儿停止学习了,或者说,小人儿找到了最优路径。开始稳定横坐标暂且称为“完全学习Episode”。
为了减少噪声对R-E图像的影响,可以尝试让小人儿学习多阶段,比如10阶段,每阶段学习相同次数,后对R&A分别求均值。为了使图像便于观察,对平均操作后的图像加上平滑操作。平滑后的图像。
迁移学习
迁移学习对于相似但又不同的任务(一个成为源任务,另一个成为目标任务),可以把在源任务中学习到的内容应用于目标任务的学习中,进而可以加速目标学习的速度。这已被实验证实。
目标
进一步实验发现,其实即使只在源任务学习少于“完全学习Episode”的Episode,在目标任务中的学习也可以提前拟合,相较于从零开始学习目标任务。目标任务提前拟合。那么小人儿在源中学习具体学习多少次,可以使迁移后的整体步数更少来达到拟合。
此处对于图像有个改动,横轴不再是Episode Index,而换成每一个Episode对应的Accumulated Actions。即从此往下使用AA-R图像。为什么要如此做,这么做,横轴不单单是Episode,更增加了到达这一Episode为止一共执行了多少Actions。换句话说,之前这个“系统”中的信息只有Episode Index和对应的Reward,两个有用信息。现在这个“系统”中的有用信息包括,Episode Index,当前Episode的Actions数和从开始到现在一共的Actions数。根据信息论观点,增加有用信息,可以减少系统不确定性。
回到问题,具体在源任务中学习多少次。先探索一下。我的做法是,1)分别在源任务中学习1E,2E,3E,… ,nE后迁移到目标任务中,如此得到n个迁移学习过程。对应n个AA-R条曲线,并合并到一幅图中。2)设定一个具体Reward值为R。观察哪条曲线先穿过R。现在我的目标转化为,在不需要执行完n个迁移学习过程的前提下,如何确定哪条曲线先穿过R。
记录第二步中每条曲线穿过R时的对应Episode值,如此便可以得到在源任务中学习次数与其对应的穿过R时的AA值。绘出这条曲线。E-AA图像。此时的目标转化为:在这条曲线中搜索最小值。多次实验发现这条曲线是非凸的,即有局部最小值,且很多。所以在线搜索只能找到第一个局部最优值,不可取。那遍历一遍就可以搜索到最小值。错,如果那样做,整个过程将毫无意义。为了搜索最值,而把所有值求出来。记住求出曲线中一个值,其代价是要完整地执行RL(Surce task)->TL->RL(Target task) 阶段数×每阶段的Episode数。比如10阶段,每阶段执行100Episode。得到一个值要执行1000次完整的上述过程。成本太高。
这个问题类似TSP(Traveling Salesman Problem)问题。同样是求最值,TSP提前得到所有方案是不可能的,就现在的计算机。借鉴TSP的解法,遗传算法或模拟退火,分别点击见实现。因为此问题的输入不是序列,所以遗传算法不适用,实验模拟退火,成功。
模拟退火与遗传算法都属于带有随机性的算法。遗传算法中的交叉,变异操作,模拟退火中的以一定概率接受一个比之前差的结果,都是引入随机性。而随机性给了算法跳出当前局部最有值的能力。
敲黑板
- 这个项目中达到目标进行了至少两次的问题转化。
- 借鉴相同性质问题的成熟解法。
- 积累不同问题的解法。