July深度学习笔记之神经网络与反向传播算法

来源:互联网 发布:淘宝p图手机软件 编辑:程序博客网 时间:2024/05/22 03:40

July深度学习笔记之神经网络与反向传播算法

一、神经网络

神经网络的大致结构如下;

image

大致可以分为输入层、隐藏层与输出层。

而我们可以单独拿出来一个结点,可以发现,其实它就是类似一个逻辑回归(LR),这样的单独一个节点我们把它称之为“感知机”,而这样单独的一个节点与逻辑回归的区别就在于,当它做完线性函数之后,还要在本结点上经历“激活函数”(也叫做激励函数)。那么为什么我们需要这个激活函数呢?

  • 首先,每一个神经元对输入进行的操作如果就仅仅是Wx+b,那么到了下一个神经元其实就是W1(Wx+b)+ b1,这样下去,叠加更多的层不能完成非线性变换,而仍然是线性变换,只是改变系数而已。
  • 其次,激活函数的作用你可以把它理解成对信号的一种过滤和筛选,以及以多大程度地让这种信号向下层传递。

image

如果神经网络的层数比较少,只添加了少量的隐层,这样的神经网络是浅层神经网络(SNN)。如果增加很多的隐层,这样的神经网络叫做深层神经网络(DNN)。

实际上,神经网络在分类问题上表现效果较好,尤其是在逻辑回归和SVM很难解决的非线性可分问题上。

下图是利用简单的单个神经元完成“逻辑与”操作的实例:
实际上,单个的神经元就对应二维空间上的一条直线,类似地,单个神经元也可以完成“逻辑或”的操作,只需要调整参数分别为-10,20,20即可。

image

So,仅仅通过线性分类器的“与”和“或”的组合,我们就可以实现对平面样本点的分布进行完全分类。

神经网络表达力与过拟合问题

  • 理论上说单隐层神经网络可以逼近任何连续函数(只要隐层的神经元个数足够多)。
  • 虽然从数学上看表达能力一致,但是多隐藏层的神经网络比单隐藏层的神经网络工程效果好很多。
  • 对于一些分类数据(比如CTR预估里),3层神经网络效果优于2层神经网络,但是如果把层数再不断增加(4,5,6层),对最后结果的帮助就没有那么大的跳变了。
  • 图像数据比较特殊,是一种深层(多层次)的结构化数据,深层次的卷积神经网络,能够更充分和准确地把这些层级信息表达出来。
  • 提升隐层层数或者隐层神经元个数,神经网络“容量”会变大,空间表达力会变强。
  • 过多的隐层和神经元节点,会带来过拟合问题。
  • 不要试图通过降低神经网络参数量来减缓过拟合,用正则化或者dropout。

二、反向传播算法

我们刚刚提到的激励函数,常用的有sigmoid函数等等,sigmoid函数图像如下:

image

而反向传播算法如何理解呢?实际上反向传播算法的目的在于优化参数W和偏置b,首先初始化参数W和b,然后正向传播求得“损失”-即此时和正确值的差值,然后“反向传播”回传误差,根据误差信号来修正每层的权重。

image

实际上,反向传播算法做的事情就是为了求偏导。而参数更新还是用到了梯度下降算法。

下面举一个例子来说明反向传播算法的过程和参数更新的过程:

首先进行前向运算:

image

然后求得偏导:

image

然后根据梯度下降更新参数权值:

image

image

可以看出,反向传播算法就是这样的一个求导、导数连乘过程,求得导数,再根据梯度下降法优化,更新权重。这就是神经网络的训练过程。

0 0
原创粉丝点击