这是一个名词满天飞的时代。人工智能、机器学习、数据挖掘、神经网络、深度学习等等词汇,先是在科技圈、慢慢的扩展到普罗大众的生活圈,铺天盖地的出现。
但相当多的人,甚至一些科技圈内非该领域的人士,面对这些词汇时,也是一头雾水。
故事得先从人工智能讲起。人类一直有个梦想:望能够复制人类的智能,将其应用到不同的领域。最常见的,莫过于制造出一个具有人类智能的人形机器(没错,我们一般称之为:机器人)。
那么,人类的智能是什么呢?第一个层次,人有感知能力,即有视觉、听觉、嗅觉、触觉、味觉;第二个层次,人有认知的能力,即能够将感知到的“数据”,进行分析、推理、总结、归纳等,形成可用于决策的结论、或者可用于指导行动的知识。更进一步、能够存储这些结论或知识,形成所谓的“经验”。
所以,所谓人工智能,就是用于构建人类感知、认知能力的一系列技术的总称。
对于感知,我们可以通过摄像头、麦克风、以及嗅/触/味相关传感器采集到数据,这些技术相对成熟(可工程应用)。
不成熟的领域,在于我们如何使用这些数据,进行分析、推理、总结、归纳,从而获得所需要的结论或知识。
一个最常见的例子,摄像头拍摄一张图片,我们该采用什么技术,让计算机来自动识别出其中包含的物体是什么?
围绕这些问题的解决,出现了一系列的技术。其中最成功的,莫过于机器学习技术。“机器学习”中的机器是指计算设备,也就是我们常见的计算机;而学习则是采用一些数学的计算方法(我们一般称之为:算法),让计算机执行这些算法,从而能得到一个结果。
是不是很神奇?其实不然。凡是初中文化程度的人,都能看懂下面这串字符:
y=f(x)
x我们称之为自变量、y称之为因变量,f()代表一种函数。对于每个x,函数运算后得到一个y。比如f(x)是2x+1,则当x=0时,y=1。这里,2我们称之为系数、1称之为常量。
更进一步,函数可能有多个因变量,如:y=f(x1,x2,……xn)。道理一样,对于一组具体的x1,x2,……xn,y会有一个确定的值。
回到上面那个例子:摄像头拍摄的图片为数字图像,由很多个很微小的方点构成,称之为像素。像素按行列整理排列,如下图:

每个像素由三个数字来表示,形式如(0,0,255),分别是该点的颜色的红、绿、蓝三种颜色的度量值。

假设上图中共有255行、每行255列个像素,我们把图片的像素值,按先行后列的方式排列,则会有一组值:

这样对于这个图片,我们就有了一组数据,这一组数据共有:255x255 x 3=195075个数字。
可以设想一下,如果我们有这样一个函数:
y=f(x1,x2,……x195075)
它的自变量有195075个,代表像素值;因变量为指代图片中物体类别的数字,如:1代表为猫,2代表为狗…….。每当我们输入一个有255行255列像素图片的像素值,它都能计算出一个指代物体类别的数字,那么相当于我们找到了一种认知图片的技术。实际上,这种技术当前被称作:图像识别。
同样:
找到一个函数,其自变量为麦克风采集到的声音数据、因变量为单词或汉字,则相当于我们找到了一种语音识别的技术;
找到一个函数,其自变量为一段文字,因变量为指代文字真实意图的结构化表示,比如确定出时间、地点、人物、动作,则相当于我们找到了一种语义识别的技术;
道理说的通,但难点在于,如何时去找到这样的函数?
回想一下,我们是如何学会识别图片、识别语音的呢?没错,通过学习。例如,一个从来没见过猫的人,当第一次看到猫时,会发生如下事情:
眼睛会采集猫的颜色、形状等数据,传递给大脑;
大脑从中提取出猫所特有的颜色、形状等方面的特征;
通过询问别人等方式获得猫的名称;
大脑将猫所特有的颜色、形状等方面的特征与“猫”这个标签建立联系。
这样当这个人第二次见到猫时,上述1)、2)仍然会发生,但接下来发生的事情有区别:
大脑搜索,看是否有符合该颜色、形状等方面特征的记忆;
若有则直接获取特征所关联的标签:猫。
从而能够得到结论:嗯哼,this is 猫!
学习的过程,也是一个不断试错、不断纠偏的过程。第一次见到猫的人,未必能准确、完整提取属于猫的特征,所以可能出现下一次看到猫时会“指猫为狗”。人类纠偏的方式是,当意识到错误(比如,当你看到狗时说“这是只猫”引发周围人的大笑),会回过头来,再次提取特征并加以补充。如此,经过多次反复的学习,识别猫的准确率会大幅上升,无限趋近于100%。
机器学习的过程,和上述类似。最常见的机器学习方法为:监督学习、非监督学习。
对于监督学习,继续沿用识别猫图片的例子说明:
选定一批动物的图片,并且人为识别出各个图片的动物是什么,从而会形成这样一组数据:

