当前位置:首页> AI教程> 深度学习概念与神经网络基础

深度学习概念与神经网络基础

释放双眼,带上耳机,听听看~!
本文介绍了深度学习的定义、分类和应用领域,以及神经网络的基础知识,适合对人工智能和深度学习感兴趣的读者。

👨‍💻作者简介: 大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享,**公众号:**GoAI的学习小屋,免费分享书籍、简历、导图等资料,更有交流群分享AI和大数据,加群方式公众号回复“加群”。

🎉专栏推荐:目前在写一个CV方向专栏,后期会更新不限于深度学习、OCR、目标检测、图像分类、图像分割等方向,目前活动仅19.9,虽然付费但会长期更新且价格便宜,感兴趣的小伙伴可以关注下,有擅长CV的大佬可以联系我合作一起写。➡️专栏地址

🎉学习者福利: 强烈推荐一个优秀AI学习网站,包括机器学习、深度学习等理论与实战教程,非常适合AI学习者。➡️网站链接

🎉技术控福利: 程序员兼职社区招募!技术范围广,CV、NLP方向均可,要求有一定基础,最好是研究生及以上或有工作经验,欢迎大佬加入!群内Python、c++、Matlab等各类编程语言单应有尽有, 资源靠谱、费用自谈,有意向直接➡️访问

一、深度学习概念

1.深度学习定义

深度学习定义:一般是指通过训练多层网络结构对未知数据进行分类或回归

深度学习分类:有监督学习方法——深度前馈网络、卷积神经网络、循环神经网络等;

​ 无监督学习方法——深度信念网、深度玻尔兹曼机,深度自编码器等。

深度学习的思想:

深度神经网络的基本思想是通过构建多层网络,对目标进行多层表示,以期通过多层的高层次特征来表示数据的抽象语义信息,获得更好的特征鲁棒性。

2.深度学习应用

图像处理领域主要应用

  • 图像分类(物体识别):整幅图像的分类或识别
  • 物体检测:检测图像中物体的位置进而识别物体
  • 图像分割:对图像中的特定物体按边缘进行分割
  • 图像回归:预测图像中物体组成部分的坐标

语音识别领域主要应用

  • 语音识别:将语音识别为文字
  • 声纹识别:识别是哪个人的声音
  • 语音合成:根据文字合成特定人的语音

自然语言处理领域主要应用

  • 语言模型:根据之前词预测下一个单词。
  • 情感分析:分析文本体现的情感(正负向、正负中或多态度类型)。
  • 神经机器翻译:基于统计语言模型的多语种互译。
  • 神经自动摘要:根据文本自动生成摘要。
  • 机器阅读理解:通过阅读文本回答问题、完成选择题或完型填空。
  • 自然语言推理:根据一句话(前提)推理出另一句话(结论)。

综合应用

  • 图像描述:根据图像给出图像的描述句子
  • 可视问答:根据图像或视频回答问题
  • 图像生成:根据文本描述生成图像
  • 视频生成:根据故事自动生成视频

3.深度学习主要术语

参考这篇文章:

机器学习与深度学习基础概念详解_GoAl的博客-CSDN博客

二、神经网络基础

1. 神经网络组成

人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。

感知机

感知机是1957年,由Rosenblatt提出会,是神经网络和支持向量机的基础。

感知机是有生物学上的一个启发,他的参照对象和理论依据可以参照下图:(我们的大脑可以认为是一个神经网络,是一个生物的神经网络,在这个生物的神经网络里边呢,他的最小单元我们可以认为是一个神经元,一个neuron,这些很多个神经元连接起来形成一个错综复杂的网络,我们把它称之为神经网络。当然我们现在所说的,在深度学习包括机器学习指的神经网络Neural Networks实际上指的是人工神经网络Artificial Neural Networks,简写为ANNs。我们只是简化了。我们人的神经网络是由这样一些神经元来构成的,那么这个神经元他的一些工作机制呢就是通过这样一个下面图的结构,首先接收到一些信号,这些信号通过这些树突(dendrite)组织,树突组织接收到这些信号送到细胞里边的细胞核(nucleus),这些细胞核对接收到的这些信号,这些信号是以什么形式存在的呢?这些信号比如说眼睛接收到的光学啊,或者耳朵接收到的声音信号,到树突的时候会产生一些微弱的生物电,那么就形成这样的一些刺激,那么在细胞核里边对这些收集到的接收到的刺激进行综合的处理,当他的信号达到了一定的阈值之后,那么他就会被激活,就会产生一个刺激的输出,那么就会形成一个我们大脑接收到的进一步的信号,那么他是通过轴突这样的输出计算的,这就是我们人脑的一个神经元进行感知的时候大致的一个工作原理。)

