1700515850
天才与算法:人脑与AI的数学思维 第6章 算法的进化
1700515851
1700515852
卡尔·荣格(Carl Jung)
1700515853
1700515854
知识不仅建立在真理之上,也建立在错误之上。
1700515855
1700515856
现代算法是可以自学的,尤其是推荐系统算法,它可以根据每个人的喜好推荐有趣的东西给我们,比如说适合的电影、书籍、音乐,等等。算法通过与用户之间的交互过程,获取用户的个人偏好信息,并从中学习进一步完善自身,发现其中的关联关系,以便为下一位用户提供更优质的推荐信息。为了满足自己的好奇心,我研究了其中一种算法,想知道它到底能有多了解我。所以,在剑桥微软实验室测试Xbox游戏机所用的Kinect视觉识别算法时,我顺便拜访了一位同事,想向他了解一个实时推荐系统的算法原理。
1700515857
1700515858
该推荐系统的用户界面上随机排列了约200部影片,我要做的是如果看到自己喜欢的影片,就把它拖放到屏幕的右侧。其中的确有一些是我比较喜欢的影片。因为我是韦斯·安德森(Wes Anderson)的超级粉丝,所以就把《青春年少》拖到了屏幕右边。于是,屏幕中的影片位置自动调整,将我可能喜欢的电影放到靠右侧的位置,而将我可能不太喜欢的电影放到靠左侧的位置。仅仅通过一部电影是不足以训练算法的,所以大部分尚未被分类的影片仍然停留在屏幕中间的区域。
1700515859
1700515860
《王牌大贱谍》这部影片我觉得很无聊,属于我特别不喜欢的类型,所以我就把它拖到了屏幕左侧的回收站里。这一操作为算法提供了进一步学习所需的新信息,使屏幕中影片的位置又进行了一次调整,我似乎能感觉到算法对自己提供的建议很有信心:它将伍迪·艾伦(Woody Allen)的《曼哈顿》推荐为我喜欢的电影。这部影片确实是我喜欢的,尽管算法是对的,但此时它还没有给我特别多的惊喜。它可能觉得我会比较喜欢《摇滚万岁》,所以将这部电影向右侧移动了。但事实恰好相反,我不能忍受这部影片,所以我把它拖到了回收站里。
1700515861
1700515862
算法本来以为我会喜欢《摇滚万岁》,但事实上我不喜欢,从这个过程中它获取到了重要的新信息。屏幕上的影片又一次进行了重新排列,并且此次调整的幅度非常大。这是因为系统后台的算法程序发生了微妙的改变——它根据我此次的选择学到了更多的“新知识”,并微调了推荐系统的模型参数。它判断我可能喜欢《摇滚万岁》这部影片的概率过高,所以通过修正特定的参数来降低其值。虽然此前它从别的既喜欢韦斯·安德森又喜欢《曼哈顿》的那部分影迷处得知,他们也喜欢《摇滚万岁》这部电影,但这一条并不适用于我。
1700515863
1700515864
正是这种人机交互给算法提供了持续学习的新数据,使它可以不断进行自我调整以适配我们的喜好。在当今社会,这些算法在我们做出各种抉择时发挥了巨大作用:选择电影、音乐、书籍,甚至伴侣,等等。
1700515865
1700515866
1700515867
1700515868
1700515870
天才与算法:人脑与AI的数学思维 如果你喜欢……
1700515871
1700515872
电影推荐系统的算法原理比较简单。假定你喜欢电影A、B和C,而另一个用户也喜欢它们,但他还喜欢电影D,那么,D极有可能也是你所喜欢的。当然,现实中数据之间的逻辑关系并非如此简单。你喜欢电影A、B和C是因为这些影片里有你最喜欢的某位演员,但他并没有出演D这部电影。而另一个用户之所以喜欢A、B、C、D四部电影,是因为它们都是惊险刺激的间谍电影。
1700515873
1700515874
算法通过查看你所提供的信息,分析出你喜欢某类电影的原因,进而会把你和那些曾经做出过相同选择的人匹配、关联到一起。算法需要在大量的初始数据样本基础上展开工作,这一点跟许多机器学习算法是相同的。机器学习的一个重要特点是,人类必须参与到数据的分类过程中,以便让机器知道它所看到的到底是什么。这种管理数据的行为为算法提取潜在信息的模式做好了紧前准备。
1700515875
1700515876
算法在用户浏览影片库的行为过程中拾取关键特征值,如浪漫爱情喜剧、科幻片,或者是某位演员、某位导演的作品。但是,这种方法并不理想。首先,非常耗时;其次,分类的过程存在不客观因素,计算机最终学会的是已知的知识,而不能发现新的潜在趋势,从而导致计算机形成拟人态的思维定式。从最原始的数据中学习并发现模式是训练算法最好的方式。
1700515877
1700515878
奈飞公司开发出自己的电影推荐系统后,在2006年举办了奈飞大奖赛,期望通过竞争来发掘最优的算法。当时,奈飞公司已经积累了大量的电影评级数据,评分等级分为1~5星。于是,它公开了一个包含100 480 507个元素的电影评级训练集合,这些元素取自480 189个用户对17 770部电影的评价。然后,奈飞公司将17 770部电影的名称替换为数字序号,即变为匿名状态。比如,2666代表的可能是《银翼杀手》,也可能是《安妮·霍尔》,或其他任何一部影片。只有用户给这部电影的评分是已知的。
1700515879
1700515880
同时,奈飞公司还公布了一个包含2 817 131个元素的测试集合。测试集合的用户对电影所做的评价是未知的,因此参赛队提交的算法必须预测测试集合中所有的元素所对应的评价等级。比如,根据已有的数据预测出用户234654对2666这部影片的评价等级。重赏之下必有勇夫,奈飞公司宣布设立100万美元奖金作为奖励,获奖条件是:以推荐效率提高10%的优势击败奈飞的自有算法。附加条件是:获胜者必须公开自己的算法并授予奈飞公司非排他性的许可,让奈飞公司有权使用这个算法向用户推荐电影。
1700515881
1700515882
除了100万美元的终极奖项,大赛还设立了几个进步奖:将上一年度成绩最好的推荐算法的效率提高至少1%的团队,将获得进步奖50 000美元。该奖项每年度都会有,但领取奖金的前提条件依然是需要公开算法的代码。
1700515883
1700515884
可能你会觉得从这样的数据里得不到有价值的信息,因为你甚至不知道2666所代表的影片是喜剧片还是科幻片。事实上,原始数据所蕴含的信息远比我们想象的要多。假设我们将每部电影视为一个维度,所有影片就构成了一个17 770维度的空间,那么每个用户就可以被看作这个17 770维空间中的一个点。每一部电影对应一个维度,用户对影片的评价越高,那么在该维度上此点偏离原点的距离就越远。当然,除非你是一个数学家,不然把用户看作17 770维空间中的点是很难想象的。实际上,我们可以把高维空间看作三维空间的扩展。假定只有3部影片被评级,我们可以用图形化的方式将用户与影片评级的关系表示出来。
1700515885
1700515886
假设电影1是《狮子王》,电影2是《闪灵》,电影3是《曼哈顿》。某一用户对这三部影片的评级分别为1星、4星和5星。用x、y、z轴表示用户对电影1、电影2、电影3的喜爱等级,建立三维空间直角坐标系,如图6-1所示。这时,我们可以确定该用户在坐标系中的位置是(1,4,5)。
1700515887
1700515888
1700515889
1700515890
1700515891
图 6-1
1700515892
1700515893
虽然在几何上无法绘制出17 770维空间以呈现用户在该空间上的所在位置,但数学可以。如果能把用户看成17 770维空间中的点,那么同样能把影片看作480 189维(用户数)空间中的点,此时,如果用户对影片评价越高,那么在该维度上此点偏离原点就越远。这些点分散在如此之大的维度中,很难发现其间存在的模式。因此,如果希望借助计算机找出数据中包含的信息,那么就需要降维处理。
1700515894
1700515895
这就好比一系列从不同角度得到的某人的头部剪影,其中一些更具代表性,更容易辨识一样。比如,希区柯克(Hitchcock)的侧影轮廓就比正面投影更易辨认。电影和用户就像脸上一个一个的点,以一个角度投影,可能会看到这些点连成一条线,而以另外的一个角度投影,则可能并不会发现有明显的信息出现。
1700515896
1700515897
按照这个思路,我们或许能找到一种办法,将高维空间中的电影和用户对应的点同时投射到一个二维平面上,这样用户对应的点就会非常接近他喜爱的电影所对应的点。这种办法的巧妙之处就在于,能够寻找到揭示影片、用户所具有的潜在特征的合适投影。例如,图6-2是100个用户和500部电影匹配过后在二维平面中的投影,所使用的数据均来自奈飞公司的数据库。代表用户的点与代表影片的点很好地拟合,其余各处均未出现异常多余的点。我们可以通过这个投影找到数据中的信息。
1700515898
[
上一页 ]
[ :1.700515849e+09 ]
[
下一页 ]