神经网络(ANN)
来源:互联网 发布:安知我意txt百度云 编辑:程序博客网 时间:2024/06/04 22:48
先抛出几个问题:
1、怎么求解
2、优缺点
3、反向传播,梯度为什么会弥散
4、激活函数怎么选取
5、几个优化方案?
零、为什么要引入神经网络
回想SVM从线性可分情况,转到非线性可分时,引入了核函数,将样本空间映射到高维线性可分空间。
同样的,神经网络的隐含层也在做这种事情,在高维空间中找到几个特征,可以放到输出层的激活函数里,利用线性学习器来输出结果。
再啰嗦一句,特征工程+LR < GBDT+LR < 神经网络 +LR < CNN+DNN+LR (我脑补的哈哈哈哈)
一、神经元模型
神经网络中最基本的成分就是神经元模型:
神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元收到的总输入值将与神经元的阈值(又叫偏置)进行比较,然后通过“激活函数”处理以产生神经元的输出。
激活函数,你可以理解为,要么就激活,要么不激活,那么可以用阶跃函数表示,但是这个函数具有 不连续、不光滑等不太好的性质,因此实际中通常用Sigmoid函数(后面还会讲到其他激活函数,因为sigmoid函数也有缺点)。
二、为什么要多层?
如果没有隐藏层,那么就类似于逻辑回归了,只能求解线性可分的情况,不能解决XOR问题。
可以看到层数越多,学习能力越强,但是!!!!可以看到 单隐含层已经可以划分了,再加一层就有点过拟合了,有木有!!!!谁让你参数这么多呢。。。
三、怎么求解多层网络?
误差逆传播(BP)算法是比较常用的一种。
1、参数表达:
2、误差选 :均方误差后,每一步参数的迭代推导,涉及求导的链式法则,这也是反向传播名称的由来。
类似的可以求得其他参数的更新公式!!!!!!
3、算法过程:
4、标准BP、累计BP
BP算法的目标是最小化训练集D上的累积误差,累积BP算法,在读取整个训练集D一遍后才对参数进行更新。具体地:
标准BP的做法:样本1,更新下W1为W2,样本2就直接用更新完的w了,即W2!!!!
累积BP的做法:样本1,更新W1为W2,样本2仍然用W1。扫一遍全量训练集之后,W更新为Wn,下一轮,样本1就用Wn了。!!!!
实际使用中,累积误差下降到一定程度后,进行下一步下降会非常缓慢,这时候标准BP往往会更快获得较好的解。
四、怎么设置隐含层的个数及每层的神经元的个数,还有激活函数的选取
1、怎么设置隐含层的个数及每层的神经元的个数
遗憾的是,至今为止还没有理论规定该如何来确定网络隐含层的数目.所以,只能用尝试的方法来寻找最适宜的隐含层神经元数目.
2、激活函数
http://blog.csdn.net/u013146742/article/details/51986575
传统的S函数有一个很大的缺点,就是BP迭代更新参数时,需要用到梯度,如果一个很大的数据传入S函数,那么其梯度为0,之后就不会被更新,当神经网络层数较多时,S函数在反向传播中梯度值会逐渐减小,经过多层的传递后会呈指数级急剧减小,这就是所谓的梯度弥散问题。
ReLU函数可以很好解决这个问题。
3、一般输出层的激活函数是线性分类器的函数,比如 sigmoid、softmax、linear SVM。
五、试图跳出局部最小的几个策略:
1、以多组不同参数值初始化多个神经网络,最后取其中误差最小的解。
2、模拟退火:在每一步都以一定的概率接受比当前解更差的结果。接受“次优解”的概率要逐步降低,以保证算法稳定。
3、随机梯度下降:
4、遗传算法。
六、优缺点:
优点:
1、准确度高
2、适合噪声数据集
缺点:
1、训练慢
2、参数多,调参难
3、解释学弱
七、优化方法
1、过拟合:正则化、Dropout,不要简单的减少层数和每层的神经元个数。
2、参数调优:Adagrad
3、激活函数:ReLU
4、避免局部最优
5、CNN、RNN等。
八、Tensorflow代码
http://blog.csdn.net/u010745111/article/details/62217464
九、Tensorflow demo
http://playground.tensorflow.org/
参考:
机器学习--周志华
- 人工神经网络(ANN)
- 人工神经网络(ANN)
- 人工神经网络(ANN)
- 人工神经网络(ANN) .
- 人工神经网络(ANN)
- 人工神经网络(ANN)
- 神经网络ANN(一)
- 神经网络 ANN(二)
- 神经网络(ANN)
- 初识人工神经网络(ANN)
- ANN(人工神经网络)基础知识
- 人工神经网络(ANN)学习
- ANN神经网络
- 神经网络ANN
- 分类(3):人工神经网络(ANN)
- 人工神经网络(Artificial Neural Networks, ANN)
- 人工神经网络(ANN, artificial neural network)
- 【模式识别】ANN——神经网络(CvANN_MLP)
- 102-多线程与 fork
- 使用Python爬取最好大学网大学排名
- 算法提高 排队打水问题
- 单链表的排序
- RTOS
- 神经网络(ANN)
- firefox插件使用感受
- 快速排序
- 去掉oneNand,添加SD/MMC
- mapreduce系列(3)----在window端远程提交mr程序运行
- matplotlib的一个demo
- 服务器login failed
- java 线程的基础
- 高精度阶乘