前段时间为了提升游戏数据,保留存、拉付费。游戏设计的核心方面是难度及其对玩家体验的影响,度太简单,玩家无法充分投入,难度太难,玩家会感到沮丧,从而退出游戏。
于是搞了一个三消自动跑关的AI,通过收集线上玩家数据,与AI的打关数据进行拟合,找出最合适薅羊毛点,以及保流失率的点,进行关卡调整,或者动态干预关卡难度。一下是我对于实现AI跑关做的一些调研,和拟合玩家数据提高游戏数据翻一些论文后做的一些记录。
启发式算法
- 简单和快速:启发式算法通常比复杂的算法更简单,同时执行速度也更快。这是它们的一大优势。
- 基于规则,无法模拟人类决策:启发式算法依赖于预定义的规则,无法完全模拟人类的复杂决策过程。这可能导致其无法处理一些非标准情况。
- 难以维护和扩展:当新的需求出现时,启发式算法通常需要重新设计,这使得它们难以维护和扩展。每次有新特性加入时,都需要重新修改整个算法。
总之,启发式算法是一种简单快速但功能有限的解决方案。它们适用于一些简单的问题,但在处理复杂问题或需求变化时,可能就会暴露出其局限性。选择什么样的算法,需要根据具体情况权衡各种因素。
蒙特卡罗树搜索算法(Monte Carlo Tree Search, MCTS)
- 较高的准确性:MCTS是一种树搜索算法,能够通过模拟未来多步操作来做出更准确的决策。这使得它在某些应用中表现较为出色,如下棋等。
- 能够规划未来:MCTS可以规划和考虑未来的后续步骤,而不仅仅局限于当前状态。这使得它能做出更加前瞻性的决策。
- 需要更多的模拟运算:要规划未来,MCTS需要进行大量的模拟计算。这使得它的计算开销相对较高,速度也会比一些其他算法慢。
综上所述,MCTS是一种相对准确的算法,能够考虑未来的动作序列。但它需要更多的计算资源,速度会比一些启发式算法慢。在实际应用中,需要权衡算法的准确性和响应速度,选择最合适的解决方案。
深度学习(Deep Learning)
- 监督学习算法:深度学习通常采用监督学习的方式,需要有大量的训练数据(如棋局记录)作为样本。
- 使用实际数据进行训练:深度学习模型是通过学习大量的历史数据(如玩家的棋局记录)来获得知识,而不是依赖于预先设计的规则。
- 更高的准确性:相比于蒙特卡罗树搜索(MCTS)等方法,经过充分训练的深度学习模型通常能给出更加准确的决策。
- 执行速度快:深度学习模型在进行推理时,速度可以与启发式算法媲美,甚至更快。这使其在需要快速响应的场景中很有优势。
总的来说,深度学习结合了监督学习的优势,能够在准确性和响应速度方面都有不错的表现。但它需要大量的训练数据,并且模型的训练和优化也需要耗费大量的计算资源。在实际应用中,需要根据具体需求权衡各种算法的特点,选择最合适的解决方案。
强化学习(Reinforcement Learning)算法
- 自我学习:强化学习算法通过不断自我对弈和学习,逐步掌握如何玩好游戏,无需依赖于人类玩家的数据。
- 可能超越人类水平:由于不受人类水平的限制,强化学习的机器人在某些复杂游戏中可能最终超越人类玩家的水平。这是一个潜在的问题。
- 相对较低的准确性:与深度学习等监督学习方法相比,强化学习在初期可能会给出较低的准确性决策。但它可以提供一个估计,即机器人最终能达到的水平有多高。
- 无需人类参考:强化学习不需要依赖于人类玩家的数据,这使得它在一些没有充足训练数据的场景下也能发挥作用。
总的来说,强化学习是一种独立学习的方法,可以在某些场景下取得很好的效果。但它在初期可能会less accurate,需要大量的自我训练才能达到理想的水平。在选择算法时,需要权衡准确性、训练成本等因
softmax 函数
好的,我明白您提到的"softmax"这个概念。
softmax是一种广泛应用于机器学习和深度学习中的激活函数。它的数学表达式如下:
其中:
- K是类别的总数
- z_i是第i个类别的原始输入值
- softmax(z_i)是第i个类别的softmax输出值
- softmax函数的作用是将一组K个实数值转换成K个概率值,使得这些概率值之和为1。这样可以将原始输入值解释为概率分布。
- softmax函数广泛应用于多分类模型中,如logistic回归、神经网络等。它可以将模型的输出解释为各个类别的概率分布,从而帮助我们做出预测和决策。
总的来说,softmax是一种重要的激活函数,在机器学习和深度学习领域有着广泛的应用。它可以将原始输入转换成概率分布的形式,为模型的输出提供了直观和可解释的表示。
ReLU 函数
ReLU(Rectified Linear Unit)是一种广泛使用的激活函数,定义如下:
其特点如下:
- 单调递增,有助于模型收敛。
- 计算简单,效率高。
- 能够有效地解决梯度消失的问题,在深度神经网络中表现出色。
- 稀疏性强,在输入为负值时输出为0,有利于模型压缩。
ReLU函数简单但有效,在计算机视觉、自然语言处理等多个领域的深度学习模型中广泛应用。它是当前最流行的激活函数之一。
统计学相关
方差(Variance)
假设我们有一组数据如下:
{2, 4, 6, 8, 10}这组数据的平均值是:
那么这组数据的方差计算如下:
首先计算每个数据点与平均值的差值:
{-4, -2, 0, 2, 4}
然后将这些差值平方:
{16, 4, 0, 4, 16}
最后求这些平方值的平均值:
所以这组数据的方差是8。
从这个例子可以看出:
方差反映了数据点离其平均值的偏离程度。
数据点越接近平均值,方差就越小,反之方差越大。
方差的单位是原始数据单位的平方。
方差是统计分析中非常重要的度量指标,它可以用来描述数据的离散程度,评估模型的拟合优度,量化测量误差等。
Θ(Theta)符号
在数学和计算机科学中,Θ(Theta)符号用于表示算法或函数的渐近复杂度。
Θ(g(n))表示一个函数 f(n) 的复杂度与 g(n) 是同阶的,即存在正常数 c1 和 c2,使得当 n 足够大时:
c1 ⋅g(n)≤f(n)≤c2 ⋅g(n)
这意味着,函数 f(n) 的增长率介于常数倍 c1 和 c2 之间,与 g(n) 的增长率是相同的。
Θ记号描述了一个函数的上界和下界,它给出了该函数的精确渐近行为。相比之下,O记号只给出了函数的渐近上界,而Ω记号只给出了函数的渐近下界。
Θ记号常用于分析算法的时间复杂度和空间复杂度,以确定算法的效率。它是计算机科学中一个非常重要的概念。
负二项分布
负二项分布是一种离散概率分布,用于描述在独立的重复试验中,直到出现第 r 次失败所需要的成功次数。它有两个参数:
- 成功概率 p:每次试验成功的概率。
- 失败次数 r:需要观测到的失败次数。
负二项分布的概率质量函数为:
其中:
- X 表示成功次数
- x 表示实际观测到的成功次数
- r 表示所需的失败次数
举个例子
假设某公司的产品质量检查过程如下:
- 每个产品有 5% 的概率存在缺陷(p=0.95)
- 公司要求在连续抽查 3 个产品(r=3)之前发现第一个缺陷产品
那么根据负二项分布公式,我们可以计算出:
在抽查前 3 个产品时,刚好发现第一个缺陷产品的概率为:
也就是说,在连续抽查 3 个产品之前发现第一个缺陷产品的概率是 21.49%。
这个例子说明了负二项分布如何用来描述在重复试验中,直到出现第 r 次失败所需要的成功次数的概率分布。这对于监控和管控产品质量非常有帮助。