[轉]詳細解讀TrueSkill 排名系統


概要

大多數競技游戲都有一個評價玩家是否完成目標的度量指標,它是游戲的基礎。對於包含兩個或兩個以上玩家(多玩家比賽)的比賽,常涉及到游戲玩家技能的排名方法。游戲鼓勵玩家之間相互競爭,玩家不只要贏得單場比賽,還得讓更多的玩家見識和認可自己的整體技能水平。玩家可能期望能夠通過認識的人或者沒有一塊玩過的潛在對手來評估自身技能,從而能夠安排一些“有意思”的比賽。如果一場比賽,參與其中的玩家勝率極不平衡,我們則稱它是“無懸念的”比賽,很少有人願意玩一場准贏或必輸的比賽。相反地,參賽選手彼此勢均力敵的比賽一定是“有懸念的”比賽。

目前,人們已經設計出許多排名系統,使得游戲聯盟能夠比較成員的相對技能。通常,一個排名系統都包含三個要素:

  • 更新模塊:根據玩家之間的游戲結果,跟蹤所有玩家的技能。

  • 匹配模塊:給成員安排有意思的比賽。

  • 選手積分榜模塊:識別和發布成員技能。

特別地,世界足球聯盟ELO排名系統已經成功用於各種兩個玩家競技的聯盟,如美國象棋聯盟或世界象棋聯盟,或者其他類型的聯盟。在網絡游戲中,許多聯盟都采用每場比賽兩個以上玩家參與的游戲模型。ELO並不適用於這些場景。事實上,流行的基於技能的排名系統均布支持這類游戲。人們創建出許多一次性的排名系統支持這類游戲,但它們都不是通用的,足以應用於所有這類游戲。

如何表示技能

TrueSkill排名系統是一個基於技能的排名系統,設計用於克服當前排名系統的局限,保證在聯盟內確實可以安排出有意思的比賽。它使用一個名為貝葉斯推斷的技術對玩家進行排名。

TrueSkill排名系統不是假設每個玩家對應一個固定的技能,它使用一個鍾形信念分布(也稱高斯分布)表示對玩家的信念。每個信念分布可以使用一個均值μ(峰點)和標准差σ(散度)進行唯一表示。

 

上圖表示一個信念分布實例,技能信念分布曲線下方某個范圍的區域對應玩家技能落入此區間的信念。比如,圖中綠色區域是玩家技能處於等級15至20的信念。隨着系統對玩家技能的了解,σ趨向於逐漸變小,玩家技能的信念范圍將更加緊湊。換個角度來看μ和σ,可以分別將其視為“玩家技能的平均信念”和系統對玩家技能評估的“不確定性”。

由於TrueSkill排名系統使用一個高斯信念分布表示玩家的技能,所有玩家的平均技能(即μ)將始終(更准確地是以99.99%的概率)落在初始σ的± 4 倍區間范圍。對約65萬個玩家,280多萬場比賽的跟蹤實驗數據支持這一論斷:沒有任何μ曾落到初始σ的± 4 倍區間范圍之外,甚至99.99%的μ都落在初始σ的± 3 倍區間范圍之內。

有趣的是,由於通過簡單相乘就可以將μ與σ放縮到任意范圍,TrueSkill排名系統可以使用數值為1的初始不確定性參數進行所有的計算。比如,假設所有的計算都使用初始值μ=3,σ=1進行。如果有人希望將玩家技能表示成50個“等級”中的一個,由於幾乎所有的μ都是位於初值σ值的± 3 倍區間范圍之內,將μ和σ乘以50/6=8.3即可。

TrueSkill排名系統的直觀性在於兩個玩家的μ值相差越大,假設兩者的σ值相似,則μ值越大的玩家在游戲中表現更佳的幾率就越大。這個原則在TrueSkill排名系統中始終成立。但是,它並不意味着μ值越大的玩家穩贏,而是他們贏的幾率要大於μ值小的玩家。TrueSkill排名系統假設單場比賽中玩家的表現在其真實技能上下浮動,游戲結果(所有參賽選手的相對排名)是由他們的表現決定。因此,TrueSkill排名系統中一個玩家的技能可認為是其多次比賽的平均表現。在玩家技能上下波動的表現方差從原則上來說是TrueSkill排名系統的一個配置參數。

