问题标签 [artificial-intelligence]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
762 浏览

artificial-intelligence - 解释或研究基于人工智能 (AI) 的麻将游戏方法/策略的资源

虽然麻将(实际游戏,不是麻将纸牌)在基本规则和游戏玩法方面相当简单,但为 AI 设定目标以过渡到针对某些最终游戏目标似乎相当复杂。

有人知道与该主题相关的任何论文、研究或其他材料吗?

0 投票
2 回答
3499 浏览

machine-learning - 智能代码完成?有人工智能通过学习编写代码吗?

我问这个问题是因为我知道这里有很多读得很好的 CS 类型可以给出明确的答案。

我想知道这样的人工智能是否存在(或正在研究/开发),它通过自己生成和编译代码来编写程序,然后通过从以前的迭代中学习来进步。我说的是努力让我们这些程序员过时。我正在想象通过反复试验来学习编程语言中哪些有效,哪些无效的东西。

我知道这听起来像是天方夜谭,所以我想知道已经做了什么,如果有的话。

当然,即使是人类程序员也需要输入和规范,所以这样的实验必须有仔细定义的参数。就像人工智能要探索不同的计时功能一样,这方面必须明确定义。

但是有了一个复杂的学习人工智能,我很想知道它会产生什么。

我知道有很多人类品质是计算机无法复制的,比如我们的判断、品味和偏见。但是我的想象力喜欢这样的想法:一个程序经过一天的思考后会吐出一个网站,让我看看它想出了什么,即使如此,我仍然经常认为它是垃圾;但也许每天一次,我可能会给它反馈并帮助它学习。

这种想法的另一个途径是提供一个高级描述,如“菜单式网站”或“图像工具”,它会生成足够深度的代码,作为代码完成模块,然后我可以在细节。但我想这可以设想为一种非智能的静态分层代码完成方案。

这个怎么样?

0 投票
3 回答
155 浏览

.net - 如何理解文本的静态部分是否已更改?(diff算法相关)

首先这是很难解决的问题,到目前为止我还没有想出一个很好的例子,但我希望这里有人能解决这个问题。我希望有解决这类问题的已知方法,或者一种晦涩难懂的算法。

设想:

  • 在我的应用程序中,我对同一个网页做了几个请求
  • 网页中有动态和随机的内容,例如(日期时间和当天的报价等,理论上可以是任何内容)
  • 此应用程序的响应有 2 种情况,我们称它们为“TRUE”和“FALSE”。例如,有时响应会返回“True Text”,有时会返回“False Text”。
  • 我的应用程序知道 3 个“TRUE”案例样本和 3 个“FALSE”案例样本,但这些也包括“时间”等随机内容。

挑战

  • 现在,当我的应用程序收到新响应时,我如何了解此响应是“TRUE”还是“FALSE”案例的示例?

我试过的

  • 逐行处理TRUE case的第一个样本,并根据字符的值生成一个整数数组
  • 对第二个 TRUE 样本做同样的事情
  • 对第三个 TRUE 样本做同样的事情
  • 分析这些存储的 TRUE 案例之间的差异并创建一个新数组
  • 现在,我知道哪些行是动态的(例如日期时间),现在我创建了一个新的最终 TRUE 案例数组,它只将静态行存储到最终的 TRUE 案例数组中。
  • 现在,当我得到一个新案例时,我创建了一个类似的数组,然后将其与之前存储的最终 TRUE 案例进行比较,如果匹配(过滤行除外),如果其他行发生大量更改(存在容差值),那么它是 TRUE 案例错误的。

该算法的局限性和弱点非常明显。虽然我在某些情况下取得了一些不错的结果,但它并没有一直按预期工作。

我目前的课程是这样的:

对不起,标题没有多大意义,我找不到描述它的好方法。

0 投票
5 回答
16538 浏览

artificial-intelligence - 那里有什么样的人工智能工作?

