开发学习应用程序的方法或算法是什么?

人工智能 机器学习 深度学习 算法 人工智能设计 路径规划
2021-11-16 09:01:08

我正在创建一个游戏应用程序,它将根据用户在前一关卡中的表现生成一个新关卡。
确切地说,该应用程序是关于语言改进的。假设用户在语法相关问题上表现良好,但在特定级别的词汇量较弱。那么生成的新关卡会更加专注于提升用户的词汇量。
所有问题都将出现在数据库中,并带有与其所属的部分或类别相关的标签。我可以使用哪些 AI 概念来开发上述应用程序

4个回答

即使这不是真正的人工智能,最简单的方法可能是在每个问题上加上系数

例如,您的问题将类似于

grammar=0.55
vocabulary=0.45
if(won){
  success=-1
}else{
  success=1
}

级别越低,此类问题出现的越少

在关卡结束时,您将每个问题与玩家成功的次数相加

player.level 是一个实数数组

for each question{
   player.level["grammar"]=player.level["grammar"]+question.grammar*question.success
   player.level["vocabulary"]=player.level["vocabulary"]+question.vocabulary*question.success
}

然后当你初始化关卡时,根据玩家的关卡选择生成问题是一个介于0和所有player.level总和之间的随机实数(偏移到0以上)

for each player.level{
   if choice>player.level{
      choice=choice-player.level
   }else{
      return question_type=player.level.type
   }
}

尽管“真正的”人工智能可以做出相同或更好的问题选择,但它可能会比这样的简单算法更慢,并且需要更多的数据。

您可以根据她/他的答案构建一个 MLC(机器学习分类器),并将其应用于大型问题数据库,以查看哪种类型的问题可能会产生不正确的答案。

然后提供这些问题(假设一个人会从解决她/他的弱点中学到更多)以提供更陡峭的学习曲线,不断适应 MLC。

http://www.deeplearningbook.org/第 5 章,也可以在 github 上找到,对如何构建基本的 MLC 以及应用程序中可能存在的问题/关键问题/参数有一个非常清晰且相对简单的解释。

您可以通过以下方面实现强化学习代理:

行动空间

添加或删除某个类别的问题的动作,例如添加语法问题,删除语法问题,添加词汇问题等。

状态空间

使用流模型,您可以为每个主题构建一个流特征向量。这样该向量中的每个元素要么是具有挑战性的,要么是正常的,要么是无聊的

这样

其中-1 很无聊,0 正好,+1 有挑战性,反之亦然

然后你把这个向量展平成一个标量整数

其中 n 是主题数,Z 是整数集

奖励信号

使用以下组合:

  • 参与时间
  • 球员得分
  • 离平衡点的距离

定义奖励信号。并使模型学习该用户的最佳流程。

就是每个主题的用户得分和

是一个距离函数,定义了该用户距离学习技能平衡的距离

算法

使用上述模型,您可以构建一个简单的 Q-Learning 代理,在添加和删除问题或某个主题的挑战方面,尝试通过选择最佳动作来最大化奖励信号。

当然,奖励信号取决于玩家玩游戏的时间、玩家的挑战或无聊程度以及玩家离最佳学习目标的距离

其中 v 是某个状态的值,Q 是状态/动作对的值

祝你好运

一个简单的决策树将是合适的,它代表了最简单的人工智能形式之一。 不要把简单的问题过度复杂化

最简单的方法可能会运行得更快,并且需要更少的系统资源,因此,除非这个项目被设计为机器学习的主菜,否则这种方法对于这个简单的问题来说太过分了。