感知器训练算法的输入可以有不同的类型吗?

Posted

技术标签:

【中文标题】感知器训练算法的输入可以有不同的类型吗?【英文标题】:Could the inputs of the Perceptron training algorithm be had different types? 【发布时间】:2017-02-14 23:22:47 【问题描述】:

必须让 Perceptron 训练算法中的输入类型相同?

也就是说,一个输入可以是布尔类型,而另一个输入可以是整数类型吗?

【问题讨论】:

【参考方案1】:

它们不能是任意的。看计算步骤和终止条件(收敛准则):

Update:
y[j](t) = f[w(t) ⋅ x[j] ] 
        = f[w[0](t) x[j,0] + w[1](t) x[j,1] + ⋯ + w[n](t) x[j,n] ]

Convergence:
error = sum(abs(d[j] - y[j](t) )for all j) 
error / j_max < epsilon

这要求您至少有一个部分有序的数据类型,其中定义了与您的权重类型的点积,(通常与权重类型相乘并在产品类型上加法),用于误差计算的减法,以及一些有效的收敛值epsilon

我强烈建议您坚持使用实数(浮动或双倍)权重。如果您对操作很正式,您的输入可能是另一种类型,但在实践中有点棘手:您可以在输入和权重向量上定义该点积吗?对于字符串输入,什么是

"hello" ⋅ [0.66, 0.21, -1.13]

更一般地说,您如何在感知器中存储评估向量,然后测量它与输入的匹配程度?在反向传播中如何调整向量?

如果你能管理这些,你就可以处理你的输入类型。

就个人而言,我建议您坚持第一个建议:如果可以,将您的输入映射到数字。

【讨论】:

我完全同意您的建议。大多数东西都可以嵌入——最好使用这些嵌入。 对。我们已经在数字上拥有了这些属性。但是,拼写更正确实适用于字符串相似性。训练这样的野兽是可能的。【参考方案2】:

这取决于您用于构建它的库。一般来说,所有的神经网络都只有一种类型的输入——小数。从理论的角度来看,没有其他任何支持。所有库在后台所做的是将任何其他数据类型转换为十进制输入。字符串通过字典、布尔值进行转换 - 仅转换为 0 和 1(或 -1 和 1)等。

【讨论】:

以上是关于感知器训练算法的输入可以有不同的类型吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像转换为感知器算法的输入向量?

感知器可以用来检测手写数字吗?

阈值感知器可以表示多少个不同的布尔函数?

机器学习——感知器算法及python实现

感知器算法

BP神经网络和感知器有啥区别?