IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 常见问题总结[1] -> 正文阅读

[人工智能]常见问题总结[1]

目录

模型评估方法

Accuracy作为指标有哪些局限性?

ROC曲线是什么?

PR曲线是什么?

AUC指标有什么特点?放缩结果对AUC是否有影响(无)??

编程实现AUC的计算,并指出复杂度?

余弦距离与欧式距离有什么特点?

基本方法

如何划分训练集?如何选取验证集?

什么是偏差和方差?

什么是过拟合?

深度学习解决过拟合的方法有哪些?解决过拟合问题?

解决欠拟合的方法有哪些?https://zhuanlan.zhihu.com/p/97326991

深度模型参数调整的一般方法论?

优化方法

简述了解的优化器,发展综述?

常用的损失函数有哪些?分别适用于什么场景?

梯度下降与拟牛顿法的异同?

L1和L2正则分别有什么特点?为何L1稀疏?

https://www.zhihu.com/question/26485586


模型评估方法

Accuracy作为指标有哪些局限性?

  • 分类准确率是指分类正确的样本占总样本个数的比例,即Accuracy = \frac{n_{correct}}{n_{total}},意义为:被正确分类的样本个数占总体样本个数的比率。

  • 准确率是分类问题中最简单最直观的评价指标,但存在明显的缺陷。比如负样本占99%时,分类器把所以样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素,此时准确率指标并不足以说明分类器的好坏。

  • 对于此种问题,可以使用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。

ROC曲线是什么?

????????ROC(Receiver Operating Characteristic,接受者工作特征曲线)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣(可信度)。在这个ROC曲线的示例图中看到的那样,ROC曲线的横坐标为false positive rate(FPR,假阳性率),纵坐标为true positive rate(TPR,真阳性率)(也就是recall)。

?考虑ROC曲线图中的四个点和一条线。

  • 第一个点,(0,1),即FPR=0, TPR=1,这意味着FN(false negative)=0,并且FP(false positive)=0。这是一个完美的分类器,它将所有的样本都正确分类。
  • 第二个点,(1,0),即FPR=1,TPR=0,这是一个最糟糕的分类器,避开了所有的正确答案。
  • 第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,可以发现该分类器预测所有的样本都为负样本(negative)。
  • 第四个点(1,1),分类器实际上预测所有的样本都为正样本。
  • 经过以上的分析,可以断言,ROC曲线越接近左上角,该分类器的性能越好。
  • ROC曲线图中的虚线y=x上的点。这条对角线上的点其实表示的是一个采用随机猜测策略的分类器的结果(FP = TN, TP = FN,这样FP+TP = TN + FN,即Y = N,也就是随机猜测了),例如(0.5,0.5),表示该分类器随机对于一半的样本猜测其为正样本,另外一半的样本为负样本。

通过调整模型预测的阈值可以得到不同的点,将这些点可以连成一条曲线,这条曲线叫做接受者工作特征曲线(Receiver Operating Characteristic Curve,简称ROC曲线)。对于一个特定的分类器和测试数据集,显然只能得到一个分类结果,即一组FPR和TPR结果,而要得到一个曲线,需要一系列FPR和TPR的值,这又是如何得到的呢?

Wikipedia:

In signal detection theory, a receiver operating characteristic (ROC), or simply ROC curve, is a graphical plot which illustrates the performance of a binary classifier system as its discrimination threshold is varied.

分类器的一个重要功能“概率输出”,即表示分类器认为某个样本具有多大的概率属于正样本(或负样本)。通过更深入地了解各个分类器的内部机理,我们总能想办法得到一种概率输出。通常来说,是将一个实数范围通过某个变换映射到(0,1)区间3

