深度学习入门
深度学习横跨矩阵论、概率论与数理统计、信息论、博弈论、最优化等理论,并融合机器学习、数据挖掘、大数据、人工智能等领域技术,是具有深度和广度的综合范例
数学基础
矩阵论
(1)正交矩阵
A为n阶方阵
如果矩阵A和矩阵A的转置矩阵相乘结果为n阶单位矩阵
正交矩阵在矩阵变换、对角化等方面发挥重要的作用。
(2)矩阵的行列式
矩阵A的行列式定义为
n为该排列的逆序数,k1,k2,k3…kn为自然数1,2,3…n的任一排列。上式有n!项求和,如果|A|不为0,则表示A为可逆矩阵(也称为非退化矩阵),此时存在唯一的n阶方阵B,使得AB=E,则记作B=A-1。
(3)矩阵的迹
矩阵A的迹定义为正对角线元素的和
(4)向量与矩阵求导
梯度方向是函数f(X)在X处增长最快的方向,即函数变化率最大的方向。
①行向量元素求导
②列向量对元素求导
③矩阵对元素求导
都是对每个元素进行求导
概率论
数学期望 方差
(1)0-1分布 p p(1-p)
(2)二项分布 np np(1-p)
(3)泊松分布 λ λ
(4)几何分布 1/p (1-p)/p2
(5)均匀分布 (a+b)/2 (a-b)2/12
(6)指数分布 λ 1/λ2
(7)正态分布 μ σ2
(8)χ2分布 n 2n
机器学习基础
(1)监督学习
主要解决分类、回归的问题
(2)无监督学习
① 数据聚类
聚类中,基本思想即使得簇内对象之间尽量相似(相近),不同簇之间数据对象尽量不相似。
k-means中,可以通过silhouette来展示聚类效果,其silhouette值定义为:
a(xi)为样本点xi与当前所属类别的差异度
b(xi)为样本点xi与其他类别差异度的最小值
s(xi)越接近1则表示样本更加倾向于当前类,越接近-1则样本点更倾向于其他类
② 性能量度
(1)均方差
(2)错误率
(3)准确率
(4)查准率和查全率
查准率
p=TP/(TP+FP)
可以理解为预测结果为正例的所有样本中真正为正例的比例
查全率
R = TP/(TP+FN)
可以理解为真实情况下所有真例能够真正召回多少真例的比率
(5)KL散度
也称为相对熵、信息散度,用于度量两个概率分布之间的差异。公式如下:
神经网络基础
生物神经网络
是指生物的大脑神经元及其连接等组成的复杂网络。
神经元是神经系统的结构和功能的基本单位,由细胞体、树突和轴突等组成。
人工神经网络(ANN)
理论证明具有足够多隐藏层神经元的神经网络能以任意精度逼近任意连续函数。
最早提出的M-P神经元模型
xi为第i个神经元的输入,wi为第i个神经元的连接权重,θ为神经元的激活阈值,输出y为:
后来的感知机是基于M-P神经元模型建立起来的,神经元将n个其它神经元的输入与连接权重作为总输入值并与阈值做比较,通过激活函数产生输出响应,激活函数目前大多用阶跃函数和挤压函数sigmoid。
最优化理论基础
最优化问题
最优化问题的数学模型如下:
当目标函数的维数m=1时,得到单目标优化问题。
求解单目标最优化问题的关键是如何构造搜索方向和确定搜索步长。基本思路是采用启发式策略,从一致迭代点Xk出发,按照基本迭代公式Xk+1=Xk+Tk*Pk,求解目标函数的最小值。
优化搜索方向和搜索步长来使下一个迭代点Xk+1处目标函数值下降,即f(Xk+1)<f(Xk)。
针对搜索方向,利用一阶或二阶导数的解析法,如沿目标函数负梯度方向和采用最优步长的最速下降法等,针对搜索步长,一般采用一维搜索来确定最优步长。
机器学习中,需要预先定义一个损失函数,用最优化算法来最小化这个损失函数。
多目标优化问题
多目标优化问题只能通过序关系来比较解的优劣
(1)可行解集合
由x∈X的所有的满足约束条件的可行解组成的集合称为可行解集合。
(2)Pareto占优
决策变量x1支配决策变量x2
当且仅当x1在所有目标的衡量下均不劣于x2,并且至少在一个目标上严格优于x2
(3)pareto最优解集
所有pareto最优解的集合构成pareto最优解集,定义如下:
(4)Pareto最优前端
Pareto最优解集P中的解对应的目标函数值构成的集合Pf称为Pareto最优前端,即
一般来说,通过多目标优化算法得到的非劣解集合为近似Pareto最优解集,相应的目标函数值的集合为近似Pareto最优前端。
群智能优化算法
群体智能是计算智能的重要组成部分。
由于绝大多数深度学习中的目标函数都很复杂。因此,很多优化问题并不存在显式解,而需要基于数值方法的优化算法找到近似解。
指挥群只能团队逐渐逼近问题最优解
粒子群优化算法包括随机初始化、算法参数设置、迭代更新速度和位置、评估适应度函数、停止条件判定等步骤。
式中X为粒子的位置,V为粒子的速度,ω为惯性权重,c1,r1,c2,r2是随机参数和认知参数,Pi和Pg分别是个体最优和群体最优位置。PSO算法的数学模型是一个线性时变系统。
(1)第一分量为“主动分量”,由具有惯性系数的原始速度构成。其中,vid(t)为表现粒子对亲身经历的信任倾向,ω为平衡开发和开采的权重关系,是粒子自身主动进行搜索的掌舵者。
(2)第二分量为“认知分量”,是粒子亲身经历的“飞行”经验,是将种群行为引导向通过自己努力找到的最好位置。
(3)第三分量为“社会认知”,粒子借助种群进行信息资源的共享与个体间的相互合作。
神经网络原理与实现
神经元模型具体有三部分构成
(1)网络连接权重模拟真实神经元之间的连接强度
(2)神经元细胞体对所有输入信号作加权求和,并汇总外界激励
(3)激励函数相当于真实神经元的相应阈值,控制输出信号的幅度,具有归一化功能
感知机模型
当时的感知机结构是由神经元构成的两层网络结构,输入层接收输入信号,激活函数将信号汇聚集合并处理,最终把处理后的信号输出至由M-P神经元构成的输出层,也叫作阈值逻辑单元。这个感知机模型只有一个激活功能的神经元,是其性能瓶颈所在。
以下采用跃阶函数作为激活函数,可以很轻松的实现AND、OR以及NOT的逻辑运算:
可以看出,计算f内部结果时,只要保证结果为负数不进行激活,结果为正数进行激活,就可以实现与、或、非的运算逻辑
为了统一训练学习网络权重,阈值θ可以看做是权重wn+1固定为-1的哑节点,这样在给定训练集上,参数都可以作为权重进行统一训练,学习规则设置为:
η∈(0,1)是可调参数,为其神经元的学习率
在典型的感知机模型中,只有输出神经元具有激活函数,只有一层功能神经元,因此只能解决线性可分。
功能神经元就是具有信号处理功能的激活函数单元,有了激活函数,神经元就具备了控制模型忍耐阈值的能力,进而可以将处理过的输入映射到下一个输出空间中。
多层前馈神经网络与BP算法
为了解决非线性问题,需要具有多层功能神经元的网络,这样多层感知机MLP应运而生,多隐层前馈神经网络与多层感知机是近义词。
采用具有两层功能神经元的感知机模型就可以解决异或问题,即在输出层和输入层之间加一个隐藏层,其中输出层和隐藏层都是具有激活函数的功能神经元。
多层前馈神经网络,是以层为功能单位模块,同层神经元之间无连接,上层与下层实现全连接,但无跨层连接。输入层只负责接收信号输入,无数据处理功能,隐藏层和输出层是由具有信号处理功能的神经元组成。神经网络的学习过程就是根据训练数据来学习合适的连接权重和功能神经元的阈值,从宏观看,这些权值和阈值等参数就是学到的知识,他们分布式的存储在神经元网络中,简言之,同一个输入特征可以由多个神经炎共同表示,同时,单个神经元可以按照不同权重的身份出现在不同的输入特征表示中。这种多对多的映射就是分布式特征的核心。
多层前馈神经网络的训练
神经网络作为一个模型,神经元连接之间的权值和阈值都是模型的参数,也是模型需要学习的东西。而一个神经网络的连接方式、网络的层数、每层的节点数这些参数,则不是学习出来的,而是认为事先设置的。对于这些人为设置的参数,我们称之为超参数。
神经网络训练算法——反向传播算法
是计算深度学习模型参数梯度的方法,反向传播中会依据微积分中的链式法则,按照输出层、靠近输出层的隐含层、靠近输入层的隐含层和输入层的次序,计算并存储模型损失函数有关模型各层的中间变量和参数的梯度。
BP算法——应用链式求导法则的误差反向传播算法
通过不断训练调整网络参数,求得输出层节点的误差平方和的最小值。通常,将采用BP算法训练参数的多层前馈神经网络称为BP网络。
具体来讲,在误差反向传播BP神经网络的学习过程中,包括信息的正向传播和误差的反向传播过程,主要解决正向传播算法难以直接计算隐含层误差的问题。正向传播过程与普通的感知机类似,逐层迭代计算各单元的输出值。反向过程指根据网络输出的误差,按误差梯度下降的方式,将误差进行逐层回代,修正每一层的权值。
输入层一般只对输入网络的数据做接收,不对数据进行处理。输入层的神经元个数根据数据的维数及求解问题而具体确定。
隐含层负责信息的处理、变换,根据输入数据的特点及整个网络的输出要求,隐含层可设计为单隐层或多隐层的结构。增加隐含层数可以降低网络的误差、提高精度,但同时也增加了网络的复杂度,增加了训练的时间。隐含层中神经元数目的增加同样可以实现网络精度的提高,并且训练效果更易观察和调整。传统神经网络优化,首先考虑隐含层的神经元数量,然后再根据情况增加隐含层的数量。输出层输出整个网络的训练结果。
激活函数
常见的激活函数
(1)线性函数:f(x)= x
(2)阶跃函数
(3)Sigmoid
(4)双曲正切函数tanh
BP算法的推导
设训练数据为(xk,yk),神经网络的输出为,即
用均方误差来度量神经网络在数据(xk,yk)上的损失函数,也就是待优化的目标函数
可以看出,损失函数就是有关“权值参数”的函数。同时在上述BP神经网络中,需要学习(d+1+1)*q+1个参数,输入层到隐藏层d *q,隐藏层到输出层权重q *1,q个隐藏层阈值,1个输出层阈值。
BP算法的迭代公式与感知机的学习规则一致,可以采用广义的感知机训练规则进行参数学习,任意参数v的更新公式可表示为
基于梯度下降的迭代更新策略,对于Ek给定的学习率η可以得到:
由sigmoid的性质
基于梯度下降的迭代更新策略,对于Ek给定的学习率η可以得到:
而后得到:
最终得到权重更新公式:
其中
与感知机模型一样,超参数学习率控制着每一轮更新迭代的步长。
BP算法的基本步骤
1.确定网络结构,初始化学习参数,如训练函数、训练次数
2.输入训练样本,训练网络
3.正向传播过程,通过训练数据计算当前网络的实际输出,与网络的期望输出做比较,计算均方误差。
4.反向传播过程,通过公式,逐层修正全网权值。
5.更新全部权值后,重新计算网络输出并计算与期望输出的误差。
6.中止条件判定,满足则停止迭代
神经网络学习中止条件为实际输出与期望输出的误差小于设定的阈值或达到设定的最大训练次数。包含足够多的神经元隐藏层的多层前馈神经网络,能以任意精度逼近任意复杂的连续函数。但隐藏层神经元个数设置是个NP问题,目前通常采用试错法。此外,为了解决BP神经网络的过拟合问题,可以采用策略为:
(1)早停策略,在训练网络参数时,同时采用训练集和验证集分别训练网络
(2)正则化是在目标函数部分加一个描述网络复杂度的部分,一般是网络权重的加权函数。
针对神经网络的优化问题,可以采用的策略有:
(1)利用多组不同参数同时训练多个神经网络,效果最好的作为最终网络参数,相当于并行多个无交流网络
(2)模拟退火策略,每次迭代依概率接收比当前差的解,同时接收次优解的概率随迭代次数增加逐渐降低来保证算法稳定
(3)使用随机梯度下降策略,加入随机因素,增加算法的全局搜索能力
梯度下降算法
(1)批梯度下降
遍历所有数据集后统一计算损失函数,然后再计算损失函数对各个参数的梯度并更新参数。这种方法每更新一次参数就要遍历数据集中的所有数据,计算量开销大
(2)随机梯度下降
每输入一个数据就计算相应的损失函数,然后再求梯度并更新参数。该方法速度快,但是收敛性能不好,容易造成损失函数震荡
(3)小批梯度下降
为了克服批梯度下降和随机梯度下降的缺点,可以采用“中庸”策略,把全部数据分成若干个更小的批次,以此来更新参数,这样就缓解整体与局部的矛盾,在保证随机性的同时,降低计算量。
来源:CSDN
作者:joker-smart
链接:https://blog.csdn.net/qq_42746595/article/details/104074152