札记2

1. 介绍了解的神经网络

LeNet

LeNet是最早的卷积神经网络之一。LeNet网络的结构模型,其中包含:

第一模块:包含5×5的6通道卷积和2×2的池化。卷积提取图像中包含的特征模式(激活函数使用sigmoid),图像尺寸从32减小到28。经过池化层可以降低输出特征图对空间位置的敏感性,图像尺寸减到14。
第二模块:和第一模块尺寸相同,通道数由6增加为16。卷积操作使图像尺寸减小到10,经过池化后变成5。
第三模块:包含5×5的120通道卷积。卷积之后的图像尺寸减小到1,但是通道数增加为120。将经过第3次卷积提取到的特征图输入到全连接层。第一个全连接层的输出神经元的个数是64,第二个全连接层的输出神经元个数是分类标签的类别数,对于手写数字识别其大小是10。然后使用Softmax激活函数即可计算出每个类别的预测概率。

AlexNet

2012年ImageNet比赛的冠军
AlexNet与LeNet相比,具有更深的网络结构,包含5层卷积和3层全连接,同时使用了如下三种方法改进模型的训练过程:
数据增广:深度学习中常用的一种处理方式,通过对训练随机加一些变化,比如平移、缩放、裁剪、旋转、翻转或者增减亮度等,产生一系列跟原始图片相似但又不完全相同的样本,从而扩大训练数据集。通过这种方式,可以随机改变训练样本,避免模型过度依赖于某些属性,能从一定程度上抑制过拟合。
使用Dropout抑制过拟合

使用ReLU激活函数减少梯度消失现象

VGG

VGG是当前最流行的CNN模型之一
AlexNet模型通过构造多层网络,取得了较好的效果,但是并没有给出深度神经网络设计的方向。VGG通过使用一系列大小为3x3的小尺寸卷积核pooling层构造深度卷积神经网络,并取得了较好的效果。
在VGG中每层卷积将使用ReLU作为激活函数,在全连接层之后添加dropout来抑制过拟合。
由于卷积核比较小,可以堆叠更多的卷积层,加深网络的深度,这对于图像分类任务来说是有利的。

GoogLeNet

2014年ImageNet比赛的冠军,它的主要特点是网络不仅有深度,还在横向上具有“宽度”。

由于图像信息在空间尺寸上的巨大差异,如何选择合适的卷积核大小来提取特征就显得比较困难了。空间分布范围更广的图像信息适合用较大的卷积核来提取其特征,而空间分布范围较小的图像信息则适合用较小的卷积核来提取其特征。

InceptionV1模块的设计思想,使用3个不同大小的卷积核对输入图片进行卷积操作,并附加最大池化,将这4个操作的输出沿着通道这一维度进行拼接,构成的输出特征图将会包含经过不同大小的卷积核提取出来的特征。Inception模块采用多通路(multi-path)的设计形式 ,每个支路使用不同大小的卷积核,最终输出特征图的通道数是每个支路输出通道数的总和,这将会导致输出通道数变得很大,尤其是使用多个Inception模块串联操作的时候,模型参数量会变得非常大。
为了减小参数量,Inception模块在每个3x3和5x5的卷积层之前,增加1x1的卷积层来控制输出通道数;在最大池化层后面增加1x1卷积层减小输出通道数。

原作者论文中在不同层添加了softmax1和softmax2两个辅助分类器,训练时将三个分类器的损失函数进行加权求和,以缓解梯度消失现象。
Inception V2
用两个3´3的卷积代替5´5的大卷积, 在降低参数的同时建立了更多的非线性变换,使得 CNN 对特征的学习能力更强;提出了著名的 Batch Normalization(简称BN)方法
Inception V3
将一个较大的二维卷积拆成两个较小的一维卷积,比如将7´7卷积拆成1´7卷积和7´1卷积,或者将3´3卷积拆成1´3卷积和3´1卷积,一方面节约了大量参数,加速运算并减轻了过拟合,同时增加了一层非线性扩展模型表达能力。除了在 Inception Module 中使用分支,还在分支中使用了分支(Network In Network In Network);
Inception V4——研究了 Inception Module 结合 Residual Connection,结合 ResNet 可以极大地加速训练,同时极大提升性能,在构建 Inception-ResNet 网络同时,还设计了一个更深更优化的 Inception v4 模型,能达到相媲美的性能。

ResNet

ResNet是2015年ImageNet比赛的冠军,将图像分类识别错误率降低到了3.6%,这个结果甚至超出了正常人眼识别的精度。
引入跳跃连接,有效地解决了网络过深时候梯度消失的问题,使得设计更深层次的网络变得可行。