????????ROC曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点的。在二值分类问题中, 模型的输出一般都是预测样本为正例的概率。 假设测试集中多个样本, 经过分类器我们可以获得模型的输出结果,样本按照预测概率从高到低排序。 在输出最终的正例、 负例之前, 需要指定一个阈值, 预测概率大于该阈值的样本会被判为正例, 小于该阈值的样本则会被判为负例。 比如, 指定阈值为0.9, 那么只有大于、等于阈值的会被预测为正例, 其他全部都是负例。 上面所说的“截断点”指的就是区分正负预测结果的阈值。
????????通过动态地调整截断点, 从最高的得分开始(实际上是从正无穷开始, 对应着ROC曲线的零点) , 逐渐调整到最低得分, 每一个截断点都会对应一个FPR和TPR, 在ROC图上绘制出每个截断点对应的位置, 再连接所有点就得到最终的ROC曲线。当threshold取值越多,ROC曲线越平滑。

PR曲线是什么?

https://zhuanlan.zhihu.com/p/46714763

在这里插入图片描述

????????ROC曲线中,以FPR为x轴,TPR为y轴。FPR指实际负样本中被错误预测为正样本的概率。TPR指实际正样本中被预测正确的概率。
????????PR曲线中,以Recall(召回率)为x轴,Precision为y轴。Recall与TPR的意思相同,而Precision指正确分类的正样本数占总正样本的比例。

当处理一些高度不均衡的数据集时,PR曲线能表现出更多的信息,发现更多的问题。

????????相比P-R曲线, ROC曲线有一个特点, 当正负样本的分布发生变化时, ROC曲线的形状能够基本保持不变, 而P-R曲线的形状一般会发生较剧烈的变化。

????????可以看出, P-R曲线发生了明显的变化, 而ROC曲线形状基本不变。 这个特点让ROC曲线能够尽量降低不同测试集带来的干扰, 更加客观地衡量模型本身的性能。

???????? 在很多实际问题中, 正负样本数量往往很不均衡。 比如, 计算广告领域经常涉及转化率模型, 正样本的数量往往是负样本数量的1/1000甚至1/10000。 若选择不同的测试集, P-R曲线的变化就会非常大, 而ROC曲线则能够更加稳定地反映模型本身的好坏。 所以, ROC曲线的适用场景更多, 被广泛用于排序、 推荐、 广告等领域。

????????需要注意的是, 选择P-R曲线还是ROC曲线是因实际问题而异的, 如果希望更多地看到模型在特定数据集上的表现, P-R曲线则能够更直观地反映其性能。?

AUC指标有什么特点?放缩结果对AUC是否有影响(无)??

????????AUC是现在分类模型,特别是二分类模型使用的主要离线评测指标之一。相比于准确率、召回率、F1等指标,AUC有一个独特的优势,就是不关注具体得分,只关注排序结果,这使得它特别适用于排序问题的效果评估,例如推荐排序的评估。AUC这个指标有两种解释方法,一种是传统的“曲线下面积”解释,另一种是关于排序能力的解释。例如0.7的AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。可以看出在这个解释下,我们关心的只有正负样本之间的分数高低,而具体的分值则无关紧要。

????????AUC只关注模型预测得分的相对大小,非常适合排序业务,例如0.7的AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。可以看出在这个解释下,我们关心的只有正负样本之间的分数高低,而具体的分值则无关紧要。

????????AUC(Area Under Curve)被定义为ROC曲线下的面积, 该值能够量化地反映基于ROC曲线衡量出的模型性能。 计算AUC值只需要沿着ROC横轴做积分。由于ROC曲线一般都处于y=x这条直线的上方(如果不是的话, 只要把模型预测的概率反转成1-p就可以得到一个更好的分类器),所以AUC的取值一般在0.5~1之间。 AUC越大, 说明分类器越可能把真正的正样本排在前面, 分类性能越好。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

????????AUC代表随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。

AUC的值的含义是:?The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.

????????首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。

????????AUC值越大的分类器,正确率越高。

从AUC判断分类器(预测模型)优劣的标准:
????????AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。

????????0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

????????AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。

????????AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测,因此不存在AUC < 0.5的情况。????????

编程实现AUC的计算,并指出复杂度?

AUC的物理意义是任取一个正例和任取一个负例,正例排序在负例之前的概率。

https://blog.csdn.net/qq_22238533/article/details/78666436

