MOOC大学上的课程,做个学习笔记,方便以后复习回顾
教材是
1 绪论
1.1 AI概述
人工智能研究如何用硬件和软件实现智能的理智的行为,即搜索、推理、规划与学习,并在此之上去实现感知、认知与智能行为
人工智能自1956年诞生,经历2次低潮后,计算能力的提升为其提供良好的平台,多媒体数据的爆发性增长为期提供充足原料,AI先后战胜了人类象棋、围棋以及德州扑克的顶级选手,图像的识别与分类能力已经超越人类,指纹语音与人脸识别正在改变人机交互手段,各种类型的机器人运行在工厂和现实生活之中,人工智能的学术研究越来越深入,人工智能的创业者越来越多,人工智能正在改变我们的生活,世界上主要发达国家都把人工智能当做重大发展战略,力争在新一轮国际竞争中争得主动权,中国国务院于2017年7月8日印发《新一代人工智能发展规划》明确提出了中国人工智能发展战略为三步走,2020年,人工智能的应用技术与世界先进水平同步,2025年人工智能基础理论取得重大突破,2030年发展为世界主要的人工智能创新中心。所以说现在是人工智能的最好时期,有人担心人工智能会造成大批人失业,有人认为人工智能是威胁,有人游说人工智能可能引发第三次世界大战,更有人惧怕人工智能会毁灭人类,所以又说这是人工智能最有争议的时期。
1956年的“Dartmouth Summer Research Project on Artificial Intelligence ”会议被广泛认为是AI的诞生
Turing Test,图灵测试,1950年图灵论文中提出,旨在提出一种令人满意的关于智能的可操作性定义
如果一个人类提问,无法分辨书面回答者是人还是计算机,则认为通过测试
视觉图灵测试,2014年唐纳德·杰曼等人提出,是受人类理解图像能力的启发而来,可用于对计算机视觉的认知能力进行评估
是采用一个辅助设备根据给定的图像产生随机的二元问题序列
目前的计算机视觉系统是测试任务的精度,这些任务包括对象监测、图像分割和定位。但是仍然和人类的行为方式有差距
产生的问题是相互关联的,即后续问题与前面问题有关,如果回答正确就证明了这套计算机视觉系统是理解了这幅图像
中文屋Chines Room
是一个思想实验,试图揭示计算机不能描述为有“智力”或“知性”,不管它多么智能
他设想他独自在一个房间,操作一套计算机程序来应付从门缝下塞进来的中文字符,他对中文一窍不通,然而,正如计算机所做的那样,通过操作处理符号和数字,他生成了合适的中文字符串,从而蒙骗了屋外所有人,以为屋内有一个精通中文的人。唯一的结论是,按程序运行的计算机可以使它看起来理解了语言,但并没有产生真正的理解,由此他断定,图灵测试是不充分的
1.2 人工智能的基础
哲学、数学、经济学、神经科学、心理学、计算机、控制理论和控制论、语言学
数学
逻辑学--得出正确结论的形式规则是什么?
计算--什么是可计算的?
NP完全性理论,是计算复杂性理论中的重要概念,能表征某些问题的固有复杂度
P:Polynomial time 多项式时间
NP:Non-deterministic Polynomial time 不确定性多项式时间
NP-complete: both in NP and NP-hard
概率--如何根据不确定信息进行推理?
神经科学
认知心理学
人类如何思考与行动?
把大脑看做信息处理设备,是研究心智过程的学科,包括:注意机制、语言运用、记忆、感知、问题求解、创造力、思考
记忆:三个子集,过程记忆、语义记忆、情景记忆
感知:物理感知(视觉、嗅觉、味觉、知觉),及其认知过程
语言:研究语言习得、语言形成的组件、语言使用时的语气、或者许多其它相关领域
元认知:它是“关于认知的认知”,“关于思考的思考”,通常包含2个组成部分:关于认知的认知以及认知的调节
认知心理学:通常通过人类参与者的心理实验来收集信息,其目的是研究人脑如何接受外部世界的输入、如何处理以及作用等
认知科学:关注于通过研究收集数据,其涉猎心理学、语言学、人类学、神经科学、社会学和教育学,尤其是人工智能
控制理论和控制论
机器如何在其自身的控制下运行?
控制理论:工程与数学的交叉学科分支,处理动态系统对输入的行为以及该行为如何通过反馈进行调整
控制论:简单的解释为“用技术控制任何系统”
1.3 AI历史
1950-1956,AI诞生
主要标识是图灵测试和达特茅斯会议
1956-1974,黄金年代
1958年,第一个人工智能程序名为逻辑理论家LT
1958年,发明Lisp编程语言
1960年,马斯特曼设计语义网络,用于机器翻译
1963年,发表关于模式识别的论文,描述了第一个机器学习程序
1965年,首套专家系统Dentral用于推断有机化合物分子结构的软件
1974年,MYCIN程序,实用的基于规则的医学诊断方法,也可以成为医学专家系统
1974-1980,第一个寒冬
寒冬之前是秋天,1966年机器翻译失败
1970年连接主义遭到遗弃
1971年至75年,美国DARPA对卡内基梅隆大学的语音理解研究项目感到沮丧
1973年英国大幅缩减AI研发
1973年-1974年,DARPA削减了一般性AI研究经费
1980-1987,AI繁荣
1980年AAAI美国人工智能学会在斯坦福大学召开第一届国际大会
1982年,日本启动第五代计算机系统(FGCS)项目,用于知识处理
计算机的第一代到第四代都是按照器件划分的1980年代中期,机器学习出现了,当时发明了决策树模型并且以软件形式推出。该模型具有可视化、易说明的特点
同样在1980年代中期,还发明了多层人工神经元网络(ANN),具有足够多的隐藏层,一个ANN可以表达任意功能,因此突破了感知的局限性
1987-1993,第二个寒冬
1987年,Lisp机的市场崩溃
1988年,美国政府取消新的AI经费
1993年,专家系统滑入低谷
1990s,日本第五代计算系统项目未能达到其初始目标悄然退场
1993至今,突破
1997年,深蓝战胜了国际象棋冠军成为第一台计算机国际象棋系统
2005年,斯坦福的自主机器人赢得DARPA无人驾驶汽车挑战赛
2006年,深度学习的三个大牛之一杰佛里·辛顿和他的学生鲁斯兰·萨拉赫丁诺夫在科学杂志上发表论文让该术语成为热门
2011年,IBM沃森在智力竞赛Jeopardy战胜上届冠军获得一百万美元大奖
2011年谷歌启动深度学习项目,深度大脑,作为Google X项目之一,谷歌大脑是由1万6千的计算机的集群致力于模仿人类大脑活动的某些方面,通过一千万张数字图片的学习,已成功学会识别一只猫
2012年,苹果推出Siri,Siri是一种智能个人助理和知识导航软件,使用自然语言用户接口来回答问题、做出建议和执行动作,支持各种语言
2012年,微软首席研究官Rick Rashid到中国天津出席研讨会演示了一款实时口译系统,该软件不仅翻译准确还可以保持你的声音和口音
2014年4月,微软小娜
2014年6月,微软中国推出聊天机器人小冰
2015年9月,百度在2015年百度世界大会上推出了一款机器人助理--度秘,可以为用户提供秘书化搜索服务
2014年6月,聊天机器人Eugene,在纪念图灵测试60周年的一个比赛中,被33%的评委认为是人类,组织者认为通过图灵测试,该机器人是由3个程序员小组在2001年在圣彼得堡开发
2014年8月,IBM发表类人脑工作的TrueNorth芯片,是一款神经形态的CMOS芯片,由4096个硬件核组成,每个仿真256个可编程的硅神经元,总计刚好超过百万个神经元
2015年2月,谷歌DeepMind公司在Nature杂志发表了Deep Q-Network,通过深度强化学习达到人类水平的操控
2015年12月,谷歌DeepMind公司的AlphaGo打败欧洲围棋冠军成绩五战五胜,消息在2016年1月才在nature杂志发表,目的是与描述算法的论文同步发表,深度学习软件首次击败人类职业棋手,2016年3月,AlphaGo在韩国首尔对垒韩国九段棋手李世石5战4胜,后3比0超过世界第一柯洁
2016年4月,阿里小Ai预测到《我是歌手》李玟夺冠
同时也出现不同声音,担心人工智能有可能导致人类灭绝,2015年霍金等人签发公开信警惕人工智恩潜在危险
2016年1月,位于华盛顿特区的信息技术与创新基金会(ITIF)公布年度卢德奖,颁发给“一个科学家和名人组成的松散联盟,他们在2015年警告AI将会导致人类末日,激起恐慌”,卢德奖是专门颁发给那些试图阻碍科技创新的人
1.4 人工智能的发展现状
人工智能的分类
第一种分类
4个分类8个定义,看到humanly早于rationally
第二种分类
弱AI、强AI、超AI
弱AI,也叫人工狭义智能Artificial Narrow Intelligence(ANI),它是无意识的AI,专注于一个具体任务(仅针对一个特定问题),比如Siri就是只有语音识别和自然语言回答的助理
强AI,也叫人工广义智能Artificial General Intelligence(AGI),意味着机器具有将智能用于处理任何问题的能力,它像人类一样能够进行思考、计划、解决问题、抽象思维、理解复杂理念、快速学习和从经验中学习等操作。它是人工智能研究的主要目标
超AI,也叫人工超级智能Artificial Super Intelligence(ASI),是一个假定的智能体,拥有远远超过聪明和最有天赋的人类大脑的智慧,目前只能在电影小说中看到
人工智能应用
计算机视觉
图像处理
VR、AR和MR
模式识别
智能诊断
博弈论和策略规划
AI游戏和游戏机器人
机器翻译
自然语言处理和聊天机器人
非线性控制和机器人技术
其他包括:智能生活、自动推理、自动驾驶、生物计算、概念挖掘、数据挖掘、知识表示、语义Web、垃圾邮件过滤、诉讼、机器人学、混合人工智恩、智能代理、智能控制
代表性论文
“一种用于非线性降维的全局几何框架”,2000年12月Science杂志,描述一种解决降维问题的方法,使用流形学习方法,使用易测的局部度量信息来学习数据集潜在的全局结构,算法简称Isomap(等距特征映射),创新处在于不是用传统的欧式距离而是用测地线距离
“通过局部线性嵌入进行非线性降维”,2000年12月Science杂志同一期
“利用神经元网络降低数据的维度”,2006年7月Science,是深度学习三大牛之一的Geoffrey Hinton先生写的(深度学习领域的三位大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton无人不知无人不晓),深度编码器网络,通过这种网络可以有效提取数据的低维特征。描述一种初始化权重的有效方法,可让深度编码器网络学习低维代码,作为一种降维工具,远远好于主成分分析方法。这种方法引起关注并引起学习深度学习热潮
“通过快速查找和发现密度峰值进行聚类”,2014年6月Science,聚类工作的难点是如何寻找聚类中心点,经典的聚类算法比如k-means是通过指定聚类中心然后通过迭代的方法更新聚类中心的方式,而这片论文基于如下的思想的方法:聚类中心点具有密度高于相邻点、距离相对大于次高密度点的特征
“凭借概率规划归纳法进行人类层次的概念学习”,2015年12月Science,论文研究的一次性学习能力作为对那些神经模型的挑战:将组合性、因果性和学会学习BPL实例化的原则相结合,成为一个我们期待崛起的方向。他们创造的这款系统可以迅速的学会写陌生文字,从某种意义说领悟到了字符的本质特征,也就是字符的总体结构,同时还可以识别非本质体征,也就是因为人工书写造成的轻微变异
“凭借深度强化学习达到人类水平的操控”,2015年2月Nature,谷歌DeepMind在上世纪70年代末80年代初的一款老式游戏机上对49个游戏视频软件进行测试结果60%达到或超过人类水平
“深度学习”,2015年5月Nature,综述性论文
“利用深度神经网络和树搜索征服围棋游戏”,2016年1月Nature,这就是DeepMind的首次围棋大战的同步论文,使用“价值网络”评价棋盘位置,使用“策略网络”选择走子,没有任何前项搜索,该神经网络以先进水平的蒙特卡洛树搜索程序博弈围棋,模拟成千上万次随机自我对弈
人工智能的研究领域
搜索:针对问题空间,也叫问题求解
推理:知识
规划:规则
学习:从数据中学习
应用:非常广泛。沟通(自然语言处理、机器翻译、聊天机器人等等),感知(视觉、听觉、语音及其他),动作(机器人、无人飞行器、无人驾驶汽车等等)
本课程讨论前4个,不讨论应用
1.5 小结
AI的分类可分为4种:类人思考, 类人动作,理性思考和理性动作
8个基础学科包括:哲学、数学、经济学、神经科学、心理学、计算机工程、控制理论和控制论和语言学
AI的3种类型:弱人工智能、强人工智能以及超人工智能
2 智能Agent
纵览人工智能的各种研究途径
讨论智能Agent性质、多样性以及各种类型的Agent
2.1 人工智能的各种研究途径
控制论和大脑仿真
符号和亚符号
逻辑与反逻辑
符号主义与连结主义
统计方法
智能Agent:有动作能力的sth,具有自主操作、感知环境、持续动作、顺应变化、实现目标、最佳预期结果,概括的说:通过感受器感知外部环境并且通过执行器作用于外部环境,还可以通过学习或者应用知识实现目标
2.2 理性Agent
教材专注于理性Agent的一般原理和构造
人类agent、机器人agent、软件agent、抽象agent、自主agent
定义多样,但是一般有如下特征:逐步顺应新的问题求解规则、适合在线与实时、能够从行为错误与成功方面自我分析、通过与环境交互进行学习改善、迅速从大量的数据中学习、具有基于内存的样本存储和检索能力、具有表示短期长期记忆遗忘等参数
理性Agent能使性能最大化,做最正确的事情,理性等于最优,依赖于:定义成功标准的性能指标、智能体对环境的先验知识、智能体能够完成的动作、智能体最新的感知序列
例子:真空吸尘器
2.3 任务环境
PEAS的描述:Performance、Environment、Actuators、Sensors
环境类型
完全可观测与部分可观测
单agent与多agent
确定agent与随机agent
阵发性与连续性
动态与静态、半动态
离散与连续
2.4 智能Agent结构
Agent函数是一个抽象概念,将给定的感知序列映射为动作,包含了各种决策制定的原则
Agent程序,包含agent函数和感受器、执行器
Agent结构
Agent = platform + agent程序
platform = computing device + sensors + actuators
agent程序包含agent函数
智能Agent通常是分层结构,包含许多子智能Agent,子智能体处理较低功能
Agent的内部状态可以有三种表现方式:原子方式、因子方式、结构方式
原子方式:每个状态是个黑盒子,不关心内部结构 比如:驾驶路径寻找问题,从某个城市到另外一个城市,中间经过的城市,我们不关心其内部结构
因子方式:每个状态由一组固定的属性和值组成
结构化表示:每个状态表示对象,每个对象有其属性和与其他对象关系
2.5 智能Agent类别
该分类基于他们感知的智能和能力的程度:简单反射agent、基于模型的反射agent、基于目标的agent、基于效用的agent、学习agent
简单反射agent
简单反射agent仅仅在当前感知的基础上动作,忽略其余感知历史,也就是说不关心上一个感知的东西,其agent函数是基于条件动作规则:if..then..
仅当外部环境为完全可观测时,该agent才能发挥功能
某些反射智能体也可以包含其当前状态的信息,允许它们忽略执行器已被触发的条件
agent在部分可观测环境下运行时,有可能出现无限循环现象
注意:如果agent可以随机产生其动作,有可能从无限循环中摆脱
算法基于模型的反射agent
除了可以完成简单反射agent的功能外,还可以处理部分可观测环境
其当前状态存储在agent中,维护某种结构,它描述不可见外部环境的一部分
关于“外部环境如何运作”的知识被称为一个外部环境模型,由此得名
基于模型的反射agent将保持某种内部模型
内部模型依赖历史,因此至少反射当前状态无法观测的方面
然后它作为反射agent选择某种动作
算法
基于目标的agent
通过利用“目标”信息,进一步扩展了基于模型的反射agent
目标信息描述所希望的状况
它允许agent在多种可能之间选择一种方式,挑选出达到目标的那一个
搜索和规划是ai的子领域,目的是发现达到目标的动作序列
在某些情况下,基于目标的agent似乎不太有效
虽然显得更低效,但是它更灵活,因为支持它决策的知识被显示表达出来,并且可以被修改
基于效用的agent
一个特殊的状态可通过一个效用函数得到,该函数将一个状态映射为该状态效用的度量
效用是一种更通用的性能度量
一个理性agent将动作结果的期待效应最大化
基于效用的agent需要建模并记录环境、任务的轨迹,这涉及大量的感知、表征、推理、和学习的研究
学习agent
学习agent允许最初在未知的环境中运行,并且与其最初的知识相比,会变得越来越胜任学习元件:负责改进提高
性能元件:负责选择外部行动
学习元件利用评判元件的反馈并确定如何修改性能元件以便做的更好
学习元件的设计很大程度上依赖性能元件的设计
问题产生器:对推荐的动作负责,这将形成新的经验
其他agent
决策agent:与决策制定相关
输入agent:处理和理解感受器的输入
加工agent:解决诸如语音识别的问题
2.6 小结
AI的主要方法:控制论与人脑仿真、符号与亚符号、基于逻辑与反逻辑、符号主义与联结主义、统计学、以及智能体范例。
一个智能体是感知并作用于外部环境的任何事物。
典型的智能体:简单反射智能体、基于模型的反射智能体、基于目标的智能体、基于效用的智能体、以及学习智能体
3 通过搜索进行问题求解
3.1 问题求解agent
解:达到目标的一组动作序列
寻找解的过程称为搜索
问题形式化:给定一个目标,决定要考虑的动作与状态
对于某些np完和np难问题,只能通过搜索来解决
问题求解agent:是一种基于目标的agent,通过搜索来解决问题
状态空间:问题的状态空间可以形式化的定义为初始状态、动作和转换模型
图:状态空间形成一个图,其中节点表示状态、链接表示动作
路径:一系列动作连接的一个状态序列
对一个问题进行形式化的五个要素:初始状态、动作、转换模型、目标测试、路径代价
3.2 问题实例
真空吸尘器世界
两个房间 有无灰尘 可能的状态 2*2^2=8状态空间
任意状态都可能为初始状态
3个动作(左移右移吸尘)
转换模型应有预期效果(以下为无效动作:左边左移右边右移清洁区吸尘)
目标检测:是否所有房间都干净
路径代价:每个步骤cost1,所以代价是路径个数
8数码难题
9宫格中有8个数字和一个空格,相邻模块可以滑向空格,目的是达到指定状态
简单的方式是移动空格
8数码难题属于滑块难题家族,这个家族被认定是NP完复杂
8皇后问题
2中方法:
增量形式化:空状态开始每次加一个皇后
全态形式化:初始8个皇后都在,再移动她们
3.3 搜索求解
针对罗马尼亚地图问题使用图搜索算法生成一系列搜索路径
也可以采用树搜索的方法找到最短路径
3.4 无信息搜索策略
也称为盲目搜索,表示无任何附加信息
所能做的就是生成后继节点并区分是否达到目标状态
所有的搜索策略由节点的顺序加以区分
这些搜索策略是:宽度优先、深度优先、以及一致代价搜索
评价:
完备性:是否总能找到一个存在的解
时间复杂性:花费多长时间找到这个解
空间复杂性:耗费多少内存
最优性:是否总能找到最优解
时间复杂度和空间复杂度用如下属于度量:
b:搜索树的最大分支因子
d:最浅的解的深度
m:搜索树的最大深度
宽度优先搜索
搜索策略:扩展最浅的未扩展节点
实现方式:FIFO 先进先出,即新的后继节点总是放队列最后
除了图之外也有关于树的宽度优先搜索算法
宽度搜索算法有这些特性
时间复杂性 b+b^2+..+b^d=O(b^d)
空间复杂性也是O(b^d)
假设b=10,每秒1百万节点搜索,每节点内存消耗1000bytes有上表消耗
内存的需求是个很大问题,执行时间是个主要因素
宽度优先搜索不能解决指数复杂性问题,小的分支因子除外
汉诺塔问题是个指数问题,据说最后一次移动金盘世界将毁灭,耗时不可想象
一致代价搜索
搜索策略:扩展最低代价的未扩展节点
实现方法:仍然是队列,但是按照路径代价排序,最低优先
复杂度
深度优先搜索
搜索策略:扩展最深的为扩展节点
采用LIFO队列,把后继节点放在队列最前,这相当于一个堆栈
简单二叉树的深度优先搜索过程
对于搜索过的边缘节点并未匹配的从内存删除
深度优先搜索的时间复杂性O(b^m) 空间复杂性O(bm),b为分支因子,m为任一节点的最大深度
空间复杂性大大减少
深度优先搜索变种--深度受限搜索
若状态空间无限,则深度优先搜索会失败,添加界限l可解决,即深度l的节点当做末梢节点,这叫做深度受限搜索
缺点:l<d,即最浅的目标在深度限制之外,这种方法就会出现不完备性;l>d,这种方法也非最优
深度优先搜索变种--迭代加深搜索
将深度优先和广度优先结合,逐步增加深度限制反复运行直到找到目标
它以深度优先搜索相同的顺序搜索,单先访问节点的累计顺序实际是宽度优先
其空间复杂度和深度优先搜索一致
双向搜索
同时进行两个方向搜索,一个是从初始状态向前搜索,一个是从目标状态向后搜索,当两者相遇时停止
该方法可以通过一种剩余距离的启发式估计来导向
无信息搜索策略对比
3.5 有信息搜索
也被称为启发式搜索
这类策略采用超出问题本身定义的、问题特有的知识,因此能够找到比无信息搜索更有效的解
一般使用如下函数中的一个或者两个:评价函数,记f(n),用于选择一个节点进行扩展;启发函数,记h(n),作为f的一个组成部分
评估函数看做是代价估计,因此评估值最低的节点被优先扩展,最佳优先图搜索的实现与一致性搜索类似
对f的选择决定了搜索策略
一般采用最佳优先搜索
实现方式:与一致代价搜索相同,然而最佳优先算法用f(n)替代g(n)来整理队列
搜索策略:一个节点被选择扩展是基于评价函数f(n)
大多数最佳优先算法还包含一个启发函数h(n)
h(n) = 从节点n到目标的最低径路代价估计
3.5.1 贪婪最佳优先搜索
搜索策略:试图扩展最接近目标的节点
评价函数 f(n) = h(n)
它仅适用启发函数对节点进行评价
因为算法每一步都试图得到最接近目标的节点,所以称为贪婪
搜索过程
解并不是最优的
最坏时间复杂性O(b^m)
空间复杂性同上
3.5.2 A*搜索
搜索策略:避免扩展代价高的路径,使总的估计求解代价最小化
评价函数 f(n) = g(n) + h(n) g(n)是到该节点代价h(n)是从该节点到目标的估计代价
定理:A*搜索是最优的
搜索过程
3.5.3 迭代加深A*搜索
迭代加深搜索的变种
从A*搜索算法借鉴思路,即使用启发式函数来评价到达目标的剩余代价
因为是深度优先算法,内存使用率低于A*搜索
但是不同于标准的迭代加深搜索,它集中于探索最优希望的节点,因此不会去搜索树任何处的同样深度
迭代加深深度优先搜索:使用搜索深度作为每次迭代的截止值
迭代加深A*搜索:使用信息更丰富的评价函数
3.6 启发函数
对于8数码难题通常有2个候选:h1 错位棋子的个数 ;h2 所有棋子到目标的曼哈顿距离之和
3.7 小结
求解一个问题就是一系列动作,并且搜索是为达到目标寻找这些动作的过程
无信息搜索亦被称为盲目搜索:其代表性算法是宽度优先、一致代价、以及深度优先
有信息搜索也被称为启发式搜索:最佳优先搜索依赖于评价函数,其特例是贪婪搜索和A*搜索
时间和空间复杂性是搜索算法的一些关键点
4 超越经典搜索
之前讨论了一个单一类别的问题,其解决方案是具有如下特点的一系列动作:可观测、确定性、已知环境,这称为经典搜索
本章讨论更接近现实的,超越经典搜索:局部搜索和群体智能
经典搜索:系统地探索问题的空间
该系统性是由以下方法得到:在内存中保持一条或多条路径,并且在沿着该路径的每个点上记录哪些已被探索过;目标找到时,该路径也就构成问题的一个解
然而在许多问题中到达目标的路径是无关紧要的
局部搜索是一种不同于经典搜索的算法,它不介意什么路径
局部搜索算法使用一个当前节点(而不是多条路径),并且通常仅移动到该节点相邻的节点
通常,搜索后不保留该路径
局部搜索有2个优点:使用很少内存;在大的或者无限(连续)状态空间中,能发现合理的解
除了寻找目标外,局部搜索算法对解决纯优化问题也很有效
优化的目的是根据一个目标函数找到其最好的状态
但是经典的搜索算法并不一定适合优化问题
例如,达尔文进化论可以看做“试图优化”,单对于这个问题,没有“目标测试”也没有“路径代价”
群体智能
环境中大量同类agent合作实现的
这样的智能是分散式、自组织、并且在一个环境内分布
本章介绍2中群体智能算法:蚁群优化(受蚁群行为所启发,如:间接协调、觅食)、粒子群优化(受鸟群鱼群的社会行为所启发,如:群集、从众)
4.1 局部搜索算法
4.1.1 爬山法
是一种基于局部搜索家族的数学优化方法
是一种迭代算法:开始选择问题的一个任意解,然后递增地修改该解的一个元素,若得到一个更好的解,则将该修改作为新的解;重复执行知道无法找到进一步的改善
大多数基本的局部搜索算法都不保持一颗搜索树
可通过局部搜索算法对其搜索
一个完备的局部搜索算法总能找到一个存在的目标
一个最优的局部搜索算法总能找到一个全局的最小或最大值
爬山搜索算法是最基础的局部搜索算法
它常常会朝着一个解快速的进展,因为通常很容易改善一个不良状态
它往往被称为贪婪局部搜索,因为它只顾抓住一个好的邻接点的状态,而不提前思考下一步该去哪儿
尽管贪婪是“七宗罪”之一,但是贪婪算法往往表现的相当好
n皇后问题 局部搜索算法解决n皇后问题,通常使用完整状态形式化
爬山法弱点:爬山法是贪婪搜索算法,它在下述情况容易被困:
局部最大值:高于相邻节点但是低于全局最大值
高原:可能是一个平坦的局部最大值,或山肩
山岭:结果是一系列局部最大值,很难爬行
针对这三个情况,需要随机重启功能来帮助逃脱,争取找到全局最大值,因此出现各种爬山法变体:
随机爬山法:在向上移动的过程中随机选择;选择的概率随向上移动的斜度而变化。与最陡爬山相比,收敛速度通常较慢
首选爬山法:它通过随机生成后继节点来实现随机法,直到生成一个比当前状态好的点。当某个状态有许多后继时,用此策略为好
随机重启爬山法:它好于其他爬山搜索方法,从随机生成的初始状态直到找到目标。它十分完备,概率接近1,因为他将生成一个目标状态作为初始状态。如果每次爬山搜索成功的概率为p,则重启需要的期望值为1/p
4.1.2 局部束搜索
在内存中保持1个节点似乎对内存限制有些极端,而局部束搜索则保持k个节点
首先开始于k个随机生成的状态,每一步生成k个后继状态,如果命中则停止,否则从完成列表选k个最好的继续
在局部束搜索中,有用的信息能够在并行搜索线程中传递
例子:经典的TSP问题,即旅行售货员问题
局部束搜索的变体:
随机束搜索:局部束搜索会很快的集中在状态空间的某个小区域,使得搜索代价比爬山法更昂贵;随机束搜索模仿随机爬山法,有助于缓解这个问题;它不是在完成表中选择k个最好后继节点,而是以选择后继节点的概率是其值的递增函数,来随机的选择k个节点;有点类似于自然随机的过程
4.1.3 禁忌搜索
是一种元启发式算法,用于解决组合优化问题
它使用一种局部搜索或邻域搜索过程,从一个潜在的解x到改进的相邻解x‘之间反复移动,知道满足某些停止条件
禁忌表
禁止策略
释放策略
短期策略
可以禁忌搜索解决的问题
最小生成树问题
4.2 优化与进化算法
模拟退火
模拟退火是一种给定函数逼近全局最优解的概率方法。发表于1953年
具体来说,是一种在大搜索空间逼近全局最优解的元启发式方法
初始解:使用启发式方法生成,随机选择
相邻节点:随机生成,当前解的变异
接受条件:相邻节点具有较低代价值,具有较高代价的相邻节点则以概率p接受
停止判据:解具有比阈值低的数值。已达到最大迭代次数
遗传算法
遗传算法的一些要素是1960年代提出
它是一种模仿自然选择过程的搜索启发式算法
该算法是随机束搜索的一个变型,其中后继节点是由两个父辈状态的组合而不是修改单一状态生成的
其处理过程是有性繁殖而不是无性繁殖
属于进化算法的大分类
该算法采用自然进化所派生的技法来生成优化问题的解,例如:遗传、突变、选择以及杂交
该算法开始时具有一组k个随机生成的状态,称为种群,每个单个状态称为个体,每个个体通常由一组字符一般为01字符串,如八皇后的个体
算法伪代码
4.3 群体智能
蚁群优化
是一种解决计算问题的概率技术,可以用于发现一个图上的最佳路径
该算法是受蚂蚁在蚁巢和食物之间寻找路径的行为启发
蚁群优化的概念:
蚂蚁从蚁巢到事物源之间盲目游荡:
最短路径是通过费洛蒙嗅迹发现的
每个蚂蚁随机的移动
费洛蒙就遗留在路径上
蚂蚁觉察到前面蚂蚁的路径,跟随而去
路径上更多的费洛蒙增加该路径的概率
蚁群优化算法:
在路径上积累“虚拟”嗅迹
开始时随机选择某个节点
随机选择某一路径:基于从初始节点至合适路径上出现嗅迹的量;具有较多嗅迹的则有较高的概率
重复直到更多蚂蚁在每个循环都选择同一个路径
蚁群算法解决旅行售货员问题
TSP问题是一个组合优化问题中的NP难问题,在运筹学和理论计算科学中非常重要
蚁群算法可用于解决:进度安排问题、车辆安排问题、分派问题、纳米物理设计中的设备量尺问题、图像处理中的边缘检测、分类、数据挖掘
粒子群优化
受鱼类和鸟类的社会行为启发
采用若干粒子构成一个围绕搜索空间移动的群体来寻找最优解
搜索空间的每个粒子根据它自己的飞行经验和其它粒子的飞行经验调整它的“飞行”
人工神经元网络ANN与PSO
ANN是一种大脑简单模型的计算泛型,而反向传播算法是训练ANN的最受欢迎的方法之一
有若干论文报告了采用粒子群优化来替代反向传播算法
4.4 小结
局部搜索:爬山法在完整状态形式化上进行操作;局部束搜索法保持k个状态的轨迹;禁忌搜索采用一种带约束的邻域搜索。
优化与进化算法:模拟退火在大搜索空间逼近全局最优解;遗传算法模仿自然选择的进化过程。
群体智能:蚁群优化可以寻找图的最好路径;粒子群优化通过迭代来改善一个候选解。
5 对抗搜索
去考察这样一类会出现的问题,当我们在某个世界试图预先谋划时,其他智能体也在做相反的谋划
5.1 博弈
搜索与对抗搜索
对抗搜索通常称为博弈
零和博弈
经典例子:囚徒困境 相关困境理论
博弈有趣但很难解决
博弈,像现实世界,当无法算计出最优决策时,需要决策理论
超过人类的是完备性信息,未超过人类的往往是随机游戏
5.2 博弈中的最优决策
最优解
最小最大定理 对于一个零和博弈,可以使得对手最大收益最小和使得自身最大损失最小
对抗搜索的最优解
最小最大决策的特性:
时间复杂性O(b^m)
空间复杂性O(bm)算法每次生成所有动作 O(m)算法每次生成一个动作
b分支因子(每个点的合法走子) m任一节点的最大深度
5.3 Alpha-Beta剪枝
博弈状态的树随着深度呈现指数增长,我们不能消除这种指数,但是可以将它减掉一半
α-β剪枝:是一种搜索算法,旨在削减由minimax算法评价的节点数量
为什么称为α-β剪枝:
α:沿着max路径上的任意选择点,迄今为止我们已经发现的最高峰
β:沿着min路径上的任意选择点,迄今为止我们发现的最低值
搜索依次完成如下动作:边搜索边更新αβ值,并且一旦得知当前节点的值比max或min的α或β值更差,则在该节点减去其余分支
α-β剪枝可以应用于任意深度的树,并且可以减去整个子树而非叶节点
一般原则:设某个玩家移动到树的节点n,若玩家n的父节点或更上层有更好的节点m,则玩家没必要抵达n
5.4 不完备信息的实时决策
minimax算法生成整个博弈空间
α-β剪枝算法则允许我们剪去大部分
然而,α-β仍然需要搜索抵达终端状态的所有路径,至少是搜索空间的一部分
这个深度通常是不实际的,因为移动必须在合理的时间内完成
应用启发式评价函数:香农提出,程序应该早一些剪断搜索,并在搜索中对状态应用启发式评价函数,有效地将非终端节点转换为终端叶节点
建议用EVAL来替代UTILITY(EVAL是一个启发式评价函数,用于估计位置的效用),用CUTOFF-TEST来替代TERMINAL-TEST(CUTOFF-TEST确定何时应用EVAL函数)评价函数计算时间一定不能太长
5.5 随机博弈
例子:西洋双陆棋
随机博弈没有极大极小值,只能计算期望值
期望极大极小值
5.6 蒙特卡洛方法
alphaGo算法:
两个深度神经元网络:价值网络(用于评估棋局)、策略网络(用于选择走子)
蒙特卡罗搜索树:将蒙特卡罗仿真与价值和策略网络相结合
强化学习:用于改进博弈水平,通过自我对弈训练
将深度神经元网络和树搜索有机结合,并且用大量棋局训练
蒙特卡罗方法是一种工程方法,是一大类计算算法,它凭借重复随机采样来获得数值结果
当难以或无法使用其它数学方法时候,非常有效
它们往往遵循以下特定模式:1)定义一个可能的输入域2)从该域的一个概率分布随机生成输入3)对该输入进行确定性计算4)将结果汇聚
例子:用蒙特卡罗方法计算π
蒙特卡罗搜索树MCTS和minimax一样,每个节点对应于一个博弈状态,不同于minimax的地方,节点的值通过蒙特卡罗仿真来估值
5.7 小结
Minimax算法可以通过博弈树的深度优先计算选择最佳移动。
Alpha–beta算法通过剪掉不相关子树来得到更高的效率
启发式评价函数对于博弈的不完全实时决策很有效。
随机博弈是具有概率转换的动态博弈
蒙特卡罗树搜索将蒙蒙特卡罗树仿真与博弈树搜索相结合。
6 约束满足问题
6.1 定义约束满足问题CSP
约束满足问题是数学问题,被定义为其状态必须满足若干约束和限制的一组对象
CSP是AI和运筹学的共同研究课题
标准搜索 vs CSP:
标准搜索问题其状态是原子的不可分割的,一个没有内部结构的黑盒子;而CSP采用因子表示,是一系列变量,每个有相应的值,CSP可以发挥状态结构的长处,采用一般用途而不是问题特有的启发式
为什么研究CSP:CSP通常呈现高复杂性,需要降启发式与组合搜索方法相结合
有如下形式:布尔可满足性问题SAT,可满足性模理论SMT,答案集编排ASP。。
可建模为CSP的例子:8皇后、地图着色、密码算数、数独
形式化定义为三元组<X,D,C> 分别是变量集合、范畴集合、约束集合
四色定理
CSP是对很多问题的一种自然表示
与其他搜索技术相比,CSP求解系统更容易解决问题
CSP求解系统比状态空间搜索更快,因为它可以快速排除大的搜索空间样本
算式谜:一种数学游戏,目标是识别出每个字母的值,也被成为字母算数、覆面算、文字加法、隐算数
用CSP解决算式谜
CSP也是计算复杂性理论和有限模型论所要研究的问题
有限范畴的CSP问题常用搜索解决,常用技法:约束传播、回溯、局部搜索
6.2 CSP的约束传播
常规的状态空间搜索所能做的唯一一件事就是搜索
CSP则能做搜索,还能做一种特殊类型的推理,称为约束传播
约束传播用途:可以转化为等价的更易解决的问题;可以证明问题的可满足性不可满足性
不同类型的局部一致性:节点一致性、弧一致性、路径一致性、k一致性
最流行的约束传播算法AC-3算法,支持弧一致性
k一致性,当k=1等同节点一致性,k=2,等同弧一致,k=3,等同路径一致性
6.3 CSP的回溯搜索
是一种深度优先搜索算法,用于查找某些计算问题的答案,尤其是CSP
回溯搜索递增地构建解的候选,而且一旦确定部分候选c不能成为一个合法的解,就将c抛弃(回溯)
例子:8皇后
相关优化:
变量与值得排序?(最小剩余值、程度启发式、最少约束值启式)
搜索中推理?
当搜索到一个违反约束的赋值时该搜索能否避免重复这个失败?智能回溯
6.4 CSP中的局部搜索
局部搜索算法在CSP问题中也很有效,采用完整状态形式化
最小冲突启发式:对很多CSP问题有奇效,在n皇后问题上,最小冲突的运行时间与问题大小基本无关,甚至对于百万皇后问题,在初始赋值后,平均50步左右就能得到解
约束加权:能聚焦重要的约束
6.5 问题的结构
问题分解
独立子问题
树结构问题
简化约束图为树形结构:割集调节、树分解
6.6 小结
CSPs问题用一组变量/值对表示状态,并且用一组变量的约束表示条件。
节点、弧、路径、以及k一致性使用约束来推断哪个变量/值对是一致的。
回溯搜索以及采用最少冲突启发式的局部搜索被用于CSPs。
割集调节和树分解可被用于将约束图简化为树结构。
7 知识推理
7.1 概述
数据、信息、知识、智慧
知识库和知识库系统
一个知识库系统由知识库和推理引擎组成
7.2 知识表示
知识表示
知识表示的核心问题:
原语:用于表示知识的基础框架,例如语义网络、一阶逻辑等等
元表示
不完备性:将确定性因子与规则和结论相关联
共性与事实
表现的充分性
典型的知识表示方法:贝叶斯网络、一阶逻辑、基于Frame的系统、本体、产生式系统、脚本、语义网络
语义网络:表示概念间语义关系的网络,它是由节点和弧组成的有向或无向图,其中节点表示概念,弧表示概念间的语义关系
用lisp语言表示语义网络
语义网络无法表示如否定、析取、或者一般的非分类知识,难以驾驭大型领域,并且不能很好的表现性能或者元知识
7.3 逻辑表示
过程性与陈述性方法
命题逻辑也叫命题演算,使用逻辑连接词,处理简单的陈述性命题
一阶逻辑也叫一阶命题演算,此外,还使用限量词、等量词、以及谓词(通常与集合相关联)
一阶逻辑的形式规则:项、公式
形式规则可以用于书写项和公式的形式写法
形式规则通常是上下文无关的,即每个产生式左侧有一个单一的符号
项:变量、常数、函数
公式:谓词符号、等量词、否定、二元连接、限量
Prolog语言起源于一阶逻辑,是一种通用的逻辑编程语言,已经被用于定理证明、专家系统、自然语言处理等等
不同于其他编程语言,Prolog是陈述性的:程序逻辑由关系来表达,表示为事实与规则
7.4 本体工程
本体:上层本体、领域本体、混合本体
本体的成分:个体、类、属性、关系、功能项、限定、规则、公理、事件
本体工程:一个研究构建本体的方法和方法学的领域
两类本体语言:传统语法的本体语言(代表是COMMON LOGIC)、标记式的本体语言(最常用的是XML)
7.5 贝叶斯网络
不确定性知识
智能体的进化:问题求解、推理、规划以及学习
智能体可能需要处理不确定性,由于部分可观察性和不确定性问题
在不确定的环境下做出决策,需要概率论、效用论、决策论
理性决策
贝叶斯定理
贝叶斯网络:采用有向无环图DAG表示,也称置信网络、概率网络、因果网络
一个贝叶斯网络表示一组随机变量和他们的条件依赖关系,例如它可以表示疾病与症状之间的概率关系
两种观点:将该网络视为一种联合概率分布的表示;将其视为一组条件独立语句的一种编码
如何构建贝叶斯网络
贝叶斯网络远比全联合分布紧凑
节点排序
条件独立关系
7.6 小结
知识表示捕捉信息。其代表性的方法是:语义网络、一阶逻辑、产生式系统、本体和贝叶斯网络。
本体工程是研究构建本体的方法和方法学。
不确定性知识可以用概率论、效用论和决策论来处理。
贝叶斯网络基本上可以表示任意的全联合概率分布,并且在许多情况下可以做的非常简洁。
8 经典与现实世界规划
8.1 规划问题
动作是agent的一个关键部分
规划是找到一个计划:它产生从任何初始状态到达一个目标状态的一系列动作,即制定一个计划到达既定目标
什么是经典规划:具有如下特征:完全可观测、唯一已知初始状态、静态环境、确定性动作、每次仅一个动作、单一智能体
问题求解agent vs 规划agent
PDDL试图对AI规划语言标准化,与1998年首次开发
定义规划任务的三要素:状态、动作、目标
注意谬误动作和矛盾动作
待续
来源:oschina
链接:https://my.oschina.net/u/4312205/blog/3227953