当前位置:   article > 正文

概率神经网络_AI随笔(四):从概率角度理解神经网络

关于神经网络中的概率密度函数

1.对逻辑回归的概率理解:

假设p(y|xi;w)表示当给定xi和参数w时计算出的y等于真实y的概率密度函数。再假设该分布为高斯分布,即真实的y是在计算出的y的周围呈现高斯分布。.由y=wT*x+b, 很容易构造出对应的高斯分布函数,即期望为wT*x,方差假设为一个常量。

由于我们有多个样本,假设样本之间是独立的,那么这些样本共同发生的概率就是概率乘积。

定义likelihood=

因为xi和yi是真实的样本,所以我们认为需要找到w使得likelihood最大。既然希望乘积最大,所以他的log也应该是最大,这样公式转换为log

,f为高斯分布公式。将连乘转换为
,展开后就可以得到
。因为这里我们只把w作为变量,所以后部分就是cost函数。Max likelihood就转换为min cost函数了。

类似的:假设二元分类,根据输入x可以计算出分类y的概率。假设概率为伯努利分布,于是p(yi|xi;w)=

当y=1时,使用概率p,当y等于0时使用概率1-p。

再使用上面的max likelihood的方法就可以获得交叉熵cost。

将该公式转换为伯努利分布指数族格式,最后假设wT*x =η,就可以获得p=sigmoid(wT*x)。

同理使用多项式分布可以获得softmax函数和cost函数。

了解这些就容易理解NN图像分类每个cell在概率上的含义。

假设我们使用公式y=f(w,x)计算出来的y的偏差的概率分布p(y|x),符合伯努利分布或者多项式分布,那么对应的逻辑回归算法就是有效的。对于二元分类,分布确实符合伯努利分布,因为该分布的含义是如果正确分类的概率为p,那么错误分类的概率为1-p。

使用f =g(wT*x +b)这个公式是因为假设是x的每个维度是独立的,即一个图片属于某个分类的概率是由图片每个像素独立预测出来的。

********************************************************************

说明:

4fd26ea2720853aee7d4c5ce627de08c.png

假设x1,x2,x3是一个输入样本的3个不同的维度(对于图片就是每个像素),每个维度上的值都可以独立预测y=1/0,维度之间是互相独立的,例如聪明的学生考试成绩高的概率高,学习努力的学生考试成绩可能高,试卷简单考试成绩可能高。三个因素都对结果有影响,但是三个因素是独立的,显然因素越多,考试成绩高的概率越大,所以成绩的概率=w1*p1+w2*p2+w3*p3+delta。Delta表示噪音。

概率图模型中有相应章节说明。

**************************************************************************

但是维度独立这个假设对于图像识别不正确。例如我要识别”7”这个数字,不考虑背景,只有黑白2色,提供的样本图像中(一个样本只有一个数字7),数字部分都尽量不互相重叠,例如有的样本7在中间,有的7在角落,有的可以倒着写,等等。最终使得统计单个像素的黑白数量在分类上的分布,基本就是均匀的,任何一个像素对于数字”7”来说都不是特殊的存在。所以在这种特别构造的样本集,假设像素独立来预测分类结果基本上是瞎猜。

2.对非独立维度的分布关系学习和SVM的理解:

很明显识别数字7我们要考虑的是2个像素之间的共现关系,就是协方差。所以直观反应就是为什么不使用高斯分布呢?高斯分布的协方差不就体现了任意2个像素之间的共现关系吗?即使用图片x来预测类别y需要考虑x的任意2个像素之间的共现关系。所以可以使用SVM多项式核或者高斯核用来识别手写数字。

*******************************************************************************

SVM:

谈到SVM就想到max margin,但是SVM的核心是将线性分类函数w*x+b转换为了任意2个样本之间的内积关系,从而可以使用核函数将输入向量转换到高维空间,而所谓的高维空间就表示了样本x各个维度之间更复杂的相互关系,而不是维度之间是独立的。

简略的推导过程如下:

1bb5c221b69eb8174f095dbc3a1a244b.png

线性SVM就是要找一个平面将正例和负例分开,且正例和负例至少距离平面min(delta)。其中delta为样本距离平面的函数距离。

上图的斜线就是分类平面,wT*x +b=0. 再假设正例的y=1,负例的y=-1,所以样本的delta= y*(wT*x+b)

假设我们已经找到了min(delta)。则问题转换为:

y*(wT*x+b)>=min(delta),并且我们要找一个w来最大化min(delta)。

但是这个公式两边可以同时乘上一个因子放大和缩小min(delta),但是平面本身并不变,也就是说样本x到平面的几何距离d不变。最大化min(delta),实际上是最大化min(d)。

很容易证明x-d*w/||w||是x到平面上的投影。所以将该值代入到平面公式,便得到d=(wTX+b)/||w||= delta/||w||.

所以找一个w来最大化delta,变成了找w来最大化delta/||w||.

最后假设我已经找到delta了,完全可以2边直接都除以delta,让不等式右边始终为1.这并不影响我们的分类结果,所以让delta=1.

所以问题又变成max 1/||w||,于是可以变换为min ||w||^2,且y*(wT*x+b)>=1

这就转换为拉格朗日乘数法:即假设要求min f(x)且要满足g(x)>=0的一种求解方法。转换为如下函数.

42978a0316a3a61c16028d272822a1d3.png

具体推导过程不说明,问题变成求dL/dw=0,即对w求导=0,这样就获得w=

,然后将原wTX+b变成

函数L变成:

3d71f40572b419070b66f31374a5066e.png

这样将问题从找w变成找α且让函数L最大,使用SMO算法求α。其中

就称为SVM的核函数。

SVM详细推导过程可以参见https://blog.csdn.net/v_july_v/article/details/7624837

*******************************************************************************

回到我们一开始的问题,我们认为x的维度是不独立的,假设图像的分类是由2个像素之间的关系决定的,所以我们应该将向量(x1,x2,x3,…)变成(x1,x1^2,x1*x2,x1*x3,….)。于是向量就变的非常大,难以计算。我们认为这个变换是将向量x变换成Φ(x),那么对于SVM只需要将核函数变换为即可。具体核函数的推导略过。所以上面只需要将核函数转换为多项式核就可以了。

所以SVM关键能通过定义不同的核函数使用很少的代价将样本变换到高维空间,这个高维空间表达了维度之间的关联关系。我们认为样本在高维空间中是可以体现独立的(即关联关系之间互相独立),所以使用线性逻辑回归。SVM在手写数字上效果也很好。

3.隐状态的学习和EM算法:

但是SVM用在图像识别就不太有效了,另外在文本标识上效果也比较差。

文本标识效果差是因为文字之间的关联并没有图片的像素之间的关联那么强。例如我们判断一封邮件是否是垃圾邮件只需要看少量字词就可以了,理解一句话的含义不需要读整篇文章。SVM的核函数反而容易过拟合。

图像效果差是因为图像非常复杂的数据分布,部分像素有相关关系,但是部分像素没有,例如前景和后景就是独立的,部分像素有强共现关系,部分像素有弱共现关系等等。这么复杂的关系是无法使用一个概率函数来表示的,如果使用高斯核投影到无限维则会过拟合,如果投影的维度低了,对于复杂耦合关系又无法表达。所以从概率图上体现就是从输入图片的每个像素到最终的输出,我们需要找到不同的分布关系并提取该分布关系上的数据,从而构成一个语义网络,类似如下:

22904b79e7114dfa1e909183bdd068f1.png

其中横线,竖线是我们学习到的隐变量。学习到横线和竖线可能使用的是不同的分布函数。即假设我们使用分布p1可以预测x是否存在横线,使用p2可以预测x是否存在竖线。对横线的学习和竖线的学习是互相独立的。

为了能够学习到p1和p2,我们需要假设横线或者竖线可以使用哪些维度来表达,例如我们可以使用一个点坐标,一个方向角度和一个长度来描述一个线段并且我们希望机器学习能够学习到求具体的向量的值的函数。假设学习特征后,根据2个线的角度,长度和连接关系又表达了7这个数字。

