深度学习 CS231N 同济子豪兄 听课笔记

2021.8.5

P2

1.K最近邻 K=1时,以两个不同类别点的垂直平分线作为边界

2.L1距离,到原点L1距离相等的点是以原点为中心的坐标轴

3.K最近邻中,K和距离是两个超参数(用于APP的推荐系统)

4.K折验证是什么

5.SVM损失函数权重大于2,LOSS也为0

6.收敛的判断:LOSS函数逐步降低,若低到满足的要求,认为收敛

7.颜色直方图的作用:不断提取各种特征,颜色、纹理等,颜色仅是其中一个特征作为参考

P3

1.线性分类器,在SVM LOSS函数中(铰链、合页损失函数),安全阈值1的确定,1仅表示一个相对大小,无需过多计较,因为整体大小可以缩放.

2.线性分类器,softmax函数理解,如何将一组数据,既可将其变为0-1间的概率 ,又可保留相对大小,通过先取指数,可以将负数变为正数,同时保留相对大小,但由于指数的特性,会将大的数放大,接着再除以变换后的数据的和,得到概率  

3.(有问题)交叉熵损失函数/对数损失函数/负对数损失函数  极大似然函数的由来:以图片分类为例,在求取出一张测试图片在各个类别下的概率后,要想得到一个类似正确率的值,就是要将各个的概率与它对应的图片相乘,再求和,而求对数可以巧妙地将乘积转换成求和

4.梯度下降,是使得损失函数下降,而不是让梯度下降

5.特征工程,卷积神经网络可以自己提取特征,不以像素为特征,而以是特征工程,有些特征的确定需要人自己构建

P4

1.神经网络的形成:为线性分类器增加一个激活函数,再将每一个神经元一层一层地排列起来,得到全连接神经网络(多层感知机),正是有了激活函数,才给神经网络带来了非线性,否则,无论堆多少层,仍与线性分类器无区别

2.神经网络层数却多,提取的特征越多,但也容易过拟合

3.数学定理已经证明,仅有一层隐含层,只要神经元个数够多,就可以逼近任何函数。但我们希望它更深

4.神经网络的训练方法就是反向传播,通过链式求导,层层展开,就可求得各个权重对应的梯度,具体计算方法为 该梯度 = 局部梯度 * 上层梯度,加法是梯度的均值,乘法是梯度的互换,max是梯度的路由。总而言之,先求局部梯度,再求全局梯度

5.反向传播中,对输入是向量,输出是标量,以及输入输出均是向量的情况如何处理

6.全连接神经网络(即多层感知机)是将线性和非线性的函数组合起来,比单纯的线性函数有更强的表示能力

7.前向传播是为了求损失函数,反向传播是求损失函数对于每一个权重的偏导数,进而对泉州进行优化

8.输出层不用激活函数,使用softmax函数是为了将它变成概率的形式

9.(交互式界面)使用神经元,其实就是将非线性拟合呈线性的过程,对于只有一个隐含层的神经网络中,要将一个圆形的区域区分出来,至少需要3个神经元,因为两个神经元只能拟合出两条线性边界,无法构成一个封闭的图形

2021.8.6

P5

1.在对一张图片拉平之后,会丢失图片的空间信息,比如一些像素原来是在一块的,比较接近,拉平成一个列向量之后,这些信息就会丢失,因此,引入了卷积的概念。卷积可以相对完整地保留一个特征

2.卷积是对图片的特征进行提取,池化层是对特征的后处理,可以将其模糊,大而化之,全连接层是将不同的特征进行处理,进行汇总

3.由于卷积的过程中,原图中边缘的地方参与的运算次数很少,而中间参与的运算次数很多,这里的做法就是在原图的边缘增添一圈零,称之为padding;这个过程还有一个作用就是增加feature map的维度;每一feature map的维度都是原图维度少2,这样在多次操作过后feature map的维度就会很低,而padding的操作会增大原图的维度,进而增大feature map的维度

3.卷积核就相当于定义的一个特征,在原图卷积的过程中就相当于一个提取的过程,如果原图上匹配到了这个特征,那么对应的feature map的值就很高

4.为什么将得到的featrue map摞起来,为什么要进行多步卷积

5.池化就是在得到每个特征中,选出一个代表,如最大池化,平均池化,正是由于池化,可以保证平移不变性。池化,又叫降采样。池化的作用:减少参数量,防止过拟合(保留主要矛盾),引入平移不变性

6.1*1卷积核的优势

2021.8.7 

P6

1.P5 LE-NET5可视化 (cs.ryerson.ca/~aharley/vis/conv/)

2.P6 projector.tensorflow.org  T-SNE方法降维,可视化CNN

3.导向反向传播,会传递更加清晰的轮廓,减少噪声。

在前向传播过程中,负值会被抹去,变为0

普通反向传播,对激活值为正的神经元回传梯度

反卷积,对梯度为正的回传梯度

导向反向传播,对梯度和激活值都为正的才会回传

2021.8.8 

P6

1.visualize the data gradient 虽然没有目标检测的标签与定位标签,但是通过分类标签训练出来的模型,求原图的导数可以实现分割的效果,为半监督学习

2.对抗神经网络,将一个图像每一个像素向另一个类别的方向跟新一点,肉眼仍可区分出类别,但神经网络却会指鹿为马

3.从输出层得到一个CNN编码,要将其重构回原图,需要再训练一个神经网络,构造一个损失函数,传到全连接层时会有拉平的效果,丢失位置信息;而从全连接层之前的最后一个池化层取编码,效果会好很多,重构图像;再往前取编码,效果会更好;越往后,信息损失越多。同一个编码,重构图像不一定相同

4.可视化:(1)可以将图像的编码进行降维,利用距离,得到近邻,进而降维(2)在对图片进行遮挡时,放在要识别图像的重要位置,如脸部时,会让识别概率大大降低

5.求神经元损失最小,梯度下降;求激活值最大,梯度上升

P7

1.sigmoid函数

优点:可以将任何数字压缩到0-1间;作为激活函数可以较好地理解神经元

缺点:容易饱和导致梯度消失;输出都是正数,不是关于0对称,每个神经元中,L对W偏导数同号,导致更新方式仅能是所有的W一起增加或者所有的W一起减小,形成一个zig-zag path的优化路径(即若想在第二第四象限内更新,需要先增加再减小或相反);指数运算消耗运算资源

2.双曲正切函数 tanh(x)

仍可以将数据压缩到(0,1),并且关于0对称,以0为中心,避免了zig-zag path的问题,但是仍会有梯度消失的问题

3.ReLU(整流,折线,仍为非线性)

梯度有保留;非常容易计算;收敛比sigmoid/tanh函数快多倍

输出不关于0对称,且当x<0时,梯度是0,这意味着有一些神经元是死的,不会更新,不会产生梯度,原因可能是初始化不良,学习率太大(解决方法是将所有的神经元加上一个0.01的偏置项)

4.Leaky ReLU max(0.01x,x)

同上,但解决了一些神经元是死的问题

(问题:为啥不关于0对称是一个缺点)

反向传播时,同号的话会导致变化的单一性

5.ELU

ReLU的所有有点,且改善了关于原点对称,但是计算量变大

6.PCA主成分分析

7.标准化处理后:损失函数对w的微小变化不会那么敏感,便于以较大的学习率去优化。标准化是将数据从一个相对狭长的分布变成一个较为集中的分布,且分布在0周围

8.每一层的权重全部初始化为同一个数,会导致同一层的所有神经元前向推断和反向传播完全相同,相当于只有一个神经元。而逻辑回归没有隐含层,只有一个神经元,可以接受权重初始化为同一个常数

9.通过W=0.01*np.random.randn(m,n)可以生成一个浮动值为0.01,m行n列且服从标准正态分布的权重

以这种方式初始化,采用tanh作为激活函数,以较小的浮值,由于它的对称性,均值能一直保持在0,而激活值会逐渐接近于0,通过求f对w的偏导数可以发现,当x接近0时,偏导数接近0,会出现梯度消失现象;而以较大的浮动值,由于双曲正切在±1时本来就饱和,会导致f'本身为0,同样出现梯度消失

10.Xavier 初始化 是以上述初始化为本,将输入维度开平方跟,作为惩罚,放在分母上,能够使它自适应调整权重的幅度。输入维度越多,变化的可能性越大,要给它一个更大的惩罚,即浮动值减小

11.Kaiming初始化 将随机初始化 乘上 np.sqrt(2/m)

12Batch nomalization 在训练和测试时的两种行为  这个过程可以起到正则化效果,大大减小过拟合,大大增大收敛速度

2021.8.9

P8

优化器(一阶优化,求一阶偏导)

1.SGD

在梯度较大的地方,由于梯度的方向性可以将梯度方向正交分解,会发现在竖直方向上梯度比水平方向大(而水平方向才是梯度下降的有效方向),这就会导致每次更新,在该优化的方向上前进的距离很有限,更多的前进距离都落在了竖直方向上,即会形成震荡。且这个缺点不能够简单地通过减小学习率来改善,因为减小学习率同样也会减少朝最优点跟新前进的距离

会陷入局部最优点,与鞍点,且二者在高维空间中更为普遍

2.SGD+Momentum

vx = rho * vx + dx 用vx代替dx,可跳过局部最优点和鞍点

(有问题)动量更新,矢量合成

3.Nesterov Momentum 向前看一步,可跳过局部最优点和鞍点。

(有问题)公式推导,代码实现

4.AdaGrad 

由于SGD在梯度较大的位置效果不好,该优化器对这一点进行惩罚,除以一个关于该梯度的式子

由于除以的式子会逐渐增大,最后更新量会越来越小

5.RMSProp 思路同SGD+Momentum思路相似,考虑前一步

6.Adam

采用第一第二动量,第一动量采用梯度一次项的累计(Momentum),第二动量是梯度平方的累计(AdaGrad/RMSProp)

为了使得刚开始第一第二动量有较高的初始值,除以一个特殊处理

7.二阶优化,牛顿法,大大降低收敛速度,当参数量巨大时,海森矩阵过于难求,深度学习一般不采用二阶优化  为解决该问题 拟牛顿法(BGFS)/L-BFGS

学习率

7.学习率过大,易在山间跳跃;学习率过小,收敛速度过慢。常采用先快后满的方式,即选用一个单调递减的函数作为学习率

过拟合

8.早停 在

9.模型集成 训练多个好而不同的模型;兼听则明,民主投票

10.checkpoint集成,在同一个模型不同训练时刻集成

训练过程中周期性地增大学习率,让它跳出当前的局部最优点,进入另一个局部最优点

11.正则化

L1,L2,Elastic(L1+L2)

dropout

训练过程中每一步随机掐死一部分神经元的输出,避免一家独大的局面,但会增大训练时间,P=0.5

打破了神经元之间的联合适应性,这就使得每一个神经元要独当一面;起到了模型集成的效果,当P=0.5时,相当于每一个层都会有两种情况,层数一多,就会出现2 ** n个模型的集成,且这个概率保证了每个模型出现情况是独立的,且模型数目最多(训练阶段需要dropout,而测试阶段不需要dropout,故在测试阶段需要补偿,乘p)

Inverted Dropout 不改变测试时候的代码,只在训练阶段原地补偿,除去p

数据增强:把一根毫毛,吹出一万个猴

dropconnect随机掐死输入

Stochastic Depth 随即掐死一些层

Cut out 对图片的一些地方进行遮挡

Mix up 将不同的图像按照不同的比例混合

超参数的选择

1.检验初始损失函数

2.在小数据集尝试过拟合(有问题,为什么在小数据集上过拟合,在大数据集上就会有比较好的优化)

3.找到让Loss下降较快的学习率

4.最初迈大步

5.最后迈小步

6.并且同时观察损失图像的变化,看有没有过拟合

根据图像的具体趋势参考视频 

2020.8.10

如何加速深度学习,尤其是加速卷积神经网络的计算

P9

1.两个3*3卷积核可以代替一个5*5的卷积核,两层代表两次非线性变换,更能拟合一般函数;有着更少的参数,更少的计算量

2.1*1更佳,network in network,也可长方形

3.将大卷积核替换成多层小卷积核

如何高效计算卷积 

1.将卷积运算变为矩阵乘法

2.卷积快速傅里叶变换  (FFT思路值得学习)

理论:两个函数的卷积 = 两个函数傅里叶变换之后逐元素的乘积

卷积核本质就是二维信号滤波器

3.加速矩阵乘法,算法优化

2020.8.11

P10 迁移学习

迁移学习打破了需要很多数据的魔咒,在较少数据的情况下也能做到很好泛化

1.迁移学习的理论:挑选预训练模型,冻结底层的卷积层,认为已经训练好的卷积层也能提取我们目标特征,然后训练全连接层

2.自身的数据集A同采用的模型使用的数据集B有四种情况

A很小且和B很像,只需要修改最后的线性分类层即可

A很小但和B不像,我们可以不要最后的线性分类层,甚至可以不要后面的卷积层,用预训练模型的前面的卷积层提取到的底层特征,加上添加的线性分类层

A很大且和B很像,对预训练的卷积层不冻结,令其也可微调,但线性分类层还需要随机初始化

A很大但和B不像,放开所有的层

3.ROC曲线

P11   经典卷积神经网络案例分析

LeNet-5

1.奠定了卷积神经网络的基本框架:卷积、池化、卷积、池化……全连接层

2.在处理许多细节为了当年难以跟上的运算

3.全连接时采用了高斯分类,高斯连接层

AlexNet

1.227*227*3 (原文有误,224*224*3)

2.使用relu激活函数有效避免梯度消失

3.使用了局部享用归一化层,已不再使用,现在使用BN

4.使用数据增强

5.使用了dropout 0.5

6.将7个模型进行集成

7.当时给的图片是两层,由于当时的GPU限制,是使用两块GPU并行计算

ZFNet

在AlexNet基础上做出了修改

1.更改了第一层卷积核的形式

2.用更小的卷积核替换了更大的卷积核

但论文注重可视化:

提出反卷积,反池化,可以将feature map重构为图片

VGGNet

1.所有卷积均是3*3,步长为1,padding为1,意味着输入和输出不变

原因:3个3*3卷积可以代替一个7*7卷积,更少的参数,更少的计算量,更深,更能拟合

大的卷积核会导致信息丢失?为什么两个三成三等效于一个五成五?

深但窄  效果好

多个VGG块后跟全连接层  VGG块的个数可自行指定VGG-16 VGG-19

GoogleNet

1.提出了高效的inception模块   四条路并行提取信息,且卷积核尺寸不同,可以从不同的角度提取信息

2.问题:对于同一只狗,在不同的图片中它的大小不同,那么到底采用多大的卷积核来进行卷积呢?

这个模型,即inception moodule给出了解决方案,它用不同尺度的卷积核进行卷积,再将得到的feature map摞起来(多尺度并行卷积)

出现的问题:计算太过复杂

为了解决这个问题,可以采用1*1卷积(升维或者降维;跨通道信息交融;减少参数量;增加模型深度,提高非线性表示能力)

总的来说,参数量少了

2.Global average pooling

ResNet

1.网络不能无限加深,到某种程度,网络再加深,错误就会提高,往往意味着梯度消失

2.深度残差网络的基本原理:x --->F(x) + x 这个F(x)就是对x进行微调,类似于残差定义,x给出了拟合出的曲线,而点到拟合曲线的距离称为残差,F(x)正是对这个微小距离进行调整

3.dense net

4.改善ResNet,Stochastic Depth,随机让某些层失活

SENet

SqueezeNet

Network in Network

1X1卷积核的使用,代替全连接层(占内容,容易过拟合)细节上区分的更好,局部拟合能力更好

全局均值池化?

FractalNet

1.用到drop path,随机灭活一路

MobileNet

部署在可移动设备

2020.8.12

p12

深度学习的硬件算力与软件编程框架

1.CPU 好比院士,能处理的东西有很多,但是每次仅能做一件事,适合处理串行/序列任务,但是可以中断当前任务先进行另一项任务

2.GPU 只能做一些小事,但是靠数量取胜,适合大规模的并行运算

2021.8.15

lecture 4

1.对于超参数而言,先确定学习率

2.对反向传播梯度计算的实践中,用分析梯度做计算,数值梯度来验证分析梯度是否正确

2021.8.18

P13

1.data cloud的理解

2.为什么说数据预处理,即均值为0处理可以在第一次解决sigmoid函数出现的问题

P14

1.Batch Norm/Layer Norm/Instance Norm/Group Norm,分别采用不同处求均值、标准差

2.Batch Normalization中拉姆达和贝塔存在的意义在哪

不同于纯粹的高斯分布,是为了让他更加灵活,甚至可以控制一些饱和度

P20

1.RNN 计算步骤,多对多,计算w梯度时,要计算各个时刻W的梯度再将其求和;而计算其损失与该过程类似,需要各个时段的真实值,计算出各个时段的损失,将损失求和

2.sequence to sequence:many-to-one + one-to-many,对应为编码器和解码器,可用于翻译

3.由于时间序列也许很长,还有一些其他原因,导致参数很多,占用内存很大,很难收敛,采用沿时间截断的反向传播,即规定一个长度,如100,先前向传播100步,在反向传播跟新参数,如此往复

P23

1.由于存梯度爆炸的情况,类似可以采用梯度截断的方法,即规定一个梯度的阈值,当大于这个阈值的时候,做除法让梯度变小,避免出现梯度爆炸的情况;对梯度消失,往往采用一个更为复杂的RNN网络

2.Resnet的出现与简要思路:随着网络的加深,网络出现退化现象,这个出现的原因既不是梯度消失梯度爆炸,也不是过拟合(前者会导致更新速率过快过慢,无法学习;后者会出现训练集准确率高,测试集准确率低的情况)。

简要思路:通过采用恒等映射加上残差的思路,即不从底层开始拟合原本要拟合的复杂的映射,而是采用残差的想法,每次在输入的基础上加上残差,像目标拟合。这样的想法最起码可以使网络不会变得更差,因为残差可以设为0

RNN

1.vanilla neural network :香草模型,即一个输入一个输出

2.逐字符预测,在测试阶段可以将softmax值代替one-hot值吗?存在两个问题,第一是训练和测试时若是输入格式不同会产生偏差;第二是在实际操作中我们的词库会非常大,处理one-hot的稀疏向量会比稠密向量容易

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值