文章目录
复杂度
无信息搜索
宽度优先搜索:
Bidirectional Search
一致代价搜索
深度优先搜索
迭代加深的深度优先搜索
有信息搜索
贪婪优先搜索
A*搜索
对抗搜索
Minmax
Alpha-Beta Pruning + 完美排序
CSP 相关
- 如果不使用 CSP 而使用深度优先树做着色的相关问题
General CSP
independent subproblem
- 一共 n 个节点,切分成多个子区域,每个子区域有 c 个节点,在 c 个节点中的求解复杂度是
d
c
d^c
dc
树结构的CSP
Cutset Conditioning
- d c d^c dc 是因为在割集中的节点一共有 c c c 个,每个都有 d d d 种可能的取值,割集之外的节点数为 n − c n-c n−c 个,这些节点组成了一棵树,这棵树的 CSP 求解复杂度是 n d 2 nd^2 nd2,所以总体的复杂度如上图所示
CSP内容
Variable Ordering
MRV (minimum remaining values)
- 选择合法值最少的 variable 进行扩展;可以尽早的暴露问题,因为当 variable 中的 domain 被删除至空集合,那么就会进行回溯
Degree Heuristic
- 选择具有最多约束的变量,例如下图中先选蓝色的中部(有 5 个约束节点)
- 这是一种 tie breaking,通常结合 MRV 一起使用(当有两个 variable 中的剩余值数量相同)
Value Ordering
Least Constraining Value
- 已经选定了一个 variable 进行配色,那么选择这个 variable 中限制最少的颜色进行分配;这样的目的和 MRV 一样也是尽早暴露问题
Forward Checking
弧相容
- 如果由 A -> B 检查相容性,那么 A 是 tail,B 是 head,如果存在不相容现象,那么从 A 中(tail)中删除对应的值。
- 例如,NSW -> SA,首先是检查红色,在 SA 中至少存在一个颜色与 NSW 中的红色相容,那么红色不触犯 constrain 因此不动
- 再检查 NSW 中的蓝色,发现 SA 中没有任何颜色可以与 NSW 中的蓝色相容,因此删除 NSW 中的蓝色
拍卖
拍卖的组成部分
- language: a language to describe the allowable strategies an agent can follow
- protocol for communicating: 出价人向拍卖人传递信息的方式(open-cry / sealed-bid)
- outcome rule: 决定最终的胜利者的原则(first price / second price)
拍卖协议的三个维度
拍卖系统的影响因素
- private value 就是每个人对于当前商品的预估价值
- common value 市场公认的物品价值
有效设计的拍卖的特征(期望的特征)
- efficient:商品最终的去向是最重视他们的人
- discourage collusion:阻止勾结。拍卖机制应该阻止两个或两个以上的竞标者之间操纵价格的非法或不公平协议
- dominant strategy:优势策略。投标人存在一种优势策略,如果一种策略比其他任何策略都能给投标人带来更好的回报,那么该策略就是优势策略
- truth-revealing:揭示物品的真正价值
拍卖类型
English auction(英式拍卖)
介绍
方案和结果规则:拍卖师从要求最低(保留)价格开始,拍卖师邀请投标人出价,必须高于当前收到的最高价格(可能需要一个最低出价增量),当没有收到进一步的出价时,拍卖结束,如果最终出价超过保留价,货物就被售出,获胜者支付的价格是他们的最终(最高)出价
协议
- 最后的赢家需要支付最高价 first price
- 公开竞价 open-cry
- 价格逐渐升高 ascending
优势策略(dominant strategy):
- 不断抬高竞价,直到竞拍的价格超过自己的心里预期
特点
- Efficient:总是最喜欢(最看重当前商品的人)获得当前商品
- 赢家诅咒(suffer from winner’s curse):每个竞拍人都不愿意马上按照心中的估价出价,而是一点点往上加。而且过程中可能因为哄抬价格而导致拍到商品的价格超过了预估价,因此导致获胜者的收益为负数(收益为竞价者的心里预期与商品的最终价值之差,假设我预估这个商品 100 元,那么80元拍到,我就获益 20)
- susceptible to collusion 这种公开加价的方式可能会导致哄抬价格;也有可能导致竞拍者提前约定好压低价格
Dutch auction(荷兰式拍卖)
介绍
协议和结果规则:拍卖师从要求一个极高的初始价格开始拍卖师不断地逐步降低商品的价格,当有人以当前的出价出价时拍卖结束,赢家支付的价格是他们出价时的价格
协议
- *一次性竞价 (one-shot)这个有争议
- 公开竞价 (open-cry)
- 价格逐渐降低(descending)
优势策略(dominant strategy):
- 直到竞拍的价格达到自己的心里预期
特点(与英式拍卖一样)
- Efficient:能卖给对商品估值最高的人
- collusion:买方可能串通来共同压低价格
- 赢家诅咒
First-price & sealed-bid auction
介绍
协议和结果规则:
- 每个投标人做出一次出价
- 出价发送给拍卖师,使投标人不能看到对方的出价
- 获胜者是出价最高的投标人 (efficient)
- 获胜者支付的价格是最高的出价
特点
- not efficient:对商品估值最高的人未必能获得商品
- communication 方式更加简单(比 English 和 Dutch更简单)
- 克服了串通问题 collusion
优势策略
- 没有优势策略,因为每个人的出价都是低于自己心中的估价,但是比自己内心的价格低多少这取决于其他竞标者的表现。
Second-price sealed-bid auction (Vickrey auction)
介绍
- 协议和结果规则:本质上与第一价格密封竞价拍卖相同,但赢家支付的价格是第二高竞价的价格
优势策略
- 因为即使竞标者表现出自己内心的预估价值,那么也只需要按照第二高的价格来支付,因此很容易暴露出竞标者的期盼价值。
- 出价符合自己的真实价值不会有任何损失,因为如果出价远高于第二高的出价,你仍然只需支付第二高的价格
- 这有助于克服赢家的诅咒
特点
- Efficient
- 能够克服赢家诅咒
- truth-revealing: 能够揭露商品的真实价值,因为 dominant strategy 可以让人们轻松地叫出心中的预期价值。
- 克服串通(collusion)
- 其计算简单,使其流行使用在多代理人工智能系统和在线拍卖
机器学习 & 强化学习
Book learning
- 没有真正的从对局中学习,而是通过 memory 将对应的解决方案进行存储。
Search Control Learning
α − b e t a \alpha-beta α−beta 完美序列
- 通过调整 alpha-beta 树的节点序列保证能够 cut 掉最多的子节点
如何 cut off
- limit depth: 限制搜索树的最大深度
- 截断搜索 / 静态搜索(quiescence): 将稳定的节点删掉,只扩展不稳定的节点
- action pruning:将开始时表现不好的节点舍弃掉
机器学习
η \eta η 的作用
- 学习率,能够控制梯度下降算法在更新参数时候的步长,如果学习率过大,会导致算法很难收敛,当学习率过小又会导致算法的参数更新花费的时间很长
梯度下降在做 game playing 任务时的两个问题
- 延迟强化:一个行为的反馈可能要等到多个时间步之后,可能会降低整个学习过程的速率
- 权重分配:很难知道不同的行为对最终的结果将会产生什么影响
TD-leave( λ \lambda λ)
-
d
i
d_i
di 表示两个连续状态
s
i
,
s
i
+
1
s_i, s_{i+1}
si,si+1 之间的 reward 差值;我们的目标是尽可能减少两个连续状态 reward 的差值。
- 在结合 minimax tree 的时候,直到搜索到最底层的叶子节点才会有 reward {-1,0,+1} 分别代表输,平局,胜
- 在从当前节点搜索到叶子节点的过程中一共会有 n 个 state,在每个 state 都要通过 evaluation function 来计算得到当前节点的值
- 而evaluation function 如果表现不好,就会出现不稳定的情况;为了解决这个问题,TDLambda 通过 将所有相邻 states 之间的 reward 差值进行求和并把其最小化当作求解目标,为了得到一个好的、稳定的 evaluation function
- 当然值得注意的是, e v a l ( s i , w ) eval(s_i,w) eval(si,w) 得到的值的范围是在 { − ∞ , + ∞ } \{-\infin,+\infin\} {−∞,+∞} 之间,但是最后的 reward 的取值范围却是 { − 1 , 0 } \{-1,0\} {−1,0} 因此将中间步骤的 evalution 求出的值都进行 normalization 操作,这个过程通过 tanh 函数来完成。从而这些states evaluation 的结果也都是 { − 1 , 0 } \{-1,0\} {−1,0} ,因此我们将这些值也称为 reward,但是这些其实是 pseudo-reward,并不是真正的 reward 的意思
- 接下来通过下面的公式来更新参数:
- 最后的一项的作用是将所有相邻的节点的 d i d_i di 进行求算,
- 例如 d 1 , d 2 d_1,d_2 d1,d2, d 2 , d 3 d_2,d_3 d2,d3 一直到 d n , d n − 1 d_n,d_{n-1} dn,dn−1,把这些求和,就得到了一个反应整个决策过程中的不稳定的程度的值。 最小化这个值作为当前的求解目标,通过更新参数就可以得到更优的 evaluation function。 ∑ m = i N − 1 λ m − i d m \sum_{m=i}^{N-1}\lambda^{m-i}d_m m=i∑N−1λm−idm
- 最开始的时候一般设置 λ \lambda λ 接近 1 附近,然后随着模型训练的越来越好,将 λ \lambda λ 的值逐步减小
- 这是因为当 λ \lambda λ 开始的时候我们希望从全局的层面实现一种一致性,这种一致性可以保证我们整体的、step 与 step 之间的决策差异不会很大
- 但是随着模型表现的变好,我们可能要更灵活地追求一种局部的一致性,因此将 λ \lambda λ 减小,使得当前的 state 更新受到更小范围的 reward 的影响
-
λ
\lambda
λ 的意义:
- 当 λ = 0 \lambda=0 λ=0 时,权重的更新根据的是当前状态到下一状态的 reward
- 当 λ = 1 \lambda=1 λ=1 时,权重更新根据的是当前状态到最终状态的 reward
- 学长笔记:
Learning Environment
Learn from data
- 通过标签提供的监督信息,结合梯度下降的优化策略,来训练模型。模型的精度取决于参数的调整以及数据的好坏
Learn from opponents
- 与菜鸟训练:越练越差,没有参考价值
- 与大师训练:越练越强,通过不断失败累积经验
Learn from self
越练越强:类⽐进化论,因为不同的学习机制,评估函数的不同,对局情况的不同,都会导致agent 的差异因为学习⽽越来越⼤,⼀开始多创建⼀些不同的agent,淘汰掉相对较弱的。再不断地训练优质的agent。
监督学习和 TD-lambda 的对比
- 监督学习的学习过程依赖于人工标注的标签,而 TD-lambda 不需要给定训练标签
- 监督学习的决策过程是针对单个步骤的 (one-step) 而 TD-lambda 是针对 multi-step prediction 的
- 监督学习和 TD lambda 都是通过梯度下降的方式来逐步优化参数
- 监督学习的主要思想是通过拟合已标注的数据来训练模型,通常有两类主要的任务:
- 分类任务
- 回归任务
- 而 TD 算法属于强化学习算法,基于环境的反馈而行动,通过不断与环境的交互、试错,最终完成特定目的或者使得整体行动收益最大化。强化学习不需要训练数据的label,但是需要每一步行动环境基于的反馈,是奖励还是惩罚,反馈可以量化,基于反馈不断调整自己的行为。