如何更新技能

TrueSkill排名系統將僅僅根據游戲結果(所有參賽團隊的相對排名)更新玩家的μ值和σ值。它僅僅假設游戲結果應歸於圍繞玩家技能上下波動的未觀測到的表現。在積分形式的游戲中,如果贏家以10分的差距擊敗了其他所有的玩家,則其所獲得的勝利與僅僅以1分差距贏取勝利的玩家沒有任何差別。每場比賽都為系統提供了更多拉低σ數值的玩家技能信念信息。在根據新游戲結果決定所有參賽玩家新的技能信念前,TrueSkill排名系統假設每個玩家的技能可能會相對於其參與的最近一次游戲發生微小的變化。此假設從數學上得到的結果是技能不確定性指標σ將略微上升,增加量原則上是TrueSkill排名系統的一個配置參數。正是這個參數不但允許TrueSkill排名系統跟蹤玩家技能隨時間的改善,還能保證技能不確定性指標σ始終不會降至零(維持動量)。

為了根據新游戲結果確定所有參賽玩家新的技能信念,TrueSkill排名系統得確定給定參賽玩家技能的前提下,觀測到的游戲結果所發生的概率,並根據相應技能信念的概率為其賦權。這個過程通過計算所有可能表現的均值(以對應概率為權值)實現:表現最佳的玩家勝出,表現次好的排名第二,以此類推。如果兩個玩家的表現十分接近,TrueSkill排名系統將認定兩個玩家之間的游戲打成平局。根據TrueSkill排名系統,在一個給定聯盟中判定為平局的間隔越大,則平局發生的可能性就越大。間隔的大小是TrueSkill排名系統的一個配置參數,可根據游戲模式進行調整。比如,在世界街頭賽車3中的街頭賽絕不會產生平局(因此參數設為0),而在完美特工:零中的奪旗游戲很容易產生平局。

根據以上賦權技術(也稱貝葉斯定律),排名系統可以確定每個參賽玩家的新技能信念。這些技能信念不再服從高斯分布。因此,TrueSkill排名系統確定了最佳高斯近似。由此,給定玩家的μ值只要勝出就增加,落敗則下降。如下表格給出了每個(設想)玩家在一場存在八個參賽者的比賽前后的μ和σ值。

 

可以看到σ值(反映每個玩家技能的不確定性)在比賽后下降,對於排在第四和第五(Darren與Eve)的玩家下降尤甚。兩個玩家σ值的界是他們打敗或被被打敗的玩家最大數目:兩人分別被3個(或4個)玩家打敗,打敗4個(或3個)其他玩家。與之形成對比,排在第一的玩家(Alice)顯然比其他7個玩家表現都好,他們沒有限制其技能的發揮:她甚至可能優於等級36.771。這個可以從值為5.749的不確定性指標中反映出來。

對於一個TrueSkill排名系統更新算法最簡單的例子莫過於兩個玩家的比賽。假設只有兩個玩家A(Alice)和B(Bob),二者的參數μ和σ分別為(μA,σA) 和 (μB,σB)。一旦比賽結束,更新算法確定贏家(Alice或Bob)和輸家(Bob或Alice),應用下面的更新方程(這里為簡單起,我們不考慮出現平局的概率):

更新方程中,唯一的未知量是β2 ,它是圍繞玩家表現波動的方差。此外ε 是前面提到的平局間隔,由游戲模式決定。但是函數v(.,.) 和 w(.,.) 的表達式是什么樣的呢?無需給出它們的准確定義,我們來看看這些函數隨ε/c變化的圖像:

 

