标签: artificial-intelligence

A*启发式,过高估计/低估?

我对高估/低估这些术语感到困惑.我完全了解A*算法是如何工作的,但我不确定具有高估或低估的启发式算法的效果.

当你采用直接鸟瞰线的平方时,是否会被高估?为什么它会使算法不正确?所有节点都使用相同的启发式方法.

当你采用直接鸟瞰线的平方根时会被低估吗?为什么算法仍然正确?

我找不到一篇解释得很好而且清晰的文章,所以我希望这里的人有一个很好的描述.

algorithm search artificial-intelligence graph a-star

18
推荐指数
4
解决办法
2万
查看次数

使用人工智能(AI)来预测股票价格

给出一组非常类似于Motley Fool CAPS系统的数据,其中个人用户输入各种股票的买入和卖出建议.我想这样做是显示每个建议,我想一些如何率(1-5)是否是很好的预测<5>(即相关系数= 1)未来股价(或EPS或其他)的或者是一个可怕的预测者(即相关系数= -1)或介于两者之间的某个地方.

每个推荐都标记给特定用户,以便可以随时跟踪.我还可以根据sp500价格等因素跟踪市场方向(看涨/看跌).我认为在模型中有意义的组件将是:

user
direction (long/short)
market direction
sector of stock
Run Code Online (Sandbox Code Playgroud)

我们的想法是,一些用户在牛市中比熊市更好(反之亦然),有些用户在空头方面比在多头方面更好 - 然后是上述组合.我可以自动标记市场方向和行业(基于当时的市场和推荐的股权).

我的想法是,我可以提供一系列屏幕,并允许我通过显示特定时间段内的可用数据绝对值,市场和扇区输出性能来对每个单独的推荐进行排名.我会按照详细的清单对股票进行排名,以便排名尽可能客观.我的假设是单个用户的权利不超过57% - 但谁知道.

我可以加载系统并说"让我们将推荐排名为90天前的股票价值预测"; 这将代表一组非常明确的排名.

现在这里是关键 - 我想创建某种机器学习算法,可以在一系列时间内识别模式,以便当推荐流入应用程序时,我们保持该库存的排名(即类似于相关系数).该建议的可能性(除了过去的一系列建议)将影响价格.

现在这里是超级难题.我从未参加过AI课程/阅读AI书籍/从不介意机器学习.所以我想寻找指导 - 我可以适应的类似系统的样本或描述.寻找信息或任何一般帮助的地方.或者甚至推动我朝着正确的方向开始......

我的希望是与F#来实现这一点,并能够给我的朋友有一个新的技能在F#设置与机器学习的实现和潜在的东西(应用程序/源)我可以包括在高科技投资组合或博客空间留下深刻的印象;

提前感谢您的任何建议.

f# finance artificial-intelligence classification machine-learning

18
推荐指数
3
解决办法
1万
查看次数

带有传送器的网格上的*可接受的启发式算法?

假设你有一个2D网格的单元格,其中一些是用墙填充的.角色可以从一个正方形到任何与其一步水平或垂直的正方形,但不能穿过墙壁.

给定起始位置和结束位置,我们可以通过使用具有可允许启发式的A*算法找到从起始位置到结束位置的最短路径.在目前的设置中,曼哈顿距离是可以接受的,因为它永远不会高估到目的地的距离.

现在假设除了墙壁之外,世界上还有成对的传送器.踏上传送器会立即将角色传送到链接的传送器.传送器的存在打破了上面给出的允许启发式,因为通过使用传送器来减少距离,可能比通过最佳曼哈顿距离步行更快地到达目的地.例如,考虑这个线性世界,其中传送器标记为T,开始位置标记为S,结束位置标记为E:

T . S . . . . . . . . . . . . . E . T
Run Code Online (Sandbox Code Playgroud)

在这里,最好的路线是步行到左边的传送器,然后向左走两步.

我的问题是:在带有传送器的网格世界中,A*的一个很好的可接受的启发式算法是什么?

谢谢!

algorithm artificial-intelligence heuristics a-star path-finding

18
推荐指数
2
解决办法
2650
查看次数

线性问题和非线性问题之间的区别?Dot-Product和Kernel技巧的本质

内核技巧将非线性问题映射为线性问题.

我的问题是:
1.线性问题和非线性问题的主要区别是什么?这两类问题背后的直觉是什么?内核技巧如何帮助在非线性问题上使用线性分类器?
2.为什么点数产品在这两种情况下如此重要?

谢谢.

language-agnostic algorithm math artificial-intelligence machine-learning

17
推荐指数
2
解决办法
1万
查看次数

棋盘游戏"Go"NP是否完整?

有很多国际象棋AI,显然有些足以击败一些世界上最伟大的球员.

我听说很多尝试都是为棋盘游戏Go编写成功的AI ,但到目前为止,没有人想到超出一般的业余水平.

可能是在Go中任何给定时间以数学方式计算最优运动的任务是NP完全问题吗?

artificial-intelligence np-complete baduk

17
推荐指数
1
解决办法
4322
查看次数

如何衡量用Java编写的代码的速度?(AI算法)

如何衡量用Java编写的代码的速度?

我计划开发软件,使用所有目前可用的AI和ML算法解决数独,并将时间与简单的蛮力方法进行比较.我需要测量每种算法的时间,我想问一下最好的方法是什么?非常重要的是,无论CPU电源/内存如何,程序都必须适用于任何机器.

谢谢.

