机器学习实验报告

  • 〇、实验报告pdf可在该网址下载
  • 一、实验目的与要求
  • 二、实验内容与方法
  • 2.1 深度神经网络的知识回顾
  • 2.1.1 神经元模型
  • 2.1.2 从感知机到神经网络
  • 1)二分类模型
  • 2.1.3 全连接神经网路(DNN)
  • 1)基本介绍
  • 2)基本结构
  • 3)DNN前向传播算法
  • 4)DNN反向传播算法
  • 2.1.4 卷积神经网络(CNN)
  • 2.1.5 DNN和CNN比较
  • 1) 异:
  • 2) 同:
  • 三、实验步骤与过程
  • 3.0 实验说明
  • 3.1 人脸识别案例
  • 3.1.0 数据集介绍
  • 3.1.1 数据处理与CNN网络设计
  • 3.1.2 训练、测试与结果展示:
  • 3.2 通用手写体识别案例
  • 3.2.0 数据集介绍
  • 3.2.1 数据处理与CNN网络设计
  • 3.2.2 训练、测试与结果展示:
  • 激活函数为:Softmax
  • 激活函数为:ReLU
  • 四、实验结论或体会
  • 4.1 实验结论
  • 4.2 实验体会



〇、实验报告pdf可在该网址下载

建议看博客,博客里面会有很多实验报告小说明会用【…】加粗注释。

一、实验目的与要求

实验目的:

  1. 掌握神经元模型、全连接网络和CNN网络;
  2. 掌握前向传递和反向传递的原理以及推导。

实验要求:

  1. 全方面比较CNN与全连接网络的异同。
  2. 推导神经网络前向后向传播算法的优化迭代公式。
  3. 熟练掌握一种深度神经网络的算法与应用,并给出在人脸识别、身份证识别、通用手写体识别等方面的2个以上应用案例与效果(可在腾讯云上做,相关实验素材腾讯那边已准备,把相关东西搬到实验报告上来组织好即可)。
  4. 参考前人论文,另起一节,设计一个全新的深度神经网络,使其能在至少一个应用场景能PK过经典的 CNN与全连接网络或现有论文中的算法 ;简要内容写在实验报告中,详细的可写成一篇论文提交到“论文提交处”。

二、实验内容与方法

2.1 深度神经网络的知识回顾

根据周志华老师的《机器学习》一书中,来阐述神经网络模型。

2.1.1 神经元模型

神经网络中最基本的成分是神经元模型。在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学午直,从而改变这些神经元内的点位;如果某神经元的电位超过了一个“阈值”,那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。

1943年,[McCulloch and Pitts,1943]将上述情形抽象为图一所示的简单模型,这就是一直沿用至今的“M-P神经元模型”。

多层神经网络结构包括 多层神经网络实验报告_cnn


在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过权重的链接进行传递,神经元收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。

2.1.2 从感知机到神经网络

1)二分类模型

感知机的模型是一个有若干输入和一个输出的模型(图二)。

多层神经网络结构包括 多层神经网络实验报告_人工智能_02


其中输出和输入之间学习到一个线性关系,得到中间输出结果(公式1),接着是一个神经元激活函数,得到输出结果为1或者-1(公式2).当然,这个模型只能用于二分类,且无法学习比较复杂的非线性模型。

多层神经网络结构包括 多层神经网络实验报告_多层神经网络结构包括_03

多层神经网络结构包括 多层神经网络实验报告_多层神经网络结构包括_04

2.1.3 全连接神经网路(DNN)

1)基本介绍

神经网络是基于感知机的扩展,而DNN可以理解为有很多隐藏层的神经网络。多层神经网络和深度神经网络DNN也是指的一个东西,DNN有时也叫做“多层感知机(Multi-Layer perceptron,MLP)”。

2)基本结构

多层神经网络结构包括 多层神经网络实验报告_人工智能_05


多层神经网络结构包括 多层神经网络实验报告_机器学习_06

3)DNN前向传播算法

多层神经网络结构包括 多层神经网络实验报告_人工智能_07


多层神经网络结构包括 多层神经网络实验报告_人工智能_08

4)DNN反向传播算法

多层神经网络结构包括 多层神经网络实验报告_dnn_09


多层神经网络结构包括 多层神经网络实验报告_cnn_10


多层神经网络结构包括 多层神经网络实验报告_人工智能_11

2.1.4 卷积神经网络(CNN)

多层神经网络结构包括 多层神经网络实验报告_dnn_12


多层神经网络结构包括 多层神经网络实验报告_cnn_13


