文章目录
- 前言
- 一、深度学习的一般流程
- 1.数据获取
- 2.特征工程
- 3.建立模型
- 4.评估应用
- 二、神经网络的整体架构与基本流程
- 1.整体架构
- 2.前向传播
- 3.反向传播
- 三、DROP-OUT
- 总结
数据获取是整个任务的开始,无论训练什么模型、完成什么样的需求 都需要先得到相关数据以及标签,在学习期间的数据与标签可以从很多数据网站轻松得到,但是在实际项目中则需要自己去收集提取。
我在初学阶段选择自己建立网络结构来训练数据,但是后期将介绍迁移学习,使用一些经典网络结构进行微调来适配自己的任务,经典的网络结构设计更合理,模型拟合效果也更好。
这部分就是对自己训练的模型进行评价,评价依据也很多:准确率、误差函数、F1值、查全率、查准率,至于选择哪种方式评估模型需要根据实际任务需求来做,我至今记得本科期间老师举的例子,在癌症判断模型中,我们更希望查出全部的癌症患者,因此我们会更加关注查全率,此时对准确率的要求就相对较低。

神经网络的前向传播,我理解为计算预测结果的过程,可以分为两步
第一步先进行矩阵乘法,即 f=W*X ,W是各层之间的权重矩阵,在训练之前随机初始化,并在以后的训练过程中不断更新,X就是输入数据/上一层输出。
第二步就是通过激活函数,常用的激活函数有sigmoid、relu、tanh等,通过激活函数后的结果就是该层神经元的最终输出也是下一层的输入。
实际传播过程就是反复进行上述两个步骤直至到达输出层
如前文所述,前向传播使用的权重矩阵是随机初始化的,因为输出结果肯定与真实标签相差甚远,因此我们需要对权重矩阵进行优化,在pytorch中有很多优化器可供选择,均在后续文章中介绍。
如果想要更新权重,需要先计算梯度,这个过程就是反向传播。我自己记忆口诀就是 :反向传播算梯度、优化器执行更新。
那么这个要算的梯度是谁的梯度呢,首先要明确一个事情,我们更新权重的目的是什么,当然是为了让训练误差尽可能地低,只有这样才能获得更好的预测结果。因此我们要沿着误差的梯度下降的方向更新权重。
既然是计算误差的梯度,那就要先求出误差,针对不同的任务需要选择不同的误差函数,在pytorch中均有提供,具体使用也将在后续进行介绍
我们知道,在神经网络中过拟合是一个非常头疼的问题,为了改善过拟合状态,我们引入了DROP-OUT,其逻辑很简单,就是随机“杀死”网络中的部分神经元以防止特征过多导致过拟合,在pytorch中也提供了相应的函数可以调用。
本文对神经网络的基本原理和过程进行了概要说明,在下一篇文章中将以实际案例来演示各个步骤的实现以及如何使用pytorch的内置方法来搭建一个简单的神经网络

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/157515.html