浅谈深度学习尝常识:泛化、过拟合、Dropout、Attention

     刚开始接触深度学习,难免有很多名词概念的陌生、不清晰;当然,如果要快速考核一个人的深度学习”深度“,尤其是在面试过程中,同行会问到,有没有出现过拟合呀?怎么解决呀?这些问题看起来很高深,或者需要很深厚的功底才能回答,但是只要整理好思路,还是很清晰的一条线索:不妨用这篇博客作为您学习的开端?但愿我恰能抛砖引玉:

概要:机器学习中的泛化:

    我们描述从训练数据学习目标函数的学习过程为归纳性的学习。

        归纳与特别的样本中学习到通用的概念有关,而这就是监督式机器学习致力于解决的问题。这与推演不同,其主要是另一种解决问题和寻求从通常的规则中找寻特别的内容。

 泛化即是,机器学习模型学习到的概念在它处于学习的过程中时模型没有遇见过的样本时候的表现。

也叫做广义化:例如:将“大雁”广义化(归类)之后是“鸟类”,将“鸟类”广义化(归类)之后是“动物”。

好的机器学习模型的模板目标是从问题领域内的训练数据到任意的数据上泛化性能良好。这让我们可以在未来对模型没有见过的数据进行预测

    在机器学习领域中,当我们讨论一个机器学习模型学习和泛化的好坏时,我们通常使用术语:过拟合欠拟合.

        过拟合和欠拟合是机器学习算法表现差的两大原因。

1、过拟合

       指的是referstoa模型对于训练数据拟合程度过当的情况。

       当某个模型过度的学习训练数据中的细节和噪音,以至于模型在新的数据上表现很差,我们称过拟合发生了。这意味着训练数据中的噪音或者随机波动也被当做概念被模型学习了。

  过拟合更可能在无参数非线性模型中发生,因为学习目标函数的过程是易变的具有弹性的。

 2、欠拟合

       指的是模型在训练和预测时表现都不好的情况。

一个欠拟合的机器学习模型不是一个良好的模型并且由于在训练数据上表现不好这是显然的。

欠拟合通常不被讨论,因为给定一个评估模型表现的指标的情况下,欠拟合很容易被发现。矫正方法是继续学习并且试着更换机器学习算法。虽然如此,欠拟合与过拟合形成了鲜明的对照。

 3、正确拟合:

        为了理解这个目标,我们可以观察正在学习训练数据机器学习算法的表现。我们可以把这个过程划分为分别是训练过程和测试过程

4、小结拟合过程:

         随着时间进行,算法不断地学习,模型在训练数据和测试数据上的错误都在不断下降。但是,如果我们学习的时间过长的话,模型在训练数据上的表现将继续下降,这是因为模型已经过拟合并且学习到了训练数据中的不恰当的细节以及噪音。同时,测试数据集上的错误率开始上升,也即是模型的泛化能力在下降。

这个完美的临界点就处于测试集上的错误率开始上升时,此时模型在训练集和测试集上都有良好的表现

通常有两种手段可以帮助你找到这个完美的临界点:重采样方法和验证集方法


重点:过拟合的解决办法:

1.使用重采样来评价模型效能

   k折交叉验证:最流行的重采样技术指的是在训练数据的子集上训练和测试模型k次,同时建立对于机器学习模型在未知数据上表现的评估。

2.保留一个验证数据集

验证集只是训练数据的子集,你把它保留到你进行机器学习算法的最后才使用。在训练数据上选择和调谐机器学习算法之后,我们在验证集上在对于模型进行评估,以便得到一些关于模型在未知数据上的表现的认知。

对于机器学习,使用交叉验证在未知数据上进行验证模型效能是一种良好的标准。如果你拥有数据,使用验证集也是一种良好的实践。

 3. 浅谈dropout--防止过拟合的方法

   正则化方法是通过修改损失函数来提高过拟合能力的,而dropout是通过改变网络的结构来提高的,这是和正则化方法最本质的区别。

   drop是指依一定的概率来临时的删除某些节点,但是他的权值会得到保留,因为在下次的工作时,他又可能被激活。

   Dropout是使用在监督学习中,他的核心思想是在训练中随机的删掉节点以及他们之间所属的关系。训练是删掉一些从thinnet中的指数数值,测试时减少过拟合促进测试的进行

输入是x输出是y,正常的流程是:我们首先把x通过网络前向传播然后后把误差反向传播以决定 如何更新参数让网络进行学习。使用dropout之后过程变成:

1. 首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(下图中虚线为部分临时被删除的神经元)

 

2. 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后就按照随机梯度下降法更新(没有被删除的神经元)对应的参数(w,b)。

3. 然后继续重复这一过程:

恢复被删掉的神经元(此时 被删除的神经元 保持原样,而没有被删除的神经元已经有所更新)

        从隐藏神经元( 在多级前馈网当中,隐藏层的定义是:除输入层和输出层以外的其他各层叫做隐藏层.隐藏层不直接接受外界的信号,也不直接向外界发送信号隐藏层的神经元中随机选择一个一半大小的子集 临时删除掉(备份被删除神经元的参数)。

对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)

不断重复这一过程。

取平均的作用: 先回到正常的模型(没有dropout),我们用相同的训练数据去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用 “5个结果取均值”或者“多数取胜的投票策略”去决定最终结果。(例如 3个网络判断结果为数字9,那么很有可能真正的结果就是数字9,其它两个网络给出了错误结果)。这种“综合起来取平均”的策略通常可以有效防止过拟合问题。因为不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。dropout掉不同的隐藏神经元就类似在训练不同的网络(随机删掉一半隐藏神经元导致网络结构已经不同),整个dropout过程就相当于 对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。

    减少神经元之间复杂的共适应关系: 因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。(这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况)。 迫使网络去学习更加鲁棒的特征 (这些特征在其它的神经元的随机子集中也存在)。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的模式(鲁棒性)。

  (这个角度看 dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高)

   开拓思路:Dropout的作用类似于性别在生物进化中的作用,产生出新的可能来更好的繁衍!!!

尾声:Attention:


在引入Attention(注意力)之前,图像识别或语言翻译都是直接把完整的图像或语句直接塞到一个输入,然后给出输出。
   而且图像还经常缩放成固定大小,引起信息丢失。
   而人在看东西的时候,目光沿感兴趣的地方移动,甚至仔细盯着部分细节看,然后再得到结论。
Attention就是在网络中加入关注区域的移动、缩放机制,连续部分信息的序列化输入。
   关注区域的移动、缩放采用强化学习来实现。

Attention在图像领域中,物体识别、主题生成上效果都有提高。

Attention可以分成hard与soft两种模型:

· hard: Attention每次移动到一个固定大小的区域

· soft: Attention每次是所有区域的一个加权和。



猜你喜欢

转载自blog.csdn.net/Errors_In_Life/article/details/70249256