DenseNet (2017)

以前馈的方式建立每个层与后面其他所有层的密集连接(dense connections)。它解决的问题是:缓解了消失梯度问题,加强了特征传播,鼓励了特征重用,并且大大减少了参数的数量。
虽然也是跨层连接,但是与ResNet将特征图进行像素级相加(element-wise addition)的连接方式不同,DenseNet的密集连接是每一层将之前所有层的输入进行拼接( channel-wise concatenation),之后将输出的特征图传递给之后的所有层。

SENet (2017)

SENet 赢得了2017年 ImageNet LSVRC(ImageNet最后一届)的图像分类任务冠军
模型可以自己学习到不同channel特征的重要程度,更加注重通道间的依赖关系
在这里插入图片描述
SENet可以随意地迁移到任何网络结构中

分组卷积(Group convolution)

feature map分成g组 ,对应的单个卷积核大小降为原来的 1 / g 1/g 1/g,最终参数降低到原来的 1 / g 1/g 1/g
在这里插入图片描述

在这里插入图片描述

理解分组卷积和深度可分离卷积如何降低参数量 - 张佳程的文章 - 知乎
https://zhuanlan.zhihu.com/p/65377955

深度可分离卷积(Depthwise separable convolution)

MobileNet
设feature map 的通道数为M
过程分为深度卷积和逐点卷积:

  • 深度卷积将单个卷积核的channel设为1,同时卷积核个数与feature map 的通道数相同,深度卷积完成后,通道数不变。
  • 逐点卷积为:利用N个通道数为M的1*1卷积,将深度卷积后的特征图进行维度转换,同时可以沟通不同层间的信息。

https://zhuanlan.zhihu.com/p/70703846

注:空间可分离卷积为将NN卷积核分解为N1和1*N的卷积核

SiamFC

目标追踪

即,将目标与待搜索区输入到孪生网络中,分别获得对应feature map,然后做互相关,就是将目标的feature map 作为卷积核,与之作卷积,获得响应图(heatmap)
采用logistic loss作为损失函数:
ℓ ( y , v ) = log ⁡ ( 1 + exp ⁡ ( − y v ) ) \ell(y, v)=\log (1+\exp (-y v)) (y,v)=log(1+exp(yv))

2. svm怎么用于回归

二分类问题的SVM等价于下面这个问题
min ⁡ β , β 0 ∑ i = 1 N ∣ 1 − y i f ( x i ) ∣ + + λ 2 ∥ β ∥ 2 \min _{\beta, \beta_{0}} \sum_{i=1}^{N}\left|1-y_{i} f\left(x_{i}\right)\right|_{+}+\frac{\lambda}{2}\|\beta\|^{2} β,β0mini=1N1yif(xi)++2λβ2
其中 f ( x ) = β 0 + h T ( x ) β f(x)=\beta_{0}+h^{T}(x) \beta f(x)=β0+hT(x)β h h h是核函数,

把约束写在了第一项,即损失函数对于落在Margin正确一侧,且在Margin以外的样本不做惩罚,而在错误一侧或者是Margin以内的样本做线性惩罚。

所以,只需要把惩罚改到margin 外就行,即对于回归问题,将 ∣ y − f ( x ) ∣ |y-f(x)| yf(x)超出 e e e的部分做惩罚,对小于的不惩罚。

min ⁡ β , β 0 ∑ i = 1 N ∣ ( ∣ y i − f ( x i ) ∣ ) − e ∣ + + λ 2 ∥ β ∥ 2 \min _{\beta, \beta_{0}} \sum_{i=1}^{N}\left|(|y_{i} -f\left(x_{i}\right)\right|)-e|_{+}+\frac{\lambda}{2}\|\beta\|^{2} β,β0mini=1N(yif(xi))e++2λβ2
在这里插入图片描述

3. 决策树如何回归

每次寻找一个特征,以及对应的分割点,使得它们可以让分割完的区域的方差之和最小化
在这里插入图片描述

4. PCA

为了在降维后保留最多信息,需要分散化,即使投影后方差最大化
同时,需要让特征间相关性最低。

综上,先将数据每个特征的均值归零,求出协方差矩阵,对角线为方差,其余为协方差,优化目标为
在这里插入图片描述
求出满足D为对角矩阵的P,P的前K行就是变换基
在这里插入图片描述

Pca白化:

白化的目的就是

尽量减小信号各个维度之间的相关性;
让信号各个维度具有相同的方差。

