什么叫深度学习,神经网络,机器学习?
由于以前没有聚焦于这个问题,我到现在都对深度学习与神经网络的区别都不知道,现在开始重新梳理自己的知识架构。
包含关系:人工智能<<机器学习<<神经网络<<深度学习
人工智能(英语:artificial intelligence,缩写为AI)亦称智械、机器智能,指由人制造出来的机器所表现出来的智能,通常是指通过普通计算机程序来呈现人类智能的技术【1】。
机器学习是人工智能的一个分支。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。【2】
神经网络一般是人工神经网络(Artificial Neural Network,即ANN )的简称,是模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构与功能,设计的数学模型与计算模型,用于对未知函数进行估计与逼近【3】。
深度学习(英语:deep learning)是机器学习的分支,是一种以人工神经网络为架构,对资料进行表征学习的算法,由2006年Geoffrey Hinton深度信念网络率先提出“深度”一词,指代一系列训练深层神经网络的方法。有时候深度学习代表的是最少5层的多层神经网络,一般正确命名为深度神经网络。因为存在不是神经网络的深度模型,例如级联森林和多粒度扫描。。【4】
特征学习或表征学习是学习一个特征的技术的集合:将原始数据转换成为能够被机器学习来有效开发的一种形式。它避免了手动提取特征的麻烦,允许计算机学习使用特征的同时,也学习如何提取特征:学习如何学习。【5】
感知器是Frank Rosenblatt在1957年所发明的一种人工神经网络,可以被视为一种最简单形式的前馈式人工神经网络,是一种二元线性分类器。感知器是激活函数为阶跃函数的神经元,如果存在激活函数不是阶跃的,那么这个网络就不是感知器。
误差反向传播算法(Error Back Propagation Training),简称BP,发展于20世纪80年代中期,由David Runelhart、Geoffrey Hinton和Ronald W-llians、DavidParker等人分别独立发现,解决了多层神经网络隐含层连接权学习问题,并在数学上给出了完整推导。【6】
MLP= 神经网络(2层,输入,隐藏,输出,但是输入层不涉及计算),BP神经网络(实际并没有)=采用BP算法进行训练的神经网络。
神经网络类别包括【7】:
超参数分类【1,3】
超参数类型多,但是不是每一类都需要通过实验查看确定大小,有些超参数是网络超参数,有些是训练超参数。
训练超参数:学习率 η,正则化参数 λ,学习的回合数Epoch,小批量数据 minibatch 的大小,代价函数的选择,参加训练模型数据的规模
网络超参数:神经网络的层数 L,每一个隐层中神经元的个数 j,神经元激活函数的种类,输出神经元的编码方式,权重初始化的方法
超参数选择的优化顺序:
1.网络超参数(网络超参数一般是通过阅读论文,参考github代码进行基础模型设计)
2.训练超参数(1.根据任务要求与时间要求选择训练数据、代价函数、Epoch;2.根据自己台式电脑显存大小选择minibatch;3.学习率η根据梯度下降法的优化器进行选择(一般选择Adam优化器(10e-4,10e-7),SGD(10e-1,10e-3),之后设置一个余弦下降法);4.正则化参数 λ有默认值为0(主要看训练结果而决定更改))
默认无需更改超参数:学习率η,正则化参数 λ,学习的回合数Epoch,小批量数据 minibatch 的大小,参加训练模型数据的规模,神经元激活函数的种类,输出神经元的编码方式,权重初始化的方法,
着重更改:神经网络的层数 L,每一个隐层中神经元的个数 j,代价函数的选择
综上:在超参数优化这一块,在得到一个可以正常工作的训练基准之后,主要调整的是网络结构参数。以上观点仅仅代表我的浅陋观点,我的主要研究方向是图像去模糊,因此可能是有错。
定义:训练的模型在训练数据集表现好,在测试集表现差
(1)数据有噪声,质量差;模型记住了噪音特征而忽略了真实数据的输入输出关系;
(2)数据量太小;训练集的数量级和模型的复杂度不匹配。训练集的数量级要小于模型的复杂度;
(3)训练模型过渡;权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。
(4)训练集与测试集分布不一致; 训练集与测试集特征分布不一致;
(5)模型复杂度太大;数据规律简单,使用了复杂模型导致拟合过度
(simpler model structure、 data augmentation、 regularization、 dropout、early stopping、ensemble、重新清洗数据)
模型层面:
降低模型复杂度;调小模型复杂度,使其适合自己训练集的数量级(缩小宽度和减小深度)
正则化;参数太多,会导致我们的模型复杂度上升,容易过拟合,加入正则化引入额外惩罚项,保持模型简单,L1 使参数变得稀疏,L2使参数变得平滑
dropout;在训练的时候让神经元以一定的概率不工作
Batch Normalization:使得每一层的数据分布不变,做归一化处理
数据层面:
训练层面:
大白话解释模型产生过拟合的原因! - 知乎
过拟合(定义、出现的原因4种、解决方案7种)_NIGHT_SILENT的博客-CSDN博客
深度学习和机器学习中过拟合的判定、原因和解决方法_HUSTHY的博客-CSDN博客_深度学习过拟合的原因
定义:
反向传播过程中需要对激活函数进行求导,如果导数大于1,那么随着网络层数的增加,求出的梯度更新将以指数形式增加,这就是梯度爆炸;同样如果导数小于1,那么随着网络层数的增加,梯度更新信息将以指数形式减少,这就是梯度消失。
注意:梯度消失、爆炸,根本原因在于反向传播的链式求导法则,属于先天不足,一般随着网络层数的增加会越来越明显。
详解机器学习中的梯度消失、爆炸原因及其解决方法_Double_V的博客-CSDN博客_梯度消失
网络权重初始化方法总结(上):梯度消失、梯度爆炸与不良的初始化 - shine-lee - 博客园
(4 封私信) LSTM如何来避免梯度弥散和梯度爆炸? - 知乎
深度学习—梯度消失和爆炸、权重初始化 - 深度机器学习 - 博客园
定义:激活函数(Activation Function)是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。
作用:增加模型非线性表示能力
为什么使用激活函数:
性质:
硬饱和,软饱和,左饱和和右饱和
常用:sigmoid;tanh;ReLU;LReLU, PReLU, RReLU;ELU(Exponential Linear Units);softplus;softsign,softmax等
f ( x ) = 1 1 + e − x = σ ( x ) f(x)= \frac{1}{1+e^{−x}}=\sigma(x) f(x)=1+e−x1=σ(x)
sigmoid函数又称 Logistic函数,用于隐层神经元输出,取值范围为(0,1),可以用来做二分类。
它的导数为:
f ′ ( x ) = e − x ( 1 + e − x ) 2 = σ ( x ) ( 1 − σ ( x ) ) f^{'}(x)=\frac{e^{-x}}{\left(1+e^{-x}\right)^{2}}=\sigma(x)(1-\sigma(x)) f′(x)=(1+e−x)2e−x=σ(x)(1−σ(x))
图像如下:
]
可以看出sigmoid的导数最大值为0.25,在进行反向传播时,各层的梯度(均小于0.25)相乘很容易造成梯度为0,也就是“梯度消失”。
优点:
缺点:
f ( x ) = tanh ( x ) = e x − e − x e x + e − x = 2 σ ( 2 x ) − 1 f(x)=\tanh (x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=2\sigma(2x)-1 f(x)=tanh(x)=ex+e−xex−e−x=2σ(2x)−1
导数
f ′ ( x ) = 4 e 2 x ( e 2 x + 1 ) 2 = 1 − [ t a n h ( x ) ] 2 f^{'}(x)=\frac{4 e^{2 x}}{\left(e^{2 x}+1\right)^{2}}=1-[tanh (x)]^2 f′(x)=(e2x+1)24e2x=1−[tanh(x)]2
]
Tanh函数是 sigmoid 的变形,本质上是 sigmoid 向下平移和伸缩后的结果,是 0 均值的,因此实际应用中 Tanh 会比 sigmoid 更好。但是仍然存在梯度饱和、梯度消失与指数计算的问题。
线性整流函数(Rectified Linear Unit, ReLU)
f ( x ) = relu ( x ) = max ( 0 , x ) f(x)=\operatorname{relu}(x)=\max (0, x) f(x)=relu(x)=max(0,x)
导数
f ′ ( x ) = { 1 , i f x > 0 0 , i f x < 0 f^{'}(x)= \begin{cases} 1, &if\ x>0\\ 0, &if\ x<0 \end{cases} f′(x)={1,0,if x>0if x<0
激活函数图 | 导数图 |
---|---|
]] |
优点:
缺点:
选择:
温故知新——激活函数及其各自的优缺点 - 知乎
常见激活函数,及其优缺点 - 面试篇_GreatXiang888的博客-CSDN博客_常见激活函数优缺点
NLPer-Interview/调参 - 激活函数机制
激活函数中的硬饱和,软饱和,左饱和和右饱和。_donkey_1993的博客-CSDN博客_软饱和
代码实现:Activation黑科技 | GitHub
神经网络BP反向传播算法原理和详细推导流程_Z_y_forever的博客-CSDN博客_bp反向传播
深度学习中神经网络的几种权重初始化方法_天泽28的专栏-CSDN博客_权重初始化
防止过拟合的方法,及dropout实现原理 - 面试篇_GreatXiang888的博客-CSDN博客