机器学习&人工智能

  • 分类
  • 分类器
  • 特征
  • 标记数据
  • 决策边界
  • 混淆矩阵
  • 未标签数据
  • 决策树
  • 支持向量机
  • 人工神经网络
  • 弱AI,窄AI
  • 强AI
  • 强化学习

计算机很擅长存放,整理,获取和处理大量数据。很合适有上百万商品的电商网站,或是存几十亿条健康记录,方便查看。

但如果想根据数据做决定呢?
这是机器学习的本质(根据数据做决定)。机器学习算法让计算机可以从数据中学习,然后自行作出预测和决定。
能自我学习的程序很有用,比如判断是不是垃圾邮件。人是否有心律失常吗?下一个视频该推荐哪个?等等。虽然有用,但不会说它有人类一般的智能。虽然AI和ML这两词经常混着用,大多数计算机科学家会说,机器学习是为了实现人工智能这个更宏大目标的技术之一,人工智能简称AI。

机器学习和人工智能算法一般都很复杂,说一说概念。

分类器

例如:判断飞蛾是“月娥”还是“帝娥”,这叫“分类”。
做分类的算法叫“分类器”,虽然用照片和声音来训练算法,很多算法会减少复杂性,把数据简化成“特征”,“特征”是用来帮助“分类”的值。

标记数据和决策边界

对于飞蛾分类的例子,用两个特征:“翼展”和“重量”,为了训练“分类器”作出好的预测,需要“训练数据”,为了得到数据,需要收集相应相关合适量的数据。收集过程中,需要记录数据,并且不只记录特征值,还会把种类记录上,这叫“标记数据”,因为只有两个特征,很容易用散点图把数据视觉化。能够大致分成俩组,但还是会有一定的重叠,需要机器学习算法,找出最佳区分,通过数值估量,翼展小于45毫米的,很可能是帝娥,再加上一个条件,重量必须小于0.75,才算是帝娥。这些叫做“决策边界”。

混淆矩阵

一定数量的帝娥在正确的区域,但剩下的几只,在错误的区域,另一方面,一定数量的月娥在正确的区域,剩下的在错误的区域。这个表,记录正确数和错误数,这表叫“混淆矩阵”。

---------------------------
| 正确区域帝娥 | 错误区域帝娥 |
|-------------------------|
| 错误区域月娥 | 正确区域月娥 |
---------------------------

机器学习算法的目的,是最大化正确分类 + 最小化错误分类

未标签数据

用决策边界,如果是一只不认识的飞蛾,可以测量它的特征,并绘制到决策空间上,这叫“未标签数据”。
决策边界可以猜测飞蛾的种类。

决策树

这个把决策空间,切成几个盒子的简单方法,可以用“决策树”来表示。

图像与if语句:

clipboard.png

生成决策树的机器学习算法,需要选择用什么特征来分类,每个特征用什么值。
有时候一些算法甚至用多个“决策树”来预测,计算机科学家叫这个“森林”,因为有多棵树。

支持向量机

本质上使用任意线来切分“决策空间”,不一定是直线,可以是多项式或其他数学函数。机器学习算法负责,找出最好的线,最准确的决策边界。

只有两个特征比较好实现,但如果加第三个特征,比如“触角长度”,那么2D线段,会变成3D平面。在三个唯独上做决策边界,这些平面不必是直的,而且 真正有用的分类器会有很多飞蛾种类。

三个特征和五个品种,可以用3D散点图 实现:

clipboard.png

如果是一次性有4个或更多个特征,就容易实现,没有好的方法,更别说成百上千的特征了。这正是机器学习面临的问题。

通过想象在一个上千纬度的决策空间里,给超平面找出一个方程。是不可行的,但机器学习算法可以做到。

人工神经网络

“决策树”和“支持向量机”这些都出至于统计学,统计学早在计算机出现前,就在用数据做决定,有一大类机器学习算法用了统计学,也有不使用统计学的。其中值得注意的是 人工神经网络,灵感来自大脑里的神经元。神经元是细胞,用电信号和化学信号,来处理和传输消息,它从其他细胞得到一个或多个输入,然后处理信号并发出信号,形成巨大的互联网络,能处理复杂的信息。