https://blog.csdn.net/yinhui_zhang/article/details/96893330

https://blog.csdn.net/lieyingkub99/article/details/81266664

????????AUC的物理含义不仅是ROC曲线下的面积,另外一个物理含义就是:给定正样本M个,负样本N个,以及他们的预测概率(0-1)之间,那么AUC就是所有穷举所有的正负样本对,如果正样本的预测概率大于负样本的预测概率,那么就+1;如果如果正样本的预测概率等于负样本的预测概率,那么就+0.5, 如果正样本的预测概率小于负样本的预测概率,那么就+0;最后把统计处理的个数除以M×N就得到AUC,公式描述如下:

def AUC(label, pre):
  """
  适用于python3.0以上版本
   """
  #计算正样本和负样本的索引,以便索引出之后的概率值
    pos = [i for i in range(len(label)) if label[i] == 1]
    neg = [i for i in range(len(label)) if label[i] == 0]
 
    auc = 0
    for i in pos:
        for j in neg:
            if pre[i] > pre[j]:
                auc += 1
            elif pre[i] == pre[j]:
                auc += 0.5
 
    return auc / (len(pos)*len(neg))
 
 
if __name__ == '__main__':
    label = [1,0,0,0,1,0,1,0]
    pre = [0.9, 0.8, 0.3, 0.1, 0.4, 0.9, 0.66, 0.7]
    print(AUC(label, pre))
 
    from sklearn.metrics import roc_curve, auc
    fpr, tpr, th = roc_curve(label, pre , pos_label=1)
    print('sklearn', auc(fpr, tpr))