在我的计算机科学学年中,我爱上了人工智能的许多方面。从专家系统、神经网络到数据挖掘(分类)。我想知道,如果我要专业地转变这种学术热情,那里有哪些与人工智能相关的工作?

0 投票
7 回答
600 浏览

twitter - 有哪些方法可以让大量数据变得有趣?(即 Twitter、del.icio.us 等 API)

Twitter、谷歌、亚马逊、del.icio.us 等都为您提供大量数据供您使用,全部免费。通过 Project Gutenberg 等计划还可以获得大量文本数据。而这似乎只是冰山一角。

我一直想知道你怎么能用这些数据来取乐。我是 IT 一年级的学生,所以我对统计、机器学习、协同过滤等一无所知。Toby Segaran 的《编程集体智能》一书激起了我对这个领域的兴趣,现在我想深入了解一下你可以用数据做什么。我不知道从哪里开始。有任何想法吗?

我也一直在思考是否应该去买像《人工智能编程范式》这样的东西。穿越城市值得吗?

0 投票
9 回答
6245 浏览

language-agnostic - 强化学习的良好实现?

对于一个 ai 类项目,我需要实现一个强化学习算法,它可以击败一个简单的俄罗斯方块游戏。游戏是用 Java 编写的,我们有源代码。我知道强化学习理论的基础知识,但想知道 SO 社区中是否有人亲身体验过这类事情。

  1. 对于在俄罗斯方块游戏中实施强化学习,您推荐的阅读材料是什么?
  2. 有没有什么好的开源项目可以完成类似的事情,值得一试?

编辑:越具体越好,但欢迎使用有关该主题的一般资源。

跟进:

认为如果我发布后续内容会很好。

这是我为任何未来的学生提供的解决方案(代码和文章):)。

论文/代码

0 投票
2 回答
312 浏览

artificial-intelligence - 用尽可能少的“参数”表示双精度的 2D 地图

我正在使用一种称为NEAT的神经网络技术开发回合制游戏 AI 。我正在尝试训练一个可以在二维(X&Y 坐标)空间中移动的网络,给定存储在有效二维数组中的各种值。

我可以看到使用神经网络的两种策略:

  1. 对于网格中的每个“单元”,提供来自不同启发式的分数作为神经元的输入,并创建一个实际上是一个非常复杂的“评分”系统的 NN。将非游戏角色 (NPC) 移动到得分最高的位置。

  2. 为每个启发式度量创建一个压缩值(以某种方式压缩为尽可能少的位),并为每个度量提供一个输入神经元。

我对选项二很感兴趣,因为它提供了最少的计算量(游戏的运行时间很长),但是我很困惑我可以使用什么方法来创建两者的“小表示”版本-维度启发式值。我知道那里有诸如傅立叶变换之类的技术,但是我不知道这些是否适合我的问题。基本上,我正在寻找一种将 50x50 的双精度数组转换为一个或两个双精度值的方法。这两个双精度值可以进行有损压缩,我不需要能够取回原始值,我只需要一个合理的机制来将输入数据更改为一个小的占用空间。

这两种可能性的替代方法是根据与 NPC 的距离以某种方式编码“区域”(因此您可以获得“接近”单元格的实际值和“远”单元格的近似值)。我不确切知道我将如何连接它,但它至少消除了在游戏的每一轮评估每个单元的需要(考虑到我正在以每轮大约 1 秒的速度查看大约 500 万轮,任何简化我能想出会大有帮助)。

如果这没有多大意义,我深表歉意,这是一个相当困难的问题,困扰了我一段时间,我想不出一个简单的方法来描述它。

谢谢,

艾丹

编辑添加(并更改标题):

多亏了克里斯,我们完善了我正在寻找的东西。我正在寻找的是一种以尽可能少的参数逼近一条线的方法(我可以将 2D 地图转换为一条线)。我之前使用三次样条进行插值,但是对于在 0.0 和 1.0 之间变化很大的数据集,我需要一些更可行的东西。我想我正在寻找的是地图的“散列”。

