隨機選擇前面某個迭代週期得到的sl網路,然後使用當前的rl策略網路和其對弈,目標是戰勝選擇的sl網路。隨機的從一系列不同迭代週期的監督學習策略網路pσ中選擇對手是為了防止過擬合。在前面的思考中提過,我們之前完全沒考慮到棋局的勝負。所以這裡將棋局和棋局的勝負都考慮進來,用強化學習演算法poliicy gradient以最大化贏的期望的目標更新引數。policy gradient演算法簡單來說就是如果在當前棋局下某步棋導致最後獎勵變多(贏了),那就加大在這個棋局下下這步的概率,反之亦然,如果有讀者感興趣閱讀我之前有關policy gradient的講解文章。
每隔500步就複製現在的引數進入我們的對手陣營中供第二步使用。
selection選擇:從根節點也就是初始棋面出發,選擇在這個棋面s
ss下最好的下法a
aa。那什麼叫好呢?這裡有乙個公式:我們提倡選擇動作效益值q(s
,a)q(s,a)
q(s,a)
加獎勵μ
\muμ最大的動作
expansion擴充套件:當l
ll時刻我們遍歷到了乙個葉子節點s
ls_l
sl,而這個葉子節點的訪問次數又超過一定閾值後,我們進行擴充套件。(如果一遇到葉子節點就擴充套件,計算量太大,而且等於你什麼情況都要考慮,沒必要)我們把要擴充套件的這個棋面輸入到我們的sl網路中,會返回各個棋子位置的概率,我們把下一步各個棋子的位置變成當前棋面的子棋面,而各個棋子的概率存進我們新擴充套件邊裡面(即先驗概率p(s,a))。
evaluation評估:對上述葉子節點進行勝率的評估,判斷當前棋面的局勢。這裡我們使用兩種方法進行評估,一種則是我們前面介紹的價值網路**勝率,得到vθ(
sl)v_(s_l)
vθ(sl
);第二種則是通過快速走子策略,從葉子節點出發,快速行棋至最後,每一次行棋結束後都會有個輸贏結果,因為速度很快所以可以進行多輪行棋,然後綜合統計得出該策略網路**的勝率z
lz_l
zl。通過綜合這兩個指標,得到這個葉子節點的勝率評估值v(s
backup反饋更新:上述對葉子節點評估完,代表著1次模擬結束。此時反向更新在此次模擬過程中到達上述葉子節點所經過的邊的動作效益值q(s
,a)q(s,a)
q(s,a)
以及訪問次數n(s
,a)n(s,a)
n(s,a)
。n
nn次模擬後,每條邊累積的q(s
,a)q(s,a)
q(s,a)
值更新量和訪問次數更新量如下:
經過n次模擬搜尋後,演算法從根節點(當前棋面)選擇訪問次數最多的邊對應的動作作為最終決策。
**
並查集深入淺出
針對雜湊點的集合操作,將哪些點集合到一起,判定哪些點在乙個集合是並查集的基本任務。缺點 對於每乙個集合,只有乙個 群主 其他的都是 群員 群員之間沒有層級之分。對於每乙個點 i 判定給定乙個 pre i 若兩個點的 pre i 相等則屬於乙個集合,其中 pre i i 的點為 群主 除此之外,若有 ...
深入淺出sizeof
int佔 位元組,short佔 位元組 1.0 回答下列問題 答案在文章末尾 1.sizeof char 2.sizeof a 3.sizeof a 4.strlen a 如果你答對了全部四道題,那麼你可以不用細看下面關於sizeof的論述。如果你答錯了部分題目,那麼就跟著我來一起 關於sizeof...
深入淺出ShellExecute
ipconfig c log.txt應如何處理?二樓的朋友,開啟拔號網路這樣 shellexecute null,open c windows rundll32.exe shell32.dll,control rundll c windows system telephon.cpl null,sw ...