Tensorflow2.0笔记02——神经网络的设计过程

Tensorflow2.0笔记

本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师

2.神经网络设计过程

​ 我们要用计算机模仿刚刚说到的神经网络连接关系,让计算机具备感性思维。

​ 首先,需要准备数据,数据量越大越好,要构成特征和标签对。如要识别猫,就要有大量猫的图片和这个图片是猫的标签,构成特征标签对。

​ 随后,搭建神经网络的网络结构,并通过反向传播,优化连线的权重,直到模型的识别准确率达到要求,得到最优的连线权重,把这个模型保存起来。

​ 最后,用保存的模型,输入从未见过的新数据,它会通过前向传播,输出概率值,概率值最大的一个,就是分类或预测的结果。图2.1展示了搭建与使用神经网络模型的流程。

image-20210621221815999

2.1 数据集介绍

​ 本讲中采用鸢尾花数据集,此数据集包含鸢尾花花萼长、花萼宽、花瓣长、花瓣宽及对应的类别。其中前4个属性作为输入特征,类别作为标签,0代表狗尾草鸢尾,1代表杂色鸢尾,2代表弗吉尼亚鸢尾。人们通过对数据进行分析总结出了规律:通过测量花的花萼长、花萼宽、花瓣长、花瓣宽,可以得出鸢尾花的类别(如:花萼长>花萼宽且花瓣长/花瓣宽>2 ,则杂色鸢尾)。

​ 由上述可知,可通过if与case语句构成专家系统,进行判别分类。在本讲中,采用搭建神经网络的办法对其进行分类,即将鸢尾花花萼长、花萼宽、花瓣长、花瓣宽四个输入属性喂入搭建好的神经网络,网络优化参数得到模型,输出分类结果。

2.2 网络搭建与训练

​ 本讲中,我们搭建包含输入层与输出层的神经网络模型,通过对输入值乘权值,并于偏置值求和的方式得到输出值,图示如下。

image-20210621224942991

​ 由图2.2可知输出 y=x*w+b,即所有的输入x乘以各自线上的权重w求和加上偏置项b得到输出y。由2.1部分对数据集的介绍可知,输入特征x形状应为(1,4)即1行4列,输出y形状应为(1,3)即1行3列,w形状应为(4,3)即4行3列,b形状应为(3, )即有3个偏置项。

​ 搭建好基本网络后,需要输入特征数据,并对线上权重w与偏置b进行初始化。搭建的神经网络如图2.3所示,w,b初始化矩阵如图2.4所示。在这里,我们输入标签为0的狗尾草鸢尾。

image-20210621225114017

image-20210621225129711

​ 有了输入数据与线上权重等数据,即可按照y=x*w+b方式进行前向传播,计算过程如图2.5所示。

image-20210621225204087

​ 图2.5中输出y中,1.01代表0类鸢尾得分,2.01代表1类鸢尾得分,-0.66代表2类鸢尾得分。通过输出y可以看出数值最大(可能性最高)的是1类鸢尾,而不是标签0类鸢尾。这是由于最初的参数w和b是随机产生的,现在输出的结果是蒙的。

​ 为了修正这一结果,我们用损失函数,定义预测值y和标准答案(标签) y的差距,损失函数可以定量的判断当前这组参数w和b的优劣,当损失函数最小时,即可得到最优w的值和b的值。

​ 损失函数的定义有多种方法,均方误差就是一种常用的损失函数,它计算每个前向传播输出y和标准答案_y的差求平方再求和再除以n求平均值,表征了网络前向传播推理结果和标准答案之间的差距。

​ 通过上述对损失函数的介绍,其目的是寻找一组参数w和b使得损失函数最小。为达成这一目的,我们采用梯度下降的方法。损失函数的梯度表示损失函数对各参数求偏导后的向量,损失函数梯度下降的方向,就是是损失函数减小的方向。梯度下降法即沿着损失函数梯度下降的方向,寻找损失函数的最小值,从而得到最优的参数。梯度下降法涉及的公式如下

image-20210621225334685

​ 上式中,lr表示学习率,是一个超参数,表征梯度下降的速度。如学习率设置过小,参数更新会很慢,如果学习率设置过大,参数更新可能会跳过最小值。

​ 上述梯度下降更新的过程为反向传播,下面通过例子感受反向传播。利用如下公式对参数w进行更新

image-20210621225405829

​ 设损失函数为(w+1)^2,则其对w的偏导数为2w+2。设w在初始化时被随机初始化为5,学习率设置为0.2。则我们可按上述公式对w进行更新:第一次参数为5,按上式计算即 5-0.2X(2X5+2)=2.6

​ 同理第二次计算得到参数为1.16,第三次计算得到参数为0.296......

​ 画出损失函数(w+1)^2的图像,可知w=-1时损失函数最小,我们反向传播优化参数的目的即为找到这个使损失函数最小的w=-1值。

原文地址:https://www.cnblogs.com/wind-and-sky/p/14916323.html