神经网络算法
来源:互联网 发布:js获取回调函数返回值 编辑:程序博客网 时间:2024/05/17 09:29
1. 背景
1.1 以人脑中的神经网络为启发,历史上出现过很多不同版本
1.2 最著名的算法是1980年的 backpropagation算法
2. 多层前馈神经网络(Multilayer Feed-Forward Neural Network)
2.1 Backpropagation算法被使用在多层前馈神经网络上
2.2 多层前馈神经网络由以下部分组成(如下图):
输入层(input layer), 隐藏层 (hidden layer), 输出层 (output layer)
2.3 每层由单元(unit)组成
2.4 输入层(input layer)是由训练集的实例特征向量传入
2.5 经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入
2.6 隐藏层的个数可以是任意的,输入层有一层,输出层有一层
2.7 根据生物学来源定义,每个单元(unit)也可以被称作神经结点
2.8 以上称为2层的神经网络(输入层不算)
2.9 一层中加权求和,然后根据非线性方程转化为输出
2.10 作为多层前馈神经网络,理论上,如果有足够多的隐藏层(hidden layer) 和足够大的训练集, 可以模拟出任何方程
3. 设计神经网络结构
3.1 使用神经网络训练数据之前,必须确定神经网络的层数,以及每层单元的个数
3.2 特征向量在被传入输入层时通常被先标准化(normalize)到0和1之间 (为了加速学习过程)
3.3 离散型变量可以被编码成每一个输入单元对应一个特征值可能赋的值。
比如:特征值A可能取三个值(a0, a1, a2), 可以使用3个输入单元来代表A。
如果A=a0, 那么代表a0的单元值就取1, 其他取0;
如果A=a1, 那么代表a1de单元值就取1,其他取0,以此类推
3.4 神经网络即可以用来做分类(classification)问题,也可以解决回归(regression)问题
对于分类问题,如果是2类,可以用一个输出单元表示(0和1分别代表2类),如果多余2类,每一个类别用一个输出单元表示,所以输入层的单元数量通常等于类别的数量
3.5 没有明确的规则来设计最好有多少个隐藏层,根据实验测试和误差,以及准确度来实验并改进
4. 交叉验证方法(Cross-Validation)
“k-fold cross-validation”:k折交叉验证方法
5. Backpropagation算法
5.1 通过迭代性来处理训练集中的实例
5.2 对比经过神经网络后,输入层预测值(predicted value)与真实值(target value)之间差值
5.3 反方向(从输出层=>隐藏层=>输入层)来以最小化误差(error)来更新每个连接的权重(weight)
5.4 算法详细介绍
输入:D:数据集,l 学习率(learning rate), 一个多层前馈神经网络
输出:一个训练好的神经网络(a trained neural network)
5.4.1 初始化权重(weights)和偏向(bias): 随机初始化在-1到1之间,或者-0.5到0.5之间,每个单元有一个偏向5.4.2 对于每一个训练实例X,执行以下步骤: 5.4.2.1: 由输入层向前传送
5.4.2.2 根据误差(error)反向传送
5.4.3 终止条件 5.4.3.1 权重的更新低于某个阈值 5.4.3.2 预测的错误率低于某个阈值 5.4.3.3 达到预设一定的循环次数
6. Backpropagation 算法举例
- 神经网络算法
- 神经网络算法
- 神经网络算法
- 神经网络算法
- 神经网络算法
- 神经网络算法
- 神经网络算法
- 神经网络遗传算法
- 神经网络算法是什么?
- 人工神经网络算法简介
- 搜索引擎优化-神经网络算法
- BP 神经网络算法
- 神经网络算法--数据挖掘
- BP神经网络算法学习
- BP神经网络算法实现
- BP神经网络算法实现
- BP神经网络算法学习
- 神经网络BP算法 源程序
- 如何抽取代码后,在父类实例化泛型的问题
- java基础(个人版)
- 二维码
- DFS全排列
- 关于自动驾驶L1~L5的等级划分,这次认真聊一聊
- 神经网络算法
- Tp3.2和Tp5.0之间的区别
- 在Linux下使用Openswan配置IPSec VPN环境
- java数组反转Reverse
- rapidXml使用笔记
- 如何解决javax.el.PropertyNotFoundException: Property 'RoomNum' not found on XXX
- 学习记录3
- URAL
- Hashmap实现原理