人工智能
一、前言
之前讲了计算机从发展到现在的过程,计算机很适合做迭代的工作
擅长 存放、整理、获取、处理 大量的数据
但是想根据谁做决定,就要牵扯到机器学习,这也是ML的本质
ML算法可以让计算机 从 数据中学习,然后自行做出预测&决 定
机器学习虽然有用,但是不会被定义为 智能
虽然ML AI 这两个词语经常混用,但是大多数科学家会说ML是为了实现AI这个更加宏大目标的技术之一
二、ML
2.1 分类
classification
做分类的算法叫做 “分类器classifier”
虽然可以用 照片声音 训练算法,很多算法会减少复杂度,把数据简化为“特征features”
2.1.1 决策树
举个例子:分类飞蛾,有两个特征值:“翼展” “重量” “”
把决策空间切成几个分块的简单方法,可以用 “决策树decision tree”来表示
一些算法会用多个 decision tree 来预测,科学家称其为 “森林forest”
2.2.2 支持向量机
Suport Vector Machines
本质上是用任意线段来切分 决策空间,不一定是直线,可以是多项式或者是其他数学函数,通过算法不断地对数据迭代,找出最好的线
再加入一个 特征,触角长度,2D的平面就会变成3D的了
四个特征,四维度…上千维度
决策树 & 支持向量机 这样的技术发源于 统计学
2.2.3 人工神经网络
灵感来自于大脑里的神经元,神经元是细胞,用电信号 化学信号来传输消息,神经元细胞从其他细胞得到一个或者多个输入值,然后做出反应 输出信号值,很多很多神经细胞组成巨大的互联网络,能处理复杂的信息
计算机中的人造神经元也很类似,可以接受多个输入,然后整合并发出一个信号
它不用电信号,化学信号 而是 input 数字 output 数字,形成神经元网络
回到上面的例子:看神经元如何分类
-
左侧需要被分类的单个飞蛾的数据(mass重量 wingspan翼展),右侧分类的结果
-
中间有一个隐藏层,负责把输入变成输出,分类
分类神经元:把输入* 权重 ,然后求sum
对于sum(权重*原始值) ,用一个偏差值(bias)处理: + or - 一个x
一开始,这些权重 偏差值x都会是随机的,然后算法会调整这些值 来训练
最后,神将元有激活函数,也叫做传递函数(应用于输出,对结果执行最后一次数学修改(把负数变成0、控制值在一个区间等))
这个过程会应用于多个神经元,如下图3个
最终一层,数字最高的就是结果
中间结果会有很多很多层,这便是深度学习
尽管神经网络50年前就发明了,但是限制于硬件的发展,最近5年才得到应用
以上,一个算法虽然能人脸识别,自动驾驶,但是也都是只能做一件事
这种被称为“弱AI Week AI” or “窄AI Narrow AI”,只能做特定的事情。
通用的AI,像人类一样可以处理各种算法的,叫做“强AI Strong AI”,目前还没有做出来,但是人来留下来的大量的数据,用作训练,可能就是点燃强AI的燃料,就像 ChatGPT。
AI自己不断地学习,阿尔法go 自己和自己下了 上百万盘,自己发现成功的策略,这被称为“强化学习Reinforcement learning”
三、计算机视觉
半个多世纪以来,科学家一直想让计算机有视觉,因此记诞生了“计算机视觉Computer Viesion”这个领域
正如计算机视觉的大佬 李飞飞所说:“看到不等于看懂”
像素每一个是RGB
举个栗子:追踪粉红球
计算机会从上到下一个像素一个像素的check ,找打粉红球的RGB,
然后视频的每一帧都会做这个check,这样就会追踪这个球的踪迹了
但是因为 天气 等因素的变化,这个粉红球的RGB也可能会变,但是会寻找最接近的,每一个像素都要check,像素在这里被称为 “块patches”
3.1 Prewitt算子
举个栗子:找垂直边缘的算法
假设来帮助无人机躲避障碍,为了简单 可以把图片变成灰度
可以很容易的看到,杆子的左边缘从哪里开始的,因为垂直的颜色变化,可以制定规则:
- 某像素是垂直边缘的可能性,取决于左右两边像素的颜色差异程度
这叫做 核Kernal or Filter过滤器,里面的像素用来做像素乘法,总和存到中心像素
这里指定了每个像素要* 的值(-1,0,1)
新的值147就成为了中心像素的值,和原来224的色差很大,说明是边缘
把核Kernal应用到像素块,这个操作叫做 卷积convolution
把这个操作应用到其他块:
结果是1,和原来的色差很小,说明不是边缘
如果把kernal应用到照片中的每一个像素
想要看横向的,就需要用不同的Kernal
这两个边缘增强的核叫做Prewitt算子
3.2 Viola-Jones 人脸检测算法
当然还有很多很多的Kernal
判定眼睛的Kernal:眼睛:一个黑色的圆圈被外层更亮的一层像素包裹
计算机扫描图像,一个窗口,多种核来扫描,那么就可以找到人脸
这个早期人脸检测算法叫做:Viola-Jones 人脸检测算法
3.3 卷积神经网络
输入权重约等于 Kernal的值
但是和Kernal不同的是,卷积神经网络可以不断迭代出自己的权重
第一次卷积 出 边缘edges
第二次卷积出shapes(边缘组成的角落)
第三次卷积出 特征实例(眼睛 嘴巴)
…
最后把直到某一层把所有特征放到一起
卷积神经网络并不是一定需要很多很多层,但是系别复杂物体和场景就需要一定的复杂度,所以是 深度学习
有了脸部识别,那么我们就可用专用的计算机视觉算法来定位面部标识
这些信息可以用情感识别算法来实现
还可以标记一个人两眼之间的距离,以及前额头有多高,来识别是谁
这就是:生物识别biometric data
四、自然语言处理
4.1 知识图谱
让计算机如何理解语言,高级的编程语言也是语言,但是相对固定一些
,和人类的语言完全不同,人类的语言被称为“自然语言”
从计算机诞生之初就出现了计算机处理语言的学科NLP,结合了计算机&语言学
早期就是把一个句子切成一个词一个词 ,然后查词典,但是还有语法的问题,因此开发了 “短语结构规则” 来代表语法规则,基于这个规则可以做出分析树
按照 “短语结构规则” 来生成句子
Google版本的叫“知识图谱Knowledeg Graph”
对话系统Dialog Systenms,用上大量的聊天记录来训练深度学习模型
4.2 语音识别
贝尔实验室在1952年推出一个语音识别系统 Audrey ,自动数字识别器
a & e的两个声音的波形,信号来自麦克风内部隔膜震动的频率
为了更加容易识别,可以换谱图(spectrogram)看
这种图的转换是用 “快速傅里叶变换FFT”
音速phonemes:构成单词的声音片段
语音识别软件知道这些音速,英语大概有44种音速,因此语音识别也就是音速的识别,我们可以识别音速来识别这些
Speech Synthesis让计算机输出声音