人造神经元很类似,可以接受多个输入,然后整合并发出一个信号,它不用电信号或化学信号。而是吃数字进去,吐数字出来,它们被放成一层层,形成神经元网络,因此得名神经网络。

clipboard.png

飞蛾例子,看如何用神经网络分类:

  • 第一层,输入层,提供需要被分类的单个飞蛾数据,同样,也用重量和翼展。
  • 另一边是输出层,有两个神经元:一个是月娥,一个是帝娥。2个神经元里最兴奋的,就是分类结果。
  • 中间有一个隐藏层,负责把输入变成输出,负责干分类这个重活。

clipboard.png

抽取一个“隐藏层”里第一个神经元,神经元做的第一件事是把每个输入乘以一个权重。

clipboard.png

假设2.8是第一个输入,0.1是第二个输入。然后它会相加输入,总共是9.74。
0.55 * 2.8 = 1.54, 82 * 0.1 = 8.2, 1.54 + 8.2 = 9.74

然后对这个结果,用一个偏差值处理,意思是加或减一个固定值。比如-6, 9.74 - 6 = 3.74
做神经网络时,这些偏差和权重,一开始会设置成随机值,然后算法会调整这些值,来训练神经网络,使用“标记数据”来训练和测试。逐渐提高准确性,很像人类学习的过程。
最后,神经元有激活函数,它也叫传递函数。会应用于输出,对结果执行最后一次数学修改。例如,把值限制在-1+1之间。或把负数改成0,用线性传递函数,它不会改变值,所以,3.74还是3.74
所以,该最小神经元,输入0.55和82,输出3.74。但加权,求和,偏置,激活函数,会应用于一层里的每个神经元,并向前传播,一次一层。数字最高的结果就是:月娥。(根据输入的不同数值,使用不同算法,最后弄成一类可比较的数字经行输出,根据输出的不同经行分类)。

clipboard.png

隐藏层不是只能有一层,可以有很多层。“深度学习”因此得名。

clipboard.png

训练更复杂的网络,需要更多的计算量和数据,尽管神经网络50多年前就发明了,深层神经网络直到最近才成为可能。需要强大的处理器和超快的GPU,对于帧率的要求。

弱AI,窄AI

展示了深度神经网络,在照片中识别人脸的准确率,和人一样高。有了深层神经网络开车,翻译,诊断医疗状况等等。这些算法非常复杂,但还不够“聪明”,它们只能做一件事情,分类飞蛾,找人脸,翻译。这种AI叫“弱AI”或“窄AI”,只能做特定任务。
能自动作出诊断的医疗设备和自动驾驶的汽车。

强AI

真正通用的,像人一样聪明的AI,叫“强AI”。目前没有人做出来,接近人类智能的AI,有些人认为不可能做出来,但许多人说,数字化知识的爆炸性增长,比如,维基百科,网页,视频,是“强AI”的完美引燃物。

AI不仅可以吸收大量信息,也可以不断学习进步,而且一般比人类快得多,学习什么管用,什么不管用,自己发现成功的策略。这叫“强化学习”,是一种很强大的方法。和人类的学习方式非常类似。计算机现在才刚学会反复试错来学习,对于很多狭窄的问题,强化学习已被广泛使用。

计算机视觉

  • 检测垂直边缘的算法
  • 核/过滤器 kernel or filter
  • 卷积 convolution
  • Prewitt 算子
  • 卷积神经网络
  • 识别出脸之后,可以进一步用其他算法定位面部标志,如眼睛和眉毛具体位置,从而判断心情等信息
  • 跟踪全身的标记点,如肩部,手臂等。
视觉的重要性

大部分人靠视觉来工作,越过障碍,读路牌,看视频,以及无数其它任务。
视觉是信息最多的感官,比如周围的世界是怎样的,如何和世界交互。
因此,一直以来,计算机科学家一直在想办法让计算机有视觉,因此有了“计算机视觉”这个领域。

目标是:让计算机理解图像和视频。

“听到”不等于“听懂”;
“看到”不等于“看懂”。