1,混淆矩阵:一个二分类的混淆矩阵(多分类同理,把不属于当前类的都认为是负例),表中的四个参数均用两个字母表示,第一个字母表示判断结果正确与否(正确用T(True),错误用F(False),第二个字母表示判定结果(正例用P(Positive),负例用N(Negative))。四个参数的具体意思如下:

TP (True Positive):表示实际为正例,判定也为正例的次数,即表示判定为正例且判定正确的次数。

FP (False Positive): 表示实际为负例,却判定为正例的次数,即表示判定为正例但判断错误的次数。

TN (True Negative):表示实际为负例,判定也为负例的次数,即表示判定为负例且判定正确的次数。

FN (False Negative): 表示实际为正例,却判定为负例的次数,即表示判定为负例但判断错误的次数。

以智能音箱中的语音唤醒(假设唤醒词为“芝麻开门”)来举例。这里正例就是唤醒词“芝麻开门”,负例就是除了“芝麻开门”之外的其他词,即非唤醒词,如“阿里巴巴”。设定评估时说唤醒词和非唤醒词各100次,TP就表示说了“芝麻开门”且被识别的次数(假设98次),FN就表示说了“芝麻开门”却没被识别(判定成负例)的次数(假设2次),FP就表示说了非唤醒词却被识别(判定成正例)的次数(假设1次),TN就表示说了非唤醒词且没被识别的次数(假设99次)。

2,accuracy / precision / recall

accuracy是准确率,表示判定正确的次数与所有判定次数的比例。判定正确的次数是(TP+TN),所有判定的次数是(TP + TN + FP +FN),所以

TP = 98,TN = 99,FP = 1, FN = 2, 所以accuracy = (98 + 99) / (98 + 99 + 1 + 2) = 98.5%,即准确率为 98.5%。

precision是精确率,表示正确判定为正例的次数与所有判定为正例的次数的比例。正确判定为正例的次数是TP,所有判定为正例的次数是(TP + FP),所以

TP = 98, FP = 1, 所以precision = 98 / (98 + 1) = 99%,即精确率为 99%。

recall是召回率,表示正确判定为正例的次数与所有实际为正例的次数的比例。正确判定为正例的次数是TP,所有实际为正例的次数是(TP + FN),所以

TP = 98, FN = 2, 所以recall = 98 / (98 + 2) = 98%,即召回率为 98%。

3,FAR / FRR

FAR (False Acceptance Rate)是错误接受率,也叫误识率,表示错误判定为正例的次数与所有实际为负例的次数的比例。错误判定为正例的次数是FP,所有实际为负例的次数是(FP + TN),所以

FP = 1, TN = 99, 所以FAR = 1 / (99 + 1) = 1%,即错误接受率为 1%。。

FRR (False Rejection Rate)是错误拒绝率,也叫拒识率,表示错误判定为负例的次数与所有实际为正例的次数的比例。错误判定为负例的次数是FN,所有实际为正例的次数是(TP + FN),所以

FN = 2, TP = 98, 所以FRR = 2/ (2 + 98) = 2%,即错误拒绝率为 2%。

4,ROC曲线 / EER

ROC(receiver operating characteristic curve)曲线是“受试者工作特征”曲线,是一种已经被广泛接受的系统评价指标,它反映了识别算法在不同阈值上,FRR(拒识率)和FAR(误识率)的平衡关系。ROC曲线中横坐标是FRR(拒识率),纵坐标是FAR(误识率),等错误率(EER Equal-Error Rate)是拒识率和误识率的一个平衡点,等错误率能够取到的值越低,表示算法的性能越好。


余弦距离与欧式距离有什么特点?

????????在模型训练过程中, 我们也在不断地评估着样本间的距离, 如何评估样本距离也是定义优化目标和训练方法的基础。
????????在机器学习问题中, 通常将特征表示为向量的形式, 所以在分析两个特征向量之间的相似性时, 常使用余弦相似度来表示。 余弦相似度的取值范围是[-1,1],相同的两个向量之间的相似度为1。 如果希望得到类似于距离的表示, 将1减去余弦相似度即为余弦距离。 因此, 余弦距离的取值范围为[0,2], 相同的两个向量余弦距离为0。

????????对于两个向量A和B, 其余弦相似度定义为cos(A,B) = \frac{A*B}{\left \| A\right \|_2\left \| B\right \|_2} , 即两个向量夹角的余弦, 关注的是向量之间的角度关系, 并不关心它们的绝对大小, 其取值范围是[-1,1]。 当一对文本相似度的长度差距很大、 但内容相近时, 如果使用词频或词向量作为特征, 它们在特征空间中的的欧氏距离通常很大; 而如果使用余弦相似度的话, 它们之间的夹角可能很小, 因而相似度高。 此外, 在文本、 图像、视频等领域, 研究的对象的特征维度往往很高, 余弦相似度在高维情况下依然保持“相同时为1, 正交时为0, 相反时为-1”的性质, 而欧氏距离的数值则受维度的影响, 范围不固定, 并且含义也比较模糊。

????????欧氏距离体现数值上的绝对差异, 而余弦距离体现方向上的相对差异。 例如, 统计两部剧的用户观看行为, 用户A的观看向量为(0,1), 用户B为 (1,0); 此时二者的余弦距离很大, 而欧氏距离很小; 我们分析两个用户对于不同 视频的偏好, 更关注相对差异, 显然应当使用余弦距离。 而当我们分析用户活跃 度, 以登陆次数(单位: 次)和平均观看时长(单位: 分钟)作为特征时, 余弦距离会 认为(1,10)、 (10,100)两个用户距离很近; 但显然这两个用户活跃度是有着极大差异 的, 此时我们更关注数值绝对差异, 应当使用欧氏距离。

  • 距离的定义: 在一个集合中, 如果每一对元素均可唯一确定一个实数, 使得三条距离公理( 正定性, 对称性, 三角不等式) 成立, 则该实数可称为这对元素之间的距离。余弦距离满足正定性和对称性, 但是不满足三角不等式, 因此它并不是严格定义的距离。
  • 在机器学习领域, 被俗称为距离, 却不满足三条距离公理的不仅仅有余弦距离, 还有KL距离( Kullback-Leibler Divergence) , 也叫作相对熵, 它常用于计算两个分布之间的差异, 但不满足对称性和三角不等式。
  • 归一化后的向量的余弦距离和欧氏距离是等价的。

在这里插入图片描述

一、欧几里得距离(Euclidean Distance)
   欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。公式如下:
在这里插入图片描述
因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别

二、余弦距离
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。公式如下:
在这里插入图片描述

余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。
借助三维坐标系来看下欧氏距离和余弦距离的区别:
在这里插入图片描述
从上图可以看出,欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关;而余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置。如果保持A点位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦距离cosθ是保持不变的(因为夹角没有发生变化),而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦距离之间的不同之处。

欧氏距离和余弦距离各自有不同的计算方式和衡量特征,因此它们适用于不同的数据分析模型:
欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异。

余弦距离更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦距离对绝对数值不敏感)。

注:在CNNs中,对特征向量进行L2范数归一化后,欧式距离和余弦距离可以等价。
参考《stack-exchange, is-cosine-similarity-identical-to-l2-normalized-euclidean-distance》
cosine similarity is identical to l2-normalized euclidean distance someway.
在这里插入图片描述
从上式中可以看出, 夹角越大, 欧氏距离的平方就越大。


基本方法

如何划分训练集?如何选取验证集?

■ Holdout检验
Holdout 检验是最简单也是最直接的验证方法, 它将原始的样本集合随机划分成训练集和验证集两部分。 比方说, 对于一个点击率预测模型, 我们把样本按照70%~30% 的比例分成两部分, 70% 的样本用于模型训练; 30% 的样本用于模型验证, 包括绘制ROC曲线、 计算精确率和召回率等指标来评估模型性能。
Holdout 检验的缺点很明显, 即在验证集上计算出来的最后评估指标与原始分组有很大关系。 为了消除随机性, 研究者们引入了“交叉检验”的思想。
■ 交叉检验
k-fold交叉验证: 首先将全部样本划分成k个大小相等的样本子集; 依次遍历这k个子集, 每次把当前子集作为验证集, 其余所有子集作为训练集, 进行模型的训练和评估; 最后把k次评估指标的平均值作为最终的评估指标。 在实际实验中, k经常取10。
留一验证: 每次留下1个样本作为验证集, 其余所有样本作为测试集。 样本总数为n, 依次对n个样本进行遍历, 进行n次验证, 再将评估指标求平均值得到最终的评估指标。 在样本总数较多的情况下, 留一验证法的时间开销极大。 事实上,
留一验证是留p验证的特例。 留p验证是每次留下p个样本作为验证集, 而从n个元素中选择p个元素有 种可能, 因此它的时间开销更是远远高于留一验证, 故而很少在实际工程中被应用。
■ 自助法
不管是Holdout检验还是交叉检验, 都是基于划分训练集和测试集的方法进行模型评估的。 然而, 当样本规模比较小时, 将样本集进行划分会让训练集进一步减小, 这可能会影响模型训练效果。 有没有能维持训练集样本规模的验证方法呢? 自助法可以比较好地解决这个问题。
自助法是基于自助采样法的检验方法。 对于总数为n的样本集合, 进行n次有放回的随机抽样, 得到大小为n的训练集。 n次采样过程中, 有的样本会被重复采样, 有的样本没有被抽出过, 将这些没有被抽出的样本作为验证集, 进行模型验证, 这就是自助法的验证过程。

什么是偏差和方差?

  • 偏差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的平均值和真实模型输出之间的偏差。 偏差通常是由于我们对学习算法做了错误的假设所导致的, 比如真实模型是某个二次函数, 但我们假设模型是一次函数。由偏差带来的误差通常在训练误差上就能体现出来。
  • 方差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的方差。 方差通常是由于模型的复杂度相对于训练样本数m过高导致的, 比如一共有100个训练样本, 而我们假设模型是阶数不大于200的多项式函数。 由方差带来的误差通常体现在测试误差相对于训练误差的增量上。
  • 基分类器的错误率要大于集成分类器。 基分类器的错误, 是偏差和方差两种错误之和。偏差主要是由于分类器的表达能力有限导致的系统性错误, 表现在训练误差不收敛。 方差是由于分类器对于样本分布过于敏感, 导致在训练样本数较少时, 产生过拟合。
  • Boosting方法是通过逐步聚焦于基分类器分错的样本, 减小集成分类器的偏差。 Bagging方法则是采取分而治之的策略, 通过对训练样本多次采样, 并分别训练出多个不同模型, 然后做综合, 来减小集成分类器的方差。 假设所有基分类器出错的概率是独立的, 在某个测试样本上, 用简单多数投票方法来集成结果, 超过半数基分类器出错的概率会随着基分类器的数量增加而下降。

