深度学习概述
深度学习的特点
- 优点
- 性能更好
- 不需要特征工程
- 在大数据样本下有更好的性能
- 能解决某些传统机器学习无法解决的问题
- 缺点
- 小数据样本下性能不如机器学习
- 模型复杂
- 可解释性弱
深度学习与传统机器学习相同点
深度学习、机器学习是同一问题不同的解决方法
- 目的相同:都是利用机器自我学习能力,解决软件系统的难题
- 基本问题相同:回归问题、分类问题、聚类问题
- 基本流程相同:数据准备 → 模型选择 → 模型构建/训练 → 评估优化 → 预测
- 问题领域相同:监督学习、非监督学习、半监督学习
- 应用领域相同:推荐、计算机视觉、自然语言处理、语音处理、强化学习
- 评价标准相同
- 回归问题:均方误差;R2值
- 分类问题:交叉熵;查准率、召回率、F1综合系数
- 模型泛化能力:过拟合、欠拟合
感知机
生物神经元
感知机(Perceptron),又称人工神经元(Artificial neuron),它是生物神经元在计算机中的模拟。下图是一个生物神经元示意图:
![](https://i-blog.csdnimg.cn/direct/bfd03b7f0e5a4a0091f4cd8f3baab5b4.png)
感知机
感知机(Perceptron),又称神经元(Neuron,对生物神经元进行了模仿)是神经网络(深度学习)的起源算法,1958年由康奈尔大学心理学教授弗兰克·罗森布拉 特(Frank Rosenblatt)提出,它可以接收多个输入信号,产生一个输出信号。
![](https://i-blog.csdnimg.cn/direct/bdfcabb4590c4cadac577250c4d4d014.png)
感知机功能
神经元作为回归器 / 分类器
逻辑和(线性分类)
逻辑或(线性分类)
感知机局限
感知机的局限在于无法处理“异或”问题(非线性问题)
![](https://i-blog.csdnimg.cn/direct/347415e534ab4cb8a7416c4b2493ae32.png)
多层感知机
1975年,感知机的“异或”难题才被理论界彻底解决,即通过多个感知机组合来解决该问题,这种模型也叫多层感知机(Multi-Layer Perceptron,MLP)。如下图所示,神经元节点阈值均设置为0.5
![](https://i-blog.csdnimg.cn/direct/bd95c8f10b6140bcaabe9031cf791041.png)
神经网络
感知机由于结构简单,完成的功能十分有限。可以将若干个感知机连在一起,形成 一个级联网络结构,这个结构称为“多层前馈神经网络”(Multi-layer Feedforward Neural Networks)。所谓“前馈”是指将前一层的输出作为后一 层的输入的逻辑结构。每一层神经元仅与下一层的神经元全连接。但在同一层之内,
神经元彼此不连接,而且跨层之间的神经元,彼此也不相连。
![](https://i-blog.csdnimg.cn/direct/2dcb538accfc4d23899dc4cc71b97d57.png)
1989年,奥地利学者库尔特·霍尼克(Kurt Hornik)等人发表论文证明,对于任意复杂度的连续波莱尔可测函数(Borel Measurable Function)f,仅仅需要一个隐含层,只要这个隐含层包括足够多的神经元,前馈神经网络使 用挤压函数(Squashing Function)作为激活函数,就可以以任意精度来近似模拟f。如果想增加f的近似精度,单纯依靠增加神经元的数目即可实现。
这个定理也被称为通用近似定理(Universal Approximation Theorem),该定理表明,前馈神经网在理论上可近似解决任何问题。
神经网络要足够深
多层神经网络计算公式
激活函数
定义
在神经网络中,将输入信号的总和转换为输出信号的函数被称为激活
函数(activation function)
为什么使用激活函数
激活函数将多层感知机输出转换为非线性,使得神经网络可以任意 逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
如果一个多层网络,使用连续函数作为激活函数的多层网络,称之 为“神经网络”,否则称为“多层感知机”。所以,激活函数是区 、别多层感知机和神经网络的依据。
常见激活函数
阶跃函数
–
阶跃函数(Step Function)是一种特殊的连续时间函数,是一个从0跳变到1的 过程,函数形式与图像:
![](https://i-blog.csdnimg.cn/direct/6a71a6a5ba6c40af85d40fa0d9e4d378.png)
sigmoid函数
–
sigmoid函数也叫Logistic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实
数映射到(0,1)的区间,可以用来做二分类,表达式:σ(x) = 1 / (1 + e
-x
)
- 优点:平滑、易于求导
- 缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就 会出现梯度消失的情况,从而无法完成深层网络的训练
右侧是导数,x越来越大或者越来越小,导数逐渐为0,梯度逐步转换为0
tanh双曲正切函数
- 优点:平滑、易于求导;输出均值为0,收敛速度要比sigmoid快,从而可以减少迭代次数
- 缺点:梯度消失
- 用途:常用于NLP中
![](https://i-blog.csdnimg.cn/direct/5306b776478e43c89981d26076ce4d4f.png)
ReLU(Rectified Linear Units,修正线性单元)
- 优点:
(1)更加有效率的梯度下降以及反向传播,避免了梯度爆炸和梯度消失问题
(2)计算过程简单
- 缺点:小于等于0的部分梯度为0
- 用途:常用于图像
一般这里x<=0的时候都是给一个特别小的值,不至于让该神经元消失
Softmax
Softmax函数定义如下,其中Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。
Si 表示的是当前元素的指数与所有元素指数和的比值。通过
Softmax函数就可以将多分类的输出数值 转化为相对概率,而这些值的累和为1,常用于神经网络输出层。 表达式:
![](https://i-blog.csdnimg.cn/direct/0ff4bd6c960448f7919621a69fe2586e.png)
将预测结果转换为相对概率
在分类模型中,有几个类别,输出层就有几个神经元
分类模型的输出层激活函数一般都是softmax
总结
- 感知机:接收多个输入信号,产生一个输出信号,无法解决异或问题
- 多层感知机:将多个感知机组合
- 多层前馈网络:若干个感知机组合成若干层的网络,上一层输出作为下一层输入
- 激活函数:将计算结果转换为输出的值,包括阶跃函数、sigmoid、tanh、ReLU