ref: 深度学习基础介绍 机器学习19 神经网络NN算法
- 组成部分:输入层(input layer),隐藏层(hidden layer),输出层(output layer)
- 每层由单元(units)组成(圆圈)
- input layer 是由训练集的实例特征向量传入
- 经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入
- hidden layer 的个数是任意的,input layer 有一层,output layer 有一层
- 每个 unit 也可以被称作神经结点,根据生物学来源定义
- 以上为2层的神经网络(输入层不算)
- 一层中加权的求和,然后根据非线性方程转化输出
- 作为多层向前神经网络,理论上,如果有足够多的隐藏层(hidden layers)和足够大的训练集,可以模拟任何方程
设计神经网络结构
- 使用神经网络训练数据之前,必须确定神经网络的层数,以及每层单元的个数
- 特征向量在被传入输入层时通常被先标准化(normalize)到0和1之间(为了加速学习过程)
- 离散型变量可以被编码成每一个输入单元对应一个特征值可能赋的值
- 比如:特征值A可能取三个值(a0, a1, a2),可以使用3个输入单元来代表A
- 如果 A=a0,那么代表 a0 的单元值就取1,其他取0;
- 如果 A=a1,那么代表 a1 的单元值就取1,其他取0,以此类推
- 神经网络既可以用来做分类(classification)问题,也可以解决回归(regression)问题
- 对于分类问题,如果是2类,可以用一个输出单元表示(0和1分别代表2类)
如果多于2类,每一个类别用一个输出单元表示
所以输出层的单元数量通常等于类别的数量 - 没有明确的规则来设计最好有多少个隐藏层
根据实验测试和误差,以及准确度来试验并改进
- 交叉验证方法(Cross-Validation)
K-fold cross validation
分成3分
第一次,后两个训练,第一个测试
第二次,两边两个驯良,中间测试
第三次,前两个训练,最后一个测试 - Backpropagation 算法
- 通过迭代性的来处理训练集中的实例
- 对比经过神经网络后输入层预测值(predicted value)与真实值(target value)之间
- 反方向(从 输出层 => 隐藏层 => 输入层)来以最小化误差(error)来更新每个连接的权重(weight)
- 算法详细介绍
- 输入:D:数据集,l 学习率(learning rate),一个多层向前神经网络
- 输出:一个训练好的神经网络(a trained neural network)
- 初始化权重(weights)和偏向(bias):随机初始化在 -1 到 1 之间,或者 -0.5 到 0.5 之间,每个单元有一个偏向
- 对于每一个训练实例 X,执行以下步骤: