今天就把前面数学篇提到的从概率论和信息论的角度看深度学习简单的讲一讲。
二、概率论
我们要研究这个问题首先要明白什么是概率?
概率,亦称“或然率”,它是反映随机事件出现的可能性大小。随机事件是指在相同条件下,可能出现也可能不出现的事件,概率是等分事件发生的可能性。
那么概率分布呢?
官方解释:指用于表述随机变量取值的概率规律。事件的概率表示了一次试验中某一个结果发生的可能性大小。
我的理解:
我们的系统需要站在宏观的角度来看一个事物的整体(各种特征)——(即利用概率分布判断标签label和输出的相似度)
比如经常我们在整个网络的最后加上sigmold(2类)/softmax(多类)等函数就是为了让输出值是概率值(0-1)之间。
说到概率分布,那就要提到高斯分布(正态分布,误差分布)
(0,1)标准正态分布
最高为坐标为期望(均值)
期望:值乘以对应概率的总和————加权平均数(数-期望=数独有的特征(差距))
方差确定曲线胖矮
方差:(数-期望)**2,再求期望——(整体误差的期望)-用来衡量误差的大小,即数据的离散程度
一般我们神经网络的初始权重w,b的取值都是从开始的(数据都是落到百分之97之间的范围,w不能太小)
二、信息论
前面我们通过概率论的知识了解到了神经网络其实是在对比输出和标签的概率分布的差别,然后以差别(误差)作为损失进行梯度下降、反向传播的。那么我们这个“差别”(loss)到底是怎么得到的呢?
我们先来简单的了解一下信息论,信息论告诉我们:信息是可以度量的(比如:“我和兄弟去酒店”and”我和女朋友的闺蜜去酒店“,显而易见这两句话的信息量是不同的,因为第二句话具有更多不确定性,即不确定性有多大,信息量就有多大。
信息量的公式:
P(X)就是概率,为什么是前面有一个负号呢?因为概率越大,不确定性越少,信息量就越小。
那为什么是log函数呢?因为多个事件同时发生的概率是事件概率相乘,而多个事件的总信息量是多个信息量相加,而对数函数有一个运算法则不谋而合。(把M、N看作概率p1,p2,就会明白)
信息熵:熵是用来衡量一个系统的不确定性-熵就是信息的期望
公式:(熵)H(X)=P(X)-log(P(X))————对系统贡献的信息量、不确定性越高熵越大
我们明白了信息的一些相关知识,回到初衷,我们是为了找到得到两个概率分布的差别
这里我们引入了一个新的方法:
KL散度>=0——(评判两个概率分布之间的差距)-无需知晓其数学原理
KL散度(也叫相对熵)=交叉熵(未知)-信息熵(系统一旦确定就是已知的即不变)
交叉熵:衡量两个概率分布之间的距离
由于交叉熵>=信息熵(吉布斯不等式已经证明),所以只要交叉熵越小越好,不用管信息熵是多少,也不用担心KL散度为负数。
那么我们就可以利用交叉熵来做损失函数。
总结:
通过以上的学习,我们就将神经网络抽象成了一个概率分布的问题,这对于我们今后的学习是很有帮助的的,关于高斯分布和深度学习之间的关系我会在后面进一步学习,实际上我们很多时候都希望模型的输出符合高斯分布。