从机器学习上来看上述过程是寻找隐变量的过程。EM算法可以用来求隐变量。

***************************************************************************

混合高斯模型:

假设我们已有样本x,我们认为样本x中隐含了n种特征z,每个z都是一个向量。这些z都是互相独立的,例如样本x是很多新闻,z则是新闻的种类。我们可以假设新闻的种类是互相独立的。z可能又可以预测其他什么结果。暂时我们不关心这个。

假设p(x|z=i)为高斯分布,期望为μi,方差为εi。有n个z,所以有n个高斯分布公式。

再假设p(z)是多项式分布,p(z=i)=Φi。注意这里的z是标量,不是向量。

很容易得出

P(z=i|x)=

假设我们已知μi,εi,Φi则可以计算出每个样本的p(z=i|x),

然后再寻找最优的μi,εi,Φi使得likelihood 最大。其中θ表示分布函数的参数,即μi,εi,Φi。

如果把多项式分布和高斯分布抽象为分布p和q,可以推导出通用的EM算法。具体的推导过程略过,感兴趣可以参考:https://blog.csdn.net/zhihua_oba/article/details/73776553

****************************************************************************

EM算法本质上就是先假设有n个隐态,然后假设分布的分布参数,计算出概率p,再优化分布参数最大化likelihood,从上面的逻辑回归的概率解释可见,实际上就是最小化cost,然后根据新的参数更新p。EM算法是非监督学习,但是我们可以在z后面加上真实的样本输出y,这样就可以获得cost并约束p(z),使得整个过程成为监督学习过程。将分布函数换成上面描述的sigmoid函数,z为标量,在迭代多层隐变量z,计算概率p就是前向传播,更新参数就是后向传播,这就是全连接网络了。

****************************************************************************

问题:如果使用高斯分布函数替换sigmoid和线性函数会如何?即我们试图学习的是局部特征的期望和协方差矩阵。在卷积网络中,由于卷积核都不大,计算协方差矩阵还是可能的。好处是可以通过期望和协方差矩阵可以直观的判断2个学习到的高斯分布是否是近似的,有助于剪枝。并且收敛可能会比较快,就不需要很多层了。

****************************************************************************

4.降维,因子分析法和卷积:

很显然全连接网络是有问题的,问题就在于z是标量,从上图可见,我们实际上是希望找到特征向量,特征向量可以表达直线,曲线,明暗等等,而标量只能体现类别,例如如果是返回特征向量,则输出可以是任意一个线段,如果返回的只是类别,那么任意一个不同的线段,例如横线和竖线,就需要分为2个类别。这样类别就太多了,学习出来的并非是可以泛化的规律,例如使用6个参数来表示线段,而是一个具体的类别的概率。所以也可以解释为什么CNN没有旋转可变性,因为一个线段旋转就是另外一个类了。但是由于滑动的窗口和逐渐放大的窗口,CNN具备平移可变性和一定的缩放可变性。

如何将高维数据降低到低维?假设高维数据的每个维度是独立的,则一定是因为高维数据的某些维度是无效的。之前在SVM中可以理解,假设数据之间存在关联,则把维度关联作为一个新的维度加入到向量中,最终可以使得高维数据的维度是独立的,所以我们可以先升维来寻找关联关系,然后再判断哪些维度是无效的,进行降维。

还是已线段为例,假设我们认为识别线段的像素的关联关系为像素x和像素y之间至少要距离d,且x和y连线上的其他像素和x,y的取值相近,且和周围其他像素取值具有较大差异,等等。这样就构造了一个复杂的函数,这个函数包括了点x,y及其周围的多个像素,并且需要计算他们的角度,差值的梯度等等。我们需要逐一的计算每个x,y对,这样就形成了一个高维向量,每一个维=函数(x,y和周围向量)。对应这个高维向量的函数存在很多未知的参数,例如颜色相近到底多近等等。所以这个函数不是一个确定的函数,而是一个概率函数,即参与计算的参数又允许存在误差,误差就成了分布函数的参数。当符合这个在分布误差范围内且满足函数我们就认为这个样本满足特征z并且可以输出下降到特征z对应的向量空间中,即代表了线段的起点,角度,长度这样的向量空间中。