多层感知机

多层感知机由感知机推广而来,最主要的特点是有多个神经元层,因此也叫深度神经网络。相比于单独的感知机,多层感知机的第i ii层的每个神经元和第i − 1 i-1i−1层的每个神经元都有连接。

输出层可以不止有11个神经元。隐藏层可以只有11层,也可以有多层。

2.神经网络有哪些常用模型结构?

人工神经网络由神经元模型构成,这种由许多神经元组成的信息处理网络具有并行分布结构。

其中圆形节点表示一个神经元,方形节点表示一组神经元。

3.前向传播和反向传播介绍

神经网络的计算主要有两种:前向传播(foward propagation, FP)作用于每一层的输入,通过逐层计算得到输出结果;反向传播(backward propagation, BP)作用于网络的输出,通过计算梯度由深到浅更新网络参数。

前向传播

假设上一层结点i , j , k , . . . i,j,k,…i,j,k,…等一些结点与本层的结点w ww有连接,那么结点w ww的值怎么算呢?就是通过上一层的i , j , k , . . . i,j,k,…i,j,k,…等结点以及对应的连接权值进行加权和运算,最终结果再加上一个偏置项(图中为了简单省略了),最后在通过一个非线性函数(即激活函数),如R e L u ReLuReLu,s i g m o i d sigmoidsigmoid等函数,最后得到的结果就是本层结点w ww的输出。

最终不断的通过这种方法一层层的运算,得到输出层结果。

反向传播

反向传播——通俗易懂_chengchaowei的博客-CSDN博客_反向传播

由于我们前向传播最终得到的结果,以分类为例,最终总是有误差的,那么怎么减少误差呢,当前应用广泛的一个算法就是梯度下降算法,但是求梯度就要求偏导数,下面以图中字母为例讲解一下:

此部分待更新!

三、超参数

1 什么是超参数?

超参数 : 在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

超参数通常存在于:

1.  定义关于模型的更高层次的概念,如复杂性或学习能力。
2.  不能直接从标准模型培训过程中的数据中学习,需要预先定义。
3.  可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定

超参数具体来讲比如算法中的学习率(learning rate)、梯度下降法迭代的数量(iterations)、隐藏层数目(hidden layers)、隐藏层单元数目、激活函数( activation function)都需要根据实际情况来设置,这些数字实际上控制了最后的参数和的值,所以它们被称作超参数。

2.如何寻找超参数的最优值?

在使用机器学习算法时,总有一些难调的超参数。例如权重衰减大小,高斯核宽度等等。这些参数需要人为设置,设置的值对结果产生较大影响。常见设置超参数的方法有:

  1. 猜测和检查:根据经验或直觉,选择参数,一直迭代。
  2. 网格搜索:让计算机尝试在一定范围内均匀分布的一组值。
  3. 随机搜索:让计算机随机挑选一组值。
  4. 贝叶斯优化:使用贝叶斯优化超参数,会遇到贝叶斯优化算法本身就需要很多的参数的困难。
  5. MITIE方法,好初始猜测的前提下进行局部优化。它使用BOBYQA算法,并有一个精心选择的起始点。由于BOBYQA只寻找最近的局部最优解,所以这个方法是否成功很大程度上取决于是否有一个好的起点。在MITIE的情况下,我们知道一个好的起点,但这不是一个普遍的解决方案,因为通常你不会知道好的起点在哪里。从好的方面来说,这种方法非常适合寻找局部最优解。稍后我会再讨论这一点。
  6. 最新提出的LIPO的全局优化方法。这个方法没有参数,而且经验证比随机搜索方法好。

3.超参数搜索一般过程?

超参数搜索一般过程:

  1. 将数据集划分成训练集、验证集及测试集。
  2. 在训练集上根据模型的性能指标对模型参数进行优化。
  3. 在验证集上根据模型的性能指标对模型的超参数进行搜索。
  4. 步骤 2 和步骤 3 交替迭代,最终确定模型的参数和超参数,在测试集中验证评价模型的优劣。

其中,搜索过程需要搜索算法,一般有:网格搜索、随机搜过、启发式智能搜索、贝叶斯搜索。

四、激活函数

1.什么是激活函数