什么是过拟合?

  • 过拟合(over-fitting):指学习时选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测的很好,但对于未知数据预测得很差的现象。一味的追求提高对训练数据的预测能力,所选模型的复杂度会越来越高。—— 模型选择旨在避免过拟合并提高模型的预测能力。
  • 过拟合是指模型对于训练数据拟合呈过当的情况, 反映到评估指标上, 就是模型在训练集上的表现很好, 但在测试集和新数据上的表现较差。 欠拟合指的是模型在训练和预测时表现都不好的情况。?可以看出, (a)是欠拟合的情况, 拟合的黄线没有很好地捕捉到数据的特征, 不能够很好地拟合数据。 (c) 则是过拟合的情况, 模型过于复杂, 把噪声数据的特征也学习到模型中, 导致模型泛化能力下降, 在后期应用过程中很容易输出错误的预测结果。

  • 降低“过拟合”风险 —— 正则化、dropout、early stop、增加训练数据
    • 从数据下手,获取更多的训练数据。使用更多的训练数据是解决过拟合问题最有效的手段。更多的样本能够让模型学习到更多有效的特征,减少噪声的影响。——?直接增加实验数据一般是很困难的, 但是可以通过一定的规则来扩充训练数据。 比如, 在图像分类的问题上, 可以通过图像的平移、 旋转、缩放等方式扩充数据; 更进一步地, 可以使用生成式对抗网络来合成大量的新训练数据(模型崩溃等问题)
    • 降低模型的复杂度。在数据较少时,模型过于复杂是产生过拟合的主要原因,适当降低模型复杂度可以避免模型拟合过多的采样噪声。——?在神经网络模型中减少网络层数、 神经元个数等; 在决策树模型中降低树的深度、 进行剪枝等。
    • 正则化方法(L1/L2正则化)。给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中以L2正则化为例:这样, 在优化原来的目标函数C0的同时, 也能避免权值过大带来的过拟合风险。
    • 集成学习方法。 集成学习是把多个模型集成在一起, 来降低单一模型的过拟合风险, 如Bagging方法。
  • 降低“欠拟合”风险
    • 添加新特征。当特征不足或现有特征与样本标签的相关性不强时,模型容易出现欠拟合。
    • 增加模型的复杂度。简单模型的学习能力较差, 通过增加模型的复杂度可以使模型拥有更强的拟合能力。 例如, 在线性模型中添加高次项, 在神经网络模型中增加网络层数或神经元个数等。
    • 减小正则化系数。 正则化是用来防止过拟合的, 但当模型出现欠拟合现象时, 则需要有针对性地减小正则化系数。

深度学习解决过拟合的方法有哪些?解决过拟合问题?

(1)Early Stopping

??对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
??Early stopping方法的具体做法是:在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。这种做法很符合直观感受,因为accurary都不再提高了,在继续训练也是无益的,只会提高训练的时间。那么该做法的一个重点便是怎样才认为validation accurary不再提高了呢?并不是说validation accuracy一降下来便认为不再提高了,因为可能经过这个Epoch后,accuracy降低了,但是随后的Epoch又让accuracy又上去了,所以不能根据一两次的连续降低就判断不再提高。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……

(2)数据集扩增 —— “有时候往往拥有更多的数据胜过一个好的模型”