图像是像素网格,每个像素的颜色,通过三种基色定义:红,绿,蓝。
通过组合三种颜色的强度,可以得到任何颜色,也叫RGB值。

最简单计算机视觉算法,是跟踪一个颜色物体,比如一个粉色的球。

  • 首先,记录下球的颜色,保存最中心像素的RGB的值。
  • 然后,给程序喂入图像,让它找最接近这个颜色的像素。
  • 算法可以从左上角开始,逐个检查像素,计算和目标颜色的差异,检查了每个像素后,最贴近的像素,很可能就是球。

clipboard.png

clipboard.png

不只是一张图片,可以在视频的每一帧图片中跑这个算法,跟踪球的位置。
当然,因为光线,阴影和其它影响。球的颜色会有所变化,不会存在和RGB值完全一样,但会很接近。
如果情况更极端一些,比如比赛是晚上,追踪效果可能会很差。如果球衣的颜色和球一样,算法就完全晕了。
因此很少用这类颜色跟踪算法,除非环境可以严格控制,颜色跟踪算法是一个个像素搜索,因为颜色是在一个像素里。
但这种方法,不适合多个像素的特征,比如物体的边缘,是多个像素组成的,为了识别这些特征,算法要一块块像素来处理,每一块都叫做“块”。

垂直边缘算法

找垂直边缘的算法,假设用来帮无人机躲避障碍,为了简单,需要把图像转成灰度,不过大部分算法可以处理颜色

clipboard.png

放大其中一个杆子,看看边缘是怎样的:

clipboard.png

很容易地看到 杆子地左侧边缘从哪里开始,因为有垂直地颜色变化,可以定一个规则说,某像素是垂直边缘的可能性,取决于左右两边像素的颜色差异程度。
左右像素的区别越大,这个像素越可能是边缘。如果色差很小,就不是边缘。

clipboard.png

这个操作的数学符号,看起来像这样:

clipboard.png

这个叫做“核”或“过滤器”

找垂直边缘的算法,假设用来帮无人机躲避障碍,为了简单,需要把图像转成灰度,不过大部分算法可以处理颜色

里面的数字用来做像素乘法,总和,存到中心像素里。

例如,
把所有像素已经转成灰度值,把“核”的中心,对准感兴趣的像素:

clipboard.png

这指定了每个像素要乘的值,然后把所有数字加起来,在这里,最后的结果是147

clipboard.png

成为新的像素值,把“核”应用于像素块,这种操作叫“卷积”。

卷积

结果值,色差很小,不是边缘。

如果把“核”用于照片中每个像素,结果,会成为这样:

clipboard.png

垂直边缘的像素值很高,注意,水平边缘,几乎看不见。如果要突出那些特征,要用不同的“核”,用于水平边缘敏感的“核”。

clipboard.png

这两个边缘增强的核叫“Prewitt算子”,以发明者命名,众多“核”的两个例子,“核”能作出很多种图像转换。

例如,锐化的“核”:

clipboard.png

模糊图像的“核”:

clipboard.png

“核”也可以像饼干模具一样,匹配特定形状,之前做检测边缘的“核”,会检查左右或上下的差异,但也可以作出擅长找线段的“核”。
或者包了一圈对比色的区域,这类“核”可以描述简单的形状,
比如鼻梁往往比鼻子两侧更亮,所以线段敏感的“核”对这里的值更高。
眼睛也很独特,一个黑色圆圈被外层更亮的一层像素包着,有其它“核”对这种模式敏感。

卷积神经网络

当计算机扫描图像时,最常见的是用一个窗口来扫,可以找出人脸的特征组合。

当计算机扫描图像时,最常见的是用一个窗口来扫,可以找出人脸的特征组合。
虽然每个“核”单独找出脸的能力很弱,但组合在一起会相当准确,不是脸但又有一堆脸的特征在正确的位置,这种情况不太可能。
这种检测算法叫:人脸检测算法。

热门算法是:卷积神经网络。
神经网络是最基本单元,是神经元,它有多个输入,然后会把每个输入,乘一个权重值,然后求总和。

clipboard.png

