计算机视觉学习笔记(一)---深度学习基础和传统神经网络介绍


前言

  由于在硕士期间的研究内容是深度学习相关,因此用博客来记录pytorch和神经网络的学习过程,同时也欢迎大家来讨论交流


一、深度学习的一般流程

1.数据获取

  数据获取是整个任务的开始,无论训练什么模型、完成什么样的需求 都需要先得到相关数据以及标签,在学习期间的数据与标签可以从很多数据网站轻松得到,但是在实际项目中则需要自己去收集提取。

2.特征工程

  特征工程简单来理解就是提取你所获得数据的特征,所以数据的预处理和特征提取也是最核心的步骤,后续文章也将会针对每个任务写出数据预处理的过程。
数据的特征决定了模型的上限,而我们选择的算法和各种参数的定义是努力逼近这个上限

3.建立模型

  我在初学阶段选择自己建立网络结构来训练数据,但是后期将介绍迁移学习,使用一些经典网络结构进行微调来适配自己的任务,经典的网络结构设计更合理,模型拟合效果也更好。

4.评估应用

  这部分就是对自己训练的模型进行评价,评价依据也很多:准确率、误差函数、F1值、查全率、查准率,至于选择哪种方式评估模型需要根据实际任务需求来做,我至今记得本科期间老师举的例子,在癌症判断模型中,我们更希望查出全部的癌症患者,因此我们会更加关注查全率,此时对准确率的要求就相对较低。

二、神经网络的整体架构与基本流程

1.整体架构

神经网络基本架构
  可以看到,传统神经网络有三层:输入层(input layer)、隐藏层(hidden layer)以及输出层(output layer)。每层的基本单元即神经元(图中白色圆圈),每层的神经元之间均采用全连接方式,神经网络是非线性的,而这个非线性过程是由激活函数完成。

2.前向传播

神经网络的前向传播,我理解为计算预测结果的过程,可以分为两步
  第一步先进行矩阵乘法,即 f=W*X ,W是各层之间的权重矩阵,在训练之前随机初始化,并在以后的训练过程中不断更新,X就是输入数据/上一层输出。
  第二步就是通过激活函数,常用的激活函数有sigmoid、relu、tanh等,通过激活函数后的结果就是该层神经元的最终输出也是下一层的输入。
  实际传播过程就是反复进行上述两个步骤直至到达输出层

3.反向传播

  如前文所述,前向传播使用的权重矩阵是随机初始化的,因为输出结果肯定与真实标签相差甚远,因此我们需要对权重矩阵进行优化,在pytorch中有很多优化器可供选择,均在后续文章中介绍。
  如果想要更新权重,需要先计算梯度,这个过程就是反向传播。我自己记忆口诀就是 :反向传播算梯度、优化器执行更新。
  那么这个要算的梯度是谁的梯度呢,首先要明确一个事情,我们更新权重的目的是什么,当然是为了让训练误差尽可能地低,只有这样才能获得更好的预测结果。因此我们要沿着误差的梯度下降的方向更新权重。
  既然是计算误差的梯度,那就要先求出误差,针对不同的任务需要选择不同的误差函数,在pytorch中均有提供,具体使用也将在后续进行介绍

三、DROP-OUT

  我们知道,在神经网络中过拟合是一个非常头疼的问题,为了改善过拟合状态,我们引入了DROP-OUT,其逻辑很简单,就是随机“杀死”网络中的部分神经元以防止特征过多导致过拟合,在pytorch中也提供了相应的函数可以调用。

总结

  本文对神经网络的基本原理和过程进行了概要说明,在下一篇文章中将以实际案例来演示各个步骤的实现以及如何使用pytorch的内置方法来搭建一个简单的神经网络

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远山0128

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值