1 神经网络是个什么东西
时间进入2014年,我们在各种媒体上看到与大数据和人工智能相关的新闻,其中炒得最热的是深度学习,深度学习是什么?神经网络跟深度学习是什么关系?我们带着这样的疑问来看如下事例。
1.1 买橙子和机器学习
有一天,你到水果店去买橙子,当然要挑选最甜、最熟的。你是根据橙子的重量来付钱的,而不是根据橙子的甜度或者成熟度,虽然水果店有时候会把好的橙子挑出一堆单独涨价,但是这里没这么做。
你妈妈曾经告诉你,橙子要挑深橙色的,颜色有点发红的,这样的橙子最甜,不要挑那些浅黄色甚至发青的,那些还没熟透。
这样你就有了一点经验,虽然这点经验是别人直接教给你的,但你也可以在挑选的时候用上:深橙色的橙子熟透了,甜。你在水果店,挑了些深橙色的橙子,称重付钱回家了。这事就这么完了?别急,还有下文。
小事儿也没那么简单。
你回到家,高高兴兴吃橙子,但是你发现并不是每个橙子都那么甜,有一些还是不够甜。看来妈妈的经验还是不足,只通过颜色判断橙子甜不甜,不是很靠谱。
你开始回忆自己吃过的橙子。到底什么样子的橙子最甜?好像是个头大而且是深橙色的比较甜,那些个头小的深橙色的橙子,大概有一半是不甜的。(比如,买了100个深橙色的橙子,有50个大的,都是甜的;另外50个小的,其中有25个是不甜的。)
你总算总结出了一条经验规则:大的深橙色的橙子是最甜的,哈哈。你又高高兴兴地去买橙子。可你熟悉的那种橙子卖完了,现在卖的是另一个品种,产自不同的地方,你之前总结的经验可能行不通了。你不知道之前的经验能不能迁移过去(迁移学习),于是你重新尝试,把各种橙子买回家尝,几次之后你发现这个品种中小的、浅黄色的橙子是最甜的!
过了几天,表妹来你家玩,她想吃橙子,于是你们一起去买。她不在乎橙子甜不甜,只要多汁就好。唉,从前总结的经验又不管用了。你只能开始新的一轮实验,目标就是多汁的橙子(优化目标变了)。你又总结出,捏起来越有弹性的橙子汁越多。
后来,你出国读书,国外的橙子跟你家乡卖的又不一样了,这里果蒂小、皮细腻的最好吃。毕业后,你结婚了,老婆不喜欢吃橙子,喜欢吃香蕉。生活是两个人的事情,从现在开始,你不光要买橙子,还要买香蕉!你积累的挑选橙子的经验规则都行不通了。你只能从头开始新的实验尝试,虽然这个过程很枯燥,但是你去做了,因为你爱她。
1.1.1 规则列表
你想把如何挑选橙子、香蕉等这些水果的方法和经验用程序实现,这样用计算机,甚至用你的手机摄像头扫一下,就能自动挑选出很多好吃的水果。因为你积累了一些规则,可以这么实现:
if (color is deep orange and size is big and sold by favorite vendor): orange is sweet. if (flexible): orange is juicy. etc.
这些规则越来越多的话,特征之间的组合就越来越麻烦和复杂,管理和使用都很麻烦。写程序实现的时候,谁会笨到写这么多If…Then,这个时候就涉及我们的下一个问题。
1.1.2 机器学习
机器学习算法是普通算法的进化,更加聪明和自动。现在,我们分析如何把选橙子的问题定义成标准的机器学习问题。
随机选择一个市场上的橙子,作为我们要研究的目标(Training Data)。你可以用一个表格描述橙子的属性和类型的关系,每一行可以放一个橙子的数据,包括橙子的各种物理属性(Feature):颜色、大小、形状、产地等,还有品尝时橙子的属性(Output Variables):甜度、成熟度、多汁度等。现在这就是一个多分类问题,或者是回归问题,自动从数据中学习出特征与橙子类型的各种关系等。
如果用决策树算法,那么这个模型的样子就是你的规则库。当然,你也可以使用其他模型,比如线性模型,这样就是特征的线性组合了。
下次你去买水果,采集了一个橙子的各个指标特征,扔进你的模型,模型就会告诉你这个橙子的各种属性。
甚至你选择橙子的模型稍微变化下就可以选择香蕉了,这就叫迁移学习。
甚至你的模型会随着新的样本、新橙子的种类,变得越来越好,越来越全面,增量学习。
……
这就是机器学习,大家有点感觉了吗?