【注】1表示为猫;2表示为狗;3表示为乌龟;4表示为金鱼
选定一个适用于本问题的一个函数——是的,在数学领域,会有大量的方法选到这样的函数。更进一步,当前大家耳熟能详的神经网络、深度学习,就是一种非常适用于这一类问题的另类的“函数”形式。
把上述数据一个个带入,看算出的结果是什么。一开始,函数会犯错,比如把第一行的“(23、47、58),(34、56、22)……代入,算出的结果会是4,第二行的带入,结果是1……如此等等,错误率可能为100%;
接下来,改变下函数的系数、常量,然后再来一次,看看错误率是否降低了;
重复第4)步很多次,直至错误率表的很小-----比如:0.01%,也即识别一万张图片,只会有一张是错误的--则认为已经找到了识别动物图片的函数!
对于非监督学习,可以认为是在没有“图片中的动物类别”这一列的场景下、同样选定一个函数,以“图片像素数据”为输入,计算出动物类别的结果。是不是更难?的确,非监督学习的难度要比监督学习的难度大。其本质是分类,函数并不知道到底有几类,它只是尽可能的把具有相同特征的数据分为同一个类别。
上述内容没有解决的问题是:选择怎样的函数?如何持续不断的调整函数使得输出的结果准确率越来越高?
要解决这些问题,需要引用大量的数学知识。17-18世纪,数学领域有三个分支兴起:微积分、概率论、线性代数。这三个分支的相关理论是解决这两个问题的基础。
当前,解决这两个问题最热门的技术是:神经网络模型。这句话的意思是:惯常听到的“神经网络”是一个数学模型,该模型是解决上述两个问题的一个有效方法。一方面,它是一种特殊形态的函数;另一方面,利用它的网络状结构,能够根据输出结果的误差高效的调整“函数”使得输出的结果准确率越来越高。
而深度学习,可以认为是一种特定形态的神经网络模型,这个模型更复杂,对于诸如图像识别、语音识别等特定领域的问题更有效。但需要说明的是,深度学习并不是万灵丹,不一定对所有领域的问题都有效。
故事讲到这里我已经解释了人工智能、机器学习、神经网络、深度学习的通俗层面的概念。还有一个没有涉及到:数据挖掘。
数据挖掘是一个更广义的概念。我们来看看百度百科对数据挖掘的定义:数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。
上面机器学习的内容中,有监督学习从图片数据中获得了动物类别;无监督学习可以自动将不同的动物图片分类--虽然它不清楚这些类别是什么。所以,机器学习是数据挖掘的工具之一。
除此以外,数据挖掘可以利用传统的统计方法--比如,统计全国人口过去10年的平均寿命增长率---来获得隐藏在数据中的信息。
最后,作为总结,有图有真相:
【本文由“倚智知股”发布,2017年10月03日】
返回:人工智能、机器学习、数据挖掘、神经网络、深度学习那些事儿
code/s?__biz=MzU3MTE2NTExNg==&mid=2247483790&idx=1&sn=25eb20843271c13beefd7e7acbcb2a30&chksm=fce5115dcb92984b47c9e02d895338b7b4a9807ad3c3b32aa1c5b67aa8f3d6d8d9d1bb59e1c7#rd