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

2020 年 8 月 11 日 极市平台

点击蓝字


 关注我们



作者丨土豆@知乎
来源丨https://zhuanlan.zhihu.com/p/158857128
本文已获授权,不得二次转载

前言

在深度学习中,我们总是不可避免会碰到各种各样的损失函数。通常来说,损失函数都是高维的函数,难以可视化为人类可以分辨的二维或者三维形式,因此这里介绍一种通过在高维空间中切片的损失函数可视化手段,并且讨论下模型的参数空间

模型的参数空间

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

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

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

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

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

损失函数的二维可视化

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

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

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

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

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

正则化

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

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

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

参考资料

[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)

如有谬误请联系指出,联系方式:
E-mail: FesianXu@163.com
QQ: 973926198
Github: https://github.com/FesianXu


推荐阅读


添加极市小助手微信 (ID : cv-mart) ,备注: 姓名-学校/公司-研究方向-城市 (如:小极-北大-目标检测-深圳),即可申请加入 极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR 等技术交流群 ,更有 每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、 干货资讯汇总、行业技术交流 一起来让思想之光照的更远吧~

△长按添加极市小助手

△长按关注极市平台,获取 最新CV干货

觉得有用麻烦给个在看啦~   
登录查看更多
0

相关内容

最新《图嵌入组合优化》综述论文,40页pdf
专知会员服务
75+阅读 · 2020年8月31日
机器学习的可解释性
专知会员服务
175+阅读 · 2020年8月27日
专知会员服务
42+阅读 · 2020年7月29日
【斯坦福CS520】向量空间中嵌入的知识图谱推理,48页ppt
专知会员服务
100+阅读 · 2020年6月11日
【干货书】用于概率、统计和机器学习的Python,288页pdf
专知会员服务
287+阅读 · 2020年6月3日
专知会员服务
73+阅读 · 2020年5月21日
【机器学习课程】Google机器学习速成课程
专知会员服务
164+阅读 · 2019年12月2日
从信息论的角度来理解损失函数
深度学习每日摘要
17+阅读 · 2019年4月7日
可视化理解四元数,愿你不再掉头发
计算机视觉life
31+阅读 · 2019年1月2日
博客 | 机器学习中的数学基础(凸优化)
AI研习社
14+阅读 · 2018年12月16日
简述多种降维算法
算法与数学之美
10+阅读 · 2018年9月23日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
机器学习者都应该知道的五种损失函数!
数盟
5+阅读 · 2018年6月21日
理解神经网络的激活函数
论智
7+阅读 · 2018年1月8日
干货 | 深度学习之损失函数与激活函数的选择
机器学习算法与Python学习
15+阅读 · 2017年9月18日
Arxiv
6+阅读 · 2019年4月8日
A General and Adaptive Robust Loss Function
Arxiv
8+阅读 · 2018年11月5日
Arxiv
19+阅读 · 2018年6月27日
VIP会员
相关VIP内容
最新《图嵌入组合优化》综述论文,40页pdf
专知会员服务
75+阅读 · 2020年8月31日
机器学习的可解释性
专知会员服务
175+阅读 · 2020年8月27日
专知会员服务
42+阅读 · 2020年7月29日
【斯坦福CS520】向量空间中嵌入的知识图谱推理,48页ppt
专知会员服务
100+阅读 · 2020年6月11日
【干货书】用于概率、统计和机器学习的Python,288页pdf
专知会员服务
287+阅读 · 2020年6月3日
专知会员服务
73+阅读 · 2020年5月21日
【机器学习课程】Google机器学习速成课程
专知会员服务
164+阅读 · 2019年12月2日
相关资讯
从信息论的角度来理解损失函数
深度学习每日摘要
17+阅读 · 2019年4月7日
可视化理解四元数,愿你不再掉头发
计算机视觉life
31+阅读 · 2019年1月2日
博客 | 机器学习中的数学基础(凸优化)
AI研习社
14+阅读 · 2018年12月16日
简述多种降维算法
算法与数学之美
10+阅读 · 2018年9月23日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
机器学习者都应该知道的五种损失函数!
数盟
5+阅读 · 2018年6月21日
理解神经网络的激活函数
论智
7+阅读 · 2018年1月8日
干货 | 深度学习之损失函数与激活函数的选择
机器学习算法与Python学习
15+阅读 · 2017年9月18日
Top
微信扫码咨询专知VIP会员