2022年秋季学期人工神经网络第二次作业

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022年秋季学期人工神经网络第二次作业相关的知识,希望对你有一定的参考价值。

◎ 说明: 完成作业可以使用你所熟悉的编程语言和平台,比如 C,C++、MATLAB、Python等。 作业要求链接: : https://zhuoqing.blog.csdn.net/article/details/127356631

 

01 类问题


1.1 BP算法网络学习公式

  下面是分层前馈网络的示意图,分层前馈网络的随机梯度下降算法(BP算法)中,第 n n n 层的权系数 w i j n w_ij^n wijn 的调整公式可以表述为:

Δ w i j n = η ( ∑ k = 1 m n δ k n + 1 w j k n + 1 ) y ′ n ⋅ y i n − 1 \\Delta w_ij^n = \\eta \\left( \\sum\\limits_k = 1^m_n \\delta _k^n + 1 w_jk^n + 1 \\right)y'^n \\cdot y_i^n - 1 Δwijn=η(k=1mnδkn+1wjkn+1)ynyin1

▲ 图1.1.1 具有h+1层的BP网络结构示意图

1.1.1 作业基本要求

  请写出如下图结构1网络结构算法中,每个神经元权系数的更新公式。神经元传递函数可以选择:sigmoid 或者 tanh (双曲正切),同学们自行选择。

▲ 图1.1.2 两种神经网络结构

1.1.2 作业选做要求

  (1)请写出 结构2 网络中每个权系数的更新公式;

  (2)编写程序实现上述两种神经网络结构,求解 XOR 问题。

1.2 三类分类问题

1.2.1 分类问题

  设计一个神经网络(BP,RBF,ELM,SVM) 对于下图中平面坐标系中三类样本进行分类。每一类样本个数都是三个,它们的坐标 ( x 1 , x 2 ) \\left( x_1 ,x_2 \\right) (x1,x2) [ 0 , 1 ] \\left[ 0,1 \\right] [0,1] 之间的五个离散值分布。

▲ 图1.1.1 三类样本处在坐标系中的位置

  下面表格给出了三类样本五组随机分布的位置。可以任意选择一组分布作为训练样本训练网络。

【表1-1 五组三类分类坐标位置】

类别位置1位置2位置3
类别1(0.75;1.0)(0.5;0.75)(0.25;0.0)
类别2(0.5;0.0)(0.0;0.0)(1.0;0.75)
类别3(1.0;1.0)(0.5;0.25)(0.75;0.5)
类别1(1.0;0.75)(1.0;0.5)(0.25;0.5)
类别2(0.0;0.0)(0.0;0.75)(0.75;0.0)
类别3(1.0;1.0)(0.75;1.0)(0.25;0.25)
类别1(0.25;0.5)(0.0;0.25)(0.75;0.0)
类别2(0.0;0.0)(0.75;0.5)(1.0;0.5)
类别3(0.75;0.75)(1.0;0.25)(0.0;0.75)
类别1(0.0;0.0)(0.25;0.5)(0.75;0.0)
类别2(0.75;0.5)(0.25;0.25)(0.5;0.25)
类别3(1.0;0.25)(1.0;1.0)(0.5;0.75)
类别1(0.75;0.5)(0.0;0.5)(0.5;0.75)
类别2(0.0;0.75)(1.0;0.5)(0.75;1.0)
类别3(0.0;0.0)(0.75;0.0)(0.75;0.75)

1.2.2 作业基本要求

(1)使用单隐层BP网络进行分类

  • 绘制出网络结构,并给出算法流程描述;
  • 讨论不同隐层节点个数对于分类结果影响,并给出解决 该分类问题最少隐层节点个数;
  • 对每个样本增加噪声,讨论所训练网络的泛化能力。对样本增加噪声就是在两个坐标 ( x 1 , x 2 ) \\left( x_1 ,x_2 \\right) (x1,x2) 上增加随机数,如下所示;

( x 1 + δ 1 , x 2 + δ 2 ) ,      δ 1 , δ 2 ∈ r a n d ( − 0.25 , 0.25 ) \\left( x_1 + \\delta _1 ,x_2 + \\delta _2 \\right),\\,\\,\\,\\,\\delta _1 ,\\delta _2 \\in rand\\left( - 0.25,0.25 \\right) (x1+δ1,x2+δ2),δ1,δ2rand(0.25,0.25)

  • 在网络训练过程中,请注意样本坐标进行归一化处理,即将坐标 x 1 , x 2 x_1 ,x_2 x1,x2 经过变换,使其数值分布在 ( − 1 , 1 ) \\left( - 1,1 \\right) (1,1) 的对称范围内,对比网络训练效果;

