【龙明盛】深度学习理论课_学习笔记02_感知机

(0)摘要

# 课程内容:

(1)感知机_1

【本节课中,个人也补充了相当多的知识点】


# 自强不息,厚德载物🙂

(1)感知机_1

# (1)总体课程概览。

                如下图所示, 本节课主要是讲解:

                        1)多层感知机、

                        2)反向传播算法、

                        3)多层感知机的训练技巧、

                        4)自编码机模型、

                        5)深度学习的表达能力;


# (2)最初的感知机的简易模型。

                简单的说,就是将人体的一组神经元抽象成下面 {1, x1,...,xd} → y'(即y-hat) 的过程。也就是说:

                首先,有一组输入信息 {1, x1,...,xd},与对应权重 {θ0,...,θd}  加权求和得出结果,记为 Σ ;

                而后,经过一个激活函数(非线性变换)后变为 y' 的过程。

                【右边的式子是抽象模型的数学表达式,一般的论文表达是使用刚才所说的抽象模型,因为这非常的直观】


# (3)激活函数。

                在上述的抽象模型中,当时所使用的激活函数就是普通的阶跃函数,比如设定某个阈值,若是自变量大于该阈值,就为 1 ,否则就为 0。但是这种普通的阶跃函数存在不可导的问题。

                典型的阶跃函数图像(符号函数sgn(x) ):


# (4)感知机学习算法(PLA---Perceptron Learning Algorithm)

                1)感知机学习算法的讲解,如图所示:

                第一步:数据准备阶段

                首先,输入的话包含两个,分别是学习次数为 T0 次(迭代次数)和训练集{(xi,yi)}。那么图中给出的训练集的表达式,意思是有 m 条学习样本,起始从 1 开始,其中 xi 是输入并且是 d 维的向量,yi 是对应训练集 xi 的输出,是 1 或者 -1(当然也可以是 1 或者 0)

                第二步:输出目标

                那么输出的话就是权重参数 θ (加粗的为向量),即 {θ0,...,θi}。也就是说一旦我们确定了这组权重,那么对于给定的 xi 我们都能够输出相同的 yi。

                第三步:算法思想

                开始的时候,我们先初始化权重参数 θ,可以是随机初始化,也可以指定为 0,这里给的例子是初始化 θ = 0;

                然后,我们迭代 T0 次,每一次我们都是从训练集中随机采用一组 (xi,yi) ,然后计算 y' = sgn(xt * θ);

                最后,比较真值 yt 与 上面计算的预测值 y' 是否相等,如果相等,说明这组 θ 是所要的,否则就要更新这组 θ,更新方法为 θ = θ + yt*xt。然后以此往复,其实也是参数估计的过程。

【定理---收敛率定理?】

 知识补充:s.t. 是 subject to 的缩写,在数学中是 "使得满足... " 的意思。

                前提一:γ 是最优间隔的意思,就是支持向量机(SVM)的概念。假设有一个超平面能够正确的区分两类样本。那么在这些样本中能够找到离超平面最近的点 x ,这样 x 到超平面的距离就是最优间隔 γ了。【---见前提一补充】

                前提二:R 是空间中点到原点的距离的最大值(模长),也可以理解为径向量的模长。

                那么定理:

                感知机算法,可以在\left ( \frac{R}{\gamma } \right )^{2}的迭代次数内达到收敛,定理的证明是在数据样本是线性可分的情况下证明的。显然,如果 R 是一定的,γ 越大,说明需要的迭代次数越少,同时表明了所要解决的问题是较简单的。如果 γ 是一定的,那么 R 越大,说明空间中的点越离散,就需要更多的迭代次数。【如果是线性不可分情况,我们不清楚到底收不收敛】

【前提一补充】

                 因而就有了下面的公式:即 \exists V\epsilon R^{d}, \forall i\epsilon {1,...,n}, \gamma \leq \frac{yi(vxi)}{||v||}。那么实际上后者就是空间外一点,到平面的距离公式。 推导过程如下图所示,另外补充求两个向量的余弦值的公式:cos<\vec{x}, \vec{y}> = \frac{\vec{x}\cdot \vec{y}}{||\vec{x}||\cdot ||\vec{y}||},这样配合来理解就很容易了。至于为什么 γ 一定小于等于,这是因为我们假设了 γ 是最优间隔了,也就是点到平面距离的最小值了。


