什么是人工智能(AI)?
- AI是让人觉得不可思议的计算机程序
- AI是与人类思考方式相似的计算机程序
- AI是与人类行为相似的计算机程序
- AI是会学习的计算机程序
- AI是根据对环境的感知,做出合理的行动,并获得最大利益的计算机程序
图灵测试:判断一台计算机是否具备人工智能的方法是让测试者和计算机通过键盘和屏幕进行对话,如果测试者分不清幕后的对话者是人还是机器则说明其具备人工智能。
第一次AI热潮:与AI进行网上聊天
第二次AI热潮:语音识别
第三次AI热潮:深度学习+大数据
什么是深度学习:用数字模型对现实世界中的特定问题进行建模,以解决领域内相似问题的过程,它把需要学习的东西看成一大堆数据,然后把这些数据放入数据处理网络,然后判断经过处理得到的结果数据是否符合要求,如果符合则保留作为目标模型,如果不符合则一次次地调整参数设置,直到满足要求为止。(拿让计算机通过图片识字举例,首先计算机要先把每个字的图案记录下来反复看,找到每个数据集合的特征,然后在处理器和存储器中总结出规律(即建立模型,如把一个汉字按照组成它的像素点来建模,图片得每个像素点颜色用0和1组成数字表示),当再次看到类似的图案,如果符合总结的规律,则计算机便知道图案代表的意思了)
大数据和深度学习得结合:深度学习可以从大数据中挖掘有价值得数据、规律和知识,并且大数据有足够得数据作为深度学习得输入。
TensorFlow:可视化工具,帮助开发者看到深度学习时实时特征
弱人工智能(限制领域人工智能/应用人工智能):专著于且只能额解决特定领域问题得人工智能。例如AlphaGo只在围棋领域起作用
强人工智能(通用人工智能/完全人工智能):可以胜任人类所有工作得人工智能(目前还不存在)
超人工智能:如果计算机程序通过不断发展,可以比世上最聪明得人还聪明,则成为超人工智能。
哪种工作容易被AI取代?一项工作如果人可以在5秒内对工作中需要思考和决策得问题做出相应得决定,则这项工作容易被AI取代或部分取代。例如无人驾驶,因为驾驶时判断路况、汽车是否需要加速、减速、刹车是需要短时间内就要决定的;反例,作曲家,电视导演、电影编剧则不容易被取代
人工智能、机器学习和深度学习的关系
机器学习的两种定义:
- 赋予计算机学习能力而无需明确编写程序的研究领域
- 如果一个计算机程序随着经验(E,Experience)的积累,它可以从任务(T,Task)和表现指标(P,Performance Measure)中学习,从而在任务的表现上逐渐提高(以让机器学习跳棋为例,E是让程序玩成千上万的游戏经验,T是玩跳棋的任务,P是下一局面对新对手而获胜的概率)
人工智能在游戏中的应用:
- 反外挂
- 内容审核
- 一键换脸
- 人脸动画
- 风格迁移:将不同画家的绘画风格转移到目标画上
- 语音驱动嘴型动画
- 语音合成:如提供10分钟的音频就可以复制出相应音色的语音
- 客户QA系统:如智能客服助理
- 聊天机器人:如让游戏中的NPC聊天不是死板回复而是体系他们不同的性格
机器学习
机器学习是从数据中找出特征和模式的技术,机器学习可以应用到应用程序、帮助商务人士做决策、在医疗、金融、安全等领域。机器学习中最麻烦的地方在于收集数据。
机器学习擅长的任务
- 回归(Regression):处理连续数据(如时间序列数据,如股价、房价、身高、体重)时使用的技术,通过这些数据做预测。当我们想要预测一件事情的时候,会把对预测结果有影响的数据收集起来进行组合。
- 分类(Classification):判断一个事物是什么分类,其中只有俩个类别的问题称为二分类(通过头像判断男女),有三个及以上的问题称为多分类(通过图片判断数字是几)
- 聚类(Clustering):也是判断一个事物是什么分类,但与分类的区别是,数据是否有标签(或着理解为正确答案数据),使用有标签的数据进行的学习称为有监督学习,使用没有标签的数据进行的学习称为无监督学习,而聚类是无监督学习
机器学习的开发语言有:Python、R(用C、Ruby、PHP、Js也可以,但没有前俩者机器学习库丰富)
监督学习(Supervised Learning)
在监督学习中,我们得到一个数据集并且我们知道正确的输出应是怎样的以及输入和输出之间存在某种关系。监督学习分问题为“回归”问题和“分类”问题,在回归问题中,我们试图预测连续输出中的结果,即将输入变量映射到某个连续函数上;在分类问题中,我们试图将输入变量映射到离散类别中。
以一个房价预测表为例,横轴是房子的面积(单位平方英尺)纵轴是房屋价格(单位千美元),假如你有一个朋友拥有750平方英尺的房子,这套房子值多少钱?根据我们一般的想法,将数据点模拟成一条直线,然后求出直线函数表达式,最后带入750算出对应得房价,大概在150,000美元左右或者我们也会想到,将数据点模拟成抛物线会更佳准确一些,同样我们得到的价格大约在200,000美元左右。
那么,到底应该用一次函数还是二次函数来拟合数据呢?答案是都不太准确,这个房价预测问题就是一个监督学习得例子。监督学习被给予的数据是正确的数据,即给予得数据包含了所有实例(回归问题(Regression):预测一个连续得输出值)
再举一个预测乳腺癌为恶性还是良性得例子,如图,横轴为肿瘤得大小,纵轴为是和否,分别用1和0表示,有10项基础样本数据,假设一位患者得肿瘤大小为箭头所指大小,预测他得肿瘤是良性还是恶性?或者说是恶性得概率是多大?(分类问题(Classification):离散值输出值,这个问题上是0或1,也有可能是0,1,2,3等)
我们也可以用两种不同符号在数轴上表示良性和恶性,然后一一对应即可(此时我们只是用肿瘤大小一个属性就可以了)
如果我们在一直年龄和肿瘤大小得情况下,如图,我们根据样本会画一条线来大致将良性和恶性区分开,当一个人得年龄和肿瘤大小在线以下时,我们会预测其恶性得概率不会很高(如粉色的点) (还可以研究多个属性的实际问题)
练习:你有一大批数量的商品,你要预测在未来三个月内你能卖出去多少商品;同时你有很多顾客的账户,你有一个软件去检测这些用户账户是否被黑或者泄露,这是一个分类问题还是回归问题?
答案是:前者是回归问题,后者是分类问题
无监督学习(Unsupervised Learning)
无监督学习:在很少或根本不知道结果应该是怎样的情况下解决问题,我们从数据中推到出结构(根据数据中变量之间的关系对数据进行聚类来推测结构)
聚类:例如收集1000000各不同基因,通过不同变量(例如寿命、位置、角色等)将这些基因自动分组
非聚类:在混乱的环境中找到结构(如混合的音频中识别出单个音频)
监督学习的数据和无监督学习的数据有什么区别:
在无监督学习中数据没有属性或标签,所有的数据都是一样的
在无监督学习问题中,我们被给予了一个数据集,我们不知道每个数据点是什么意思?我们也不知道我们要干什么?我们需要做的是,把这些相同类型的数据分类或者找到某种关系,例如上面右图的数据,我们可以发现分为两种聚类,而无监督学习算法就是将数据分为两个不同的聚类
类似的实际应用有:根据基因检测结果运用聚类算法把不同个体归入不同的类别中;管理大型计算机集群(将协同工作的计算机放在一起使之更高效的工作);社交网络的分析(好友类别分组);市场分隔(将客户分配到不同的细分市场中,事先不知道有哪些类别,让计算机自己去总结);天文数据分析
鸡尾酒宴会:俩个人同时对着两个话筒从0到10用不同的语言说话,通过使用聚类算法可以把这样的混合音频拆分成Speaker1和Speaker2单独说话的音频,而实现这样功能的代码只需要一行就可以了,即:[W,s,v]=svd((repmat(sum(x.*,1),size(x,1),1).*x)*x'),(编程环境为Octave,它是一个免费的开源软件,类似的还有Matlab,svd是奇异值分解,它被内置在Octave软件中)
模型表示(Model Representation)
还是以房价预测作为例子
如图,根据数据绘制一个训练样本表格
m:训练样本的数目
x:输入变量(或者叫特征量)
y:输出变量(或者目标变量)
(x,y):训练样本
(x(i),y(i)):第i行,例如x(1)=2104,y(1)=460
根据训练样本数据->学习算法->假说函数h(hypothsis),输入x,经过假说函数得到输出y,在接下来的学习中我们会把
=
,我们也可以将
简写为
,我们为此模型取名为线性回归(linear regression)模型,这个模型x预测y,具体来说是单变量线性回归模型
代价函数(Cost Function)
i:模型参数
假设
0是1.5
1是0,那么假设函数会是这样 h
(x)=1.5+0*x=1.5
假设
0是0
1是0.5,那么假设函数会是这样 h
(x)=0.5*x=1.5,他会通过(2,1)点
假设
0是1
1是0.5,那么假设函数会是这样 h
(x)=1+0.5*x=1.5,他会通过(2,2)点
如何找到合适的假设函数呢:我们应该尽量保证h(x)与y的差最小,即h(x)与样本给出的y的差的平方和均值最小,则最好的假设函数h(x)=min(J(
0,
1)), J(
0,
1)=
。即上图三个模型下分别求出 1/2m*平方和,取值最小的情况为实际使用的模型(这里的1/2是为了便于计算梯度,因为求导后将抵消掉1/2,其中J (
0,
1)就是代价函数)
是以
为参数,x为自变量的函数;J(
)是以
为自变量的函数,为了方便假设
为0,则有h(x)=
x
然后我们最初的样本数据为(1,1)、(2,2)、(3,3),则
=1时J(
)=0
=0.5时J(
)=0.58
=0时J(
)=14/6,最终我们将
的取值逐步扩展后,会得到一个二次函数图像,这时我们选择J(
)最小的情况作为h(x)的最佳模型
如何确定函数x的取值方向呢?(换句话说就是,x从0开始依次增大来计算还是从0开始依次减小计算)
只要向函数的导数符合相反的方向改变x就可以找到最小值了
强化学习(Reinforcement Learning)
推荐系统(Recommender systems)