一、机器学习范式


1、按数据类型划分(带标签与否)

这是从样本的数据进行划分,现实中大部分属于半监督学习,并且大部分数据是没分类好的。


监督学习:


例子:

分类

e.g.文本分类垃圾邮件过滤搜索结果

回归分析

e.g.房价预测股价预测

序列标注

e.g.词性标注

输入:“我中了一张彩票”

输出:“我/r/v/y//m//q/彩票/n

无监督学习:


例子:

聚类

e.g.热点话题发现社团发现

密度函数估计(probabilitydensityestimation)

e.g.pdf估计

异常点检测(outlierdetection)

e.g.one-classSVM,去噪

半监督学习:


核心思想

考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题

例子:

分类

e.g.垃圾邮件过滤,半监督SVM

回归分析

聚类

e.g.GMM

2、按学习过程划分

主动学习、转导学习、强化学习

主动学习(ActiveLearning)

有少量标注的数据以及丰富的未标注数据,标注数据的成本很高,学习算法主动提出一些标注请求,将筛选过的数据交给专家进行标注,然后将标注的数据加入到训练集中,再进行训练。

核心问题:怎么样筛选数据才能使得请求标注的次数尽量少而最终的结果又尽量好

与半监督学习的区别:半监督学习算法不需要人工干预,基于自身对未标记数据加以利用,微博的用户推荐用户就是充当专家的角色。

问题可形式化为:


转导学习(TransductiveLearning)

一种通过观察特定的训练样本,进而预测特定的测试样本的方法在不同的测试集上会产生相互不一致的预测

特点:

1.建立一个更适用于问题域的模型,而非一个更通用的模型

2.利用无标注的测试样本的信息发现聚簇,进而更有效地分类

3.模型近似


与半监督学习的区别:半监督学习不知道测试案例是什么,转导学习知道测试案例是什么

半监督学习本质上是从特殊到一般(train),一般到特殊(predict)的推理方法

转导学习本质上是直接从特殊到特殊的推理方法,自动修正模型。

强化学习(ReinforcementLearning)

从环境状态到行为映射的学习,以使系统行为从环境中获得的累积奖赏值最大。该方法不同与监督学习技术那样通过正例、反例来告知采取何种行为,而是通过试错(trial-and-error)的方法来发现最优行为策略


适用情况:适用于序列决策或者控制问题,很难有这么规则的样本。

e.g.象棋AI程序

解决思路:我们设计一个回报函数(rewardfunction),如果learningagent(象棋AI程序)在决定一步后,获得了较好的结果,那么我们给agent一些回报(比如回报函数结果为正),得到较差的结果,那么回报函数为负。如果我们能够对每一步进行评价,得到相应的回报函数,那么就好办了,我们只需要找到一条回报值最大的路径(每步的回报之和最大),就认为是最佳的路径。

备注:一个强化学习的比赛http://ijcai-15.org/index.php/angry-birds-competition

二、正则化


1、模型选择:


a.若采用多项式拟合


欠拟合(underfit,alsohighbias)

特征集过小,模型过于简单,会导致训练集的误差明显增大的现象。


过拟合(overfit,alsohighvariance)

非常多的特征,那么所学的Hypothesis有可能对训练集拟合的非常好,但是对测试集效果很差,即训练误差少,测试集误差大。


b.避免过拟合的方法——约束高阶多项式的系数

以下是不同阶数的多项式相对应的系数


定义损失函数:


绿色曲线为最佳拟合,红色曲线为实际拟合结果。

罚项系数选择

1.交叉验证

2.超参数学习,解决最优化问题

2、模型选择策略


a.代价函数(Costfunction)

b.风险函数或期望风险(riskfunction)

① 定义为损失函数的期望

② 理论上模型f(x)关于联合分布P(X,Y)的平均意义下的损失


① 学习的本质目标是选择期望风险最小的模型,由于联合分布P(X,Y)是未知的,风险函数Rexp(f)不能直接计算。

c.经验风险(empiricalriskminimizatiion,ERM)

①模型f(x)关于训练数据集的平均损失称为经验风险,对期望风险的近似


其实,最大似然估计等价于最小化经验风险。

②经验风险最小化(ERM)的策略认为,经验风险最小的模型是最优模型

③当样本容量是够大时,经验风险最小化能保证有很好的学习效果,在现实中被广泛应用

④当样本容量很小时,经验风险最小化学习的效果就未必很好,会产生“过拟合(over-fitting)”现象,如多项式阶数很大,出现过拟合。

d.结构风险(structuralriskminimization,SRM)

①在经验风险上加上表示模型复杂度的正则化项或罚项