激活函数(Activation functions)对于人工神经网络 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。**引入激活函数是为了增加神经网络模型的非线性。**没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

2.为什么要使用激活函数?

  1. 激活函数对模型学习、理解非常复杂和非线性的函数具有重要作用。
  2. 激活函数可以引入非线性因素。如果不使用激活函数,则输出信号仅是一个简单的线性函数。线性函数一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。没有激活函数,神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。
  3. 激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

3.为什么激活函数需要非线性函数?

  1. 假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。这样就做不到用非线性来逼近任意函数。
  2. 使用非线性激活函数 ,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。

4.常见激活函数

激活函数详细学习参考以下资料:

激活函数的前世今生_不积跬步,无以至千里!

激活函数常见问题总结_不积跬步,无以至千里

深度学习笔记_各种激活函数总结对比_惊鸿一博-CSDN博客

优秀总结参考:

一些选择激活函数的经验法则:
如果输出是0、1值(二分类问题),则输出层选择 sigmoid 函数,然后其它的所有单元都选择 Relu 函数。这是很多激活函数的默认选择,如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 Relu 激活函数。有时,也会使用 tanh 激活函数。

五、优化方法总结

一、基本的梯度下降方法

梯度下降算法简介:

通俗易懂讲解梯度下降法!

梯度下降学习入门视频推荐:

【梯度下降】人工智能的灵魂,你悟出她的真谛了吗?

【干货】深度学习必备:深入浅出的学习(梯度下降算法)_哔哩哔哩_bilibili

深度学习网络训练过程可以分成两大部分:前向计算过程与反向传播过程。前向计算过程,是指通过我们预先设定好的卷积层、池化层等等,按照规定的网络结构一层层前向计算,得到预测的结果。反向传播过程,是为了将设定的网络中的众多参数一步步调整,使得预测结果能更加贴近真实值。

那么,在反向传播过程中,很重要的一点就是:参数如何更新?或者问的更具体点:参数应该朝着什么方向更新?

显然,参数应该是朝着目标损失函数下降最快的方向更新,更确切的说,要朝着梯度方向更新! 假设网络参数是 θ thetaθ,学习率是 η etaη,网络表示的函数是 J ( θ ) J(theta)J(θ),函数此时对θ thetaθ的梯度为:▽ θ J ( θ ) bigtriangledown_{theta }J(theta)▽θJ(θ)。

在深度学习中,有三种最基本的梯度下降算法:SGD、BGD、MBGD,他们各有优劣。根据不同的数据量和参数量,可以选择一种具体的实现形式,在训练神经网络是优化算法大体可以分为两类:1)调整学习率,使得优化更稳定;2)梯度估计修正,优化训练速度。

(1)随机梯度下降法 SGD

随机梯度下降法 (Stochastic Gradient Descent,SGD),每次迭代(更新参数)只使用单个训练样本( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)})(x(i),y(i)),其中x是输入数据,y是标签。

优点: SGD 一次迭代只需对一个样本进行计算,因此运行速度很快,还可用于在线学习。

缺点:(1)由于单个样本的随机性,实际过程中,目标损失函数值会剧烈波动,一方面,SGD 的波动使它能够跳到新的可能更好的局部最小值。另一方面,使得训练永远不会收敛,而是会一直在最小值附近波动。(2)一次迭代只计算一张图片,没有发挥GPU并行运算的优势,使得整体计算的效率不高。

(2)批量梯度下降法 BGD

批量梯度下降法 (Batch Gradient Descent,BGD),每次迭代更新中使用所有的训练样本

优缺点分析:BGD能保证收敛到凸误差表面的全局最小值和非凸表面的局部最小值。但每迭代一次,需要用到训练集中的所有数据,如果数据量很大,那么迭代速度就会非常慢。

小批量梯度下降法 MBGD

小批(3)量梯度下降法 (Mini-Batch Gradient Descent,MBGD),折中了 BGD 和 SGD 的方法,每次迭代使用 batch_size 个训练样本进行计算。

优缺点分析:因为每次迭代使用多个样本,所以 MBGD 比 SGD 收敛更稳定,也能避免 BGD 在数据集过大时迭代速度慢的问题。因此,MBGD是深度学习网络训练中经常使用的梯度下降方法。

深度学习中,一般的mini-batch大小为64~256,考虑到电脑存储设置和使用的方式,如果mini-batch是2的次方,代码会运行地更快一些。

上图是BGD和MBGD训练时,损失代价函数的变化图。可见BGD能使代价函数逐渐减小,最终保证收敛到凸误差表面的全局最小值;MBGD的损失代价函数值比较振荡,但最终也能优化到损失最小值。

