机器学习中“数据分布”与“Batch Normalization”等概念的理解

首先,概率统计学中对“概率密度分布”的定义,在这里我就不再累述了,直接进入正题。

网上的一些文献用F(X,Y)去表述机器学习中的“数据分布”概念,我觉得不够严谨,因为统计学定义中的F(x,y)中的X与Y一般是一维随机变量(标量),这样才能跟分布函数中定义的 x,y 结合起来(我们怎么能让一个多维的随机变量去<于某个x呢),所以说写就要写全,比如说一个训练样本中的特征向量是n维,这个“数据分布”的严谨表达就应该是(X_1,X_2,X_3,…,X_n,Y)~F(x_1,x_2,x_3,…,x_n,y),y是标量标签,这可不是鸡蛋里挑刺呀,因为无论是机器学习还是深度学习,也就是拟合特征与类别的这中“分布”而已。

然而用冰冷的统计学公式原理去理解这个“数据分布”可能还不够直观,那我们可以画出来,如下图:横纵坐标表示两个特征值,颜色表示分类的标签,一个完完全全的“数据分布”不就可视化出来了吗?这样就比较容易理解了。
数据分布示意图

但是到这里可能还是缺乏一些对本质的理解,这时候就要跟机器学习或者深度学习的目的结合起来了:机器学习或者深度学习其实就是在拟合一个输入(标量或者向量)与输出(向量(one_hot)或者一个标量(线性回归或者逻辑回归))的映射(关系),例如,交叉熵损失函数,目标模型得出的概率向量中的正确的标签的概率往1逼近,但是这归根到底也是在拟合一个输入向量和一个”目标量“的映射。

但是实际操作的时候,我们用到的“训练集”永远只是真实数据的一部分,他的分布也只能说大概就是“真实数据”的样子(这里的分布是指特征与类别的关系情况),所以说数据集越大越好,也就更能真实确切地反映出所有真实数据的分布。(我这里有个疑惑希望网友知道的可以解答一下:就是在机器学习中是否假设特征完全一样的样本,真实数据中的分类就是肯定一样的呢)

所以我们去用机器学习去拟合这么一个有限数据集的数据分布的时候,得出来的结果也只能是。。。你懂的(当然如果您收集的数据集足够大,也许能近似地反映整个真实世界中的数据集)。然后平时我们们为什么说假设数据集分布跟训练集分布一样呢?现在就很容易理解了,不一样的话,训练出来没用。。关系对不上。。。。。(其实机器学习可以形象被形容为一个自恋的孩子,想把自己的有限的资源看作世界的所有)

然后我要说的第二个内容就是我对BN的理解,这个方法的出现其实是源于一种叫做Covariate Shift的问题的。这里讨论基于完全批量训练方法,因为这样比较容易讨论问题。我们把整个神经网络就看成一个“黑箱子”(就只有一层的神经网络),我们 fit 进去一批数据(全扔)。他就得按照目标函数的方式去拟合一个目标输出(注意,训练数据集的分布:“特征和类别的关系” 是不会改变的:特征向量>>>>目标输出),但是我们可以试想一下实际多层网络中“隐藏层们”的”感受“,数据第一次 fit 进去,第二层隐藏层会在第一次BP的时候为了拟合第一层(输入层)的输出跟最终目标输出的关系做出权重更新,但是到了第二次 fit 数据的时候,第一层的权重更新了,第二场会发现第一层的输出变了,这样跟目标输出的对应关系(目标输出还是没变)不就变了吗?那这个他要适应的”分布“不就变了吗?那还让隐藏层们怎么去快速收敛呢(我好难!!!)?所以就出现了类似BN,GN这样的方法去拉他们一把,让他们的分布尽可能保持一致(只能说尽可能哦,毕竟前一层的输出毕竟是真的变了嘛),然后对于BN的细微的理解。我还需要继续学习和思考,有新发现会继续跟各大网友交流,最后,求喷求指正,十分感谢。

参考文献
[1]: https://www.zhihu.com/question/267986445 “西部骚大叔-梁凯” 的回复
[2]: http://sofasofa.io/forum_main_post.php?postid=1002963
[3]: http://sofasofa.io/forum_main_post.php?postid=1002963
[4]广技师的小志勇

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页