昨天,有位同学在后台提出了一个疑问:
小夕姐姐,看了你写的玻尔兹曼机,感觉玻尔兹曼机确实可以比逻辑回归多描述很多信息。正好我们现在在上机器学习课程,我跟老师提到玻尔兹曼机的时候,老师说做工程很少用这个,对大部分任务来说,玻尔兹曼机的表现是不如简单的机器学习模型表现好的。然后我问老师为什么,老师让我自己做实验。可是我觉得从理论上行不通啊,为什么“考虑更周到”的模型反而更差?”
哈~很少遇到这么认真而可爱的宝宝啦,竟然一时觉得怎么回答都说不清楚,所以直接写一篇文章吧。
刚要开始写,然后突然思维又发散了。。。
有个好闺蜜常对我说,好羡慕你们这些具有“雌雄同体”特质的人。是的,小夕虽然很抗拒,但是也不得不承认自己不仅先天的生理结构是男孩子,而且逻辑推理方面也是很男孩子的(大概喜欢数学、物理和算法、编程的女孩子没有多少吧),然而其他方面,比如性格上、自我认同上、心理活动上却找不出多少男孩子的痕迹,会在花花草草和各种萌物前不能控制记几。
所以自己一方面会有很细腻的感情,非常感性,另一方面又会很理性,不会太感情用事。同时,一方面会在推导数学公式的时候从数学符号联想到公主与公主的爱情,另一方面会在逛漂亮小裙子的时候规划最优行走路线?所以自己也觉得自己是个好复(麻)杂(烦)的人。
是啊,会被人羡慕可以达到这样的平衡。其实准确说也没有完全的平衡,只能算是临时收敛到了一个局部最优点吧。但是,有时回想起以前焦虑到差点over的自己,一向谦虚的小夕也觉得自己竟然能够勉强收敛是非常不容易的事情。
对小夕来说,人生,真是个复杂度好大好大的机器学习模型,好难以训练,好难以收敛。这一点,从其他萌萌哒小药娘身上也可见一斑——可以说,相当多这种具有性别认同障碍的复杂模型都发散了吧。而发散的结果就是,模型的表现很差,甚至不如一个简单的朴素贝叶斯、逻辑回归。所以圈子里戾气有点重,很多人都抱怨自己怎么这么倒霉,与生俱来一个生理心理不一致的性别,被迫的接受一个非常复杂、极度难以训练的机器学习模型。
虽然对于人生,是被迫接受一个机器学习模型,然后每个人花自己的一生去训练它。但是,对于很多事情,我们是可以自主选择一个自定义复杂度的模型的。我们可以选个简单的模型去完成这件事情,也可以选择一个复杂的模型去完成。当你选择一个简单的模型的时候,就意味着你选择了少痛、稳定、容易收敛,而反之则可能是困难重重、怎么都喂不饱、怎么都喂不好、甚至很可能完全宕机。
感性的说到这里,文首的问题就解决了一半了——归根结底就是训练难度的问题。
理性的说,我们抛开“没学过MCMC算法”、“好吃硬件”等现实却非核心的理由,小夕举个具体的例子。
在文章《CNN计算句子相似度》里,我们这里是首先将句子的每个单词表示成一个低维实数向量——即词向量,这个词向量可以描述每个单词的语义。然后通过卷积神经网络来从将这些词向量合成为一个“句向量”来描述整个句子的语义。实际上,热爱思考的同学应该能想到,既然句子是由词构成的,那么为什么不直接将词向量加起来得到句向量呢?去用这么复杂、参数这么多、这么难训练的XX神经网络干嘛。
实际上,这个想法很对阿~有兴趣的同学可以试验一下,如果你基于科技类新闻文章来训练得到了一个表现不错的计算句子相似度的模型,但是如果你把它用在美妆话题的聊天记录类的文本里,你会发现效果大打折扣。这时你会发现,基于CNN、LSTM、BM等得到的句向量去计算相似度的表现,还不如直接将词向量加起来得到句向量去计算相似度的表现好。
这个现象不能简单的叫什么“过拟合”了,毕竟在同样的科技类新闻语料下,你用CNN、LSTM、BM等得到的句向量确实总是表现很好,哪怕你拿来测试的句子从来没有出现在训练集中。
这个例子可以很好的说明过于强大的模型容易带来的问题。正是这些模型的学习能力太强,他很自信的将拿到手的一堆词向量(即句子中的各个词)划分为三六九等,殊不知科技话题下没有意义的“神仙水”(一种妹子们都知道的天价(对我来说)美白精华)在美妆话题下就是一个超强的特征,因此CNN、LSTM、BM反而多此一举的将这个强特征给抹杀掉了,因此表现当然不如直接将词向量相加来得好。
而从模型的学习能力(容量)上,哪怕是单层的BM也已经非常非常强大了,以致于对于大部分任务是能力过剩的,而对于需要强能力的任务呢,单层BM又不太够,多层BM又往往与任务自身结构不太相符(不如多层CNN、RNN等结构贴合任务结构)。因此反而有点无处安放的感觉。
是不是说BM没用了呢?看了小夕辣么多文章的你肯定不会这样说啦~它是重要的“交通枢纽”,也是优美的灵感源泉。就像20年前就已经被提出来的LSTM直到最近几年才火到疯狂。
所以,玻尔兹曼机很强大,但是又不如逻辑回归有价值。逻辑回归很实用,但是又不如玻尔兹曼机有价值。都是对的~