“核”也可以像饼干模具一样,匹配特定形状,之前做检测边缘的“核”,会检查左右或上下的差异,但也可以作出擅长找线段的“核”。
或者包了一圈对比色的区域,这类“核”可以描述简单的形状,
比如鼻梁往往比鼻子两侧更亮,所以线段敏感的“核”对这里的值更高。
眼睛也很独特,一个黑色圆圈被外层更亮的一层像素包着,有其它“核”对这种模式敏感。

如果给神经元输入二维像素,完全就像“卷积”,输入权重等于“核”的值,但和预定义“核”不同,神经网络可以学习对自己有用的“核”,来识别图像中的特征。

“卷积神经网络”用一堆神经元处理图像数据,每个都会输出一个新图像,本质上是被不同“核”处理了,输出会被后面一层神经元处理,卷积卷积再卷积。

clipboard.png

第一层可能会发现“边缘”这样的特征,单次卷积可以识别出这样的东西,下一层可以再这些基础上识别,比如由“边缘”组成的角落,
然后下一层可以在“角落”上继续卷积,下一层可能识别简单物体的神经元,比如,嘴和眉毛。然后不断重复,逐渐增加复杂度,
直到某一层把所有的特征都放在一起:眼睛,耳朵,嘴巴,鼻子。

“卷积神经网络”不是非要很多很多层,但一般会有很多层,来识别复杂的物体和场景,所以算是“深度学习”了。
还可以识别手写文字,在CT扫描中发现肿瘤,监测马路是否拥堵。

不管用什么算法,识别出脸之后,可以用更专用的计算机视觉算法,来定位面部标志,比如鼻尖和嘴角。有了标志点,判断眼睛有没有张开就很容易了,只是点之间的距离罢了,
也可以跟踪眉毛的位置,眉毛相对眼睛的位置,可以代表惊喜或喜悦,根据嘴巴的标志点,检测出微笑也很简单。
这些信息可以用“情感识别算法”来识别,让电脑知道你是开心,忧伤,沮丧,困惑等等。然后计算机可以作出合适的行为。
比如当你不明白的时候,给你提示,心情不好的时候,就不弹更新提示了。不只是物理环境。

面部标记点,也可以捕捉脸的形状,比如两只眼睛之间的距离,以及前额有多高,做生物识别,让有摄像头的计算机能认出你,
不管是手机解锁,还是政府用摄像头跟踪人,人脸识别有无限应用场景。
跟踪手臂和全身的标记点,也有突破,让计算机理解用户的身体语言。

抽象是构建复杂系统的关键。
计算机视觉也一样,硬件层面,有工程师在造更好的摄像头,让计算机有越来越好的视力。

用来自摄像头的数据,可以用视觉算法找出脸和手,然后可以用其它算法,接着处理,解释图片中的东西。比如用户的表情和手势。

计算机视觉的应用:

  • 商店里的扫条形码
  • 等红灯的自动驾驶汽车
  • 自拍添加一些搞怪的东西的App

视觉能力达到人类水平的计算机会彻底改变交互方式。

自然语言处理

  • 词性
  • 短语结构规则
  • 分析树
  • 语音识别
  • 谱图,Spectrogram
  • 快速傅立叶变换
  • 音速
  • 语音合成

计算机视觉 - 让电脑能看到并理解。

计算机如何理解自然语言?

编程语言,词汇量少,而且非常结构化,代码只能在拼写和语法完全正确时,编译运行。

自然语言有大量词汇,有些词有多种含义,不同口音,以及各种有趣的文字游戏。
人类有强大的语言能力,因此,让计算机拥有语音对话的能力,这个想法从构思计算机的时候,就已经诞生了。

因此有“自然语言处理”,简称“NLP”。
结合了计算机科学和语言学的 一个跨学科领域。

单词组成句子的方式有无限种,没法给计算机一个字典,包含所有可能的句子,让计算机理解人类在嘟嚷什么。

所以NLP早期的一个基本问题是 怎么把句子切成一块块。

英语单词有九种基本类型:
名词,代词,冠词,动词,形容词,副词,介词,连词和感叹词。

这些叫“词性”。

还有各种子类,比如:

单词名词 vs 复数名词
副词最高级 vs 副词比较级

分析树