我知道有诸如三次样条之类的技术,我可以从中计算出一些“关键点”,这些值是我正在寻找的合理类比。我需要一种方法来获取 2500 个值并提出这些值的小表示,我可以将其用于神经网络。我认为可以训练NN来推断这些表示的真实含义,或者至少可以确定表示与现实世界之间的某种相关性,因此它不一定需要是可逆函数,但我不认为许多单向函数(例如 MD5、SHA)实际上也会非常有帮助......

0 投票
3 回答
2626 浏览

c - 机器人寻路算法

我有一个使用光学鼠标作为位置跟踪的机器人。基本上,随着机器人的移动,它能够使用鼠标跟踪 X 和 Y 方向的变化。鼠标还跟踪您正在移动的方向 - 即负 X 或正 X。这些值被汇总到单独的 X 和 Y 寄存器中。

现在,机器人在原地旋转并仅向前移动。因此,理想情况下,机器人的运动是在特定角度以直线运动(尽管如果您偏离方向,鼠标跟踪可以拾取偏差)。机器人的一组特定运动如下:
A:旋转 45 度,移动 3 英寸
B:旋转 90 度,移动 10 英寸
C:旋转 -110 度,移动 5 英寸
D:旋转 10 度,移动 1 英寸
但是每次鼠标 X 和鼠标 Y 寄存器都会给出您在每个方向上移动的实际距离。

现在,如果我只想重复从 A 到 D 的运动集,我该如何使用我已经收集的信息来做到这一点。我知道我基本上可以总结我已经输入的所有角度和距离,但是如果每个移动命令中存在很大的错误,这将被证明是不准确的。如何使用鼠标中的原始信息?一位朋友提供了一个想法,即我可以连续地对鼠标值进行正弦和余弦运算并计算最终向量,但我不确定这将如何工作。

问题是鼠标只给出相对读数,因此旋转或向后移动,您可能会擦除信息。所以,是的,我想知道的是如何实现该算法,以便它可以持续跟踪变化,如果您最初以之字形移动到达那里,它可以为您提供最短路径。

0 投票
5 回答
670 浏览

language-agnostic - 如何表示遗传算法的路径?

我想使用 GA 来确定从 A 到 B 的最佳路径,满足某些条件(长度、匝数等)

路径的示例是:上 4、左 8、下 3、右 3、下 1、左 10、上 4、左 1、上 3

问题是,我真的不知道一种很好的方式来表示这样的信息,以便在 GA 中使用,特别是因为路径的长度是可变的。

有谁知道如何做这样的事情?

0 投票
9 回答
37494 浏览

artificial-intelligence - 如何为国际象棋编写神经网络?

我想编写一个国际象棋引擎,学习如何做出好的动作并战胜其他玩家。我已经编写了棋盘的表示和输出所有可能动作的函数。所以我只需要一个评估函数来说明董事会的给定情况有多好。因此,我想使用一个人工神经网络来评估给定的位置。输出应该是一个数值。该值越高,白棋玩家的位置就越好。

我的方法是建立一个由 385 个神经元组成的网络:棋盘上有 6 个独特的棋子和 64 个区域。因此,对于每个字段,我们需要 6 个神经元(每块 1 个)。如果有白棋,则输入值为 1。如果有黑棋,则值为 -1。如果该字段上没有这种类型的块,则值为 0。除此之外,还应该有 1 个神经元供玩家移动。如果轮到白方,则输入值为1,如果轮到黑方,则输入值为-1。

我认为神经网络的配置非常好。但是缺少主要部分:如何将这个神经网络实现为编码语言(例如 Delphi)?我认为每个神经元的权重在开始时应该是相同的。然后根据比赛结果调整权重。但是怎么做?我想我应该让 2 个电脑玩家(都使用我的引擎)互相对抗。如果白方赢了,黑方会得到它的权重不好的反馈。

因此,如果您能帮助我将神经网络实现为编码语言(最好是 Delphi,否则是伪代码),那就太好了。提前致谢!