0
点赞
收藏
分享

微信扫一扫

深度学习理论基础

一、深度学习的基本概念

简单概括是,使用神经网络,进行不断学习训练和修正的过程。训练集就是有答案的习题,神经网络每一次写完作业都会去对答案,如果有偏差,就自动修正参数,谓之迭代,直到最后错误率越接近0越好。

1、单个神经元

数学模型(MP模型)
1943年,心理学家W.S.McCulloch和数理逻辑学家W.Pitts基于神经元的生理特征,建立了单个神经元的数学模型(MP模型)
在这里插入图片描述
神经元的数学模型推导公式:
y k = φ ( ∑ i = 1 m ω k i x i + b k ) + b k = φ ( W k T X + b ) y_k = φ(\sum_{i=1}^mω_{ki}x_{i}+b_k)+b_k=φ(W^T_kX+b) yk=φ(i=1mωkixi+bk)+bk=φ(WkTX+b)
公式参数:

  • x:输入
  • ω:权重
  • b:偏置(可以类比一下一元一次方程 y = k x + b y=kx+b y=kx+b b b b,使数值产生整体的偏移)
  • 激活函数φ:一个非线性函数,目的是将输入进行变化映射,得出输出信号。它模拟大脑电信号,对较小的刺激进行弱化甚至抑制,对较明显的刺激继续传递。

2、神经元的拟合原理

模型每次的学习都是为了调整W和b从而得到一个合适的值,最终由这个值配合运算公式所形成的逻辑就是神经网络模型。这个调整的过程称为拟合

正向传播: 数据是从输入到输出的流向传递过来的。当然,它是在一个假设有合适的w和b的基础上的,才可以实现对现实环境的正确拟合。但是,在实际过程中我们无法得知w和b的值具体是多少才算是正常。于是,我们加入一个训练过程,通过反向误差传递的方法让模型自动来修正,最终得到合适的W和b。

反向传播: BP(Back Propagation process),BP是在估计权重的时候的必要过程,可被称为BP算法。深度学习的目的就是通过最小化损失函数,来估计神经网络的权重。 在这个过程中,需要用到BP进行反向传播。(损失函数下文会讲)
损失,指神经网络输出结果与实际值的差值(可为均方差等形式的差值)。为了让损失值最小化,我们选择一个损失值的表达式(损失函数),让这个表达式有最小值,接着通过对其求导的方式,找到最小值时刻的函数切线斜率(也就是梯度),让w和b沿着这个梯度来调整。
至于每次调整多少,我们引入一个叫做“学习率”的参数来控制,这样通过不断的迭代,使误差逐步接近最小值,从而达到我们的目标。
通常BP的步骤为:

  • 明确损失函数
  • 明确参数调整策略
    可参考博客多层神经网络BP算法的推导

激活函数: 激活函数的主要作用就是加入非线性因素,以解决线性模型表达能力不足的缺陷,在整个神经网络里起到至关重要的作用。
因为神经网络的数据基础是处处可微的,所以选取的激活函数要保证数据输入与输出也是可微的。在神经网络里常用的函数有Sigmoid、Tanh和relu等,具体实现自行百度。

处理分类: softmax回归,对一些数据进行多种分类。softmax从字面上来说,可以分成soft和max两个部分。max故名思议就是最大值的意思。softmax的核心在于soft,而soft有软的含义,与之相对的是hard硬。很多场景中需要我们找出数组所有元素中值最大的元素,实质上都是求的hardmax。softmax的含义就在于不再唯一的确定某一个最大值,而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。如果判断输入属于某一个类的概率大于属于其他类的概率,那么这个类对应的值就逼近于1,其他类的值就逼近于0。该算法主要应用于多分类,而且是互斥的。公式为
s o f t m a x ( z i ) = e z i ∑ c = 1 C e z c softmax(z_i)=\frac{e^{z_i}}{\sum_{c=1}^Ce^{z_c}} softmax(zi)=c=1Cezcezi
其中 z i z_i zi为第i个节点的输出值,C为输出节点的个数,即分类的类别个数。通过softmax函数就可以将多分类的输出值转换为范围在[0, 1]和为1的概率分布。把所有值的e的n次方计算出来,求和后算每个值占的比率,保证总和为1,一般就可以认为softmax得出的是概率。
softmax讲解参考了一文详解Softmax函数,更具体的内容可移步链接。

损失函数: 损失函数是决定网络学习质量的关键。无论什么样的网络结构,如果使用的损失函数不正确,最终都将难以训练出正确的模型。使用于描述模型预测值与真实值的差距大小。一般有两种比较常见的算法——均值平方差(MSE)和交叉熵。

  • 均值平方差(Mean Squared Error,MSE):y为真实标签,p即predict值。均方误差的值越小,表明模型越好。类似的损失算法还有均方根误差(RMSE)(将MSE开平方),平均绝对值误差(MAD)(对一个真实值与预测值相减的绝对值取平均值)等。
    1 n ∑ i = 1 n ( y − p ) 2 \frac{1}{n}\sum_{i=1}^n(y-p)^2 n1i=1n(yp)2
  • 交叉熵损失函数(Cross Entropy Loss Function):交叉熵一般用于分类问题上,表达的意思为预测输入样本属于某一类的概率。公式中y代表真实值分类(0或1),a代表预测值。交叉熵也是值越小,代表预测结果越准。
    注意:这里用于计算的a也是通过分布统一化处理的(或者是经过Sigmoid函数激活等),取值范围在0~1之间。
    c = 1 n ∑ x [ y l n a + ( 1 − y ) l n ( 1 − a ) ] c=\frac{1}{n}\sum_{x}[ylna+(1-y)ln(1-a)] c=n1x[ylna+(1y)ln(1a)]

注意:损失算法的选取
损失函数的选取取决于输入标签数据的类型:如果输入的是实数、无界的值,损失函数使用MSE;如果输入标签是位矢量(分类label),使用交叉熵会更合适。

3、卷积神经网络

单个神经元的拟合仅适用于线性可分(可被直线或平面分割)的情况。对于高维非线性问题,通常使用多层神经网络来解决问题。我们通常会选择卷积神经网络来实现
(未完待续)

举报

相关推荐

0 条评论