了解单词类型有用,但不幸的是,很多词有多重含义,有些还可以作动词或形容词。仅靠字典,不能解决这种模糊问题。所以电脑也要知道语法。
因此开发了“短语结构规则”来代表语法规则。
例如,英语中有一条规则,句子可以由名词短语和一个动词短语组成。
名词短语可以是冠词,然后一个名词,或一个形容词后面跟一个名词。

可以给一门语言制定出一堆规则,用这些规则,可以作出“分析树”,它给每个单词标了可能是什么词性,也标明了句子的结构。

语音识别

例如,

THE MONGOLS ROSE FROM THE LEAVES

它给每个单词标了可能是什么词性,也标明句子的结构。
句子的名词重点是the mongols, 在做rising行为, 从leaves rising。

数据块更小,更容易处理。

clipboard.png

每次的语音搜索,都有这样的流程。

计算机能明白这是“哪里”(where)的问题。
把语言像乐高一样拆分,方便计算机处理,计算机可以回答问题,以及处理命令。
如果句子复杂一点计算机就没法理解。

还有,“短语结构规则”和其他语言结构转化的方法,可以用来生成句子。

数据存在语义信息网络时,这种方法特别有效,实体互相连接在一起,提供构造句子的所有成分。

Google称之为“知识图谱”,在2016年,包含大概七百亿个事实,以及不同实体间的关系。


处理,分析,生成文字,是聊天机器人的最基本部件。

聊天机器人就是能和你聊天的程序,早期的聊天机器人大多用的是规则。
把用户可能会说的话,和机器人应该回复什么,写成上百个规则,显然,这很难维护,而且对话不能太复杂。

聊天机器人和对话系统,在过去发展极快,如今可以和真人很像。
如今大多数用机器学习,用上GB的真人聊天数据 来训练机器人。

听到一个句子,计算机怎么从声音中提取词汇?
这个领域叫“语音识别”。

处理自然语言的新算法,不再是手工定规则,而是用机器学习,从语言数据库中学习。
如今准确度最高的语音识别系统,用深度神经网络。

理解原理:
先看看元音,比如ae

clipboard.png

这是两个声音的波形,这个信号来自麦克风内部隔膜震动的频率,在这个视图中,横轴是时间,竖轴是隔膜移动的幅度,或者说振幅。
虽然可以看到2个波形有区别,但不能看出那个表示e或那个表示a
为了更容易识别,换个方式看:谱图。

clipboard.png

这里横轴还是时间,但竖轴不是振幅,而是不同频率的振幅,颜色越亮,那个频率的声音就越大,这种波形到频率的转换,是用一种算法做的:快速傅立叶变换(FFT)。

如果盯过立体声系统的EQ可视化器,差不多是一回事。

clipboard.png

谱图是随时间变化的。

谱图中,信号有种螺纹图案,那是声道回声,为了发出不同声音,需要嘴巴和舌头变成不同形状,放大或减少不同的共振,可以看到有些区域更亮,有些更暗。

clipboard.png

如果从底向上看,标出高峰,叫“共振峰”:

clipboard.png

所有的元音都是如此,这让计算机可以识别元音,然后识别出整个单词。

clipboard.png

例如:
当说“she... was.. happy”。

可以看到e声,和a声,以及其它不同的声音。

clipboard.png

比如she中的shh声,was中的wahsss等等。

clipboard.png

这些构成单词的声音片段,叫“音素”,语音识别软件,知道这些音素,英语有大概44种音素,所以本质上变成了音素识别。
还要把不同的词分开,弄清句子的开始和结束点,最后把语音转成文字。
结合语言模型后,语音转文字的准确度会大大提高,里面有单词顺序的统计信息。

语音合成

让计算机输出语音,它很像语音识别,不过反过来,把一段文字,分解成多个声音,然后播放这些声音,早期语音合成技术,可以清楚听到音素是拼在一起的。

到了1980年代,技术改进了很多,但音素混合依然不好,产生明显的机器人声音。
创造一个正循环反馈,人们用语音交互的频率会提高,给更多公司提供数据,来训练语音系统。
提高准确性,准确度高了,更愿意使用语音交互。


alogy
1.3k 声望121 粉丝

// Designer and Developer