过拟合、欠拟合及其解决方案 & 梯度消失、梯度爆炸 & 循环神经网络进阶

目录

一过拟合、欠拟合及其解决方案

1.1 欠拟合与过拟合

1.2 过拟合解决方案

1.3 欠拟合解决方案

二 影响模型效果的因素

2.1 梯度消失&梯度爆炸

概念

梯度消失解决方法

梯度爆炸解决方法

2.2 环境因素

协变量偏移

标签偏移

概念偏移

三 循环神经网络进阶

3.1 循环神经网络的主要结构

3.2 问答时间


一过拟合、欠拟合及其解决方案

1.1 欠拟合与过拟合

我们一般把数据集划分为训练集(计算训练误差)、验证集(用于近似泛化误差)、测试集

欠拟合:训练误差无法到达一个较低的水平

过拟合:训练集上的损失不断下降,验证集上的损失却不断变大。

1.2 过拟合解决方案

曾看到过一个很形象的关于过拟合的比喻,现默写如下:

机器学习好比是开车,过拟合好比是发生车祸,下面来看一下导致过拟合的原因:

发生车祸(过拟合) = 车速太快(模型复杂度太高,拟合能力太强) + 路不平坦,有障碍物(数据中有noise) + 司机对路况所知有限(样本量太少)

那知道了车祸原因,哦不对,是过拟合原因,自然对症下药就能解决过拟合了,方法如下:

  • 从简单的模型开始(老哥,慢点开车~)

如何计算一个模型的复杂度?用d_{vc}(VC维)。详细的就不推导啦,一般情况下,d_{vc}约等于自由的参数的数量,所谓的自由的参数数量,举个例子,如果参数1和参数2的和为1,那么这两个参数中就只有1个参数是自由的,一旦一个参数确定了,另外一个参数的值也就确定了。

如果有足够多的数据的话,模型太复杂也不是一个大问题,经验表明,数据量N约为d_{vc}的10倍时就足够了。

  • Validation(相当于车的仪表盘)

Validation指的是验证集,我们常用验证集来决定哪个模型好,验证集的选取可是有很多技巧的,一个基本的原则就是“match test scenario as much as possible”. 也就是说让训练环境和测试环境尽可能的一样,具体操作就是让验证集和测试集尽可能是同分布的。

  • 正则化(目的:防止过拟合)

① L2正则/L1正则/weight-elimination(scaled L2)

待更新

② Dropout

待更新……

③ early stopping(任意基于梯度下降的方法都可以用)

待更新

④ 加约束条件

待更新

1.3 欠拟合解决方案

非常好解决,使用更复杂的模型就好了~

二 影响模型效果的因素

2.1 梯度消失&梯度爆炸

  • 概念

当神经网络的层数较多时,模型的数值稳定性容易变差。原因就是一个小于1的数的连乘会变的很小,大于1的数的连乘会变得很大。

  • 梯度消失解决方法

梯度消失的危害是导致模型训练困难,对参数的优化步长过小,收效甚微,模型收敛十分缓慢。

  • relu、leakrelu、elu等激活函数

避免使用sigmoid、tanh作为激活函数。

要使用Relu等激活函数。

  • batchnorm
  • 残差网络

待更新

  • 梯度爆炸解决方法

梯度爆炸的危害是导致模型训练困难,对参数的优化步长过大,难以收敛。

梯度爆炸的实验表现是出现nan。常用的方法如下:

  • 梯度裁剪(gradient clip)
  • 权重正则化(weithts regularization)比较常见的是L1正则和L2正则
  • relu、leakrelu、elu等激活函数。
  • batchnorm

待更新

2.2 环境因素

在统计学中,变量分为因变量,自变量,协变量,因变量被称为被解释变量,自变量和协变量都是解释变量,都会对因变量产生影响,这时候我们想要研究一个或几个变量对因变量的影响,那这些被研究的变量就被称为自变量,剩余的不在研究范围内但会对因变量产生影响的变量称为协变量,一般会采取一些技术加以控制。

要想解决环境因素的影响,就是想方设法使得训练环境与测试环境尽量匹配,这样才能满足机器学习的一个假设“数据要独立同分布”。

  • 协变量偏移

p(x,y) = p(x)\times p(y|x)

在ML中,研究的是条件概率P(y|x),y是因变量,x是自变量,这里有个隐含的条件就是x来自某一分布p(x),如果p(x)变化了,P(y|x)也可能变的不同,所以协变量就是p(x)。

协变量偏移指的是训练集和测试集的p(x)不是同分布的

比如训练集用自然界的猫做图像识别,测试集中却是卡通猫;

再比如训练集是10月10日之前用户对电影评分,测试集是10月10之后用户对电影的评分,随着时间的变化,其实用户对电影的喜好(协变量)是发生变化,比如1月份喜欢恐怖片,10月份就开始看偶像剧了(身边真实例子=-=),这就是协变量偏移。

  • 标签偏移

标签偏移可以简单理解为测试时出现了训练时没有的标签。

协变量偏移和标签偏移可能同时发生。

  • 概念偏移

标签本身的定义发生变化,比如软饮料,在美国的不同地域可能会有coke、pop、soda等不同表达,如果要构建一个翻译系统,P(y|x)会因地理位置不同而异。

好消息是概念偏移有缓慢变化的特点,可以根据此特点缓解概念偏移问题。

三 循环神经网络进阶

3.1 循环神经网络的主要结构

  • GRU
  • LSTM
  • 多层RNN(又名深度循环神经网络)
  • 双向RNN

RNN结构解读一文中有以上结构的核心源码解读,看一遍源码就会对各个结构更加了解了~

3.2 问答时间

1  LSTM是如何缓解普通RNN中的梯度消失和梯度爆炸问题的?

发布了34 篇原创文章 · 获赞 20 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/G_B_L/article/details/104317056