觀察這些更新方程可以發現:

  • 與ELO系統相似,在平均技能更新方程中,贏家的平均技能增加一個v((μwinner-μloser)/c,ε/c)的倍數,輸家的平均技能則減去一個v((μwinner-μloser)/c,ε/c)的倍數。但是,ELO的權重因子大致正比於兩個不確定指標之和(2β2是由圍繞技能波動的表現方差決定,σ2winner+σ2loser 則是他們真實技能的不確定性),而TrueSkill的權重因子大致正比於winner/loser。從而,只有當Alice與Bob的不確定性相等時,TrueSkill排名系統的平均技能更新方程則退化為ELO更新方程。我們需要注意,TrueSkill排名系統的平均技能更新方程不保證零和。

  • 兩個玩家的不確定性指標(不管win/loss/draw)將減少1-σ2player/c2 * w((μwinner-μloser)/c,ε/c)。再次,不確定越大的玩家其下降的幅度越大。

  • 如果游戲結果沒有懸念,則平均技能的變化、v((μwinner-μloser)/c,ε/c)、不確定性參數減少的因子、1-σ2player/c2 * w((μwinner-μloser)/c,ε/c)都趨於零。

贏/輸

如果贏家的平均技能相對全部不確定性指標大得多(由此(μwinner-μloser) > ε),則一場勝利不能為贏家帶來額外的平均技能積分,或消除任何的不確定性。反之亦成立,如果游戲結果有懸念:若贏家的平均技能較小((μwinner-μloser) < ε),可以為贏家帶來或從輸家扣掉正比於μloser-μwinner的平均積分。

平局

如果更新之前兩個玩家的平均技能相似(由此|μwinner-μloser| < ε),則二者已經足夠接近,不需要再進行平均技能積分的更新。因此,不確定性不在下降。然而,如果在比賽前TrueSkill排名系統認為某個玩家更強(即μwinner-μloser> ε),那么其平均技能將下降,對手玩家的均值增大,從而拉近兩者的平均技能。

TrueSkill排名系統的平均技能更新方程與ELO算法的更新方程類似。關鍵差別在於主要根據兩玩家的不確定指標比率使用了一個可變的K因子。由此,在TrueSkill排名系統中,相比與另一個表現不穩定的玩家比賽,與一個表現穩定的玩家比賽,將使得表現不穩定的玩家發生更大幅度的起伏。

但是TrueSkill排名系統如何融入團隊比賽的結果呢?這里,團隊的技能假設為團隊中每個玩家的技能之和。TrueSkill排名系統的更新算法使用上述兩個更新方程確定兩隊的技能之和,其中(μwinner,σ2winner) 和 (μwinner,σ2loser) 分別是贏家團隊和輸家團隊的平均技能及技能方差。

對於兩個以上的團隊,由於涉及數值積分(上述圖像通過相同的數值積分代碼得到),我們不能寫出更新方程的表達式。此時,TrueSkill排名算法通過對所有排在相鄰位置的團隊,循環迭代地進行更新,也即是說排在第一個的與排在第二的兩個隊,排在第二的與排在第三的兩個隊,依次類推。如果你想了解更多這種TrueSkill排名算法的變體,請訪問我們的交互排名計算器。

如何匹配玩家

玩家配對是游戲聯盟提供的一個重要服務。它允許參與者尋找隊友和技能等級相當接近的對手。結果,由於所有參與者贏的幾率幾乎相等,比賽可能十分精彩。

TrueSkill排名系統的技能信念是基於概率結果模型,因此可以比較玩家平局的相對幾率。比賽參與者的技能越一致,這種配置的玩家組合以平局收場的可能性越大,對於每個玩家比賽就顯得越有趣。比如,對於兩個技能信念為(μA,σA) 和 (μB,σB)的玩家A(lice) 和 B(ob),兩者比賽平局的幾率可以通過下式給出:

 

這個數字通常位於0和1之間,其中0表示最差的可能匹配,1則表示最佳的可能匹配。即便當兩個玩家的μ值相同時,則不確定性指標σ影響匹配的質量。如果σA與σB不同,則匹配質量准則顯著小於1!

 

如何構建選手積分榜

基於兩個表示對玩家技能信念的參數μ 和 σ,TrueSkill排名系統使用所謂的保守技能估計=μ -k*σ給玩家排名。這個估計之所以稱作是保守的,在於它是玩家技能的一個保守的近似:玩家的真實技能極有可能大於保守估計。k值越大,則估計值越保守,通常取k=3。

 

引自:http://yuedu.163.com/news_reader/#/~/source?id=a89298ff-8bc7-4448-8c97-56755eba7021_1&cid=041750bdf3554196b9b1ee2029291f4f_1 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM