锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

3.深度学习(一)

时间:2023-02-02 23:00:00 9zj1b2连接器

文章目录

  • 第三章 深度学习基础
    • 3.1 基本概念
      • 3.1.1 神经网络组成?
      • 3.1.2 神经网络的常见模型结构是什么?
      • 3.1.3 如何选择深度学习开发平台?
      • 3.1.4 为何使用深层表示?
      • 3.1.5 为什么深层神经网络难以训练?
      • 3.1.6 深度学习和机器学习有什么区别?
    • 3.2 网络操作与计算
      • 3.2.1 向前传播和反向传播?
      • 3.2.2 神经网络的输出如何计算?
      • 3.2.3 如何计算卷积神经网络输出值?
      • 3.2.4 如何计算 Pooling 层输出值输出值?
      • 3.2.5 理解反向传播的实例
      • 3.2.6 神经网络更深有什么意义?
    • 3.3 超参数
      • 3.3.1 什么是超参数?
      • 3.3.2 如何找到超参数的最优值?
      • 3.3.3 超参数搜索的一般过程?
    • 3.4 激活函数
      • 3.4.1 为什么需要非线性激活函数?
      • 3.4.2 常见的激活函数和图像
      • 3.4.3 常见激活函数的导数计算?
      • 3.4.4 激活函数有哪些性质?
      • 3.4.5 激活函数如何选择?
      • 3.4.6 使用 ReLu 激活函数的优点?
      • 3.4.7 线性激活函数什么时候可以使用?
      • 3.4.8 怎样理解 Relu(< 0 非线性激活函数数吗?
      • 3.4.9 Softmax 定义及作用
    • 参考文献

第三章 深度学习基础

3.1 基本概念

3.1.1 神经网络组成?

神经网络有很多种,其中最重要的是多层感知机。为了详细描述神经网络,我们从最简单的神经网络开始。

感知机

多层感知机中的特征神经元模型称为感知机Frank Rosenblatt于1957年发明。

如下图所示:

其中 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3输出为感知机:

o u t p u t = { 0 , i f ∑ i w i x i ? t h r e s h o l d 1 , i f ∑ i w i x i > t h r e s h o l d output = \left\{ \begin{aligned} 0, \quad if \ \ \sum_i w_i x_i \leqslant threshold \\ 1, \quad if \ \ \sum_i w_i x_i > threshold \end{aligned} \right. output=0,if  iwixithreshold1,if  iwixi>threshold

假如把感知机想象成一个加权投票机制,比如 3 位评委给一个歌手打分,打分分别为 4 4 4分、 1 1 1 分、 − 3 -3 3分,这 3 3 3 位评分的权重分别是 1 、 3 、 2 1、3、2 132,则该歌手最终得分为 4 × 1 + 1 × 3 + ( − 3 ) × 2 = 1 4 \times 1 + 1 \times 3 + (-3) \times 2 = 1 4×1+1×3+(3)×2=1 。按照比赛规则,选取的 t h r e s h o l d threshold threshold 3 3 3,说明只有歌手的综合评分大于 3 3 3 时,才可顺利晋级。对照感知机,该选手被淘汰,因为:

∑ i w i x i < t h r e s h o l d = 3 , o u t p u t = 0 \sum_i w_i x_i < threshold=3, output = 0 iwixi<threshold=3,output=0

− b -b b 代替 t h r e s h o l d threshold threshold,输出变为:

o u t p u t = { 0 , i f    w ⋅ x + b ⩽ 0 1 , i f    w ⋅ x + b > 0 output = \left\{ \begin{aligned} 0, \quad if \ \ \boldsymbol{w} \cdot \boldsymbol{x} + b \leqslant 0 \\ 1, \quad if \ \ \boldsymbol{w} \cdot \boldsymbol{x} + b > 0 \end{aligned} \right. output={ 0,if  wx+b01,if  wx+b>0

设置合适的 x \boldsymbol{x} x b b b ,一个简单的感知机单元的与非门表示如下:

当输入为 0 0 0 1 1 1 时,感知机输出为 0 × ( − 2 ) + 1 × ( − 2 ) + 3 = 1 0 \times (-2) + 1 \times (-2) + 3 = 1 0×(2)+1×(2)+3=1

复杂一些的感知机由简单的感知机单元组合而成:

多层感知机

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

输出层可以不止有 1 1 1 个神经元。隐藏层可以只有 1 1 1 层,也可以有多层。输出层为多个神经元的神经网络例如下图所示:

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

下图包含了大部分常用的模型:

3.1.3 如何选择深度学习开发平台?

​ 现有的深度学习开源平台主要有 Caffe, PyTorch, MXNet, CNTK, Theano, TensorFlow, Keras, fastai等。那如何选择一个适合自己的平台呢,下面列出一些衡量做参考。

参考1:与现有编程平台、技能整合的难易程度

​ 主要是前期积累的开发经验和资源,比如编程语言,前期数据集存储格式等。

参考2: 与相关机器学习、数据处理生态整合的紧密程度

​ 深度学习研究离不开各种数据处理、可视化、统计推断等软件包。考虑建模之前,是否具有方便的数据预处理工具?建模之后,是否具有方便的工具进行可视化、统计推断、数据分析。

参考3:对数据量及硬件的要求和支持

​ 深度学习在不同应用场景的数据量是不一样的,这也就导致我们可能需要考虑分布式计算、多GPU计算的问题。例如,对计算机图像处理研究的人员往往需要将图像文件和计算任务分部到多台计算机节点上进行执行。当下每个深度学习平台都在快速发展,每个平台对分布式计算等场景的支持也在不断演进。

参考4:深度学习平台的成熟程度

​ 成熟程度的考量是一个比较主观的考量因素,这些因素可包括:社区的活跃程度;是否容易和开发人员进行交流;当前应用的势头。

参考5:平台利用是否多样性?

​ 有些平台是专门为深度学习研究和应用进行开发的,有些平台对分布式计算、GPU 等构架都有强大的优化,能否用这些平台/软件做其他事情?比如有些深度学习软件是可以用来求解二次型优化;有些深度学习平台很容易被扩展,被运用在强化学习的应用中。

3.1.4 为什么使用深层表示?

  1. 深度神经网络是一种特征递进式的学习算法,浅层的神经元直接从输入数据中学习一些低层次的简单特征,例如边缘、纹理等。而深层的特征则基于已学习到的浅层特征继续学习更高级的特征,从计算机的角度学习深层的语义信息。
  2. 深层的网络隐藏单元数量相对较少,隐藏层数目较多,如果浅层的网络想要达到同样的计算结果则需要指数级增长的单元数量才能达到。

3.1.5 为什么深层神经网络难以训练?

  1. 梯度消失
    梯度消失是指通过隐藏层从后向前看,梯度会变的越来越小,说明前面层的学习会显著慢于后面层的学习,所以学习会卡住,除非梯度变大。

    ​ 梯度消失的原因受到多种因素影响,例如学习率的大小,网络参数的初始化,激活函数的边缘效应等。在深层神经网络中,每一个神经元计算得到的梯度都会传递给前一层,较浅层的神经元接收到的梯度受到之前所有层梯度的影响。如果计算得到的梯度值非常小,随着层数增多,求出的梯度更新信息将会以指数形式衰减,就会发生梯度消失。下图是不同隐含层的学习速率:

  1. 梯度爆炸
    在深度网络或循环神经网络(Recurrent Neural Network, RNN)等网络结构中,梯度可在网络更新的过程中不断累积,变成非常大的梯度,导致网络权重值的大幅更新,使得网络不稳定;在极端情况下,权重值甚至会溢出,变为 N a N NaN NaN值,再也无法更新。

  2. 权重矩阵的退化导致模型的有效自由度减少。
    ​ 参数空间中学习的退化速度减慢,导致减少了模型的有效维数,网络的可用自由度对学习中梯度范数的贡献不均衡,随着相乘矩阵的数量(即网络深度)的增加,矩阵的乘积变得越来越退化。在有硬饱和边界的非线性网络中(例如 ReLU 网络),随着深度增加,退化过程会变得越来越快。Duvenaud等人2014年的论文里展示了关于该退化过程的可视化:

随着深度的增加,输入空间(左上角所示)会在输入空间中的每个点处被扭曲成越来越细的单丝,只有一个与细丝正交的方向影响网络的响应。沿着这个方向,网络实际上对变化变得非常敏感。

3.1.6 深度学习和机器学习有什么不同?

机器学习:利用计算机、概率论、统计学等知识,输入数据,让计算机学会新知识。机器学习的过程,就是训练数据去优化目标函数。

深度学习:是一种特殊的机器学习,具有强大的能力和灵活性。它通过学习将世界表示为嵌套的层次结构,每个表示都与更简单的特征相关,而抽象的表示则用于计算更抽象的表示。

​ 传统的机器学习需要定义一些手工特征,从而有目的的去提取目标信息, 非常依赖任务的特异性以及设计特征的专家经验。而深度学习可以从大数据中先学习简单的特征,并从其逐渐学习到更为复杂抽象的深层特征,不依赖人工的特征工程,这也是深度学习在大数据时代受欢迎的一大原因。

3.2 网络操作与计算

3.2.1 前向传播与反向传播?

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

前向传播

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

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

反向传播

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

设最终误差为 E E E且输出层的激活函数为线性激活函数,对于输出那么 E E E 对于输出节点 y l y_l yl 的偏导数是 y l − t l y_l - t_l yltl,其中 t l t_l tl 是真实值, ∂ y l ∂ z l \frac{\partial y_l}{\partial z_l} zlyl 是指上面提到的激活函数, z l z_l zl 是上面提到的加权和,那么这一层的 E E E 对于 z l z_l zl 的偏导数为 ∂ E ∂ z l = ∂ E ∂ y l ∂ y l ∂ z l \frac{\partial E}{\partial z_l} = \frac{\partial E}{\partial y_l} \frac{\partial y_l}{\partial z_l} zlE=ylEzlyl。同理,下一层也是这么计算,只不过 ∂ E ∂ y k \frac{\partial E}{\partial y_k} ykE 计算方法变了,一直反向传播到输入层,最后有 ∂ E ∂ x i = ∂ E ∂ y j ∂ y j ∂ z j \frac{\partial E}{\partial x_i} = \frac{\partial E}{\partial y_j} \frac{\partial y_j}{\partial z_j} xiE元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章