??在使用训练数据训练模型,通过这个模型对将来的数据进行拟合,而在这之间又一个假设便是,训练数据与将来的数据是独立同分布的。即使用当前的训练数据来对将来的数据进行估计与模拟,而更多的数据往往估计与模拟地更准确。因此,更多的数据有时候更优秀。但是往往条件有限,而不能收集到更多的数据,如在进行分类的任务中,需要对数据进行打标,并且很多情况下都是人工进行打标,因此一旦需要打标的数据量过多,就会导致效率低下以及可能出错的情况。所以,需要采取一些计算的方式与策略在已有的数据集上进行手脚,以得到更多的数据。
??通俗得讲,数据机扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:从数据源头采集更多数据、复制原有数据并加上随机噪声、重采样、根据当前数据集估计数据分布参数,使用该分布产生更多数据等。

(3)正则化方法 —— 奥卡姆剃刀“如无必要,勿增实体”,简单有效原理——在预测力不减的同时,使用简单的模型去替代原有复杂的模型。

??正则化方法是指在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。https://www.cnblogs.com/tsruixi/p/10693101.html

(4)Dropout——使用dropout层来防止过拟合。

????????将输入的tensor中的每个元素按照一定的概率置为0,如果不置为0,则按照一定的比例进行缩放,目的是为了保证和不变;keep_prob=0.2表示将80%的元素置为0,剩下的20% 元素除以0.2;

(5)BatchNormalize防止过拟合。

????????对输入的一批样本按照维度进行归一化,归一化之后的数据往往分布在坐标轴的原点附近,拟合得到的参数会比较小,所以可以防止过拟合;

(6)LayerNormalize防止过拟合

????????与batchNormalize类似,同样是对数据进行归一化,只不过是按照行的维度进行归一化。

(7)降低学习率,减少迭代次数等防止过拟合。

解决欠拟合的方法有哪些?https://zhuanlan.zhihu.com/p/97326991

  • 添加其他特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致模型欠拟合。
  • 添加多项式特征。例如将线性模型添加二次项或三次项使模型泛化能力更强。例如,FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。
  • 可以增加模型的复杂程度。
  • 减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

深度模型参数调整的一般方法论?

优化方法

简述了解的优化器,发展综述?

https://blog.csdn.net/weixin_40170902/article/details/80092628

常用的损失函数有哪些?分别适用于什么场景?

https://mp.weixin.qq.com/s?__biz=MzI2Nzg4NjA5OQ==&mid=2247501559&idx=1&sn=16bcb51511ae048d0f3703629aba48f0&chksm=eafa8d8bdd8d049d9b836abeb2c60a335c1d3925b3f944b09c8a514395ad2f420fa0efad3d1f&scene=132#wechat_redirect

https://zhuanlan.zhihu.com/p/58883095

梯度下降与拟牛顿法的异同?

https://zhuanlan.zhihu.com/p/37524275

https://www.cnblogs.com/lyr2015/p/9010532.html
梯度下降法是一阶优化算法,牛顿法是二阶优化算法
牛顿法的收敛速度相比梯度下降法常常较快
牛顿法每次需要更新一个二维矩阵,计算代价很大,实际使用中常使用拟牛顿法
牛顿法对初始值有一定要求,在非凸优化问题中(如神经网络训练),牛顿法很容易陷入鞍点(牛顿法步长会越来越小),而梯度下降法则很容易逃离鞍点(因此在神经网络训练中一般使用梯度下降法,高维空间的神经网络中存在大量鞍点)
梯度下降法在靠近最优点时会震荡,因此步长调整在梯度下降法中是必要的,具体有adagrad, adadelta, rmsprop, adam等一系列自适应学习率的方法

1.牛顿法:是通过求解目标函数的一阶导数为0时的参数,进而求出目标函数最小值时的参数。

       收敛速度很快。

       海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果。

       缺点:海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法。

  2.梯度下降法:是通过梯度方向和步长,直接求解目标函数的最小值时的参数。

         越接近最优值时,步长应该不断减小,否则会在最优值附近来回震荡。

L1和L2正则分别有什么特点?为何L1稀疏?

https://www.zhihu.com/question/26485586

https://blog.csdn.net/zouxy09/article/details/24971995

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:37:50  更:2021-08-06 09:38:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 14:02:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码