我们还可以看到,对于一个图像来说,我们的特征一定是局部的。这是由真实世界决定的,我们看到的世界都是有个体组成,我们自然而然的针对个体进行特征识别,而不会针对整个看到的世界进行特征识别,因为物理上分离的个体就是独立的,特征当然要独立识别。所以很自然的,我们的特征函数只需要考察部分像素即可,所以这就是上面距离d的定义。超出范围d的像素不需要考察。

最后就是针对这个局部范围进行特征识别和降维。所以引入因子分析法:

因子分析法的思路是,假设我们有2个空间,一个是图片x的空间(这里可以假设x是一个滑动窗口),是个高维空间,一个是线段样本z的低维空间,已知特定样本x满足特定条件z,例如一个特定的线段,那所有符合z的x都聚集在该特定z的周围,例如呈现高斯分布。

一个简化的样例:

假设x是3维空间,z是2维空间,且x的3个维度互相独立且可以识别x是否属于z(即不需要非线性变换,例如x1*x2之类的)。当把所有具有特征z的x的样本标识出来,应该能够发现x聚集在某个特定的平面上,这个平面就是z的空间。

可以定义x到z的映射函数:x=μ+wz+ε。其中μ是三维向量,w是2*3矩阵,z是2维向量,ε是三维向量表示偏差。且偏差ε符合高斯分布~N(0,ψ)。所以x符合高斯~(μ,ψ)。假设z也符合高斯分布~N(0,τ)。我们可以通过修改z的坐标系,让z一定在0中心。遗憾的是z不一定是高斯分布。

然后定义一个新的向量X=

6283fbdf673d126dbc2feff28eba2be5.png

并且假设新向量X也符合高斯分布。我们可以使用上面假设的参数定义出X的高斯分布参数。然后就可以使用EM算法来逼近参数和z。

但是这个方法显然是有问题的,因为:1.我们不知道x到y的转换函数,即函数x=μ+wz+ε并不正确,我们实际上要搜索出一个正确的函数;2.z很可能不是高斯分布,类似上面描述的全连接网络,z实际上是通过最终结果y来约束的。所以CNN和这个方法没有关系,CNN可以如下理解:

  1. 通过对物理世界的观察,我们理解图像识别中的某个隐状态或者说特征一定是局部像素就可以确认的,但是我们不知道这个局部有多大,所以只能一点点的搜索,即从一个很小的窗口开始,观察所有的这样的小窗口是否可以转换为一个隐状态。
  2. 由于窗口足够小,所以特征类别可以足够少,每个小窗口的观察结果只输出类别信息,而不企图学习可以泛化的规律,即不去寻找映射函数和映射后的z向量,只寻找一个典型状态z的概率,这个典型状态z仅仅是因为样本聚集在某个特定空间附近,即满足特定分布。

经过这种改造,实际的结果就是卷积神经网络。所以可见,cnn本质上就是通过搜索和概率学习来穷举隐特征,而无法实现对规律的学习。但是我们所说的语义/概念等,除非是专有名词,都是指一般性的规律。所以cnn的成功在于:1.待解决问题的特征足够少,可以穷举;2.计算量足够大,能够穷举。但是引来的后果就是每个问题都需要重新学习,即解空间需要重新搜索,而无法直接运用公式。

总结:很容易理解人的智力是在真实世界探索获得的,是收到真实物理规律约束的,并非纯概率的游戏。人实际上是被物理规律所直接监督学习,根据物理规律获取到中间语义,而不是非监督学习,通过最终的结果反向评估可能的隐参数。从物理规律直接总结出的中间语义被固化到了人的基因中,成为人的本能。所以要建立和物理世界匹配的认知世界必须从最基本的物理含义监督学习,逐渐构建复杂的语义,否则就像现在的CNN一样可以训练识别复杂的对象,但是却无法识别线条,如果要识别线条需要重新训练。最基本的物理含义,即本能,的学习则可以使用神经网络,因为人的进化过程中对这些基本含义的理解就是依赖概率采样。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/94126
推荐阅读
相关标签
  

闽ICP备14008679号