多层神经网络结构包括 多层神经网络实验报告_cnn_14

2.1.5 DNN和CNN比较

1) 异:
  • 问题范围:
    · DNN 就是多层网络,只是用了很多技巧,让它能够 deep,所以解决问题比较广泛;
    · CNN 专门解决图像问题的,可用把它看作特征提取层,放在输入层上,最后用MLP 做分类。
  • 结构信息:
    · DNN以向量形式输入,未考虑平面的结构信息,而在图像领域和自然语言处理领域,平面信息很重要。
    · CNN最大的利用了图像的局部信息。因此CNN比DNN处理结果更好。
2) 同:
  • 效率较低:
    · 由于DNN、CNN的输入、输出长度固定,而自然语言处理中的语句长度通常不固定,所以DNN、CNN处理这种问题效率较低。
  • 无法对时间序列上的变化进行建模:
    · DNN和CNN都无法处理时序相关的序列问题。未来解决这些问题,出现了循环神经网络RNN。
  • 局部最优:
    · 随着神经网络的加深,优化函数更容易陷入局部最优,且偏离真正的全局最优,对于有限的训练数据,性能甚至不如浅层网络。

三、实验步骤与过程

3.0 实验说明

本次实验主要针对深度神经网络CNN在人脸识别案例和通用手写识别这两个案例进行实验,并展示其效果。本次实验也将进行调参,调整CNN卷积核大小、个数;池化层大小、步长等各个参数来探讨CNN网络在这些案例上的性能。

3.1 人脸识别案例

3.1.0 数据集介绍

(1) ORL56_46人脸数据集
该数据集共有40个人,每个人10张图片。每张图片像素大小为56×46。本次实验随机取每个类的80%作为训练样本集;每个类的10%作为验证集;每个类的10%作为测试集。

(2) Yale人脸数据集
Yale人脸数据库,其中有15人,每人11张图片。适用于模式识别领域,是人脸识别算法实验的不二之选,图片均为100*100尺寸。本次实验随机取每个类的9/11作为训练样本集;每个类的1/11作为验证集;每个类的1/11作为测试集。

(3) FERET人脸数据集
该数据集一共200人,每人7张,已分类,灰度图,80x80像素。第1幅为标准无变化图像,第2,5幅为大幅度姿态变化图像,第3,4幅为小幅度姿态变化图像。第7幅为光照变化图像。本次实验随机取每个类的5/7作为训练样本集;每个类的1/7作为验证集;每个类的1/7作为测试集。

3.1.1 数据处理与CNN网络设计

实验序号(1):定义CNN神经网络——输入为图像并给定图像大小;卷积核为3x3, 10个;采用5x5步长为2的最大池化。
实验序号(2):定义CNN神经网络——输入为图像并给定图像大小;卷积核为5x5, 10个;采用5x5步长为2的最大池化。
实验序号(3):定义CNN神经网络——输入为图像并给定图像大小;卷积核为3x3, 20个;采用5x5步长为2的最大池化。
实验序号(4):定义CNN神经网络——输入为图像并给定图像大小;卷积核为5x5, 20个;采用5x5步长为2的最大池化。
实验序号(5):定义CNN神经网络——输入为图像并给定图像大小;卷积核为3x3, 10个;采用2x2步长为2的最大池化。
实验序号(6):定义CNN神经网络——输入为图像并给定图像大小;卷积核为5x5, 10个;采用2x2步长为2的最大池化。

3.1.2 训练、测试与结果展示:

训练参数信息如下:

轮:共30轮

最大迭代次数:1170次 (训练结束状态:到达最后一次迭代)

硬件资源:单GPU

学习率调度:常数

学习率:0.01

多层神经网络结构包括 多层神经网络实验报告_人工智能_15


多层神经网络结构包括 多层神经网络实验报告_机器学习_16


多层神经网络结构包括 多层神经网络实验报告_人工智能_17

3.2 通用手写体识别案例

3.2.0 数据集介绍

使用 digitTrain4DArrayData 和 digitTest4DArrayData 以四维数组的形式加载训练图像和验证图像。输出 YTrain 和 YValidation 是以度为单位的旋转角度。训练数据集和验证数据集各包含 5000 个图像。MATLAB自带该数据集,本次实验直接调用digitTrain4DarrayData和digitTest4DarrayData,可以直接通过以下方式导入训练数据和测试数据:

[XTrain, YTrain] = digitTrain4DArrayData;%导入训练数据
[XTest, YTest] = digitTest4DArrayData;%导入测试数据

