文章目录
数据挖掘课程刚刚讲完人工神经网络ANN然后介绍了一些相关的概念
为了训练得到神经网络参数w b 而使用的梯度下降啊 链式法则啊 反向传播啊
看着ppt 听着老师讲课
然后就…
没听懂
当然,没太听懂是一回事,做没做笔记是一回事
《数据挖掘与大数据分析》课堂学习笔记-9 第四章 分类器–初识支持向量机 人工神经网络
上课时的ppt贴了不少 可以去康康(反正我是看不太懂)
咳咳 所以 逛逛CSDN巩固下神经网络基础吧
参考了几篇文章
[Mechine Learning & Algorithm] 神经网络基础
一文弄懂神经网络中的反向传播法——BackPropagation
python 反向传播算法的入门教程的简单代码实现
大佬们写得都相当好!
这里做一个总结以及结合自己的认知加以完善,感觉这里的东西都明白了,神经网络就算入了个门吧~
另外,欢迎各位大佬指出问题或者对文章内容加以完善~
文章目录
1.神经网络基础
引入
从生物学上神经元的信息传播机制获得灵感
一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质(其实就是信息)。
M-P神经元模型
上面的
也被称为激活函数。
激活函数可以用一个阶跃方程表示 大于阈值激活,否则则抑制。
但是这样太粗暴了!因为阶跃函数是不光滑、不连续、不可导的!
所以我们更常去使用sigmoid函数来表示激活函数
感知机和神经网络
感知机 Perceptron 是由两层神经元组成的结构,输入层用于接受外界输入信号,输出层(也被称为是感知机的功能层)就是M-P神经元。
下图为一个输出层有三个神经元(分别表示为 x0 x1 x2)的感知机结构——
感知机是一种判别式的线性分类模型 可以解决与 或 非这样的简单的线性可分问题
但是感知机只有一层功能神经元呐!学习能力非常有限!
感知机无法解决最简单的非线性可分问题——异或问题
误差逆传播算法
我们之前学习了——
神经网络的训练或者学习的主要目的在于通过学习算法得到神经网络解决指定问题所需的参数(参数包括各层神经元之间的连接权重以及配置等)
作为算法的设计者的我们,通常根据实际问题来构造出网络结构,参数的确定则需要神经网络经过训练样本和学习算法来迭代找到最优参数组。
来介绍下 误差逆传播(error BackPropagation 简称BP)算法
BP算法是神经网络学习算法中最杰出、成功的代表。通常用在最为广泛使用的多层前馈神经网络中。
输入:
学习过程:
输出:
深度学习
我们经常听到“深度学习”这几个字
深度学习指的是深度神经网络模型,一般指网络层数在三层或三层以上的神经网络结构。
理论上 参数越多的模型复杂度就会越高,容量也会越大,能完成学习任务的复杂度也就越高。
网络层数加深可能发生什么?
过拟合!
但是!一般来说,参数忒多了,复杂模型的训练效率会变低,容易陷入过拟合!
要说为啥这样容易陷入过拟合——
随着神经网络层数的加深,优化函数越来越容易陷入局部最优解
前两天刚好学过拟合,还写了一篇博客:
链接如下:互联网情景下的智能学习——bias VS variance & 欠拟合 过拟合的概念
bias 就是偏差——准确性
variance就是方差——稳定性
在训练样本上有很好的拟合效果
但是在测试集上效果很差
解决过拟合的方法就是——
训练集里扔好多好多好多数据
只要数据量够大 就不容易发生过拟合!
梯度消失!
或者说是梯度发散 diverge 现象
随着神经网络层数的加深,“梯度消失(梯度发散diverge)”现象更加严重。
我们常用sigmoid函数作为隐含层功能神经元的激励函数——
对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25
这样的话,层数一多,梯度指数衰减后低层基本接收不到有效的训练信号 即发生 梯度消失。
解决深度神经网络的训练问题
一种有效的手段是——采取无监督逐层训练(unsupervised layer-wise training)
基本思想简要来说就是:先进行“预训练” 在进行“微调训练”。
预训练
每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入
微调训练
预训练完成后,对整个网络进行“微调”(fine-tunning)训练
DBN中的例子
比如Hinton在深度信念网络(Deep Belief Networks,简称DBN)中,每层都是一个RBM,即整个网络可以被视为是若干个RBM堆叠而成。在使用无监督训练时,
进行预训练:
首先训练第一层,这是关于训练样本的RBM模型,可按标准的RBM进行训练;然后,将第一层预训练号的隐节点视为第二层的输入节点,对第二层进行预训练;
利用误差逆传播算法进行微调训练
各层预训练完成后,再利用BP算法对整个网络进行训练。
小结
预训练+微调 的训练方式可被视为是
【1】将大量参数分组,对每组先找到局部看起来较好的设置。
【2】再基于这些局部较优的结果,进行全局寻优。
这样训练 利用了模型大量参数所提供的自由度&有效地节省了训练开销。
权共享法节省训练开销
2.反向传播
这篇太长嘞 这块儿放个链接 再写个文儿吧~