计算机科学基础_11 - 智能

机器学习&人工智能

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

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

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

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

分类器

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

标记数据和决策边界

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

混淆矩阵

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

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

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

未标签数据

用决策边界,若是是一只不认识的飞蛾,能够测量它的特征,并绘制到决策空间上,这叫“未标签数据”。
决策边界能够猜想飞蛾的种类。编程语言

决策树

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

图像与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年代,技术改进了不少,但音素混合依然很差,产生明显的机器人声音。创造一个正循环反馈,人们用语音交互的频率会提升,给更多公司提供数据,来训练语音系统。提升准确性,准确度高了,更愿意使用语音交互。

相关文章
相关标签/搜索