如何使用人工智能算法使程序学习并分配适当的权重值?

我正在编写一个程序,我想知道如何使用某种人工智能算法,使程序能够学习并为我的字段分配适当的权重值。

例如,我有字段a、b、c、d和e。这些字段的权重各不相同,因为字段a比d更有价值。我想知道如何实现这一点,以便我可以标准化这些值,并使用这些值的总和进行比较。

示例:

Weight of a = 1Weight of b = 2Weight of c = 3Weight of d = 4Weight of e = 5

对于总和,将每个字段的值乘以其分配的权重:

Result = (value of a) * 1 + (value of b) * 2 + (value of c) * 3 + (value of d) * 4 + (value of e) * 5

我希望输入一些训练数据,并训练我的程序学习和比较每个对象所拥有的a、b、c、d、e值,以便它可以为每个字段分配权重。

编辑:我只是在寻找一种方法来实现这一点,无论是使用神经网络,还是其他方法来学习并为这些字段分配权重。


回答:

实现这一点的最佳方式在很大程度上取决于你正在编写的程序类型。你如何评估result的答案有多好?

如果result可以以分类的方式被判定为正确或错误,那么神经网络将是一个很好的选择。你可以使用两层拓扑结构(即所有输入节点都连接到每个输出节点,中间没有层),并让每个输入节点对应你的一个字段(a、b、c等)。然后,你可以使用反向传播来训练网络,使得每组字段值映射到正确的类别。你最终得到的边缘权重将是与每个字段关联的权重。

然而,如果result可以以某种连续的方式被判定为更准确或不太准确,遗传算法可能是更好的解决方案。如果你将result与某个理想值进行比较,或者你在某种具有可评估结果的函数中使用这些权重(如游戏),或者其他类似情况,都可能是这种情况。你使用的适应度函数将取决于你的具体情况(对于上述示例,你可能使用接近理想值的程度,或者使用这些值玩游戏时的胜负比)。你可以以多种方式格式化候选解决方案:

  • 一种选择是使用一系列表示每个权重的二进制位串。突变可以翻转任何位,交叉可以在字符串的任何点发生(或者你可以只允许它在数字之间发生)
  • 如果你想允许浮点值,你可能最好使用一个系统,其中每个候选解决方案是一组权重。突变可以从给定的权重中加减,交叉可以在列表内的任何点发生。

如果你能提供更多关于你的程序具体要实现什么的信息,我可以尝试提供更具体的建议。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注