(2)使用RBF网络进行分类

  • 使用正规化RBF网络求解,给出网络参数与仿真结果;
  • 使用广义RBF网络求解,并讨论最少隐层节点个数;

1.2.3 作业选做要求

(1)构建ELM,SVM进行分类

  使用 ELM,SVM 算法完成三类问题的分类。对比四种网络在增加有噪声样本上的泛化性能。

(2)训练数据扩充

  选择一种网络(BF,RBF,ELM,SVM),对比以下两种数据训练后的网络泛化性能:
  (1)仅仅使用没有增加噪声的九个样本进行训练;
  (2)对样本增加随机噪声,扩充到 180 个样本进行训练。扩充后的样本个数可以自己定义;

1.3 MNist分类(选做)

  这个题目是选做内容。

1.3.1 设计要求

  设计一个BP网络完成MNIST手写体识别。也可以在网络上自行搜索下载。

▲ 图1.2.1 MNIST 数据集合示例

1.3.2 作业基本要求

  (1) 人工提取特征:参照课件上[3-4-4]“手写体识别”中介绍的方法,利用数字的边缘方向图与灰度图的降采样作为特征,使用小的神经网络进行训练。训练样本选择5000,测试样本选择2000。

  (2)直接图片输入:直接构造784个节点输入,10个节点输出,自行选择中间隐层数量和节点个数,使用50000数据进行训练,10000个测试样本测试。

  (3) 对比和讨论人工提取特征与直接图片输入两种方法的优缺点。

 

02 归问题


2.1 Peaks函数逼近

2.1.1 设计要求

  使用神经网络逼近 MATLAB中 的 peaks 二维函数。 下面是 peaks 函数的数学表达式。

  下面是 Peaks 函数的图像以及对应的网络样本采样点的分布。

▲ 图2.1.1 Peaks 函数的图像(左)以及训练样本采样点(右)

2.1.2 作业基本要求

  分别设计 BF,RBF 网络完成对 Peaks 函数的逼近。

  (1) 样本数据采样区域在区域内[-4,4]×[-4,4]随机采样。 样本采样的个数自行确定。

  (2) 分别使用BP网络,RBF网络实现上述函数逼近;

  (3) 在BP网络中,讨论训练样本个数与训练样本采样的分布对函数逼近效果的影响。讨论参见课件【3-4-2:函数逼近问题的讨论】。

▲ 图2.1.2 训练样本采集是否集中在函数变化剧烈的区域

  (4)在RBF网络中,讨论隐层神经元尺度参数对于函数逼近的影响。

▲ 图2.1.3 随着训练次数增加对应的函数逼近曲面

2.1.3 作业选做要求

  (1) 在BP网络中,请对比中间隐层传递函数在使用一下两种函数时对于结果的影响:

▲ 图2.1.3 两种不同的神经元传递函数

 

03 据压缩


3.1 ASCII字母压缩

3.1.1 设计要求

  使用神经网络对于下面 26 个字母进行压缩。

▲ 图3.1.1 字符点阵信息与压缩网络

3.1.2 作业基本要求

  (1) 26个字母的数据文件可以从数据文件ascii8×16.txt文件中获取。其中每一行代表一个字母的数据。字母数据为8×16点阵。也可以直接在作业要求网页上,拷贝如下代码段的字符,与 ascii8×16文件中的数据是一样的。

