對抗搜尋(adversarial search)源於博弈(game playing)
博弈問題定義為搜尋問題:
下圖為井字棋遊戲的博弈樹(utility值針對的是max棋手,min的值正好相反)
博弈樹較小,9!=
362880
9!=362880
9!=362
880個結束狀態,對於西洋棋等現實問題來說很小
資源有限的條件下搜尋盡可能多的節點(而非所有)以決定棋手如何行棋(最佳還是合理?)
演算法思路:
m in
imax
(s)=
utility(s) & if~terminal-test(s)\\ max_minimax(result(s,a)) & if~player(s)=max\\ min_minimax(result(s,a)) & if~player(s)=min \end
minima
x(s)
=⎩⎪⎨
⎪⎧u
tili
ty(s
)max
a∈ac
tion
s(s)
min
imax
(res
ult(
s,a)
)min
a∈ac
tion
s(s)
min
imax
(res
ult(
s,a)
)if
term
inal
−tes
t(s)
ifpl
ayer
(s)=
maxi
fpla
yer(
s)=m
in示意圖:
演算法:
function minimax_decision(state) returns an action
return arg max min-value(result(state,a))
function max-value(state) returns a utility value
if terminal-test(state) then return utility(state)
v for each a in actions(state) do
v return v
特點:function min-value(state) returns a utility value
if termianl-test(state) then return utility(state)
v for each a in actions(state) do
v return v
遞迴演算法(自上而下至葉子節點,通過樹把各節點minimax值回傳)
完善博弈樹的深度優先(depth-first)搜尋過程
時間複雜度:o(b
m)o(b^m)
o(bm
)空間複雜度:o(b
m)o(bm)
o(bm
)為什麼需要裁剪:
如圖:
解釋:
function alpha-beta-search(state) returns an action
v return the action in actions(state) with value v
function max-value(state, alpha, beta) returns a utility value
if terminal-test(state) then return utility(state)
v for each a in actions(state) do
v if v >= beta then return v
alpha
return v
特點:α−βfunction min-value(state, alpha, beta) returns a utility value
if terminal-test(state) then return utility(state)
v for each a in actions(state) do
v if v <= alpha then return v
beta
return v
\alpha -\beta
α−β剪枝效果很大程度上依賴於狀態節點被探查的次序。
演算法:
function alpha-beta-search(state) returns an action
v return the action in actions(state) with value v
function max-value(state, alpha, beta) returns a utility value
if cutoff-test(state,depth) then return eval(state)
v for each a in actions(state) do
v if v >= beta then return v
alpha
return v
特點:function min-value(state, alpha, beta) returns a utility value
if cutoff-test(state,depth) then return eval(state)
v for each a in actions(state) do
v if v <= alpha then return v
beta
return v
非「零和」方式,也可以是共贏方式
博弈不僅限於2-players,也可以是n-players
chapter 16 對抗樣本和對抗訓練
對抗樣本即是被用心構造出來,利用演算法的漏洞來被錯誤分類的樣本。舉個例子,前段時間有人發現,只要手持一類,監控裝置就無法將你識別為人類。前面的課程也有例子,一幅大象的,只要加上微不足道的噪點,演算法就會將它識別為別的東西。下面是另乙個例子 左右兩個熊貓在人眼看來毫無區別,但在左圖加上乙個精心構造的縮...
day00 對抗樣本學習
接觸對抗樣本的第一天,主要從概念,結構,演算法三個方面來了解。其中學習內容多來自以下幾篇文章和部落格,侵刪。演算法 概念 概念 實現 是指資料集 影象資料集 經過優化改變其特性,而外表沒有變化得到的資料集,分類時這些樣本資料會分類錯誤,即所說的對抗樣本。乾淨樣本是原始資料集,能正確分類的樣本。生成對...
人智導(一) 無資訊搜尋
狀態空間模型 定義兩個基本元素 本體 步驟如下 function problem solving agent p returns an action inputs p a percept static s an action ssequence,intially empty state some d...