通过pca投影以后(消除了特征之间的相关性),在各个坐标上除以方差(方差归一化)。可以加快收敛

5. 特征值分解、奇异值分解

特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。

奇异值分解是一个能适用于任意的矩阵的一种分解的方法
  奇异值分解(Singular Value Decomposition,SVD)作为一种常用的矩阵分解和数据降维方法,在机器学习中也得到了广泛的应用,比如自然语言处理中的SVD词向量和潜在语义索引,推荐系统中的特征分解,SVD用于PCA降维以及图像去噪与压缩等。

6. 深度学习 输出值变成Nan

1、数据归一化(减均值,除方差,或者加入normalization,例如BN、L2 norm等);
2、更换参数初始化方法(对于CNN,一般用xavier或者msra的初始化方法);
3、减小学习率、减小batch size;
4、加入gradient clipping;
5、数据不干净,需要处理
6、除数为零了,加1e-8,可能0或者负数作为自然对数
7、需要计算loss的数组越界(尤其是自己,自定义了一个新的网络,可能出现这种情况)
8、在某些涉及指数计算,可能最后算得值为INF(无穷)(比如不做其他处理的softmax中分子分母需要计算exp(x),值过大,最后可能为INF/INF,得到NaN,此时你要确认你使用的softmax中在计算exp(x)做了相关处理(比如减去最大值等等))

7. numpy实现maxpooling

import numpy as np

def pooling(feature_map, size=2, stride=2):
    channel=feature_map.shape[0]
    height=feature_map.shape[1]
    width=feature_map.shape[2]
    padding_height=np.uint16(round((height-size+1)/stride))
    padding_width=np.uint16(round((width-size+1)/stride))
    print(padding_height,padding_width)

    pool_out = np.zeros((channel,padding_height,padding_width),dtype=np.uint8)
    
    for map_num in range(channel):  
        out_height = 0  
        for r in np.arange(0,height, stride):  
            out_width = 0  
            for c in np.arange(0, width, stride):  
                pool_out[map_num,out_height, out_width] = np.max(feature_map[map_num,r:r+size,c:c+size])  
                out_width=out_width+1
            out_height=out_height+1
    return pool_out

8. 激活函数、神经元死亡

Sigmoid

存在饱和区,可能导致梯度消失

ReLU

一定程度上解决了梯度消失与梯度爆炸问题
由于线性与非饱和的特点,收敛快

随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。这种神经元的死亡是不可逆转的死亡。
解释:训练神经网络的时候,一旦学习率没有设置好,第一次更新权重的时候,输入是负值,那么这个含有ReLU的神经节点就会死亡,再也不会被激活。因为:ReLU的导数在x>0的时候是1,在x<=0的时候是0。如果x<=0,那么ReLU的输出是0,那么反向传播中梯度也是0,权重就不会被更新,导致神经元不再学习。
也就是说,这个ReLU激活函数在训练中将不可逆转的死亡,导致了训练数据多样化的丢失。在实际训练中,如果学习率设置的太高,可能会发现网络中40%的神经元都会死掉,且在整个训练集中这些神经元都不会被激活。所以,设置一个合适的较小的学习率,会降低这种情况的发生。

Leaky ReLU、PReLU、RReLU

Leaky ReLU中的α是固定的;
PReLU中的α是根据数据变化的;
RReLU中的α是一个在给定范围内随机抽取的值,这个值在测试环节就会固定下来。

优点:
1.神经元不会出现死亡的情况。
2.对于所有的输入,不管是大于等于0还是小于0,神经元不会饱和。
2.由于Leaky ReLU线性、非饱和的形式,在SGD中能够快速收敛。
3.计算速度要快很多。Leaky ReLU函数只有线性关系,不需要指数计算,不管在前向传播还是反向传播,计算速度都比sigmoid和tanh快。

缺点:
1.Leaky ReLU函数中的α,需要通过先验知识人工赋值

集大成者ELU(Exponential Linear Unit)

理想的激活函数应满足两个条件:输出的分布是零均值的,可以加快训练速度。激活函数是单侧饱和的,可以更好的收敛。

LeakyReLU和PReLU满足第1个条件,不满足第2个条件;而ReLU满足第2个条件,不满足第1个条件。两个条件都满足的激活函数为ELU(Exponential Linear Unit)

在这里插入图片描述

优点:
ELU包含了ReLU的所有优点。
神经元不会出现死亡的情况。
ELU激活函数的输出均值是接近于零的。

缺点:
计算的时候是需要计算指数的,计算效率低的问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值