java benchmarking artificial-intelligence machine-learning

17
推荐指数
3
解决办法
5117
查看次数

有没有开源的分层时态内存库?

我可能有兴趣使用分层时间记忆模型来解决我正在研究的研究问题.

有没有任何开源库?虽然C++,Java或Haskell是首选,但我对语言非常开放.如果是的话,有没有人对他们有任何经验?

open-source artificial-intelligence nupic hierarchical-temporal-memory

17
推荐指数
1
解决办法
6151
查看次数

聚类树结构化数据

假设我们以半结构化格式给出数据作为树.例如,树可以形成为有效的XML文档或有效的JSON文档.你能想象它是一个口齿不清状S-表达或(G)的代数数据类型在Haskell或者Ocaml.

我们在树结构中给出了大量的"文档".我们的目标是聚类相似的文档.通过聚类,我们指的是将文档划分为j个组的方法,使得每个元素中的元素看起来彼此相似.

我确信有些论文描述了方法,但由于我在AI/Clustering/MachineLearning领域并不为人所知,我想问一下谁在寻找什么以及在哪里挖掘.

我目前的做法是这样的:

  • 我想将每个文档转换为为K-means聚类设置的N维向量.
  • 为此,我递归地遍历文档树,并为每个级别计算一个向量.如果我在树顶点,我会重复所有的subvertices,然后将它们的向量相加.此外,每当我再次出现时,都会应用一个功率因数,因此它越往往越不重要.文档最终向量是树的根.
  • 根据树叶上的数据,我应用一个将数据转换为向量的函数.

但肯定有更好的方法.我的方法的一个弱点是它只会相似 - 聚类具有顶部结构的树木彼此非常相似.如果相似性存在,但发生在树的更远处,那么我的方法可能不会很好地工作.

我想也有全文搜索的解决方案,但我确实想利用数据中存在的半结构.

距离功能

如建议的那样,需要在文档之间定义距离函数.如果没有此功能,我们就无法应用聚类算法.

实际上,问题可能在于该距离函数及其示例.我希望文档中根目录附近的元素相同,以便彼此靠近聚类.我们去的树越往下越重要.

采取一步退一步的观点:

我想从程序中聚集堆栈跟踪.这些是格式良好的树结构,其中靠近根的函数是失败的内部函数.我需要在堆栈跟踪之间有一个合适的距离函数,这可能是因为代码中发生了同样的事件.

language-agnostic algorithm artificial-intelligence cluster-analysis

17
推荐指数
1
解决办法
2125
查看次数

对神经网络中反向传播算法的理解

我无法理解反向传播算法.我阅读了很多并搜索了很多,但我无法理解为什么我的神经网络不起作用.我想确认我正在以正确的方式做所有事情.

这里是我的神经网络,当它被初始化,当输入的第一线[1,1]和输出[0]设置(因为你可以看到,我试图做XOR神经网络):

我的神经网络

我有3层:输入,隐藏和输出.第一层(输入)和隐藏层包含2个神经元,其中每个神经元有2个突触.最后一层(输出)也包含一个神经元,也有2个突触.

突触包含一个权重,它是前一个delta(在开头,它是0).连接到突触的输出可以与与synapse关联的sourceNeuron或者在input数组中找到,如果没有sourceNeuron(如在输入层中).

Layer.java类包含一个神经元列表.在我的NeuralNetwork.java中,我初始化神经网络,然后在我的训练集中循环.在每次迭代中,我替换输入和输出值,并调用对当前组在我的BP算法火车和(现在的1000倍历元)的算法运行一定数目的时间.

我使用的激活功能是sigmoid.

训练集和验证集是(input1,input2,output):

1,1,0
0,1,1
1,0,1
0,0,0
Run Code Online (Sandbox Code Playgroud)

这是我的Neuron.java实现:

public class Neuron {

    private IActivation activation;
    private ArrayList<Synapse> synapses; // Inputs
    private double output; // Output
    private double errorToPropagate;

    public Neuron(IActivation activation) {
        this.activation = activation;
        this.synapses = new ArrayList<Synapse>();
        this.output = 0;
        this.errorToPropagate = 0;
    }

    public void updateOutput(double[] inputs) {
        double sumWeights = this.calculateSumWeights(inputs);

        this.output = this.activation.activate(sumWeights);
    }

    public double calculateSumWeights(double[] inputs) {
        double sumWeights = 0;

        int …
Run Code Online (Sandbox Code Playgroud)

java algorithm artificial-intelligence backpropagation neural-network

17
推荐指数
1
解决办法
3437
查看次数

GraphQL和SPARQL有什么区别?

我现在正在对语义Web和代表个人与组织之间关系的复杂数据模型进行大量研究.我知道一些语义本体,虽然如果不制作图表,我从未理解它的用途.

我在大学维基上看到,质疑本体的语言是SPARQL(告诉我,如果我错了).

但最近我看到一家创建了语义本体的公司把它放在GraphQL的形式中,我不知道(https://diffuseur.datatourisme.gouv.fr/graphql/voyager/).

在我看来,语义本体是为了更好地查找信息,例如制作聊天机器人(这是我想要做的),但是在这里他们将语义本体转换为API,是不是?要创建GraphQL,我应该首先构建一个语义本体吗?

你能不能向我解释一下这一切之间的区别,老实说这对我来说有点模糊.

semantic-web artificial-intelligence ontology sparql graphql

17
推荐指数
4
解决办法
4208
查看次数