本文系统梳理了深度学习的基础理论与核心方法,内容涵盖深度学习基础、典型应用场景、神经网络架构、超参数优化,为深度学习入门与进阶提供了结构化知识框架,适合各位技术爱好者参考学习。

一、深度学习概念
(一)深度学习定义
深度学习定义:
一般是指通过训练多层网络结构对未知数据进行分类或回归
深度学习分类:
有监督学习方法--深度前馈网络、卷积神经网络、循环神经网络等;
无监督学习方法--深度信念网、深度玻尔兹曼机,深度自编码器等。
深度学习的思想:
深度神经网络的基本思想是通过构建多层网络,对目标进行多层表示,以期通过多层的高层次特征来表示数据的抽象语义信息,获得更好的特征鲁棒性。
(二)深度学习应用
1.图像处理领域主要应用
(1)图像分类(物体识别):整幅图像的分类或识别
(2)物体检测:检测图像中物体的位置进而识别物体
(3)图像分割:对图像中的特定物体按边缘进行分割
(4)图像回归:预测图像中物体组成部分的坐标
2.语音识别领域主要应用
(1)语音识别:将语音识别为文字
(2)声纹识别:识别是哪个人的声音
(3)语音合成:根据文字合成特定人的语音
3.自然语言处理领域主要应用
(1)语言模型:根据之前词预测下一个单词
(2)情感分析:分析文本体现的情感(正负向、正负中或多态度类型)
(3)神经机器翻译:基于统计语言模型的多语种互译
(4)神经自动摘要:根据文本自动生成摘要
(5)机器阅读理解:通过阅读文本回答问题、完成选择题或完型填空
(6)自然语言推理:根据一句话(前提)推理出另一句话(结论)
4.综合应用
(1)图像描述:根据图像给出图像的描述句子
(2)可视问答:根据图像或视频回答问题
(3)图像生成:根据文本描述生成图像
(4)视频生成:根据故事自动生成视频
二、神经网络基础
(一)神经网络组成
人工神经网络(Artificial Neural Networks,简写为ANNS)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力,神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。
1.感知机
感知机是1957年,由Rosenblatt提出的,是神经网络和支持向量机的基础。
感知机来自生物学上的一个启发,他的参照对象和理论依据可以参照下图:我们的大脑可以认为是一个神经网络,是一个生物的神经网络,这个生物的神经网络的最小单元可以认为是一个神经元,一个neuron,很多个神经元连接起来形成一个错综复杂的网络,我们称之为神经网络,当然我们现在所说的,在深度学习包括机器学习指的神经网络Neural Networks实际上指的是人工神经网络Artificial Neural Networks,简写为ANNS。我们只是简化了。我们人的神经网络是由这样一些神经元来构成的,神经元的一些工作机制如下图所示,首先接收到一些信号,这些信号通过树突(dendrite)组织,树突组织接收到这些信号送到细胞里边的细胞核(nuceus),细胞核接收到的这些信号是以什么形式存在的呢?这些信号比如说眼睛接收到的光学,或者耳朵接收到的声音信号,到树突的时候会产生一些微弱的生物电,形成刺激,细胞核对这些接收到的刺激进行综合的处理,当他的信号达到了一定的阈值之后,他就会被激活,产生一个刺激的输出,形成一个大脑接收到的进一步的信号,他是通过轴突这样的输出计算的,这就是我们人脑的一个神经元进行感知的时候大致的一个工作原理。

简单的感知机如下图所示:

其中x1,x2,xn为感知机的输入,输入一个常量1,实际上这个常量1就相当于w0乘以1,实际上就是w0,w0*1= w0,后边w0的计算是和输入无关的,相当于w0就是一个偏置,相当于i从1开始一直到n,还加上一个w0,其输出为:

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

用-b代替threshold,输出变为:

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

当输入为0,1时,感知机输出为0x(-2)+1x(-2)+3=1。
复杂一些的感知机由简单的感知机单元组合而成:

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

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

(二)神经网络有哪些常用模型结构?
人工神经网络由神经元模型构成,这种由许多神经元组成的信息处理网络具有并行分布结构。

其中圆形节点表示一个神经元,方形节点表示一组神经元。
下图包含了大部分常用的模型:

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

假设上一层结点i,j,k....等一些结点与本层的结点w 有连接,那么结点w的值怎么算呢?就是通过上一层的i,j,k…等结点以及对应的连接权值进行加权和运算,最终结果再加上一个偏置项(图中为了简单省略了),最后再通过一个非线性函数(即激活函数),如ReLu ,siamoid等函数,最后得到的结果就是本层结点w 的输出。
最终不断的通过这种方法一层层的运算,得到输出层结果。
2.反向传播

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

三、超参数
(一)什么是超参数?
超参数:在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
超参数通常存在于:
(1)定义关于模型的更高层次的概念,如复杂性或学习能力。
(2)不能直接从标准模型培训过程中的数据中学习,需要预先定义。
(3)可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定。
超参数具体来讲比如算法中的学习率(learning rate)、梯度下降法迭代的数量(iterations)、隐藏层数目(hidden layers)、隐藏层单元数目、激活函数(activation function)都需要根据实际情况来设置,这些数字实际上控制了最后的参数和的值,所以它们被称作超参数。
(二)如何寻找超参数的最优值?
在使用机器学习算法时,总有一些难调的超参数。例如权重衰减大小,高斯核宽度等等。这些参数需要人为设置,设置的值对结果产生较大影响。常见设置超参数的方法有:
(1)猜测和检查:根据经验或直觉,选择参数,一直迭代。
(2)网格搜索:让计算机尝试在一定范围内均匀分布的一组值。
(3)随机搜索:让计算机随机挑选一组值。
(4)贝叶斯优化:使用贝叶斯优化超参数,会遇到贝叶斯优化算法本身就需要很多的参数的困难。
(5)MITIE方法,好初始猜测的前提下进行局部优化。它使用BOBYQA算法,并有一个精心选择的起始点。由于BOBYQA只寻找最近的局部最优解,所以这个方法是否成功很大程度上取决于是否有一个好的起点。在MITIE的情况下,我们知道一个好的起点,但这不是一个普遍的解决方案,因为通常你不会知道好的起点在哪里。从好的方面来说,这种方法非常适合寻找局部最优解。稍后再讨论这一点。
(6)最新提出的LIPO的全局优化方法。这个方法没有参数,而且经验证明比随机搜索方法好。
(三)超参数搜索一般过程?
超参数搜索一般过程:
(1)将数据集划分成训练集、验证集及测试集。
(2)在训练集上根据模型的性能指标对模型参数进行优化。
(3)在验证集上根据模型的性能指标对模型的超参数进行搜索。
(4)步骤2 和步骤 3 交替迭代,最终确定模型的参数和超参数,在测试集中验证评价模型的优劣。
其中,搜索过程需要搜索算法,一般有:网格搜索、随机搜索、启发式智能搜索、贝叶斯搜索。
本文转载自CSDN博主GoAI,内容有删改
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_36816848/article/details/122286610?ops_request_misc=%257B%2522request%255Fid%2522%253A%252219992d15d94549d5fc88fe228659620a%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=19992d15d94549d5fc88fe228659620a&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-122286610-null-null.142^v100^pc_search_result_base7&utm_term=%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0&spm=1018.2226.3001.4187 |