美文网首页
利用神经网络进行西瓜分类(下)

利用神经网络进行西瓜分类(下)

作者: 白老包 | 来源:发表于2019-08-08 12:15 被阅读0次

上一篇MLP的构建过程就像直男和女神的交往过程,直男觉得和女神聊的挺好,对女神足够了解,结果真正要给女神表白了才发现对女神一点都不了解。我就是那个直男(好像本来就是),对女神(神经网络)的喜好(损失函数的选择)和沟通方式(深度学习框架的使用)看似纯熟实则不知其根底。为了追求到女神,呸!!!!为了更好的学习神经网络。本篇博客打算继续从上次构建的MLP分析神经网络的训练过程和计算量。
PS,上一篇博客发现最终正确率不高。原因是最初版本中代码有错误。pytorch的均方误差损失函数处理分类任务时需要读取one_hot编码的label。而交叉熵损失函数也是这样,但是!!!!!她自动把数值编码转成了one_hot,而均方误差损失函数不会。经过修改以及调节了学习率的规则,正确率基本正常了。详见代码
先说网络的计算量和参数量,这个可以手算,也有工具进行计算。这个工具挺好用。只需要一行代码就可以算出计算量和参数量。对自己的模型只需要

print(profile(net, inputs=(inputs, )))

就可以打印出计算量和参数量。其中net就是我定义的模型。
此外还有一点,如果要打印模型的参数量和计算量,inputs的batch_size一定要为1。否则计算量就是正常的batch_size倍。经过计算这个MLP的计算量和参数量为133.0和83.0。第一层9个神经元,每个神经元6个权重和1个偏置,所以总的参数数量为63,第二层也就是输出层,2个神经元,每个神经元9个权重和1个偏置.总参数为20个,所以整个网络的总参数为63+20=83个。
计算量可以写为(9(6+5+1)+2(9+8+1))最内测括号内三个加数代表权值于输入的乘法计算量,相乘后的加法计算量,偏置加法计算量。为144。看来这个工具没有计算偏置的计算量。不过在卷积神经网络中,偏置的计算量很小,一般不会对整体计算量产生干扰。
训练过程,简单说就是参数的更新过程。在对女神有着朦胧好感的时候(瞎Jβ学深度学习的时候)听过两个和训练相关的词,反向传播和梯度下降。我一直以为是一个东西。现在看书才知道,梯度下降是一种优化方法,是对损失函数求最小(有的是最大)的一种方法,类似于高数的求极值。因为数据的实际分布被视为是一个不知道表达式的函数,深度学习是拟合这个函数。(这里的说法不严谨,只能说帮助理解)。由于不知道表达式,所以不能利用公式找最小值,需要使用梯度下降迭代求最小值(当然可能求的是驻点)。而反向传播我理解的是求取各个偏导数的方法,只有求得了每一层参数的偏导数,才能进行梯度下降。
为了加深理解,我对这个网络进行手动求解,一方面熟悉反向传播的详细过程,一方面查看反向传播的计算量为什么远远大于前向传播。
推导过程如下。

QQ截图20190808113527.jpg
QQ截图20190808113626.jpg
所以隐藏层权重的偏导为:
QQ截图20190808113756.jpg
更新时,乘以(-1*学习率)即可。
我预估更新一次权重需要12次左右的计算,偏置需要11次左右的计算。但是这个计算量和上文提到的工具测算出的前向传播的计算量没有可比性。此外由于传播方向不同,更新一个神经元的所相关神经元的数量也不同。例如更新输出层的神经元只需要一个输入,而更新一个输入层神经元则需要多个上层神经元。所以一些资料上说反向传播所需要的时间约是前向传播的3-4倍。更详细的推导可以参考。这里,和周志华《机器学习》5.3节。
今天记录的比较乱,算是开学前对深度学习基础知识最后的一点拾遗。后面应该想学习一下爬虫,GNN,自然语言处理入门。具体学什么下周回来再看一下吧。

相关文章

  • 利用神经网络进行西瓜分类(下)

    上一篇MLP的构建过程就像直男和女神的交往过程,直男觉得和女神聊的挺好,对女神足够了解,结果真正要给女神表白了才发...

  • 利用粗糙集进行西瓜分类(下)

    跟导师联系了一下,以后一段时间恐怕不会做粗糙集相关的内容,又要回到深度学习的深坑。在只有一张GTX1060 3G的...

  • 分类问题中Sigmoid 与 Softmax 区别

    背景 利用神经网络进行分类任务时,在最后需要经过激活函数,对神经网络的原始输出值进行处理,输出每个类别的概率。本文...

  • 文本分类;数据增强;模型微调 2020-02-25

    文本分类 文本情感分类数据集 使用循环神经网络进行情感分类 使用卷积神经网络进行情感分类文本分类是自然语言处理的一...

  • R语言中神经网络算法的使用

    神经网络 leengsmile2016年9月21日 神经网络 本文介绍R语言中神经网络的使用,并对西瓜数据集做分类...

  • 利用神经网进行西瓜分类(上)

    主要内容:使用pytorch搭建一个简单的神经网络对西瓜数据集进行分类。总结交叉熵损失函数和均方差损失函数的使用范...

  • CNN

    卷积神经网络在图像处理方面具有广泛应用,下面这张图展示了利用CNN来对图片进行特征提取,最后对图片进行分类的应用:...

  • CNN卷积神经网络

    全连接神经网络 在利用全连接神经网络进行图像分类时,网络中的神经元与相邻的层上的每个神经元均连接: 输入层代表每个...

  • 利用粗糙集进行西瓜分类(上)

    最近在学习粗糙集,但是其抽象的概念令我学习异常吃力。我使用的是周炜编著的《粗糙集理论及应用》,这本书概念居多,很多...

  • Python 基于BP神经网络实现多特征多分类

    本文介绍了利用BP神经网络实现对不同半径的圆进行多分类(3分类),特征即为圆的半径。输入层12节点,一个6节点的隐...

网友评论

      本文标题:利用神经网络进行西瓜分类(下)

      本文链接:https://www.haomeiwen.com/subject/gihldctx.html