欢迎大家来到IT世界,在知识的湖畔探索吧!
本来想写到深度学习里的,但是线下和别人聊RLHF,和PPO,DPO的时候,我发现大家一脑袋问号,其实也正常,深度学习里面数学的东西没那么多,入门容易一点,强化学习(现在也都谈强化深度学习,或者深度强化学习了)反而没那么要算力,要一堆算法和数学,所以就单开一个系列,专门写强化学习吧
其实强化学习,某种程度上比深度学习更早的走进大家的视野,没错,就是那个把李昌镐,柯洁给打败的Alpha
第一课我们先讲点基础,从强化学习里最简单的无状态问题开始吧
CMU提出的” 多臂老虎机”问题是概率论中的一个经典问题,亦是强化学习中的重要模块。人们针对解决此类不确定性序列决策问题,提出了多个“躲避老虎机”算法框架
我们假设有10个老虎机,每个老虎机有一个摇把子,当然也有按钮押注,无所谓
照片摄于2019年夏天Las Vegas
每个老虎机中奖有不同的概率,这10个老虎机,我们想玩,我们把玩的步骤分为探索和利用
探索:看看哪个老虎机中奖概率高
利用:中奖概率高,我就一直摇它
OK,前置条件讲完了,现在进入到我们今天的第一个算法
贪婪算法
先设置10个老虎机的不同的中奖概率[0到1之间的概率]和摇老虎机以后的返回值,如果是0就是没摇中,1就是摇中了,所有老虎机默认都是1开始的,如果是0开始的,可能会导致有些老虎机永远也不会被玩到
在贪婪算法的前提下,我们设置一个函数,”选一根”,选一根的函数的意义是,从0-9这10个老虎机里面选一根拉杆,然后通过一个循环来计算每个老虎机奖励期望,会形成一个列表,再用argmax来求出来期望最大的老虎机的index值,因为现在,所有的老虎机都是[1],所以返回第一个index即0
设置一个动作函数,try_and_play,这个函数可以让老虎机得出一个0或者1的结果,如果random出来的值没有老虎机本身的默认概率大,就会置1,代表中奖,随后这个1或者0就会被置于相应的老虎机的list里面,作为一次reward结果
计算最好的结果 target,和实际玩出的结果result的对比,可以看出来,最好的中奖概率在5000把应该是4150次,如果用贪婪算法来做)可以完成4077次,看起来还不错
现在我们改进一下算法
递减贪婪
第二个算法,我们只改其中的随机探索的欲望
在贪婪算法里,我探索的欲望是一个常量,也就是说我可能摇到最好的,我还去探索,现在我们把这个常量,用一个分数来取代
这个分数肯定是越玩次数越多,分数越小()因为分母越来越大)所以你探索欲望就越来越低
看起来好像没好太多
UCB算法
UCB(上置信界)算法,和刚才的算法的区别是,我只针对我玩的多的机器,我探索欲望才会降低,它是怎么实现的呢?
简单解释就是也是分数,只不过这次的分数都是由玩多少次产生的,分子是玩多少次然后开根号,分母是玩多少次然后乘以2,这样就会导致,最后把ucb的这个上置信界的值和你的期望做个+=,通过这个ucb的值来控制对玩的多机器越来越没欲望探索,对少的机器有很好的欲望来探索。 这个和刚才的递减贪婪的区别就是递减贪婪是对所有的机器的探索欲望进行处理,ucb是对不同的机器有不同的处理方式
结果更差了,这个其实和学习的次数还有其他参数有关,相对来讲ucb还是比前两个更科学和能打的算法,我也就是给大家讲讲算法的实现原理
下面进入到今天最后一个算法
汤普森采样(Beta分布)
这个算法是用beta分布来做概率和衡量期望
beta分布就是a,b两个输入(可以是同一个数字,也可以是不同的数字,但是必须要大于0)根据输入的大小能求出相对均匀或者相对离散的方差
通过两个全1(代表中),和全0(代表不中)的两个list的统计,可以生成一个beta分布的统计,根据统计的概率在这一步就可以求出来8号老虎机的中奖概率大
在这个系列Demo里面,Beta分布来求期望,也是效果最好的和理论上的最大值的差距非常小了
到这块无状态问题就基本讲完了
Tips:强化学习某种程度上要比深度学习抽象,学起来也有点困难,但是大家一定要有信心,拿我这个代码跑上几把demo就全明白了
我觉得学习这东西只要想弄,都贼简单,比如溜肉段,下图是我元旦自己做的溜肉段,得到了一致好评,我第一次做,看了一遍抖音就学会了,大家学强化学习,也一定要有溜肉段精神,只要目标定的对,其他的细节都是浮云了,拿时间就攻克了
本节完
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/81191.html