(4) Adagrad

(5)Adadelta

(6)RMSprop 优化器

RMSProp算法的全称叫 Root Mean Square Prop(均方根传递),是 Hinton 在 Coursera 课程中提出的一种优化算法,在上面的 Momentum 优化算法中,虽然初步解决了优化中摆动幅度大的问题。

为了进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度,RMSProp算法对权重 W 和偏置 b 的梯度使用了微分平方加权平均数。优化后的效果如下:蓝色的为Momentum优化算法所走的路线,绿色的为RMSProp优化算法所走的路线。

公式中 Sdw​ 和 Sdb​ 分别是损失函数在前 t−1轮迭代过程中累积的梯度平方动量, β 是梯度累积的一个指数。所不同的是,RMSProp 算法对梯度计算了微分平方加权平均数。这种做法有利于消除了摆动幅度大的方向,用来修正摆动幅度,使得各个维度的摆动幅度都较小。另一方面也使得网络函数收敛更快。

二、Momentum 动量梯度下降

Momentum 主要引入了基于梯度的移动指数加权平均的思想,即当前的参数更新方向不仅与当前的梯度有关,也受历史的加权平均梯度影响。对于梯度指向相同方向的维度,动量会积累并增加,而对于梯度改变方向的维度,动量会减少更新。这也就使得收敛速度加快,同时又不至于摆动幅度太大。

动量梯度下降法作用是加快学习速度,还有一定摆脱局部最优的能力。如下图红色线所示:

动量梯度下降(Momentum)的参数更新表达式如下所示:

其中,λ 表示动量参数momentum;当λ = 0 时,即是普通的SGD梯度下降。0 < λ < 1 ,表示带了动量的SGD梯度下降参数更新方式,λ 通常取0.9。

普通SGD的缺点:SGD很难在沟壑(即曲面在一个维度上比在另一个维度上弯曲得更陡的区域)中迭代,这在局部最优解中很常见。在这些场景中,SGD在沟壑的斜坡上振荡,同时沿着底部向局部最优方向缓慢前进。为了缓解这一问题,引入了动量momentum。

本质上,当使用动量时,如同我们将球推下山坡。球在滚下坡时积累动量,在途中变得越来越快。同样的事情发生在参数更新上:对于梯度指向相同方向的维度,动量会积累并增加,而对于梯度改变方向的维度,动量会减少更新。结果,我们获得了更快的收敛和减少的振荡。

三、Adam 优化器

Adam 是另一种参数自适应学习率的方法,相当于 RMSprop + Momentum,利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。公式如下:

一阶矩和二阶矩 m t 、 v t m_t、v_tmt、vt 类似于动量,将其初始化为:m 0 = 0 , v 0 = 0 m_{0}=0, v_{0}=0m0=0,v0=0

m t 、 v t m_t、v_tmt、vt分别是梯度的一阶矩(均值)和二阶矩(非中心方差)的估计值:

由于移动指数平均在迭代开始的初期会导致和开始的值有较大的差异,所以我们需要对上面求得的几个值做偏差修正。通过计算偏差校正的一阶和二阶矩估计来抵消这些偏差:

然后使用这些来更新参数,就像在 RMSprop 中看到的那样, Adam 的参数更新公式:

在Adam算法中,参数 β1 所对应的就是Momentum算法中的 β 值,一般取0.9,参数 β2 所对应的就是RMSProp算法中的 β 值,一般我们取0.999,而 ϵ 是一个平滑项,我们一般取值为 1 0 − 8 10^{−8}10−8,而学习率则需要我们在训练的时候进行微调。

优化算法小结

深度学习最全优化方法比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam) – 知乎

Pytorch中优化器与学习率衰减方法总结

pytorch中优化器与学习率衰减方法总结_ys1305的博客

本文参考资料:

吴恩达老师深度学习课程笔记

卷积神经网络 — 动手学深度学习 2.0.0

不积跬步,无以至千里!-CSDN博客

五万字总结,深度学习基础。_AI浩-CSDN博客

深度学习入门笔记- 我是管小亮CSDN博客

以上未完待更新,仅供个人学习,侵权联系删除!

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

Hugging Face Hub 强大的机器学习数据源及解决下载问题的方法

2023-11-25 10:05:14

AI教程

谷歌新AI搜索引擎Magi即将发布,挑战微软新必应

2023-11-25 10:19:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索