一、深度学习概念
1.深度学习定义
深度学习定义:一般是指通过训练多层网络结构对未知数据进行分类或回归
深度学习分类:有监督学习方法——深度前馈网络、卷积神经网络、循环神经网络等;
无监督学习方法——深度信念网、深度玻尔兹曼机,深度自编码器等。
深度学习的思想:
深度神经网络的基本思想是通过构建多层网络,对目标进行多层表示,以期通过多层的高层次特征来表示数据的抽象语义信息,获得更好的特征鲁棒性。
2.深度学习应用
图像处理领域主要应用
图像分类(物体识别):整幅图像的分类或识别
物体检测:检测图像中物体的位置进而识别物体
图像分割:对图像中的特定物体按边缘进行分割
图像回归:预测图像中物体组成部分的坐标
语音识别领域主要应用
语音识别:将语音识别为文字
声纹识别:识别是哪个人的声音
语音合成:根据文字合成特定人的语音
自然语言处理领域主要应用
语言模型:根据之前词预测下一个单词。
情感分析:分析文本体现的情感(正负向、正负中或多态度类型)。
神经机器翻译:基于统计语言模型的多语种互译。
神经自动摘要:根据文本自动生成摘要。
机器阅读理解:通过阅读文本回答问题、完成选择题或完型填空。
自然语言推理:根据一句话(前提)推理出另一句话(结论)。
综合应用
图像描述:根据图像给出图像的描述句子
可视问答:根据图像或视频回答问题
图像生成:根据文本描述生成图像
视频生成:根据故事自动生成视频
3.深度学习主要术语
参考这篇文章:
机器学习与深度学习基础概念详解_GoAl的博客-CSDN博客
二、神经网络基础
1. 神经网络组成
人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。
感知机
感知机是1957年,由Rosenblatt提出会,是神经网络和支持向量机的基础。
感知机是有生物学上的一个启发,他的参照对象和理论依据可以参照下图:(我们的大脑可以认为是一个神经网络,是一个生物的神经网络,在这个生物的神经网络里边呢,他的最小单元我们可以认为是一个神经元,一个neuron,这些很多个神经元连接起来形成一个错综复杂的网络,我们把它称之为神经网络。当然我们现在所说的,在深度学习包括机器学习指的神经网络Neural Networks实际上指的是人工神经网络Artificial Neural Networks,简写为ANNs。我们只是简化了。我们人的神经网络是由这样一些神经元来构成的,那么这个神经元他的一些工作机制呢就是通过这样一个下面图的结构,首先接收到一些信号,这些信号通过这些树突(dendrite)组织,树突组织接收到这些信号送到细胞里边的细胞核(nucleus),这些细胞核对接收到的这些信号,这些信号是以什么形式存在的呢?这些信号比如说眼睛接收到的光学啊,或者耳朵接收到的声音信号,到树突的时候会产生一些微弱的生物电,那么就形成这样的一些刺激,那么在细胞核里边对这些收集到的接收到的刺激进行综合的处理,当他的信号达到了一定的阈值之后,那么他就会被激活,就会产生一个刺激的输出,那么就会形成一个我们大脑接收到的进一步的信号,那么他是通过轴突这样的输出计算的,这就是我们人脑的一个神经元进行感知的时候大致的一个工作原理。)
简单的感知机如下图所示:
设置合适的x和b,一个简单的感知机单元的与非门表示如下:
当输入为0,1 时,感知机输出为0 × ( − 2 ) + 1 × ( − 2 ) + 3 = 1 。
复杂一些的感知机由简单的感知机单元组合而成:
多层感知机
多层感知机由感知机推广而来,最主要的特点是有多个神经元层,因此也叫深度神经网络。相比于单独的感知机,多层感知机的第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.如何寻找超参数的最优值?
在使用机器学习算法时,总有一些难调的超参数。例如权重衰减大小,高斯核宽度等等。这些参数需要人为设置,设置的值对结果产生较大影响。常见设置超参数的方法有:
猜测和检查:根据经验或直觉,选择参数,一直迭代。
网格搜索:让计算机尝试在一定范围内均匀分布的一组值。
随机搜索:让计算机随机挑选一组值。
贝叶斯优化:使用贝叶斯优化超参数,会遇到贝叶斯优化算法本身就需要很多的参数的困难。
MITIE方法,好初始猜测的前提下进行局部优化。它使用BOBYQA算法,并有一个精心选择的起始点。由于BOBYQA只寻找最近的局部最优解,所以这个方法是否成功很大程度上取决于是否有一个好的起点。在MITIE的情况下,我们知道一个好的起点,但这不是一个普遍的解决方案,因为通常你不会知道好的起点在哪里。从好的方面来说,这种方法非常适合寻找局部最优解。稍后我会再讨论这一点。
最新提出的LIPO的全局优化方法。这个方法没有参数,而且经验证比随机搜索方法好。
3.超参数搜索一般过程?
超参数搜索一般过程:
将数据集划分成训练集、验证集及测试集。
在训练集上根据模型的性能指标对模型参数进行优化。
在验证集上根据模型的性能指标对模型的超参数进行搜索。
步骤 2 和步骤 3 交替迭代,最终确定模型的参数和超参数,在测试集中验证评价模型的优劣。
其中,搜索过程需要搜索算法,一般有:网格搜索、随机搜过、启发式智能搜索、贝叶斯搜索。
四、激活函数
1.什么是激活函数
激活函数(Activation functions)对于人工神经网络 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。
2.为什么要使用激活函数?
激活函数对模型学习、理解非常复杂和非线性的函数具有重要作用。
激活函数可以引入非线性因素。如果不使用激活函数,则输出信号仅是一个简单的线性函数。线性函数一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。没有激活函数,神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。
激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。
3.为什么激活函数需要非线性函数?
假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。这样就做不到用非线性来逼近任意函数。
使用非线性激活函数 ,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。
4.常见激活函数
激活函数详细学习参考以下资料:
激活函数的前世今生_不积跬步,无以至千里!
激活函数常见问题总结_不积跬步,无以至千里
深度学习笔记_各种激活函数总结对比_惊鸿一博-CSDN博客
优秀总结参考:
【推荐】深度学习笔记——常用的激活(激励)函数
深度学习: 激活函数 (Activation Functions)
一些选择激活函数的经验法则:
如果输出是0、1值(二分类问题),则输出层选择 sigmoid 函数,然后其它的所有单元都选择 Relu 函数。这是很多激活函数的默认选择,如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 Relu 激活函数。有时,也会使用 tanh 激活函数。