【机器猫说机器学习】如何避免机器学习中的过拟合-FISTA
【摘要】 为什么叫【机器猫说机器学习】呢?机器猫最强大的功能就是变换各种神奇的东西,而机器学习里,最常用的理论就是线性变换。刚接触机器学习的时候,就和看机器猫漫画书一样,神奇又实用。这是一个新系列,和【CV炼丹炉系列】不一样,这里的算法都有严格的数学推导,可解释,介绍机器学习底层算法,偏向统计、概率、优化。
【什么是过拟合】
Ref: 维基百科-过拟合
【要解决什么问题】
首先看看这是一个什么问题?
其中y和A是已知的,b是噪声,目的是求x。m是样本量,n是特征维度。通常的做法是设计一个目标函数square loss,使这个目标函数最小化。当前,我们可以设计不同的loss函数,loss如果是square loss,那就是最小二乘;如果是hinge loss,那就是svm;如果是exp-loss,那就是boosting;如果是log-loss,那就是logistic regression;不同的loss函数,具有不同的拟合特性。
用square loss举个栗子,当m=n,并且A是非奇异的时候,方程是有解的。但是更多情况,是m<n 或者m=n 但是rank(A)<n,这种情况下,A就是ill-conditioned,方程往往有无穷解或者无解,失去了生活的意义。
【怎么解决呢】
我们的目标是求解x,而且x是稀疏的,那为什么不利用这个条件呢?最easy的方法,在loss后面加一个正则化项。正则化项可以是2范数,也可以是1范数,甚至可以是q范数(0<q<1)。[知识点] 当q<1,就能得到稀疏解,q越小效果越好;当0<q<0.5,得到的稀疏解效果差不多;所以,q=0.5可以得到比q=1更好的稀疏解,具体可以去查下西交徐宗本院士的工作。这里我们仅介绍L1的情况。
通俗的说,loss函数目的是在训练集上最小化empirical risk error,但是当我们学习一个model,希望具备良好的泛化性能。因此,增加一个正则化项,用来平衡模型的structural risk 和 exmpirical risk。
【ISTA和FISTA】
ok, 回顾下我们要解决的是什么问题:
要解决这个问题,我们先要了解下什么是 soft thresholding:
其中S是问题P的最优解。博客写公式真的很麻烦,证明过程请参考下图:
好,现在的问题是,如何把L1正则化问题写成soft thresholding function:
求解的迭代过程可以写成:xk = soft(x k-1)
FISTA和ISTA的不同在于每次迭代中,approximate function的starting point不一样
上式具体的推导过程,请参考Appendix2
这样,我们就求解得到了稀疏解。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)