②防止过拟合


其中J(f)为模型的复杂度,是定义在假设空间F上的泛函数。

模型f越复杂,复杂度J(f)就越大;反之,模型f越简单,复杂度J(f)就越小

③决定了用以权衡经验风险和模型复杂度

④结构风险小需要经验风险与模型复杂度同时小,结构风险小的模型往往对训练数据以及未知的测试数据都有较好的预测,正则化的本质是控制模型的复杂度。

3、贝叶斯公式



贝叶斯公式反映人们推理的方式,即人做实验时,先需要作出一定的假设(利用先验知识),在假设的指导上去做实验,得到观察数据,最后利用实验数据修正对假设的理解,也就得到后验分布。


最小二乘问题的最大后验估计(MAP)


最大后验估计等价于最小化正则化的平方损失函数,最大后验估计等价于最小化结构风险。

代价函数可改成:


回顾下不加正则化的正规方程


加正则化的正规方程,相当于对矩阵所有特征值同时加了,新矩阵基本上是可逆的(除非原矩阵存在负的特征值),即新的特征方程有唯一解。因而利用贝叶斯的正则化是分类算法中常用的方法。

【machine learning】regularization的更多相关文章

  1. 正则化DropPath/drop_path用法示例(Python实现)

    DropPath 类似于Dropout,不同的是 Drop将深度学习模型中的多分支结构随机"失效",而Dropout是对神经元随机"失效"这篇文章主要给大家介绍了关于正则化DropPath/drop_path用法的相关资料,需要的朋友可以参考下

  2. 如何用JavaScript学习算法复杂度

    这篇文章主要介绍了如何用JavaScript学习算法复杂度,对算法感兴趣的同学,一定要看一下

  3. Java如何分析算法的时间和空间复杂度

    这篇文章主要介绍了Java如何分析算法的时间和空间复杂度,在计算机科学中,计算复杂性解释了算法的性能。文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

  4. JavaScript时间复杂度和空间复杂度

    这篇文章主要介绍了JavaScript时间复杂度和空间复杂度,时间复杂度和空间复杂度是衡量一个算法是否优秀的标准,通常我们比较两个算法时会用预先估算和事后统计,下文详细介绍,需要的朋友可以参考一下

  5. 机器学习 – 为什么需要在机器学习问题中使用正则化?

    为什么在这种情况下我们更喜欢较小的重量?

  6. 正则化方法:L1和L2 regularization、数据集扩增、dropout

    有一个概念需要先说明,在机器学习算法中,我们常常将原始数据集分为三部分:trainingdata、validationdata,testingdata。因此,trainingdata的作用是计算梯度更新权重,validationdata如上所述,testingdata则给出一个accuracy以判断网络的好坏。避免过拟合的方法有很多:earlystopping、数据集扩增、正则化包括L1、L2,dropout。L1regularization在原始的代价函数后面加上一个L1正则化项,即所有权重w的绝对值的

  7. 机器学习 – TensorFlow – L2丢失的正则化,如何应用于所有权重,而不仅仅是最后一个?

    我有一个任务,涉及到使用L2丢失的一个隐藏的ReLU层向网络引入泛化。我不知道如何正确引入它,以便所有权重都受到惩罚,不仅仅是输出层的权重。代码网络没有泛化是在底部的帖子。引入L2的明显方法是用这样的代替损失计算:但在这种情况下,它将考虑到输出层权重的值。是否需要或引入惩罚的输出层将以某种方式保持隐藏的权重也在检查?hidden_weights,hidden_biases,out_weights和out_biases都是您正在创建的模型参数。您可以按如下所示对所有这些参数添加L2正则化:

  8. 正则化方法:防止过拟合,提高泛化能力

    λ就是正则项系数,权衡正则项与C0项的比重。当然考虑到后面的导数项,w最终的值可能增大也可能减小。而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。

  9. 机器学习 – TensorFlow – 将L2正则化和退出引入网络.有什么意义吗?

    如果是这样,怎么办?任何关于此事的参考将是有用的,我还没有找到任何信息.为了防止你有兴趣,我的代码为ANN与L2正则化在下面:好的,经过一些额外的努力,我设法解决它,并将L2和辍学引入我的网络,代码如下.在同一个网络中,我没有辍学略有改善.我仍然不确定是否真的很值得介绍他们两个,L2和辍学的努力,但至少它的作品,并略微提高了结果.

  10. 吴恩达机器学习 - 逻辑回归的正则化

    题目链接:点击打开链接先贴笔记代码:costFunction.m:然后展示下不同λ画出的不同图案

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部