我们知道建立的模型,期望结构风险最小化,结构风险包括经验风险和置信风险,也就是我们的目标函数有两项组成,第一项为损失函数,第二项为正则化项(惩罚项)。前一篇已经介绍过损失函数了,这里不再介绍,本节主要介绍正则化项,正则化的目的主要是降低模型的复杂度(降低vc维),防止过拟合。
-
目标函数形式:
一般来说,正则化项就是模型参数向量的范数。它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。它将参数趋于零的方向进行调整。不同的范数对参数的约束不同,取得效果也不同。
L1范数
- 假设向量,其L1范数公式:
- L1范数,,也叫Lasso回归。它是指向量的各个元素的绝对值求和,也称为'稀疏规划算子'。为什么它会是模型的参数稀疏的? 模型过于复杂是因为模型尝试去兼顾各个测试数据点, 导致模型函数处于一种动荡的状态, 即使在很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,为了减小导数,我们添加惩罚让模型处于平缓。
- 惩罚力度加大,模型的参数会有一部分等于0
L2范数
- 假设向量,其L2范数公式:
- 假设向量,其L2范数公式:
- L2范数,,也成为岭回归(Ridge Regression),也有人称之为‘权重衰减’。它是指向量的各个元素的平方和然后再求平方根。
- 与L1不同的,L2范数使权重都接近于0,但是不等于0;
- 从优化的角度来说,L2范数有助于模型优化求解变得稳定和快速;
- 从贝叶斯先验的角度,加入正则化项相当于加入一种先验,先验知识会引导求解损失函数最小值过程时,朝着约束方向迭代。L1范数相当于加入了一个Laplacean先验,L2范数相当于加入了一个Gaussian先验。整个最优化问题可以看做是一个最大后验估计,其中正则化项对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计。
核范数
- 核范数,是指矩阵奇异值的和,它的作用是约束低秩。矩阵的秩可以度量矩阵的相关性,而矩阵的相关性实际上带有矩阵的结构化信息。换句话说,可以用更低维的线性子空间来表示原有的信息。
- 如果一个矩阵的秩远远小于其维数必然含有大量的冗余信息,利用冗余信息可以对缺失数据进行恢复,可可以对数据进行特征提取。
- 核范数的主要应用
- 矩阵填充。矩阵填充常用于推荐系统,先建立不同用户对以购买过的不同商品的评价矩阵,利用低秩重构对矩阵进行填充,从而可以预测用户对未购买过的商品的喜欢程度。
- 鲁棒PCA。主成分分析就是找出数据中最主要的元素和结构,去除噪声和冗余信息,对数据进行降维,揭示隐藏在复杂数据中的简单结构。而鲁棒的PCA考虑的是一般数据矩阵包含结构信息和噪声,因此我们可以将这个矩阵分解为两个矩阵相加,一个含有主要的结构信息,另一个含有噪声(稀疏矩阵)。
- 比如含有同一张人脸的多张图片,每张图片由于拍摄背景不同,如果将一副图片的矩阵数据压缩成一个行向量,多张图片就构成一个大矩阵,这个矩阵必然线性相关,我们此时可以对矩阵进行分解,分解成低秩矩阵(主要的结构信息)和稀疏矩阵(噪声信息)的和。
对于激活函数,损失函数,正则化的总结
- 激活函数用于神经网络层与层之间的非线性映射,保证了神经网络的非线性的特性,常常激活函数都是非线性的。
- 损失函数是用于衡量预测值与真实值之间的差异,也就是经验风险。如果是二分类的任务,常常选择交叉熵损失函数和Sigmoid激活函数;如果是互斥的多分类任务,常常选择对数似然损失函数和Softmax激活函数;如果是非互斥的多分类任务,需要对标记进行处理,转化为多个二分类任务;如果是回归任务,常常损失函数选择均方误差函数。
- 分类函数是神经网络输出层的激活函数,常常任务需求固定,也就意味着我们的分类函数也固定了。比如反欺诈的需求,我们的目的是识别出非欺诈和欺诈的且一个案件要么是非欺诈的,要么是欺诈的,两者只能取其一。明显是一个二分类任务,那么我们的分类函数选择sigmoid函数。
- 目标函数是模型训练过程中的总目标,也就是让结构风险最小化。常常结构风险包含经验风险和置信风险,也就是损失函数和正则化项。