学习笔记:Deep Learning二深度神经网络以及正则化

深度神经网络以及正则化

前面我们介绍了简单的线性模型,但是它仍有局限性,接下来介绍非线性模型。首先介绍,偷懒的工程师最喜欢的非线性模型ReLU(Rectified Linear Units)

ReLU

ReLU的函数形式为:

f(x)=max(0,x)

它的导数也非常简单,小于0的时候,导数为0,大于0的时候,导数为1。

用ReLU在前面的逻辑分类器的基础上构建简单的非线性模型:

  • 第一层由一组X的权重和偏差组成并通过ReLU函数激活。这一层的输出会提供给下一层,但是在神经网络外部不可见,因此称为隐藏层。
  • 第二层由隐藏层的权重和偏差组成,隐藏层的输入即为第一层的输出,然后由softmax函数生成概率。
  • H对应的是分类器中ReLU的个数,H越大,网络越复杂。

2-layer的神经网络只有乘法、加法和ReLU操作,深度学习可以实现这些操作,实现的关键就是:链式法则

链式法则

链式法则就是将上一层的输出作为下一层的输入,这种方法求导很方便。

例如:

[g(f(x))]=g(f(x))f(x)

在计算链式法则的倒数的时候,用到的正是反向传播方法。如图:

第一行方框是前向传播,根据输入X计算得到的预测值y。

第二行方框是后向传播,计算偏导数,数据流动方向正好相反。

梯度下降算法也是集成了链式法则来计算梯度,通过后向传播,得到参数w的更新。

正则化

当数据量足够大,模型训练得很好的时候,就要防止过拟合。通常避免过拟合的方法有:

方法一:观察

通过观察模型在验证集上的表现,当出现过拟合的时候停止训练模型。

方法二:Regularization

采用添加正则化的方法,施加额外的限制,间接地减少自由变量的参数数量。例如,L2正则。

通过添加权重矩阵的L2范数作为正则项。对于L2求导:

12||w||22=12(w21+w22+...+w2n)

(12||w||22)=w

方法三:Dropout

dropout是近期出现的,功能很强大的方法(hilton提出的哦)!

实现机理:从前layer到后layer的值,叫做激活值。在训练的时候,对每个样例,随机选所有激活值中的一半,把他们设为0(丢弃不用)。这样,神经网络就不会依赖任何激活值了。

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...