深度学习基础(一)起源
目录
一、DP的前世
1.perceptron
2.NN
3.DP
二、DP的基础知识
1.convolution
2.padding
3.pooling
4.Flatten
5.fully connected
6.dropout
一、DP的前世
深度学习发展至今经历颇为曲折,上世纪起源,火热起来也是20世纪初的时候,具体时间如下图所示:
1.perceptron
深度学习(DP)的基础来源于19世纪50年代,起初是叫“perceptron”(翻译为感知机/感知器等),包含有输入层、输出层和一个隐藏层。输入的特征向量通过隐藏层变换到达输出层,由输出层得到分类结果。但早期的单层感知机存在一个严重的问题——它对稍微复杂一些的函数都无能为力(如异或操作)。
2.NN
19世纪80年代左右为实现复杂函数功能(如异或、非线性可分等问题),提出“multi-layer perceptron”(多层感知机)/neural network(神经网络)来解决相应问题。主要为加入了隐层概念、非线性激活函数(sigmoid/tanh等)、back propagation(反向传播算法)和Optimizer(优化算法,梯度下降、mini-batch等)。
此时跨入NN时代,但由于神经网络的层数和其实现的功能挂钩:即随着神经网络层数的加深,Optimizer越来越容易陷入局部最优解和梯度消失。(具体来说,我们常常使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。)
3.DP
直至2006年由Hition提出了深度学习的概念“解决”上述问题(实际上只是用一些巧妙的手段最大程度的缓解上述问题),迎来深度学习的热潮,其隐藏层增至7层。后来为“解决”梯度消失,加入了ReLU等函数,形成了如今的DNN,如下图所示。
再后来,由于图像处理等需要局部的信息,这时引入卷积核和max-pooling等操作来解决相应的问题,所以产生了CNN;与此同时,由于要解决时序的问题,产生了RNN,后期的LSTM等都是RNN为解决时间上的梯度消失而生成的网络。
RNN示意图
而在实际应用中,上述网络层都是灵活连接,以便更好的解决实际生成问题。
二、DP的基础知识
DP基础知识较为繁杂,为简单入门说起,就直接由经典的VGG16模型说起。
VGG16模型示意图
如上图所示,模型包括输入层、convolution、pooling、fully connected和输出层,其中包括padding、Flatten和dropout等操作。
1.convolution
卷积过程是基于一个小矩阵,也就是kernel(卷积核),在上面所说的每层像素矩阵上不断按stride(步长)扫过去的,扫到数与卷积核对应位置的数相乘,然后求总和,每扫一次,得到一个值,全部扫完则生成一个新的矩阵。类似于滤波过程。
convolution示意图
2.padding
一般使用的都是Zero padding,细心的人就会发现上述convolution过程中若输入是 n X m 的大小,输出应该为 (n-1)X(m-1)的大小才对,但是这样会容易导致边界上的特征丢失以及其他错误,所以常规做法就是在输入Image的边界上加入一圈0,这样输出也为n X m的大小。
如下图所示,红色的为原来的输入层,在进行convolution前在其边界加一圈0,即灰色格子。
padding示意图
3.pooling
pooling相当于降维采样,我的理解是为了减少计算量以及避免特征重复等问题。pooling有两种,包括maxpooling和meanpooling,常用的是maxpooling。pooling的具体操作就是在一个小矩阵区域内,取该区域的最大值或平均值来代替该区域。
pooling操作示意图
4.Flatten
Flatten 是指将多维的矩阵拉开,变成一维向量来表示。
5.fully connected
fully connected,简称FC,即全连接层。其作用表现为“分类层”(个人觉得该描述不是十分准确,但又找不到更合适的描述),将上层数据映射到样本标记空间的作用。其实FC和卷积层类似,只不过是特殊的卷积层,其卷积核大小为上层特征大小的卷积运算,卷积后的结果为一个节点,就对应全连接层的一个点。
6.dropout
dropout其实是为了解决过拟合问题的。其操作过程:在一次循环中先随机选择神经层中的一些单元并将其临时隐藏,然后再进行该次循环中神经网络的训练和优化过程。在下一次循环中,又将隐藏另外一些神经元,如此直至训练结束。
由于dropout较难理解,加入一个生动的例子来进行讲解。
dropout示意图
参考文献:
1.https://www.leiphone.com/news/201702/ZwcjmiJ45aW27ULB.html
2.书籍《深度学习之tensorflow》
深度学习基础(一)起源相关推荐
- 资源 | Intel发布AI免费系列课程3部曲:机器学习基础、深度学习基础以及TensorFlow基础
翻译 | AI科技大本营(公众号ID:rgznai100) 校对 | 成龙 编辑 | 明明 Intel于近期发布了三门AI系列的免费课程,分别是关于机器学习基础.深度学习基础.TensorFlow基础 ...
- 深度估计相关原理(计算机视觉和深度学习基础)
今天来和大家介绍一下深度估计涉及到的理论知识点,包括计算机视觉基础和深度学习基础. 一.计算机视觉基础 1.1. 针孔相机模型 相机模型,是指采用一个几何模型来描述三维世界中的坐标点映射到二维图像平面 ...
- 深度学习基础(基本概念、优化算法、初始化、正则化等)
2020-04-25 16:29:09 引言 深度学习目前已成为发展最快.最令人兴奋的机器学习领域之一,许多卓有建树的论文已经发表,而且已有很多高质量的开源深度学习框架可供使用.然而,论文通常非常简明 ...
- 【完结】有三AI阿里云的深度学习基础课程暂时完结,欢迎扩散学习
2021年3月份有三AI与阿里天池联合推出了深度学习系列课程, 课程内容包括人工智能与深度学习发展背景,深度学习典型应用,卷积神经网络,循环神经网络,生成对抗网络,深度学习开源框架等内容,目前已经基本 ...
- [深度学习基础] 深度学习基础及数学原理
图像分类 (image classification) 问题是指, 假设给定一系列离散的类别(categories)(如猫, 狗, 飞机, 货车, ...), 对于给定的图像, 从这些类别中赋予一个作 ...
- 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 编程指南
编程指南 目前飞桨(PaddlePaddle,以下简称Paddle)已经同时支持动态图和静态图两种编程方式, 本文主要侧重于介绍静态图的编程方法,关于动态图编程方法,请参考动态图机制-DyGraph. ...
- 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐
人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐 本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明. 说明: 硬件 ...
- Deep learning with python notebooks 笔记 第一章 深度学习基础
第一章 深度学习基础 好的图表比文字传达的信息量多 图1-1帮助理清了人工智能.机器学习和深度学习之间的关系. 图1-2 清晰的阐述了经典程序设计范式和机器学习一种新的编程范式的不同.两种范式引出了两 ...
- 深度学习基础 | NLP大魔王 · BERT
作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Se ...
- 深度学习基础 | 超详细逐步图解 Transformer
作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Seq2 ...
最新文章
- 新公司研发能力低下,何去何从?
- 百度CTO王海峰阐释AI融合创新,降低门槛,按下产业智能化加速键
- 添加和移除disabled属性
- 如何修改控件边框的样式_Excel如何设置表格边框样式,记住这几个关键属性就懂了...
- eclipse ssh连接git an error_JSP+SSH+Mysql实现的学生管理系统
- SpringMVC整合Shiro
- 打游戏提示计算机丢失,Windows7电脑运行某游戏提示“计算机丢失mxvcp120.dll”怎么办...
- linux ora27040,AnyBackup-Oracle 异机恢复任务失败,执行输出提示 ORA-00344、ORA-27040 错误...
- idea新建springboot后端到前端_基于SpringBoot+AntDesign的快速开发平台
- 【图像处理】彩色图像自适应对比度增强(OpenCV实现)
- linux pandas教程_这7种Python的全新玩法,你们一定不知道!(附赠Python教程)
- 泱脏武器库之 CVE 2021-4034 Polkit 提权小结
- 算法竞赛入门经典(第二版)习题解答——第一章
- matlab光学教程,基于MATLAB的物理光学仿真
- PLC编程实例(一) 基本电路
- 【python】使用jieba分词并导出txt
- 渗透技巧总结、渗透技巧
- mysql explain关键字解析
- 什么是管理者的有用功
- BottomNavigationView+Navigation 添加底部导航菜单切换时的fragment过渡动画animation