东北石油大学研究生期末论文
成
绩
东北石油大学(硕士)研究生
课 程 名 称:
机器学习(案例)
任 课 教 师:
***
开课学年/开课学期:
2018-2019 学年度/第 1 学期
学 时 / 学 分:
32 学时/2 学分
所 在 教 学 学 院:
电气信息工程学院
专 业 名 称:
信息与通信工程
学 号 / 姓 名:
***666/***
教师评语:__________________________________
__________________________________
__________________________________
任课教师签字(章):_________
《机器学习(案例)》课程期末论文
神经网络
一、 引言
神经网络最早的研究 20 世纪 40 年代心理学家 Mcculloch 和数学家 Pitts 合作
提出的,他们提出的 MP 模型拉开了神经网络研究的序幕。神经网络的发展大致经过三
个阶段:1947~1969 年为初期,在这期间科学家们提出了许多神经元模型和学习规则,如
MP 模型、HEBB 学习规则和感知器等。 1970~1986 年为过渡期, 这个期间神经网络研
究经过了一个低潮,继续发展。在此期间,科学家们做了大量的工作,如 Hopfield 教
授对网络引入能量函数的概念,给出了网络的稳定性判据,提出了用于联想记忆和优化
计算的途径。1984 年,Hiton 教授提出 Boltzman 机模型。1986 年 Kumelhart 等人提
出误差反向传播神经网络,简称 BP 网络。目前,BP 网络已成为广泛使用的网络。1987
年至今为发展期,在此期间,神经网络受到国际重视,各个国家都展开研究,形成神经
网络发展的另一个高潮。神经网络是对人脑或生物神经网络的抽象和建模,研究非程序
的、适应性的、大脑风格的信息处理的本质和能力。它是智能科学和计算智能的重要部
分,以脑科学和认知神经科学的研究成果为基础, 拓展智能信息处理的方法, 为解决
复杂问题和智能控制提供有效的途径。
神经网络具有以下优点:
(1) 具有很强的鲁棒性和容错性,因为信息是分布贮于网络内的神经元中。
(2) 并行处理方法,使得计算快速。
(3) 自学习、自组织、自适应性,使得网络可以处理不确定或不知道的系统。为了
解决计算机字符的自动识别、高速加工处理,使计算机达到真正智能化,人们对计算机识
别进行了多年的研究,并取得了很大的进步。手写体数字识别是字符识别的一个分支,
一般通过特征匹配及特征判别的方法来进行处理,目前识别率还较低。因此,为了提高识
别率,还要寻求新的方法和途径。
(4) 可以充分逼近任意复杂的非线性关系。
近年来,人工神经网络技术取得了巨大的发展,它所具有的优势:固有的并行结构和
1
并行处理、知识的分布存储、容错性、自适应性、模式识别能力,为手写体数字识别开
《机器学习(案例)》课程期末论文
辟了新的途径
二、 研究现状
神经网络以其独特的结构和处理信息的方法, 在许多实际应用领域中取得了显著
的成效,主要应用如下:
(1) 图像处理。对图像进行边缘监测、图像分割、图像压缩和图像恢复。
(2) 信号处理。能分别对通讯、语音、心电和脑电信号进行处理分类;可用于海底
声纳信号的检测与分类,在反潜、扫雷等方面得到应用。
(3) 模式识别。已成功应用于手写字符、汽车牌照、指纹和声音识别,还可用于目
标的自动识别和定位、机器人传感器的图像识别以及地震信号的鉴别等。
(4) 机器人控制。 对机器人眼手系统位置进行协调控制, 用于机械手的故障诊断
及排除、智能自适应移动机器人的导航。
(5) 卫生保健、医疗。比如通过训练自主组合的多层感知器可以区分正常心跳和非
正常心跳、基于 BP 网络的波形分类和特征提取在计算机临床诊断中的应用。
(6) 焊接领域。国内外在参数选择、质量检验、质量预测和实时控制方面都有研究,
部分成果已得到应用。
(7) 经济。能对商品价格、股票价格和企业的可信度等进行短期预测。
(8) 另外,在数据挖掘、电力系统、交通、军事、矿业、农业和气象等方面亦有应
用。
三、 案例描述
在神经网络中实现手写体数字的识别,手写体数字识别研究的最终目标是设计出速
度快、精度高的识别算法并运用到实际工作中。手写体数字识别技术有其特殊性:
(1)识别技术离达到令人满意的使用要求还有相当距离,如果离线手写数字识别
技术领域取得突破,将会打开非常广泛的应用市场。
2
(2)高识别率及高识别速度的要求。在一个实用系统中,高识别率的要求是必然
《机器学习(案例)》课程期末论文
的,若没有高识别率,其应用的价值会大大降低。
其中已经给出了手写数字数据库 mnist_uint8,有 60000 个训练样本数据集和 10000
个测试用例。这些数字图像已经被规范化,将数字置于图像中心,并使图像大小一致。
这对于要尝试自己的学习技术和模式识别方法在真实世界中的效果的人来说,是一个好
的数据库,它节省了大量处理和格式化的时间。需要我们验证模型的识别的错误率。
四、 解决思路
BP 神经网络在单隐层的时候,效率较高,当堆积到多层隐藏层的时候,反向传播的
效率就会大大降低,因此 BP 神经网络在浅层神经网路中应用较广,但由于其隐层数较
少,所以映射能力也十分有限,所以浅层结构的 BP 神经网络多用于解决一些比较简单
的映射建模问题。所以采用 ReLU 的激活函数来代替传统的 sigmoid 函数,可以有效地
提高训练的速度。此外,除了随机梯度下降的反向传播算法,还可以采用一些其他的高
效的优化算法,例如小批量梯度下降算法(Mini-batch Gradient Descent)、冲量梯度
下降算法等,也有利于改善训练的效率问题。直到 2006 年,Hinton 提出了逐层贪婪预
训练受限玻尔兹曼机的方法,大大提高了训练的效率,并且很好地改善了局部最优的问
题,算是开启了深度神经网络发展的新时代。Hinton 将这种基于玻尔兹曼机预训练的结
构称为深度置信网络结构(DBN),用深度置信网络构建而成的 DNN 结构,就是本文要重
点用 DBN-DNN 来实现手写体数字识别。
五、 解决原理
深度信念网 DBN 是 Hinton 及其弟子在 2006 年提出的一个具有层次特征的概率生成网络
模型,神经元与神经元之间通过权重,可以让整个网络以最大概率生成训练数据。DBN 是一种深层
的神经网络,最底层的神经元接收到原始输入数据,然后开始从底层逐渐向上的传递,从简单的信
息到更高层次的抽象,最后一层的网络重新组合形成特征向量。DBN 中,每一层神经网络会弱化上
一层中没有必要的信息,这样在逐层增加时,能保证抽象出来的都是有用的信息,保持整个 DBN 网
络的精度。DBN 是由一系列叠加无监督的受限玻尔兹曼机和顶层有监督的反向传播 BP 神经网络构
成。
3
《机器学习(案例)》课程期末论文
DBN 的组成元件是受限玻尔兹曼机 (Restricted Boltzmann Machines, RBM)。训练 DBN
的过程是一层一层地进行的。在每一层中,用数据向量来推断隐层,再把这一隐层当作下一层 (高
一层) 的数据向量。RBM 是 DBN 的组成元件。事实上,每一个 RBM 都可以单独用作聚类器。
RBM 只有两层神经元,一层叫做显层 (visible layer),由显元 (visible units) 组成,用于输
入训练数据。另一层叫做隐层 (Hidden layer),相应地,由隐元 (hidden units) 组成,用作特征
检测器 (feature detectors)。
图一
图一中的较上一层神经元组成隐层,较下的神经元组成显元。每一层都可以用一个
向量来表示,每一维表示每个神经元。注意这两层间的对称 (双向) 连接。RBM 的训练
过程,实际上是求出一个最能产生训练样本的概率分布。也就是说,要求一个分布,在
这个分布里,训练样本的概率最大。由于这个分布的决定性因素在于权值 W ,所以我们
训练 RBM 的目标就是寻找最佳的权值。用最大化对数似然函数进行推导,训练 RBM。
4
《机器学习(案例)》课程期末论文
而 DBN 是由多层 RBM 组成的一个神经网络,它既可以被看作一个生成模型,也可
以当作判别模型,其训练过程是:使用非监督贪婪逐层方法去预训练获得权值。训练过
程:
(1) 首先充分训练第一个 RBM;
(2) 固定第一个 RBM 的权重和偏移量,然后使用其隐性神经元的状态,作为第
二个 RBM 的输入向量;
(3) 充分训练第二个 RBM 后,将第二个 RBM 堆叠在第一个 RBM 的上方;
(4) 重复以上三个步骤任意多次;
(5) 如果训练集中的数据有标签,那么在顶层的 RBM 训练时,这个 RBM 的显层
中除了显性神经元,还需要有代表分类标签的神经元,一起进行训练:
① 假设顶层 RBM 的显层有 500 个显性神经元,训练数据的分类一共分成了 10
类;
②那么顶层 RBM 的显层有 510 个显性神经元,对每一训练训练数据,相应的标
签神经元被打开设为 1,而其他的则被关闭设为 0。
(6)DBN 被训练好后如下图: (示意)
图二 DBN 被训练好后
5
《机器学习(案例)》课程期末论文
六、 实验
1、 代码
%% mnist data
clear all; close all; clc;
load mnist_uint8;
x = cell(100, 1);
N = 600;
for i = 1 : 100
x{i}{1} = reshape(train_x(((i - 1) * N + 1) : (i) * N, :), N, 28, 28) * 255;
end
%% ex 1
scae = {
struct('outputmaps', 10, 'inputkernel', [1 5 5], 'outputkernel', [1 5 5],
'scale', [1 2 2], 'sigma', 0.1, 'momentum', 0.9, 'noise', 0)
};
= 1000;
1;
= 0.01;
10;
= 0.5;
opts.rounds
opts.batchsize =
opts.alpha
opts.ddinterval =
opts.ddhist
scae = scaesetup(scae, x, opts);
scae = scaetrain(scae, x, opts);
cae = scae{1};
%Visualize the average reconstruction error
plot(cae.rL);
%Visualize the output kernels
6
《机器学习(案例)》课程期末论文
ff=[];
for i=1:numel(cae.ok{1});
mm = cae.ok{1}{i}(1,:,:);
ff(i,:) = mm(:);
end;
figure;visualize(ff')
2、 仿真结果
七、 结果分析及结论
结果由图片引入到程序中,经过神经网络的训练识别,由仿真结果知训练的次数越
多,可视化平均重建误差越小。本次设计在 MATLAB 上进行测试训练集,验证了 BP 神经
网络的计算过程由正向计算过程和反向计算过程组成。正向传播过程,输入模式从输入
层经隐单元层逐层处理,并转向输出层,每一层神经元的状态只影响下一层神经元的状
态。如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通
路返回,通过修改各神经元的权值,使得误差信号最小。
7