1.背景:
(1)以人脑中的神经网络为启发,历史上出现过很多不同版本
(2)最著名的算法是1980年的backpropagation
2.多层向前神经网络(Multilayer Feed-Forward Neural Network)
(1)Backpropogation被使用在多层向前神经网络上
(2)多层向前神经网络由以下部分组成:
输入层(input layer),隐藏层(hidden layer),输出层(output layer)
深度学习基础04---神经网络NN算法
输出和输出层均只有一层,但是隐藏层可以有N层
(3)每层由单元(units)组成
(4)输入层(input layer)是由训练集的实例特征向量传入
(5)经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入
(6)隐藏层的个数可以是任意的,输入层有一层,输出层有一层
(7)每个单元(unit)也可以被称作神经结点,根据生物学来源定义
(8)以上成为2层的神经网络(输入层不算)
(9)一层中加权的求和,然后根据非线性方程转化输出
(10)作为多层向前神经网络,理论上,如果有足够多的隐藏层(hidden layer)和足够大的训练集,可以模拟出任何方程
3.设计神经网络结构
(1)使用神经网络训练数据之前,必须确定神经网络的层数,以及每层单元的个数
(2)特征向量在被传入输入层时通常被先标准化(normalize)到0和1之间(为了加速学习过程)
(3)离散型变量可以被编码成每一个输入单元对应一个特征值可能赋的值
比如:特征值A可能去三个值(a0,a1,a2),可以使用3个输入单元来代表A。
如果A=a0,那么代表a0的单元值就取1,其他取0
如果A=a1,那么代表a1的单元值就取1,其他取0,以此类推

(4)神经网络既可以用来做分类(classificatio)问题,也可以解决回归(regression)问题
(a) 对于分类问题,如果是2类,可以用一个输出单元表示,(0和1分别代表2类)
(b)如果多于两类,每个类别用一个输出单元表示
所以输出层单元的个数等于类别的个数
(c)没有明确的规则来设计最好有多少个隐藏层,根据实验测试和误差,以及准确度来实验并改进

4.交叉验证方法(Cross - Validation)
深度学习基础04---神经网络NN算法
第一次把第一份拿出来做测试集,剩下的两份做训练集;第二次把第二份拿出来做测试集,剩下的两份做训练集;第三次把第三次拿出来做测试集,剩下的做训练集。
这样可以有很多组合,验证结果也会较为准确

5.Backpropagation算法
(1)通过迭代性的来处理训练集中的实例
(2)对比经过神经网络后输入层预测值(predicted value)与真实值(target value)之间差别
(3)反方向(从输出层=>隐藏层=>输入层)来以最小化误差(error)来更新每个连接权重(weight)
(4)算法详细介绍:
输入:D:数据集,|学习率(learning rate),一个多层前向神经网络
输出:一个训练好的神经网络(a trained neural network)
(a)初始化权重(weights)和偏向(bias):随机初始化在-1到1之间,或者-0.5到0.5之间,每个单元有一个偏向
(b)对于每一个训练实例X,执行以下步骤:
由输入层向前传送
深度学习基础04---神经网络NN算法
经过加权求和以及非线性转化后算出来的下一层单元的值。
深度学习基础04---神经网络NN算法
输出预测值与真实值有一定误差,误差往回走,经过一定更新法则来不断更新权重和偏向。
深度学习基础04---神经网络NN算法
通过Activation function将线性转化为非线性关系
比如sigmoid函数:
深度学习基础04---神经网络NN算法
下面详细介绍一下如何根据误差反向传送

对于输出层:
深度学习基础04---神经网络NN算法
Oj为我们算出来的预测值,Tj为真实值。

对于隐藏层:
深度学习基础04---神经网络NN算法
对于每一层都可以算出一个error

权重更新:
深度学习基础04---神经网络NN算法
偏向更新:
深度学习基础04---神经网络NN算法
(5)终止条件:
(a)权重的更新低于某个阈值
(b)预测的错误率低于某个阈值
(c)达到预设一定的循环次数
6.Backpropagation算法举例
深度学习基础04---神经网络NN算法
这个网络是两层哦,输入层是不算在内的。
网路中初始权值和偏向一般是随机给出,因为后期会更新,所以初始一般随机给出。

可以根据以上公式算出error和weight以及bias
深度学习基础04---神经网络NN算法
ok,算法简介就到这里啦,明后天写一下它的应用

相关文章: