因为有在看CS231学习深度学习的简单知识,所以打算整理成blog,持续更新中。。。

一、损失函数loss function

1、SVM:最简单的loss function

其中为真实label对应的分数,为label j对应的分数,Li为每个样本的分类损失,目的是最大化真实label对应分数。

在初始化时,Li的初始值接近于C-1,其中C为分类的个数,因为所有的分数都接近于0,对应为(C-1)个1相加。

所有样本的loss表示为:

2、softmax

二、模型正则项

通常为了防止模型过拟合,使得模型在效果和复杂度之间达到平衡,常常引入正则项。不同的正则项都是为了模型简单化,但是对简单的定义各异。

1) L1范式:鼓励稀疏,也就是鼓励权重向量中0的个数,从而使得模型简单化

2) L2范式:鲁棒性更好,控制向量中的整体分布,各个位置的数值均影响模型更好,即各个位置的数值较为平均。

3) dropout:随机将每一层上的一些神经元设为0,常在全连接层使用。训练时间加长,但训练后鲁棒性增强。

4) bach normalization:见下

5) dropconnect:和3不同,不是丢弃神经元,而是丢弃一些权重矩阵

6) stochastic depth:随机丢弃一些层。

三、Bach Normalization 

深度学习中,通常为了能让激活函数更好地激活,防止梯度消失或者梯度爆炸 (后面会有解释),需要对特征进行归一化,将特征向量变成均值为0,方差为1的向量

通常在全连接层和卷积层之后使用,每一层保证高斯分布,对向量的每个维度进行归一化。

四、正向传播与反向传播

神经网络中最主要的操作就是正向传播与反向传播。

正向传播:值,从输入层开始计算各个层的值,依次向后传播直至输出层;

反向传播:从输出层将损失进行反向传播,传播的是梯度,基于链式法则。

五、卷积神经网络 convolutional neural network (CNN)

全连接层:整图input x,经过权重矩阵W,进行矩阵相乘Wx得到输出

卷积层:对于一个矩阵x(N*N*depth),使用一个卷积核 (filter) w (F*F*depth),在x上按行向下滚动点乘 (将对应位置上的元素相乘),通常会有滚动的间隔stride,以下图为例,对应卷积操作为:

1) 从第一行开始,在对应位置使用卷积核点乘;

2) 将卷积核向右移动一个stride,得到第二幅图,进行点乘;

3) 一直向右以stride为间隔移动,直至到达最右端。然后从第二行开始继续执行1、2步。

所以在经过一次卷及操作后,输出的尺寸大小为s= (N-F)/stride+1,其中F为卷积核的尺寸,N为原始尺寸,输出的大小为s*s*1。通常每一个卷积层会有k个不同的卷积核,所以得到的输出层尺寸为s*s*k。

处理边角位置:使用zero pad在外围一层填空,或是复制边缘值。  目的:在stride=1时保证输出和原始尺寸相同,减少信息损失 (图片尺寸快速减小),减小边角信息损失。

常用的卷积核大小:3*3,5*5,7*7。使用不同的卷积核,为了使输出尺寸保持不变,zero pad的宽度会随之变化。

对于n个m*m的卷积核,对应的参数个数为(m*m*3+1)*n,其中3为depth的值,通常为RGB三通道;1为偏差项;n通常设置为2的次方(32,64,……)。

池化层 pooling layer:不改变深度,只改变尺寸。

max pooling: 使用m*m的filter,stride=m (没有重叠区域,降采样),每一个小块取其中的最大值。

采用max而不是mean的原因:为了表示对应区域的受激程度。

通常的深度网络结构:((CONV-RELU)*N-POOL)*M-(FC-RELU)*K,SOFTMAX

其中RELU为激活函数,下面会讲到。通常

六、激活函数activation function

1、sigmoid

其中第二个分段函数是感知机。

存在的问题:

  1. 饱和神经元使梯度消失:x很大/很小时,梯度变为0,传递到下游节点,梯度消失;
  2. 非零中心函数:当输入wx+b,x均为正值时,梯度均为正或者均为负,在参数更新时只朝一个方向移动,无法得到理想参数,更新效率低;
  3. exp(-x)的计算代价较高。

2、Relu

优点:

  1. 不会饱和,避免梯度消失;
  2. 计算成本小;
  3. 收敛速度快;
  4. 更具有生物合理性。

缺点:

  1. 非零中心函数;
  2. x<0时会出现梯度消失的问题,dead relu
  3. 不适用较大梯度,参数更新后不再激活,梯度为0。

3、Leaky-Relu

4、PRelu

5、tanh

优点:零中心

缺点:仍有梯度消失问题

6、Maxout

优点:不饱和,no die

缺点:参数数量翻倍

7、ELU

七、数据预处理 data preprocessing

1、zero-centered: x-=np.mean

1) 对所有通道取均值 AlexNet

2) 对每个channel取均值 VGGNet

2、normalized data: x/=np.std(X,axis=0)

八、权重初始化 weight initialization

初始化时可能面临的问题:

  • 如果将w均初始化为0,则所有神经元都在做相同的事情。
  • 权值设置过小 (0.01),不断传播后数值变得过小
  • 权值设置过大,饱和,梯度变为0

所以常使用Xavier initialization:

np.random.randn(in,out)/np.sqrt(in)或者

np.random.randn(in,out)/np.sqrt(in/2) 解决Relu每次有一般不会被激活的问题 (x<0)。

九、babysitting参数监控

  1. 如果loss为NaN,说明学习速率设置过大
  2. 如果loss值下降很缓慢,说明学习速率过小
  3. 交叉验证,如果训练集的accuracy不断增加,而测试集不变,说明可能过拟合,需要调整正则化项

十、随机梯度下降 stochasitc gradient decent (SGD)

梯度:沿着梯度方向函数值上升最快

梯度更新:计算好当前状态下损失函数在每个参数下的梯度后,再更新每个参数;而不是计算一个参数就更新一个参数,然后再计算一个参数,因为这时第一个参数已经改变。      这里提到的是同步更新的概念。

缺点:

  • 在某个方向loss下降很快,某个方向loss下降很慢
  • 局部最小点:如下所示红点位置

  • 鞍点:saddle point,一个方向上梯度大于0,一个方向上梯度小于0。在高维数据上容易发生

  • stochastic:曲折着走向optimal,耗时。

十一、学习率learning rate decay method

1、exponential decay

2、 1/t decay

十二、VGG Net

1) smaller filter:3*3卷积核

参数量较小,可以使用更多的filters来增加深度

2) same effective field

使用3层,3*3 C个filters,对应的视野域和7*7的相同,但是参数远远小,3*(3*3*C*C)<(7*7*C*C)。

effective field:第一层3*3;第二层也是3*3,但其中每个点都对应第一层中的一个3*3区域,按照stride=1滚动,所以第二层中的3*3实际对应了原始中5*5的区域;同理,第三层对应到的实际是7*7的区域。

所以视野域和直接使用7*7的卷积核是一样的,但是参数变少了,减少了计算负担。

十三、GoogleNet

无全连接层,含有一个inception layer, 包含了3个conv层和1个pooling层,最终结果将4个输出串联为最终输出,每个conv层,pooling层尺寸相同,深度 (通道数)不同。

但是这种方法,计算量大。解决方案:加入bottleneck层,使用1*1 conv先降低输入深度。

例如,m*m*256经过1*1 filter后,变成m*m*32,这样再传入conv层能够减少运算。

十四、ResNet

Hypothsis: the problem is an optimization problem, deeper models are harder t optimize. 所以并不是越深的网络就一定越好。

深度学习最基础理论知识总结 (CS231课程总结,持续更新)相关推荐

  1. 红外小目标:基于深度学习的红外小目标检测研究方法(持续更新中)

    深度学习红外小目标研究现状_2021.7.6更新 2019年 TBC-Net(TBC-Net: A real-time detector for infrared small target detec ...

  2. 基于深度学习的Image Inpainting (图像修复)论文推荐(持续更新)

    传统的图形学和视觉的研究方法,主要还是基于数学和物理的方法.然而随着近几年深度学习在视觉领域取得的卓越的效果,视觉领域研究的前沿已经基本被深度学习占领.在这样的形势之下,越来越多的图形学研究者也开始将 ...

  3. 《异常检测——从经典算法到深度学习》9 异常检测资料汇总(持续更新抛砖引玉)

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  4. CV深度学习项目调试开发过程中报错记录【持续更新】

    1.加载读取本地数据集报错:can't open/read file: check file path/integrity can't open/read file: check file path/ ...

  5. 深度学习准「研究僧」预习资料:图灵奖得主Yann LeCun《深度学习(Pytorch)》春季课程...

    视学算法报道 编辑:蛋酱 转载自公众号:机器之心 开学进入倒计时,深度学习方向的准「研究僧」们,你们准备好了吗? 转眼 2020 年已经过半,又一届深度学习方向的准研究生即将踏上「炼丹」之路.对于这一 ...

  6. 学习深度学习需要哪些知识_您想了解的有关深度学习的所有知识

    学习深度学习需要哪些知识 有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) Corona was a huge challenge for many ...

  7. 【深度学习人类语言处理】1 课程介绍、语音辨识1——人类语言处理六种模型、Token、五种Seq2Seq Model(LAS、CTC、RNN-T、Neural Transducer、MoChA)

    Deep Learning for Human Ianguage Processing 1. DLHLP-Introduction 1.1 概述 1.2 六种模型与应用 1.2.1 语音到文本 1.2 ...

  8. 深度学习中的知识蒸馏技术(下)

    本文概览: 写在前面: 这是一篇介绍知识蒸馏在推荐系统中应用的文章,关于知识蒸馏理论基础的详细介绍,请看我的这篇文章: 深度学习中的知识蒸馏技术(上) 1. 背景介绍 1.1 简述推荐系统架构 如果从 ...

  9. 微软CTO韦青:深度学习不仅是知识,而是思维范式的转变

    https://www.toutiao.com/a6651052971834475011/ 1956年,达特茅斯人工智能夏季研究计划首次提出"人工智能"一词,标志着这一学科的正式诞 ...

  10. 深度学习入门及高阶经典课程、教程等资源合集(长期整理)

    深度学习资料 经典课程 MIT 图分析 yale 图统计推断 standford 机器学习 stanford 机器学习系统设计 stanford 实用机器学习 纽约大学深度学习2020 吴恩达深度学习 ...

最新文章

  1. 编程能力差!90%输在这点上!谷歌AI专家:其实都是瞎努力!
  2. (原创)7-1 银行业务队列简单模拟 (30 分)
  3. Reactive Streams规范及常见库
  4. python通过指定网卡发包_windows下用UDP 广播在特定网卡上发包
  5. .NET 十五岁,谈谈我眼中的.NET
  6. [译] 逐渐去掌握 React(作为一名 Angular 开发者)
  7. 安装与卸载软件的方法:rpm、yum工具介绍
  8. Eclipse 中侧边栏、控制台、Server打不开怎么办?
  9. 信息率失真函数matlab,基于MATLAB的信息率失真函数计算本科毕业论文.doc
  10. ZK 数据传输四:BackingBean获取spring层类再获取数据(jsp页面或zul页面)
  11. linux系统怎么装锐捷,Linux锐捷上网安装过程
  12. vyos as a firewall
  13. 微信公众号如何添加附件链接
  14. 算法设计技巧: Primal-Dual
  15. JS学习笔记之内置对象 4.21
  16. 有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量为0.00001,第二个里面放2粒,第三个里面放4,第四个8 ,以此类推,棋盘上放的所有芝麻的重量?
  17. 联想笔记本进入pe_联想小新笔记本怎么进入bios设置U盘启动
  18. win7环境下visualsvn-server的搭建与使用(Eclipse)整合版
  19. win10计算机日历不能用,win10系统自带日历应用不显示节日的解决方法
  20. Cocoa: keyEquivalent(NSXXFunctionKey) modifierFlags

热门文章

  1. CAD迷你看图 for Mac(MiniCAD)
  2. Android WorldWind的使用与添加Geoserver影像(一)
  3. 微机实验报告7 定时/计数器应用实验
  4. VUE day_07(7.25)学子商城项目简略版
  5. UDP socket--bind
  6. Mac更新Big Sur或者Monterey后没有管理员账户或当前账户没有管理员权限或rm /var/db/.AppleSetupDone: No such file or directory解决方案
  7. 大量的免费电子书下载地址
  8. 使用Echarts实现中国地图,官方china.js文件
  9. [GitHub][2014-05-13 06:00:39]JavaDsp
  10. java程序员的基本修养_疯狂Java程序员的基本修养 (李刚著) pdf扫描版[63MB]