人智導(五) 對抗搜尋與博弈

2021-10-07 13:28:34 字數 3332 閱讀 3152

對抗搜尋(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...