实例1:读心术
猜数字游戏0-1000之间猜数字 猜出结果猜大了猜小了 从而得出最终的结果
方法一:随心所欲猜
方法二:每次取中间的猜(二分查找) 规则树
时间复杂度是对数级别
和人一样作出的判断方式
人们对客观事物的认识由认识个别的事物开始,进而认识事物的普遍规律
根据归纳等方式作出判断
确定的判断和有不确定性的判断
最简单的形式是由一连串的if-then规则组成 用来进行判断或行动决策
专家系统 在特定领域内模仿人类专家思维求解复杂问题
知识库 推理引擎 用户接口 来提供专家系统所能做到的事
用户接口 接收用户的查询并将其传递给接口引擎 最后将结果显示给用户
不需要额外常识
输入的数据可以客观描述
专家系统的优势 更快更方便 可以存储大量知识 作为人类专家知识固化载体 可扩展性、不断改进规则
专家系统的应用与发展
领域专家级知识
模拟专家思维
达到专家级的水平
第一例成功的专家系统 DENDRAL
1965年在美国斯坦福大学开始研制 判断化合系统的成分分子结构
输入的是质谱仪的数据 输出给定物质的化学结构
MYCIN 1970年首次使用 用于诊断血液病的医疗系统
输入患者的症状 一般状况和病史 以及简单实验室测试的结果
Prospector 197年斯坦福研究中心的Duda研制 用于识别矿物质开采 矿物知识库
推理机 根据贝叶斯理论进行不确定性推理
成功的商用系统:XCON
1980年被用于DEC位于新罕布什尔州萨利姆的工厂
如何将人类专家提供知识映射并存储到知识库中,便于更好地进行推理
Google在2012年5月16日发布了知识图谱加快搜索引擎
专家系统发展 知识库变大 推理引擎更加专用 用户接口更多样
实例2:井字棋
由两个玩家在3x3的格子上打自己的符号,最先以横直斜连成一线为胜
游戏目标:让自己的三个棋子连在一起 当两粒连子的时候,把他们连成三个
不让对方的棋子连在一起 如果对方有两粒连子 阻止它们构成三连
尽量创造出能够获胜的机会
尽力阻止对方能够获胜的机会
如果双方玩家都采取最优策略的话 那么井字棋一定是一个平局
水平都比较高 先手方在角落获胜几率更大
水平一般 放中间获胜概率比较大
AI学会下棋 没有直觉的说法
在特定的局面下 AI会按照一定的规则给出固定的决定
博弈树
零和博弈 双方(或多方)的收益相加为0 只要让其他人收益最小化 自己收益就能最大化
非零和博弈中,所有人的收益之和不为0 存在"合作"或"双赢"的可能
自己的所得并不与其他人的所失的大小相等,使他人收益最小化也可能"损人不利己"
囚徒困境 最可能的结果是两人同服刑五年
只考虑一个人最佳选择并非考虑团体的最佳选择。
选择使对方收益最小化的策略并不能使自己获得最大收益
博弈树的每个节点对应于每个局面,每一条边对应于一个动作
在完全信息零和博弈的条件下,能够构建简单的博弈树
如果在不完全信息、非零和博弈的情况下,博弈树较为复杂
井字棋的博弈树最高有9层
估值决策
估值函数
对每一种局面给出一个局面
棋盘的特征
不同位置 不同时间 价值不同
根据估值函数选择最优策略
最佳行动就是能够使得下一个状态的评估值最大的行动
采用多步搜索策略
提高搜索的深度
如果结点是终止及诶单:
应该估值函数求值
如果结点是max结点
找到每个子结点的值
其中最大的子结点作为这个结点的值
如果结点是min结点
找到每个子结点
Alpha-Beta剪枝
Minimax需要展开整个决策树
对于局面复杂的问题 需要很大的空间
有部分结点跟最后的结果无关,无需展开局面和计算估值
不计算这些结点可节省算法搜索的时间
加速minimax搜索过程
每个结点存储局面估值之外,还存储可能取值的上下界
下界:Alpha值
上界:Beta值
Max结点的子节点搜索时,受到已经搜索过的值比其可能取值大的兄弟结点影响
开始构建决策树
将估值函数应用于叶子结点
深度优先搜索,传递并更新α、β、结点值
max结点更新下限 min结点更新上限
从根节点选择评估值最大的分支,作为行动策略
启发式算法
在搜索过程中,启发式算法被定义成一系列额外的规则
经验法则
利用一些特定的知识
高手怎么下 我怎么下
特点: 它常能发现很不错的节,但也没办法证明它不会得到最坏的解
它通常可以在合理时间解出答案,但也没办法知道它是否每次都可以这样的速度求解
额外的估值函数
启发式规则反映在额外的估值函数中
可以和终止局面的估值函数一起计算
总结
与AlphaBeta剪枝不同,不用从叶节点自底向上计算估值
重点在于如何设计并实现启发函数,使我们能够更快地获得较优解
从国际象棋到围棋
深蓝
Alpha-Beta剪枝
残局库(增加搜索深度)
人类对局开局库
GNU Go
业余5~10级左右
CGOS上,GNU Go被当做基准分数
蒙特卡洛方法
通过随机采样计算得到近似结果
一种通用的计算方法
蒙特卡洛树搜索(MCTS)
一种通过在决策空间中随机采样并根据结果构建决策树来寻求最优决策策略的方法
决策树的构建:选择、扩张、模拟、反馈。
树策略:从决策树中选择并创建新的叶结点
默认侧率:从一个非中止状态不断进行游戏并得到一个价值评估
MCTS之于围棋
MoGo第一个使用蒙特卡洛树搜索的围棋程序(2006年),在9x9的棋盘上击败了职业选手
DeepZenGo是AlphaGo之前最强围棋程序之一,可以达到与职业棋士差距3~4子的水平
AlphaGo
在MCTS的举出上,通过神经网络进行训练得到更好的树策略和估值函数