人工智能和人脑的智能其实是两个完全不同的概念,机器学习探索的是事物之间的相关性。比如当大数据发现如果小孩子常吃鱼肝油,学习成绩会普遍高于平均水平。那我们能不能说鱼肝油让孩子的成绩更好呢?恐怕不能。这个数据只是显示了鱼肝油和成绩好之间的相关性。也许真正的原因是有钱人家的孩子才吃得起鱼肝油,而有钱人家的学习氛围普遍更好。但是机器学习不管这些,机器是不需要理解因果性的,所以你看谷歌的AlphaGo下棋时,它其实并不理解自己下这一步的目的是什么,它只是算出下在这里获胜的概率更大。
因果关系是比大数据更基本的东西。但在机器学习领域,有一句话人人都爱说的话,叫“相关就够了”。为什么“相关就够了”?因为因果性是很难归纳总结出来的,特别是当事件错综复杂交织在一起时。所以可以说,追求“相关性”是一种退而求其次的办法。
机器学习在归纳总结“相关性”时,就需要用到算法。今天我会介绍机器学习十大算法中鼎鼎有名的贝叶斯算法。
一句话来概括贝叶斯思想,就是“观点随事实发生改变”。我认为这是贝叶斯算法的精髓。现实世界事物之间的关联是很复杂的,所以你对于事物判断所形成的观点,往往需要经常去核实和修正。如何科学的修正,就是贝叶斯方法。
贝叶斯方法的本质,就是从结果推测缘由。这就有点像破案,你来到案发现场,收集证据(结果)。通过证据的叠加,凶手的特征逐渐清晰。最终你选择“相信”谁是凶手。贝叶斯说,你对某个假设的“相信”程度,应该用一个概率来表示——P(假设)。
P=1 就是绝对相信,P=0就是绝对不信,P=15%就是有一点点信。我们通过假设,把“相信”这件事给量化了。
当发现了新的证据,我们就要更新这个概率,于是就变成了——P(假设|证据),这个叫条件概率。P(A|B)指的是“在B事件为真的条件下,A事件的概率”。比如说,A事件是下雨,B事件是你看到路上有人带伞,你可以通过B事件判断,今天下雨的概率可能会比较大。
但是P(A|B)这个概率还是很难算的,这叫逆概率。就算你看到有人带伞了,你也很难算出今天下雨的概率。但是反过来算P(B|A),也就是如果今天下雨了,那算行人带伞的概率会好算很多。这跟人的思维方式有关,顺向思维总是容易的,逆向思维就比较难。再举个例子,你女朋友知道你出轨了,那么她扇你耳光的概率是比较容易估计的(基本没跑了)。但如果反过来,她突然扇了你一个耳光。你想推导出她到底发没发现你出轨了,还是有点困难的。毕竟女人扇你耳光的理由可以丰富多彩。
那要算这样的一个逆概率,我们就要用到贝叶斯方法。
继续用女朋友知道你出轨和你女朋友扇你耳光的例子做分析。假设女朋友知道你出轨是A事件,你女朋友扇你是B事件。我们先来考虑,如果A和B都发生的概率有多大呢?
这里有两种算法。一种是先算出B事件发生的概率,P(B);再算B发生的情况下,A也发生的概率有多大,也就是P(A|B),那么A、B事件都发生的概率就是把两个数相乘,P(B) x P(A|B)。同理,先考虑A发生,再考虑A发生的条件下B也发生,结果就是P(B|A) x P(A)。这两个算法的结果一定是相等的,P(B) x P(A|B) = P(B|A) x P(A)。
于是,
这就是贝叶斯公式。这里面P(A),P(B)和P(B|A)都容易知道。就能间接算出P(A|B)。
公式中右边乘法的第一项P(B|A)/P(B)有时候被称为“似然比”,所以贝叶斯公式可以写成:
这就是一个观念更新公式。P(假设)是你的老观念,有了新的证据以后,P(假设|证据)就是你的新观念。新观念等于老观念乘上似然比。
到了1982年,贝叶斯方法被引入人工智能领域,于是有了“贝叶斯网络”。
我们可以看到贝叶斯网络中,不同的事件之间,由箭头连接。箭头从A事件指向B事件,并不是说A事件导致了B事件,这里面并非因果关系,而是说A事件到B事件存在一定的条件概率。我们可以在每一个节点上设置一个信念值,每当有新的数据或者说新的证据进入到该网络。这些信念值就会发生变化,这种变化会沿着贝叶斯网络扩散开来,形成“信念的传播”。
贝叶斯网络仍然是基于经验,它并没有能够理解因果关系。但它的计算结果却能够在一定程度上体现因果关系。在机器学习领域,我们的语音识别,垃圾邮件过滤,目标筛选等等应用,都用到了贝叶斯方法。
洞察 腾讯核心技术
剖析业界实践案例