在这一部分实验中,我将完善人脸识别模块没有考虑到的参数部分——“激活函数”。我主要考虑两个常用的激活函数:Softmax函数和ReLU函数。

3.2.1 数据处理与CNN网络设计

实验序号(1):定义CNN神经网络——输入为图像并给定图像大小;卷积核为3x3, 10个;采用2x2步长为2的最大池化。
实验序号(2):定义CNN神经网络——输入为图像并给定图像大小;卷积核为5x5, 10个;采用2x2步长为2的最大池化。
实验序号(3):定义CNN神经网络——输入为图像并给定图像大小;卷积核为3x3, 20个;采用2x2步长为2的最大池化。
实验序号(4):定义CNN神经网络——输入为图像并给定图像大小;卷积核为5x5, 20个;采用2x2步长为2的最大池化。
实验序号(5):定义CNN神经网络——输入为图像并给定图像大小;卷积核为3x3, 20个;采用5x5步长为2的最大池化。
实验序号(6):定义CNN神经网络——输入为图像并给定图像大小;卷积核为5x5, 20个;采用5x5步长为2的最大池化。

3.2.2 训练、测试与结果展示:

训练参数信息如下:
轮:共30轮
最大迭代次数:1170次 (训练结束状态:到达最后一次迭代)
硬件资源:单GPU
学习率调度:常数
学习率:0.01

激活函数为:Softmax

多层神经网络结构包括 多层神经网络实验报告_cnn_18

激活函数为:ReLU

多层神经网络结构包括 多层神经网络实验报告_人工智能_19

四、实验结论或体会

4.1 实验结论

本次实验的实验结论如下:
人脸识别案例实验结论:
在数据集方面,当卷积神经网络模型面对不同数据集时,模型性能表现不同,当数据集规模较小时有着优秀的分类性能,但数据集较大时会出现准确率下降问题,这是由于图像种类、形状和颜色相差较大。
当数据集规模较大时,模型所需要计算的资源会提高,训练效果会受到计算机配置影响,因此,在模型训练过程中只能降低参数要求,延长模型训练时间来完成模型的训练,同样导致准确率下降。
参数设置不好容易造成过拟合的情况,比如FERET数据集的结果呈现,在训练集中的准确率接近100%,而在测试集中只有60%左右。

手写数字识别案例实验结论:
对比了Softmax和ReLU激活函数,其中ReLU激活函数无疑更胜一筹,作为AlexNet提出的激活函数,非常优秀,在很长一段时间内是设计CNN网络的默认激活函数,为网络带来稀疏性。
Softmax激活函数的范围很大,而大脑神经元的状态仅处于抑制或兴奋两种状态,不需要(-∞,∞)这么大的范围来描述它,Softmax函数会在某种程度上造成梯度消失的情况。

4.2 实验体会

本次实验报告对深度神经网络的模型,以及它们的正向传播算法、反向传播算法有了更加深刻的了解,并比较了全连接网络和卷积神经网络CNN两种网络的异同。在采用CNN在人脸识别案例和手写数据集案例的实验上,对神经网络的调参又有了一次深刻的体会。对于CNN网络模型(卷积层、池化层、全连接层),每个层所涉及的参数其实还是相对来说比较多的。实验中主要考虑了卷积核的大小、个数、池化步长和激活函数的设置,并采用了多次多种实验的方式,测得分类任务的识别率和效率。

本次实验也是机器学习这门课的最后一次实验报告,我也认认真真码完了7700+,以表示我对这门课由衷的热爱。不论是大一的计算机导论课,还是这学期我们正式系统地学习机器学习,阅读了近50篇论文的整个过程,毫无疑问,都是我在大学这两年进步最快的时间段。所以我非常感谢赖老师这么尽心尽力去准备机器学习这门课,准备这些论文,也很感谢亲切的助教,分享了很多知识,给出了很多建议,能在大学四年遇到你们尤其幸运!这也是最后一次码让人“又爱又恨”的机器学习实验报告了,竟有些不舍,那就最后用赖神最喜欢(也是我最喜欢)的《生于忧患,死于安乐》结尾吧:

舜发于畎亩之中,傅说举于版筑之间,胶鬲举于鱼盐之中,管夷吾举于士,孙叔敖举于海,百里奚举于市。故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
人恒过,然后能改,困于心,衡于虑,而后作;征于色,发于声,而后喻。入则无法家拂士,出则无敌国外患者,国恒亡,然后知生于忧患而死于安乐也。

机器学习实验报告就此完结撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。!!!

多层神经网络结构包括 多层神经网络实验报告_机器学习_20