本篇是写给普通人或对人工智能了解很少的从业人员的,不涉及到相关的开发知识,会以闲聊的口吻来讲述机器学习的发展和演化,笔者做为一个普通大学毕业多年,高数等全全忘光的年长码农,经过近几个月的研究和尝试,本着分享的观点有了这一系列的文档,可能很片面甚至有所谬误,各位见谅。
人工智能的常见术语
我认为人工智能是一个统称,而机器学习可以简单的理解为人工智能实现的一个流派。由于前几年Alpha go赢了才在中国普通群众层面火起来,弄得人尽皆知,而且大家没有觉得机器学习这个词用着比己经审美疲劳的人工智能这个更听着更高大上一些。
机器学习这个流派主导AI界以前比较受关注的方案是算法派,人们会尝试自行的去寻找某一类问题后面的算法然后交给计算机去处理,比如在Alpha go之前有一个IBM的国际象棋机器人叫深蓝当年赢了某个国际象棋大师也是轰动一时,后笔者和某个前辈程序员聊起来时,他认为短时间内是没办法破解围棋的,主要瓶颈是棋型的识别以及计算量太大。
当然现在看来计算机的发展可以说是光速级的,前几年就性能过剩了,IBM不做机器了改卖资询方案了。
以经典的买芒果为例其中人工去做算法的归纳就是以前的做法,现代我们用的很多软件功能其实还是基于这个方法的,传统的文字识别、语音识别、玩游戏的AI等,提起游戏笔者正琢磨着是不是该有款基于机器学习为核心玩法的游戏出现呢。
买芒果
嘴馋的你想吃芒果了,于是你走到水果摊,挑了几个让老板过过秤,然后你再根据芒果的斤两付钱走人。
显然,买芒果你当然是挑着最甜、最熟的来买(因为你是根据重量而不是质量来掏钱的)。怎么个挑法才靠谱呢?
对了,你奶奶说过,金黄色的要比浅黄的更甜些。于是你就做了一个简单的规定:只挑金黄色的买,过磅、付钱、回家。就这么简单?
不尽然。
生活没那么简单
拎着芒果回到了家,尝了尝,你发现有些很对口味,有些则马马虎虎。显然,光凭你奶奶的智慧还是有所不足的。挑芒果不能只看颜色。
一番细品,再一番苦想之后,你得出了结论:那些大个儿的、金黄色的芒果一定是甜的,而那些小个儿的、金黄的就只有一半是甜的了。(比如,你买了100个黄灿灿的芒果,50个个头较大,50个个头一般,那么个头大的那50个就都是甜的,个头小的50个当中就平均只有25个是甜的了。)
你对自己的研究发现甚感满意,想着下次买芒果的时候能更靠谱些。终于你又来到了水果市场,发现你最常去的那个水果摊已经见不着踪影了。于是你就找了另一个摊档,而他们的芒果又产自不同的地方。你挠挠头,叹了口气:得了,“大个、金黄色的果子甜”的经验在这又不适用了,一切从头开始。尝了一遍后,你发现那些小个的、浅黄的芒果是当中最甜的。
你的表妹大老远的来看你,你决定给她整些美味的芒果尝尝。但她并不在乎果子甜不甜,而只关心是不是鲜嫩多汁。好吧,你又挠挠头,在果摊尝了一遍,发现越软的越多汁。
这次,你到了另一个国度。这儿的芒果味道与家乡的截然不同:绿色的竟然要比黄色的味道更棒。
你结了婚,发现她对芒果完全不感冒,而对苹果很是喜欢。这回,你又跑去买苹果去了。你又得学神农“遍尝百果”,摸索苹果的物理特征和味道之间都有怎样的联系——为了她,又有什么不可以的呢?满满的都是爱呀。
写段电脑程序来帮忙
为什么不用电脑程序来帮你挑芒果(或苹果)呢?你把规则写了出来:
if (color is bright yellow and size is big and sold by favorite vendor): mango is sweet.
if (soft): mango is juicy.
etc.
这就是你挑芒果用到的规则了。把它发给你的弟弟,想必他也能帮你买到对你口味的芒果。
但问题在于,每回你在试验之后得出了观察结果,你都得把规则做一番修正。你还得明察秋毫地了解清楚都有那些因素在影响芒果的品质。如果问题复杂起来的话,你在上面耗费的心血甚至都有可能为你拿个“芒果科学”的PhD下来(如果有的话)。
但这样的大闲人还真的不多。
写个机器学习算法吧
机器学习算法是普通算法的进化版,它们让你的程序变得“更聪明”,能从你提供的数据里自动学到东西。
你在市场上随机选择了某个品种的芒果(training data),把每个芒果的物理特征都写进了一个表格——颜色、大小、形状、产地、所属果摊等(features),甜度、多汁程度、成熟度(output variables)也做了记录。你把这些数据都放进了一个机器学习算法(classification/regression),然后这个算法就会自动从芒果的物理特征和品质之间得出一个相关性模型。
等到下一回你到市场的时候,你把在售的芒果的特征信息都收集起来,再扔进你的机器学习算法,它就会利用之前计算出来的模型来预测哪些芒果是甜的、熟的、以及/或多汁的了。该算法可能会使用和你曾经手写的差不多的规则,也有可能使用的规则会更有相关性,不管怎样,在很大程度上你都不用操太多心了。
现在,算法在手,你就可以挺直身板去买芒果去了。更重要的是,你的算法还能继续演进(reinforcement learning),读取更多的训练数据,准确率也更高,每预测错误后再进行自我修正。更妙的是,你还能用同一个算法来训练不同的模型,预测预测苹果、橙子、香蕉、葡萄、樱桃、西瓜什么的。
写到这大家对机器学习己经有了简单认知,后面我介绍的所有概念都是这个方法领域下面的子项。
神经网络
其实就实际指某种机器学习的实现方法,使用模拟人类神经元的方式来实现机器学习,粗浅的理解就是使用实际机算机实际基本的与与非门那样的神经元,通过组合多个神经元来实现机器学习的目的。许多人工智能的实现都依赖这种方式,主要用于分类、模式识别,决策。
深度学习和卷积神经网络
其实区别不大,深度学习是指方式,卷积神经网络是指实现。如果有开发背景的读者可以理解为接口定义和实现,到了卷积神经网络这一层才是我们真正常见的机器学习服务。
自么入门深度学习
一般码农,可以先从使用几大厂商的各种AI产品入手,国内BAT、国外Google MS都提供一些AI接口让用户方便的完成语音识别、图像识别、语言理解等功能,你可以很方便的让你的程序智能起来。
有追求的码农,可以尝试炼丹了,基于TensorFlow平台去自己制作自己的模型(切记有台好机器),要求该码农有扎实的数学基础。
高级码农,己经拿着自己的模型去忽悠投资去了吧。
网友评论