本文接前面文章:
(接上文)
文末新课《Stable Diffusion/MDJ的原理与实战》秒杀~
好巧不巧,看似大功告成了,但重要性采样还是有个问题。具体什么问题呢,为更好的说明这个问题,我们回到上文的那个例子中:
还是那两个分布: p、 q
,当不能从 p
里面很好的采样数据,而能从 q里面很好的采样数据时,基于重要性采样的原则,虽然我们可以把 p
换成任何的 q
,但是在实现上, p
和 q
的差距不能太大,差距太大,会出问题
比如,虽然上述公式成立,但如果不是计算期望值,而是
计算方差时Varx∼p[f(x)]和是不一样的
因为两个随机变量的平均值相同,并不代表它们的方差相同
此话怎讲?以下是推导过程:
将 分别代入方差的公式
则分别可得(且考虑到不排除会有比初级更初级的初学者学习本文,故把第二个公式拆解的相对较细)
上述两个公式前后对比,可以很明显的看出
后者的第一项多乘了,如果差距很大,的方差就会很大
所以结论就是,如果我们只要对分布 p
采样足够多次,对分布 q
采样足够多次,得到的期望值会是一样的。但是如果采样的次数不够多,会因为它们的方差差距可能是很大的,所以就可能得到差别非常大的结果。
这意味着什么呢,意味着我们目前得到的这个公式里
如果 pθ(at|st)与 pθ′(at|st)相差太多,即这两个分布相差太多,重要性采样的结果就会不好。怎么避免它们相差太多呢?这就是TRPO算法所要解决的。
2015年John Schulman等人提出了信任区域策略优化(Trust Region Policy Opimization,简称TRPO),表面上,TRPO的出现同时解决了两个问题,一个是解决重要性采样中两个分布差距太大的问题,一个是解决策略梯度算法中步长难以确定的问题。
关于前者,在1.2.2节得到的目标函数基础上(下图第一个公式),增加了一个KL散度约束(如下图第二个公式)
至此采样效率低效的问题通过重要性采样(重要性权重)、以及增加KL散度约束解决了
KL散度(KL divergence),也称相对熵,而相对熵 = 交叉熵 - shannon熵,其衡量的是两个数据分布 p
和 q
之间的差异
下图左半边是一组原始输入的概率分布曲线,与之并列的是重构值的概率分布曲线 q(x) ,下图右半边则显示了两条曲线之间的差异
顺带从零推导下KL散度的公式
1 所谓概率:对于 x,可以定义概率分布为 或 q(x)
2 所谓信息:对 取对数,加符号得正值 I(p)=−logp(x) � ( � ) = − � � � � ( � ) ,概率越高,包含的信息越小,因为事件越来越确定;相反,概率越低,包含的信息越多,因为事件具有很大的不确定性
3 所谓Shannon熵(熵是信息的平均,直观上,Shannon熵是信息在同一分布下的平均): 对 I(p)
平均,即
4 所谓交叉熵Cross-Entropy(直观上,交叉熵是信息在不同分布下的平均),即指 对 I(q)
平均,即
5 所谓相对熵或KL散度 = 交叉熵 - shannon熵,即
所以如果在KL散度表达式的最前面加个负号,再结合Jensen不等式自然有
关于后者,具体而言,当策略网络是深度模型时,沿着策略梯度更新参数,很有可能由于步长太长,策略突然显著变差,进而影响训练效果
这是1.2.1节,我们已经得到的策略梯度计算、策略梯度更新公式如下(别忘了,学习率 η
类似步长、距离的含义)分别如下
对这个问题,我们考虑在更新时找到一块信任区域(trust region),在这个区域上更新策略时能够得到安全性保证,这就是TRPO算法的主要思想。
本质上,其实这两个问题是同一个问题(简言之,避免两个分布相差大即意味着避免步长过大)。举个例子,比如爬两面都是悬崖的山,左右脚交替往前迈步,无论哪只脚向前迈步都是一次探索
为尽快到达山顶且不掉下悬崖,一方面 你会选择最陡峭的方向,二方面 你会用目光选择一片信任区域,从而尽量远离悬崖边,在信任区域中,首先确定要探索的最大步长(下图的黄色圆圈),然后找到最佳点并从那里继续搜索
好,现在问题的关键变成了,怎么确定每一步的步长呢?如果每一步的步长太小,则需要很长时间才能到达峰值,但如果步长太大,就会掉下悬崖(像不像两个分布之间差距不能太大)
具体做法是,从初始猜测开始可选地,然后动态地调整区域大小。例如,如果新策略和当前策略的差异越来越大,可以缩小信赖区域。怎么实现?KL散度约束!
总之,TRPO就是考虑到连续动作空间无法每一个动作都搜索一遍,因此大部分情况下只能靠猜。如果要猜,就最好在信任域内部去猜。而TRPO将每一次对策略的更新都限制了信任域内,从而极大地增强了训练的稳定性。
至此,PG算法的采样效率低下、步长难以确定的问题都被我们通过TRPO给解决了。但TRPO的问题在哪呢?
TRPO的问题在于把 KL 散度约束当作一个额外的约束,没有放在目标里面,导致TRPO很难计算,总之因为信任域的计算量太大了,John Schulman等人于2017年又推出了TRPO的改进算法:PPO
新课上线
七月在线新课《Stable Diffusion/MDJ的原理与实战》上线了![]()
↓↓↓扫码抢购↓↓↓
购课后记得进QQ群哈
开课时间:23年7.30开班,每周周日晚上8.30直播
课时:11节课,每节课2h

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.