00000000000000000000000000010000000100000001100000101000001010000010010000111100010001000100001001000010111001110000000000000000
00000000000000000000000011111000010001000100010001000100011110000100010001000010010000100100001001000100111110000000000000000000
00000000000000000000000000111110010000100100001010000000100000001000000010000000100000000100001001000100001110000000000000000000
00000000000000000000000011111000010001000100001001000010010000100100001001000010010000100100001001000100111110000000000000000000
00000000000000000000000011111100010000100100100001001000011110000100100001001000010000000100001001000010111111000000000000000000
00000000000000000000000011111100010000100100100001001000011110000100100001001000010000000100000001000000111000000000000000000000
00000000000000000000000000111100010001000100010010000000100000001000000010001110100001000100010001000100001110000000000000000000
00000000000000000000000011100111010000100100001001000010010000100111111001000010010000100100001001000010111001110000000000000000
00000000000000000000000001111100000100000001000000010000000100000001000000010000000100000001000000010000011111000000000000000000
00000000000000000000000000111110000010000000100000001000000010000000100000001000000010000000100000001000000010001000100011110000
00000000000000000000000011101110010001000100100001010000011100000101000001001000010010000100010001000100111011100000000000000000
00000000000000000000000011100000010000000100000001000000010000000100000001000000010000000100000001000010111111100000000000000000
00000000000000000000000011101110011011000110110001101100011011000101010001010100010101000101010001010100110101100000000000000000
00000000000000000000000011000111011000100110001001010010010100100100101001001010010010100100011001000110111000100000000000000000
00000000000000000000000000111000010001001000001010000010100000101000001010000010100000101000001001000100001110000000000000000000
00000000000000000000000011111100010000100100001001000010010000100111110001000000010000000100000001000000111000000000000000000000
00000000000000000000000000111000010001001000001010000010100000101000001010000010101100101100101001001100001110000000011000000000
00000000000000000000000011111100010000100100001001000010011111000100100001001000010001000100010001000010111000110000000000000000
00000000000000000000000000111110010000100100001001000000001000000001100000000100000000100100001001000010011111000000000000000000
00000000000000000000000011111110100100100001000000010000000100000001000000010000000100000001000000010000001110000000000000000000
00000000000000000000000011100111010000100100001001000010010000100100001001000010010000100100001001000010001111000000000000000000
00000000000000000000000011100111010000100100001001000100001001000010010000101000001010000001100000010000000100000000000000000000
00000000000000000000000011010110100100101001001010010010100100101010101010101010011011000100010001000100010001000000000000000000
00000000000000000000000011100111010000100010010000100100000110000001100000011000001001000010010001000010111001110000000000000000
00000000000000000000000011101110010001000100010000101000001010000001000000010000000100000001000000010000001110000000000000000000
00000000000000000000000001111110100001000000010000001000000010000001000000100000001000000100001001000010111111000000000000000000

  (2) 讨论网络隐层节点个数与恢复数据误差之间的关系。

  (3)给出隐层节点在15个时,26个字母压缩恢复后的数据图像。

3.2 图像压缩(选做)

  • 这个题目是选做内容。

3.2.1 设计要求

  使用神经网络对于Lena图像进行压缩。对于隐层节点数目在16~256之间选择几个数目,给出图像压缩的效果以及图像压缩MSE。

M S E = 1 N ⋅ ∑ i = 1 N ( I i o r g − I i r e ) 2 MSE = 1 \\over N \\cdot \\sum\\limits_i = 1^N \\left( I_i^org - I_i^re \\right)^2 MSE=N1i=1N(IiorgIire)2

  其中 I i o r g I_i^org Iiorg 是原始图像灰度, I i r e I_i^re Iire 是恢复图像的灰度值。

▲ 图3.2.1 灰白Lena测试图片

注:Lena的灰度图像可以从网络上寻找并下载。也可以选择其它的图像进行实验。

  注:Lena的灰度图像可以从网络上寻找并下载。也可以选择其它的图像进行实验。下面给出了Lena下载链接:

 

件 ※


4.1 三类问题数据生成

  下面的 Python 程序完成三类分类问题中,三类样本随机生成的算法,同时生成不同样本集合对应位置动图。

from headm import *

pointdim = [30, 31, 32, 35, 34, 33, 36, 37, 38]
xyc = XYCoor(2, 3, 7, 8, 1, 1)
plotbox = 41

plotgif = PlotGIF()

xrange = list(arange(5)/4)*4
yrange = [xx for x in zip(*[list(arange(5)/4)]*4) for xx in x]
xyrange = [(x,y) for x,y in zip(xrange, yrange)]

printf('类别 位置1 位置2 位置3')
for i in range(5):
    random.shuffle(xyrange)

    for j in range(3):
        printff('类别%d '%(j+1),
                str(xyrange[j*3+0]).replace(' ', '').replace(',', ';') + ' ',
                str(xyrange[j*3+1]).replace(' ', '').replace(',', ';') + ' ',
                str(xyrange[j*3+2]).replace(' ', '').replace(',', ';') + ' ')

    printf('- - - -')

    for j in range(len(pointdim)):
        xd,yd = xyrange[j]

        x,y = xyc.XY2Pos(xd,yd)
        tsplocatedop(pointdim[j以上是关于2022年秋季学期人工神经网络第二次作业的主要内容,如果未能解决你的问题,请参考以下文章

2022年秋季学期人工神经网络第三次作业

2022年秋季学期人工神经网络第四次作业

2022年秋季学期人工神经网络第一次作业

2017年秋季学期软件工程第二次作业

2017年秋季学期软件工程第二次作业(陆祈祯)

2021年人工神经网络课程作业处理记录