徐土豆
认证:优质创作者
所在专题目录 查看专题
数据,模型,算法共同决定深度学习模型效果
一文理解Ranking Loss/Contrastive Loss/Margin Loss/Triplet Loss/Hinge Loss
参数和非参数模型——当谈到参数我在说些什么?
在深度学习中,对于特征融合方式的思考——论pointwise addition和concatenate的异同
损失函数的可视化——浅论模型的参数空间与正则
曲线拟合问题与L2正则
作者动态 更多
【论文极速看】ERNIE 3.0 通过用知识图谱加强的语言模型
2星期前
工作一年时期的土豆总结——复杂度和困难度
10-22 14:24
【见闻录系列】我所理解的“业务”
10-19 11:25
markdown数学公式编辑
10-17 13:58
在linux系统上部署FTP服务时进行权限管理(利用chown,chmod命令实现)
10-09 10:24

损失函数的可视化——浅论模型的参数空间与正则

本文转自徐飞翔的“损失函数的可视化——浅论模型的参数空间与正则

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

模型的参数空间

我们知道,在机器学习,特别是深度学习中,整个模型有着数以万计,百万计的参数,包括有权值,偏置等,这些参数通常来说都是实数,如果用表示模型的所有参数,既是 ,其中就可以表示模型的参数量。我们可以知道,的每个分量都是可以自由取值的,当每个分量遍历了所有可能的取值时,我们不妨把模型的所有可能参数取值看成一个空间,名为参数空间(parameter space),用符号表示。 也就是说,我们模型中的每一个可能的参数组合,都有 。为了方便起见,我们接下来的讨论将设为3,也就是说我们下面讨论的模型只有三个参数。其参数空间绘制出来如下所示:

因为这个空间中的每个点(元素)都代表着一个可能的参数组合,因此都可以看成一个假设相同的模型。我们如下图可以发现,不同参数组合之间可以自由移动,比如从当前的移动到 ,这个就是模型参数的更新过程。

其实我们也可以简单地发现,空间其实是一个线性空间,因为无论是数乘还是加法在这个空间都是封闭的,同时,我认为这个空间不是内积空间,因为在参数空间定义内积似乎没有意义,不确定是否是赋范空间,希望有了解的朋友指出。不管怎么说,因为这个参数空间是一个线性空间,我们可以用空间的非线性相关基底表示空间中的任意一个点了。特别的,我们考虑这个空间中的一个平面,这个平面可以由初始点​和两个非线性相关的空间向量 ​,组成,既是 ,画出图如下所示:

其实我们可以发现,这个时候,本来是可以在整个3维空间中进行参数搜索的,通过限制,或者说正则化手段,将其限制在了只能在一个平面上进行参数搜索。

这个行为正是正则的作用,通过引入一些假设或者说偏好,将模型过大的参数空间限制在一个偏好空间中,从而实现更好的泛化和搜索。当然我这里为了可视化方便举的是3维的例子,其实扩展到维也是一样的。我们接下来考察在维参数空间中,利用刚才讨论的参数空间的线性特质进行损失函数的可视化。损失函数的二维可视化

在模型中因为参数数以万计甚至数以百万计,而且我们的损失函数是关于参数的一个函数,因此损失函数也是个极其高高维的函数,难以可视化,但是,通过切片的手段,我们可以可视化出损失函数的一个切片出来,定性观察其局部特性。我们看下如何进行切片。

考虑一个损失函数,假设其映射为,也就是将每一个权值函数都映射到了一个相应的损失值(当然中间需要通过模型函数的作用,这里省略了),假设我们的初始参数为 ,那么假设两个方向的基底,分别为​和 ​,那么在这个由 ​和​为基底的平面中,每一个新的参数都可以表示为,也就说我们的损失函数可以从初始的更新到 ,这个过程,只要当初始值​和基底​和 ​决定了(其实初始值可以随机选),就完全由两个值决定了,因此可以将其画成一个平面图,如下所示[2]:

进一步分析我们可以知道,这个过程其实相当于对损失函数进行了一个切片的操作,如下图所示:

因此,这个由 组成的等高线图可以表示整个高维度损失函数的一个切面,提供损失函数的局部信息,当然不能描述整个损失函数,但是不失为一个提供参考的好方法。下图是SVM损失函数依据此方法的可视化结果[1],左图具有正则约束,而右图没有:

总结来说,这种方法通过用两个维度代表了整个高维度的损失函数,达到了可视化的目的。再看正则化

正则,常常在统计学和机器学习中提及,其本质是引入一些先验的知识,数据额外的知识解决一些病态(ill-posed)的问题,以缓解过拟合的现象[4]。这个过程中,给参数空间提供了偏好,减小了参数空间的大小,我们以后有机会再继续细谈不同正则的假设的解决的问题,我们这里主要考虑的是,怎么提供正则?我们观察下面图:

我们容易发现,其实参数空间中的每一个点都映射到了损失函数上,其参数空间上的平移相当于损失函数上的“上坡”或者“下坡”,因此损失函数的最小化体现在参数空间上就是参数在寻找一个最优值。那么我们不难推理出,其实参数空间和损失函数是相关的,我们对参数空间进行正则也就是进行偏好假设,在损失函数上,其实就相当于加上一个正则项,控制损失函数的形状罢了。对于在考虑损失函数的情况下加上正则,可以考虑在损失函数中添加正则项,对于考虑参数空间的正则,可以考虑不同的特殊网络结构,这两种方法都是常见的添加正则的方法。

我们以后文章中将会看到,诸如dropout, L2 weight decay, L1 sparse, stochastic depth, weight sharing, sparse connection等等无一不是在我提到的这两种方法中考虑的。

Reference

[1]: 最优化基础:损失函数可视化、折页损失函数 & 梯度计算

[2]: Li H, Xu Z, Taylor G, et al. Visualizing the loss landscape of neural nets[J]. arXiv preprint arXiv:1712.09913, 2017.

[3]: Dinh L, Pascanu R, Bengio S, et al. Sharp minima can generalize for deep nets[J]. arXiv preprint arXiv:1703.04933, 2017.

[4]: Regularization (mathematics)

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 5
收藏 4
关注 50
成为作者 赚取收益
全部留言
0/200
  • dy-J4n9lg5Q 2021-05-19 13:28
    什么时候更新
    回复