浅析深度学习

1.深度学习的整体流程

2.深度学习的三大要素

a. 数据;
b. 模型;
c. 计算;

3.神经网络的超参数

a. 学习率(learning rate);
b. Epoch;
c. Batchsize;
d. 迭代次数(iteration);

4.神经网络的激活函数

一.深度学习的整体流程

1. 准备数据–>2. 搭建模型–>3. 迭代训练–>4.使用模型

在这里插入图片描述

二.深度学习的三大要素

1.数据
常用数据预处理方法

  • 零均值化
  • 数据归一化
  • PCA和白化
    在这里插入图片描述
    深度学习与机器学习一个重要的区别就是在于数据量的大小。数据预处理在众多深度学习算法中都起到重要作用。首先数据的采集就非常的费事费力,因为这些数据需要考虑各种因素,然后有时还需对数据进行繁琐的标注。
    常用操作
  • 旋转
  • 剪裁
  • 平移
  • 模糊
  • 加噪
    2.模型
    在这里插入图片描述
    在这里插入图片描述
    全连接层会默认将任意维度的输入首先“平铺”成一维矢量,然后执行y=wx+b的操作。需要学习的参数主要有w和b。尽管全连接层参数通常比较多,但由于我们可以利用很多高度优化的基础线性运算库(比如MKL,OpenBLAS等),因此执行效率还是蛮高的。

在这里插入图片描述
我们出来要能够计算清楚卷积后的输出维度外,还需清楚的是:每一个卷积核通常都是3D的,以彩色图像为例,一个卷积核出来有宽和高两个维度外,还有第3个维度用于处理RGB通道。
尽管卷积的操作稍显复杂,但还是属于线性小操作,因为其本质还是加权求和。
在这里插入图片描述
Pooling层的操作方式的卷积很像,都是滑动窗口,但没有需要学习的参数。Pooling有Max Pooling 和Average pooling两种。前者返回窗口范围内的最大值,后者返回窗口内数值的均值。
在这里插入图片描述
训练一个大型的网络,训练数据很少的话,那么很容易引起过拟合(也就是在测试集上的精度很低)。在前向传导时,让某个神经元的激活值以一定的概率p,让其停止工作。
Dropout没有需要学习的参数,只是需要提前设定一个概率p。训练时,按照一定概率p将输出置0;测试时,启用所有节点,但为了数值均衡需要将输出乘以(1-p)。

在这里插入图片描述
卷积通常会使得输出的宽和高变小,反卷积则致力于将输出尺寸变大。反卷积最早应用与图像的语义分割上,因为语义分割要求输出和输入一样大小。反卷积的操作方式类似于卷积,只不过会试下对输入进行插值或者说填空。
在这里插入图片描述
早期的感知机只有三层(一个输入层,一个输出层,一个隐藏层),但是最新的DCNN已经超过1000层。

在这里插入图片描述
LeNet被美国银行和邮政系统用来识别支票,邮政编码中的手写或机打数字。LeNet共有七层,主要使用了卷积层和全连接层,参数也算不多,但准确率很高,其可被商用便可证明。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
3.计算
在这里插入图片描述
Sigmoid交叉熵。一般用于二分类问题,也可以用于相互不独立的一对多问题。比如一个实际上包含三个二分类的问题:是否喜欢吃西瓜 ?是否喜欢吃草莓?是否喜欢吃苹果?可以存在同时喜欢三种水果的人。此外还需要注意的是,进行Sigmoid概率归一化时要注意数值溢出的问题,比如x远小于0,那么我们计算时就不应当使用1/(1+e ^ x) 而应当使用e ^ x/(1+e^x)。

在这里插入图片描述
实际当中我们偶遇更多的其实是独立N分类问题,比如之前提到的手写数字识别分十类,这个时候我们通常使用Softmax Loss。其实该loss也是一种交叉熵,但由于往往使用one shot label,即每个样本的标签是一个1*N维矢量,且矢量只有对应具体类别的位置处数值才为1,其余全部为0,因此该loss函数会退化为-log(pi)的简单形式。
在这里插入图片描述

三.神经网络的超参数

  • 学习率(Learning rate)
    在这里插入图片描述
    对于较小的lr(例如0.01),迭代函数缓慢降低,这意味着梯度下降期间的收敛缓慢。另外虽然lr=1.3是最大的学习率,但是lr=1.0的收敛次数更快。着表明在一定点之后,提高学习率将不再增加收敛速度。
    实际上如果学习率太大,则梯度下降将完全不会收敛,并且可能像右边的所示,对于lr=1.4会爆炸。

  • Epoch

  • Batchsize

  • 迭代次数(iteration)
    在这里插入图片描述
    在训练模型是,如果训练数据过多,无法一次性将数据送人计算,那么我们就会遇到epoch,batchsize,iteration这些概念。为了克服数据量多的问题,我们会选择将数据分成几个部分,即batch,进行训练,从而使得每个批次的数据量可以负载的。将这些batch的数据逐一送入计算训练,更新神经网络的权值,使得网络收敛。

四.神经网络的激活函数

在这里插入图片描述
激活函数通常都是非线性变换,其主要的也是为了让网络拥有更强大的非线性表示能力。
Sigmoid和TanH因为可以对数据范围进行压缩,有些特殊的场合还是有需求的;但更多的网络所采用的其实还是ReLU激活函数(包含一些变种,但还是ReLU更常用)。

在这里插入图片描述
之所以ReLU会取代Sigmoid而占据主流地位,主要原因有:ReLU计算复杂度低,包括求导也简单;ReLU可以解决Sigmoid带来的梯度消失问题,因为ReLU对有效值的梯度始终为1,而Sigmoid的梯度值总小于1/4;ReLU可以让输出稀疏,稀疏是个正则化的好东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值