如何在TrueSkill中计算贝叶斯

时间:2020-01-29 13:58:01

标签: algorithm

你好!

我试图了解TrueSkill如何在最简单的1vs1情况下工作。我主要使用的是原始论文和“ Computing Your Skill”。但是,当因子图出现时,我会感到困惑。我想我首先需要了解所有这些的逻辑,然后看看如何以较低的计算成本使用数学。 因此,一开始,需要确认,因子图只是使TrueSkill的数学计算成本降低的一种工具?

然后,我有一个均值为s1且方差为o1的高斯,并且对于玩家2也是相同的。然后,我们还创建了一个均值相同但游戏beta为方差的高斯。我们也知道比赛的结果。 因此,从理论上讲,不使用消息或求和积,贝叶斯在这里如何?我如何计算我的先验,可能性和证据?有高斯的和或乘的最终表达吗?我想念其他东西吗?我在问什么有意义?

我的想法是这样的:假设玩家1的技能高于玩家2,并且玩家1获胜。因此,后验=具有​​新方差的新高斯技能。与贝叶斯的关系是可能性*先验/证据。先验是具有平均技巧及其方差的第一个高斯。后验是减去玩家1与2的高斯性能。证据是一个玩家与玩家2的实际获胜百分比。我在说什么呢?

2 个答案:

答案 0 :(得分:0)

这是您可能更熟悉的语言基本概念。

我们为每位球员提供的先验条件是,他们的真正技能先于钟形曲线出现,且均值和标准差均已知。比赛的先决条件是一个球员的技能独立于另一个球员的技能。比赛结果的先验条件是每个技能差异获胜/失败/失败的概率。

您参加比赛并记录比赛结果。

鉴于观察和我们对技能差异的先验分布,我们对技能差异有后验分布。沿着链条走回去,我们得到了后铃形曲线,以了解每个玩家的技能。因此,我们获得了新的均值和标准差。

现在请注意,在数学中,玩家的后验分布现在是相关的。但是,如果我们试图跟踪这些相关性,我们将更新贝叶斯网络,这是一个NP完全问题。因此,我们撒谎并假装它们现在不相关。这个谎言称为 naive 贝叶斯(Bayes),在实践中,相关性往往会相互抵消,以至于效果很好。

有帮助吗?

答案 1 :(得分:0)

您可以只关注一名玩家,以真正简化事情。如您所述,该模型使用的是贝叶斯定理namespace project_1 { class check { check checkobject = new check();// Line-1 /*I have not access Line-1 in main method. But due to Line-1 or Line-2, output says "Process is terminating due to StackOverflowException". Why?? I do not need the solution, I want to know the reason for it. Removing " new check() " from Line-1, then it works fine. */ public void Display() { Console.WriteLine("It worked"); } } class DemoProgram { static void Main(string[] args) { check ob1 = new check();// Line-2 ob1.Display(); } } } 。假设posterior = likelihood*prior/evidence是玩家技能的随机变量(在本文中,平均值为A的正态分布),而s_i是游戏结果的随机变量。

B

本文中的模型要复杂得多,因为有多个参与者,并且团队规模各异,但是这种简化显示了使用贝叶斯定理的地方。