# (5)收敛定理的证明。

                1)首先,我们设一共进行了 T 轮迭代,那么在这 T 次迭代中,总有 Iθ 是进行了更新的,亦即 I 次就是 | | = M 。很显然,| |  ≤ T。为了讲好下面证明,我们会对每一步的运算演变进行注解。

             

                2)式子 1 ---使用了柯西—施瓦茨不等式。那么下图是其该不等式的定义。来源:柯西-施瓦茨不等式的四种形式_傅里叶、的博客-CSDN博客_柯西—施瓦茨不等式。那么我们这次主要使用第二种形式的柯西—施瓦茨不等式。【补充:向量的二范数,设\alpha = \left ( a1, a2, ...,ad \right ),那么 \left \| \alpha \right \| _{2}= \left \| \alpha \right \| = \sqrt[]{a1^{2} + a2^{2} + ...+ad^{2} } 。这就是向量二范数的定义了,一般二范数我们都略写成 || α ||】

                对于式子 1 的左边,中间的 \frac{\sum _{t\epsilon I}y_{t}(vx_{t})}{||v||},就是所有更新的 θ 的点距离求和, 由于 γ 是最优间隔,因而易知  M\gamma \leqslant \frac{\sum _{t\epsilon I}y_{t}(vx_{t})}{||v||}  ,也就是式子 1 的左边得证。对于式子 1 的右边,由上面的例子知道 x_{t} 是 dx1 维的向量,y_{t} 是个常数,那么我们将 \frac{\sum _{t\epsilon I}y_{t}(vx_{t})}{||v||} 可以变换为  \frac{v}{||v||} \cdot \sum _{t\epsilon I}y_{t}x_{t} ,就是两个向量相乘了(左边是单位向量只改变方向,且内积范数为 1 ,右边是一个普通的 dx1 维向量),根据上面的柯西—施瓦茨不等式的第 2 种形式,我们就得到了 \frac{v}{||v||} \cdot \sum _{t\epsilon I}y_{t}x_{t} \leq \left \| \frac{v}{||v||} \right \|\cdot \left \| \sum _{t\epsilon I}y_{t}x_{t} \right \| ,即\frac{v}{||v||} \cdot \sum _{t\epsilon I}y_{t}x_{t} \leq \left \| \sum _{t\epsilon I}y_{t}x_{t} \right \| 。那么 下面的第一个式子左右两边就得到证明了。

                3)式子 2 和 式子 3。我们根据原来 \Theta 的定义可以知道,如果发生了更新,那么下一次的  \Theta 就等于上一次的 \Theta 加上  y_{t}x_{t},也就是说 \Theta_{t+1} = \Theta_{t} + y_{t}x_{t} , 那么式子 1 的右边又可以变为 \left \| \sum _{t\epsilon I}y_{t}x_{t} \right \| = \left \| \sum _{t\epsilon I} (\Theta _{t+1}-\Theta _{t})\right \|,如此就知道式子 2 的由来了。然后我们将式子 2 展开,那么式子 2 就等于\left \| \Theta_{t+1} - \Theta_{0} \right \|  ,且设  \Theta _{0} = 0,那么原式 = \left \| \Theta_{t+1} \right \| , 其实也就是 \left \| \Theta_{T+1} \right \| 。

                 4)式子 4 和 式子 5。对于式子 4 ,其实就是  \left \| \Theta _{T+1} \right \|  的一个变形,即以平方差的形式来做列项求和。而后再根据先前 \Theta _{T+1} 的定义替换,从而得到了式子 5。

                5)对于式子 6 ,在此前复习一下向量知识(suppose即假设的意思)。\left \| a +b \right \|^{2} = \left \| a \right \|^{2} + \left \| b \right \|^{2} + 2a\cdot b, suppose [a = (x1...xn), b=(y1...yn)]\Rightarrow a\cdot b = (x1y1,x2y2,...,xnyn) )。那么有了上面的知识,我们将式子 5 化简后就可以得到它的左边 ,\sqrt[]{\sum _{t\epsilon I}(2y_{t}\cdot \Theta _{t}\cdot x_{t}+\left \|x_{t} \right \|^{2})},回顾之前的前提,因为这次的 \Theta 是变化的,也就是说所预测的 y' 与真值 yt 是相反的(注意符号函数),那么 2y_{t}\Theta _{t}\cdot x_{t} \leq 0。因此 \sqrt[]{\sum _{t\epsilon I}(2y_{t}\cdot \Theta _{t}\cdot x_{t}+\left \|x_{t} \right \|^{2})} \leq \sqrt{\sum _{t\epsilon I}\left \|x_{t} \right \|^{2}}。我们再看 R 是什么,R 是 xt 到原点距离的模长的最大值(其实可以理解为就是 xt 的模长),因此必然有 \sqrt{\sum _{t\epsilon I}\left \|x_{t} \right \|^{2}} \leq \sqrt{MR^{2}},结合式子 1 又有 M\gamma \leq \sqrt{MR^{2}},从而有 M\leq (\frac{R}{\gamma })^{2}


# (6)布尔表达式和 “异或” 问题

                1)感知机可以很方便的把与或非三种逻辑运算表达出来,如下所示。但是如果针对于异或(XOR)问题,就遇到困难了。所谓异或就是输入同则为 0,异则为 1。

                 

                2)表达异或。我们注意到如果单纯的是使用一个感知机来表达异或是不可能的,可以见下图的左边的 Perceptron 坐标。但如果我们使用多个感知机来表达,就可以轻松解决异或问题,见另一个坐标系,即逻辑表达式  (x\wedge \bar{y})\vee (\bar{x}\wedge y) ,我们可以列出他们的真值表(这里需要离散数学基础,就是将 0,1 分别代入上面的逻辑表达式,对应所得到的所有结果构成的表),其分布必然与异或定义的逻辑表达式 x\oplus y = (x\vee y)\wedge (\bar{x}\vee \bar{y}) 的真值相同。


# (7)多层感知机(MLP)_上

                1)MLP 就是简单粗暴的将多个感知机堆叠起来。然后我们算有多少层的时候,只算隐含层和输出层(即不考虑输入层),比如下面右边的 MLP 模型就是两层。(龙老师讲的更加深刻,输入输出与感知机相当于映射关系,比如第一层映射就是输入{x1 ... xd} 到 z1 的过程,第二层映射是 {z1 ... zd1} 到 {y1, y2},这样计算层数)

                2)使用 MLP 来表示异或问题。前面说过异或问题的定义,下图的感知机模型就就可用于表达异或问题。

                 

                3)MLP 可以表达任意的逻辑表达式。其实很好理解就是,分开的两个感知机就是表达或的(符号是 | ,但是或也是加的意思),汇聚到一起的就是表达与的(符号 & ,但是与也是乘的意思)。当然这下面要表达非,取得的是负数。有了这个基础,我们再将下面的模型与其对应表达式结合起来理解就轻松很多。另外,下面的模型是稀疏连接,很好理解就是不是所有神经元(感知机)都是有用的。如果给每一个神经元都对应所有的输入,那么这种连接是稠密的也就是全连接网络。

                4)激活函数对分类面的影响。我们清楚了感知机是由线性组合和激活函数组成,其中线性组合一定是与高维空间的超平面所对应(简单理解就是有这么一个线把正负例样本分开了,这其实反映的是样本分布的规律),那么激活函数是不改变这个分布规律的,也就是说即使经过了激活函数的非线性变换(仅仅只是细化了这个分布),都不影响这个超平面。因而一个感知机在高维空间中对应的是一个超平面而不是曲面。

                5)决策边界。下面的五边形,其实对应了五个超平面,也就是说要表达这个五边形,就需要使用五个感知机模型,即右边的模型。(其中有一个是偏置?)

                 

                那么还可以表达更复杂的模型。


# (8)多层感知机(MLP)_下

                1)下面是一个比较典型的多层感知机(全连接网络)。设输入层 x = \left \{ x1, x2, x3 \right \},当然还有偏置 b_{}^{(1)}, 输入为 4 个;权重参数  \Theta _{}^{\left ( 1 \right )} 、\Theta _{}^{\left ( 2 \right )}\Theta _{}^{\left ( 3 \right )} ,隐藏层有两层,分别有 i\epsilon \left [ 1,4 \right ] \, \, \, \, \, z_{i}^{\left ( 2 \right )} 和  i\epsilon \left [ 1,4 \right ] \, \, \, \, \, z_{i}^{\left ( 3 \right )},并且各自有偏置 b_{}^{\left ( 2 \right )}、 b_{}^{\left ( 3 \right )} ;输出层 i\epsilon \left [ 1,3 \right ] \, \, \, \, \, z_{i}^{\left ( 4 \right )};激活函数 a;损失函数  J(\theta ) = \frac{1}{m}\sum_{i=1}^{m}J\left ( f\left ( x^{(i)};\theta \right ), y^{(i)}\right ) ,其中 f(x^{(i)};\theta ) 意思是说在权重参数为 θ ,输入为 i 维向量 x 的情况下,在经过 f 的映射变化后得到的值 y\hat{}。在将偏置和输入合并后,那么整个网络前向的运算过程是如下:

               第一: x 是一个(1*4)维的向量,第一层的感知机有 4 个(也就是 1*4 维度,下同),那么对应的权重参数就是 \Theta _{}^{\left ( 1 \right )} 就是 (4*4)维的参数矩阵;

                第二:到了隐含层的第一层后,经过了激活函数 a 的运算,我们加上偏置 b_{}^{\left ( 2 \right )} 作为第二个隐含层的输入,维度是 (1*5),第二个隐含层有 3 个感知机,如此权重参数 \Theta _{}^{\left ( 2 \right )} 就是一个 (5*3)的权重矩阵;

                第三:同第二个的道理,将最后输出的的结果 i\epsilon \left [ 1,3 \right ] \, \, \, \, \, z_{i}^{\left ( 4 \right )},分别进行激活变化 a 后作为预测值 y\hat{} 输出。

                最后,我们就可以使用上面的损失函数计算预测值和真值的误差了。事实上,映射 f 就是这个多层感知机模型。而映射 J 则是损失函数。 

                2)激活函数步骤的详解,注意到,我们在考虑输入的时候,就已经将偏置也作为输入了,这样就可以理解下面的  y\hat{} = g(\theta _{0}+X^{T}\theta) 了。下面的的 g(z) 函数就是 sigmoid 函数,也常常被称为 logistic 回归,由于其函数值域属于 (0, 1) 之间,因而可以用来建模概率模型。但是 sigmoid 函数的两边存在梯度饱和的问题,也就是说在这里求导会出现导数为 0 的情况,那么不利于后续的反向传播算法来更新权值参数,这也就是梯度消失,无法训练的问题。

               

                3)其他的激活函数。比较常用的就是整流线性单元 ReLU 函数。

                4)特别的激活函数,softmax 函数。其实目的就是想把输入的多个变量归一化到 (0,1) 区间内。比如输入是 z1,z2,z3 ,将他们取指数函数,即 e^{z1},\, e^{z2},\, e^{z3},那么他们的和就是  \sum_{i=1}^{3} e^{zi} ,如此 g(z)_{i} = \frac{e^{zi}}{\sum_{i=1}^{3} e^{zi}},也就是 g(z)_{i} =\hat{ y_{i}} 。

                但是 softmax 函数是存在不足的。比如下面的两种情况:

                第一种情况:如果某一个分子的值过大,其对应的概率也就越大,势必会抑制其他分子的概率,如此分布就不太合理了。这就是所谓的“赢者通吃”。对于这个问题,我们可以在计算 g(z)_{i}  的时候,令分子除以一个温度常数。

                第二种情况:数值溢出。如果出现数值溢出,那么就令 g(z)_{i} 的分子分母同时除以一个 e^{z_{m}} , m=argmax(z_{j}) ,也就是 m 是输入的最大的那个值。

                


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值