机器学习-神经网络(Neural Network)算法
2018-01-15 17:24
323 查看
学习彭亮《深度学习基础介绍:机器学习》课程
多层向前神经网络由以下几部分组成:输入层(input layer)、隐藏层(hidden layer)、输出层(output layers)
每层又单元组成
输入层是由训练集的实例特征向量传入
经过连接结点的权重传入下一层,一层的输出是下一层的输入
隐藏层的个数可以是任意的,输入层有一层,输出层有一层
每个单元(unit)也可以被作为神经结点,根据生物学来源定义
一层中加权的求和,然后根据非线性方程转化输出
作为多层向前神经网络,理论上,如果有足够多的隐藏层和足够大的训练集,可以模拟任何方程
特征向量在被传入输入层时通常被先标准化(normalize)到0-1之间
离散型变量可以编码为每一个输入单元对应一个特征值可能赋的值
eg:特征值A可能取{a0,a1,a2},可以使用3个输入单元来代表A
如果A=a0,那么代表a0的单元值就取1,其他取0
如果A=a1,那么代表a1的单元值就取1,其他取0
神经网络即可以用来做分类(classsification)问题,也可以解决回归(regression)问题
对于分类问题,如果是两类,可以用一个输出单元表示,如果多于两类,每一类用一个输出单元表示;
没有明确的规则来设计最好多少个隐藏层,需要根据实验和误差,以及准确度来实验并改进
![](http://img.blog.csdn.net/20180115142939390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
对比经过神经网络后输入层预测值(predicted value)与真实值(target value)之间
反方向(从输出层=>隐藏层=>输入层)来以最小化误差(error)来更新每个连接的权重(weight)
输出:一个训练好的神经网络(a trained neural network)
初始化权重(weights)和偏向(bias): 随机初始化在-1到1之间,或者-0.5到0.5之间,每个单元有一个偏向
###对于每一个训练实例X,执行以下步骤:
由输入层向前传送
![](http://img.blog.csdn.net/20180115154413620?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20180115154424807?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
wij:i、j连线上的权重
Oi:前一次那个单元的值是多少
Θj:偏向
![](http://img.blog.csdn.net/20180115154439153?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
y1*w1j+ y2*w2j+ y3*w3j+Θj
![](http://img.blog.csdn.net/20180115154446062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
根据误差(error)反向传送
输入层:
![](http://img.blog.csdn.net/20180115154520977?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
隐藏层:
![](http://img.blog.csdn.net/20180115154555659?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
权重更新:
![](http://img.blog.csdn.net/20180115154610267?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
偏向更新:
![](http://img.blog.csdn.net/20180115154624093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
终止条件
权重的更新低于某个阈值;
预测的错误率低于某个阈值;
达到预设一定的循环次数
![](http://img.blog.csdn.net/20180115155232232?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
每两条线都有一个权重:Wij,eg:w15表示点1,5权重为-0.3
Θ4:4对应的偏向为-0.4
计算O4:
同理计算O5、O6
按照上面的计算说明:
![](http://img.blog.csdn.net/20180115155332219?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
输出层:
![](http://img.blog.csdn.net/20180115170728802?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
Tj是训练层里给的,假设他为1,则
同理Err(5)、Err(4)
隐藏层:
![](http://img.blog.csdn.net/20180115170736983?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
权重和偏向的更新
![](http://img.blog.csdn.net/20180115171439253?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20180115171447121?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWUVOX0NTRE4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
背景
以人脑中的神经网络为启发,最著名的算法是1980年的backpropagation多层向前神经网络(Multilayer Feed-Forward Neural Network)
Backpropagation被使用在多层向前神经网络上多层向前神经网络由以下几部分组成:输入层(input layer)、隐藏层(hidden layer)、输出层(output layers)
每层又单元组成
输入层是由训练集的实例特征向量传入
经过连接结点的权重传入下一层,一层的输出是下一层的输入
隐藏层的个数可以是任意的,输入层有一层,输出层有一层
每个单元(unit)也可以被作为神经结点,根据生物学来源定义
一层中加权的求和,然后根据非线性方程转化输出
作为多层向前神经网络,理论上,如果有足够多的隐藏层和足够大的训练集,可以模拟任何方程
设计神经网络结构
使用神经网络训练数据之前,必须确定神经网络层数,以及每层单元的个数特征向量在被传入输入层时通常被先标准化(normalize)到0-1之间
离散型变量可以编码为每一个输入单元对应一个特征值可能赋的值
eg:特征值A可能取{a0,a1,a2},可以使用3个输入单元来代表A
如果A=a0,那么代表a0的单元值就取1,其他取0
如果A=a1,那么代表a1的单元值就取1,其他取0
神经网络即可以用来做分类(classsification)问题,也可以解决回归(regression)问题
对于分类问题,如果是两类,可以用一个输出单元表示,如果多于两类,每一类用一个输出单元表示;
没有明确的规则来设计最好多少个隐藏层,需要根据实验和误差,以及准确度来实验并改进
交叉验证方法(Cross-Validation)
K-fold Cross ValidationBackpropagation算法
通过迭代性的来处理训练集中的实例对比经过神经网络后输入层预测值(predicted value)与真实值(target value)之间
反方向(从输出层=>隐藏层=>输入层)来以最小化误差(error)来更新每个连接的权重(weight)
算法详细介绍
输入:D:数据集,l 学习率(learning rate), 一个多层前向神经网络输出:一个训练好的神经网络(a trained neural network)
初始化权重(weights)和偏向(bias): 随机初始化在-1到1之间,或者-0.5到0.5之间,每个单元有一个偏向
###对于每一个训练实例X,执行以下步骤:
由输入层向前传送
wij:i、j连线上的权重
Oi:前一次那个单元的值是多少
Θj:偏向
y1*w1j+ y2*w2j+ y3*w3j+Θj
根据误差(error)反向传送
输入层:
隐藏层:
权重更新:
偏向更新:
终止条件
权重的更新低于某个阈值;
预测的错误率低于某个阈值;
达到预设一定的循环次数
Backpropagation 算法举例
每两条线都有一个权重:Wij,eg:w15表示点1,5权重为-0.3
Θ4:4对应的偏向为-0.4
计算O4:
x1*w14+x2*w24+x3*w34+Θ4=1*0.2+0*0.4+1*(-0.5)+(-0.4)=-0.7
同理计算O5、O6
按照上面的计算说明:
输出层:
Tj是训练层里给的,假设他为1,则
Err(6)=(0.474)(1-0.474)(1-0.474)=0.1311
同理Err(5)、Err(4)
隐藏层:
Err(5)=0.525*(1-0.525)*(0.1311)*(-0.2)=-0.0065 (0.1311):6这一结点的误差 (-0.2):5、6之间的权重 同理 Err(4)=0.332*(1-0.332)*(0.1311)*(-0.3)=-0.0087 (0.1311):6这一结点的误差 (-0.3):4、6之间的权重
权重和偏向的更新
w46=-0.3+(0.9)*(0.1311)*(0.332)=-0.261 l:学习率,手动定义,此处假设为0.9 Θ4=-0.4+(0.9)(-0.0087)=-0.408
相关文章推荐
- Python -- machine learning, neural network -- PyBrain 机器学习 神经网络
- 机器学习公开课笔记(4):神经网络(Neural Network)——表示
- 机器学习实验(十一):基于WiFi fingerprints用自编码器(Autoencoders)和神经网络(Neural Network)进行定位_2(keras版)
- 机器学习(11.5)--神经网络(nn)算法的深入与优化(5) -- softmax的代码实现
- 机器学习 —— 基础整理(八)循环神经网络的BPTT算法步骤整理;梯度消失与梯度爆炸
- 机器学习公开课笔记(4):神经网络(Neural Network)——表示
- [置顶] 台湾大学机器学习笔记——Neural Network 神经网络
- 机器学习公开课笔记(5):神经网络(Neural Network)——学习
- 机器学习(11.1)--神经网络(nn)算法的深入与优化(1)--介绍
- 机器学习之神经网络算法
- 机器学习常用算法二:神经网络
- 机器学习(11.2)--神经网络(nn)算法的深入与优化(2) -- QuadraticCost、CorssEntropyCost、SoftMax的javascript数据演示测试代码
- 机器学习算法原理总结系列---算法基础之(7)神经网络(Neural Network)
- 机器学习之神经网络算法
- 机器学习实验(十):基于WiFi fingerprints用自编码器(Autoencoders)和神经网络(Neural Network)进行定位_1(tensorflow版)
- 基于Apache Spark的机器学习及神经网络算法和应用
- 机器学习--感知器数据分类算法步骤(慕课网-实现简单的神经网络)
- 基于Apache Spark的机器学习及神经网络算法和应用
- 机器学习笔记4-神经网络(Neural Network)(上)
- 机器学习笔记(XVI)神经网络(III)误差逆传播(BP)算法