是否有成功学习奇偶校验功能的机器学习算法?

时间:2012-02-28 15:34:50

标签: machine-learning

parity function是来自n位向量的函数,如果和为奇数则输出1,否则输出0。这可以被视为分类任务,其中n输入是特征。

是否有任何能够学习此功能的机器学习算法?显然随机决策森林不会成功,因为任何严格的特征子集都没有预测能力。此外,我相信没有固定深度的神经网络会成功,因为计算奇偶校验函数不在复杂性类AC0中。

3 个答案:

答案 0 :(得分:2)

多项式SVM可以做到这一点。 将零编码为1,将1编码为-1。 对于n个变量(位),需要一个n阶的多项式内核。 在计算内核时,它还隐式计算值x1 * x2 * ... * xn(其中xi是第i个输入变量)。 如果结果为-1,则您具有奇数个,否则您将具有偶数个。

如果我没弄错的话,神经网络也应该能够计算它。据我记忆,具有2个隐藏层和sigmoid单元的神经网络能够学习任意函数。

答案 1 :(得分:0)

高斯过程分类怎么样?您可以通过n维输入向量和1维奇偶校验位输出来训练模型。然后,对于任何测试输入,您可以要求预测。你可以查看这本在线书籍 http://www.gaussianprocess.org/gpml/chapters/
第3章解决了分类问题。

答案 2 :(得分:-1)

神经网络可以用单个隐藏层表示和学习奇偶校验功能,而隐藏层具有与输入相同数量的神经元。奇偶校验功能不在AC0中这一事实是关于布尔门电路的事实,但是多层感知器(通常使用)可以具有实值权重,这会带来很大的不同。

下面是一个显式解决方案的示例,假设有n个输入,n个隐藏单元和一个符号激活函数(例如在[1]中描述):

  • 将第一层中的所有权重设置为1。这意味着在添加偏差之前,所有隐藏单元的预激活均相同,并且等于输入中1的数量。
  • 将第一个隐藏单元的偏差设置为-0.5,将第二个隐藏单元的阈值设置为-1.5,将第三个隐藏单元的阈值设置为-2.5,依此类推。这意味着如果输入中没有-加上偏差之前的激活为0,对于所有隐藏单元,加上偏差之后的预激活为负,并且sign函数将为所有隐藏单元返回0。如果输入中只有一个1,则只有第一个隐藏单元的预激活为正,因此将有一个隐藏单元将向输出发送1。通常,如果输入中有k个1,则第一个k隐藏单元将向输出发送1,其余的为零。
  • 设置将隐藏的单位连接到输出+ 1,-1,+ 1,-1等的权重。这意味着如果输入中不存在1,则输出将为0。如果存在单个1在输入中,输出将为+1。如果输入中有两个1,则输出将再次为+ 1-1 = 0,依此类推。

这解决了奇偶校验问题。

您正在询问有关可以学习该功能的机器学习算法。根据[2]中的“奇偶校验”部分,答案是至少对于小型n,在单层神经网络上进行反向传播可以学习该功能,实际上,它实际上是在学习一个网络。与上述非常相似。

[1]佛朗哥,莱昂纳多和塞尔吉奥·坎纳斯。 “模块化网络的通用属性:实现奇偶校验功能。”神经网络上的IEEE事务12.6(2001):1306-1313。

[2] Rumelhart,David E.,Geoffrey E. Hinton和Ronald J. Williams。通过错误传播学习内部表示。编号ICS-8506。加州大学圣地亚哥分校拉霍亚认知科学研究所,1985年。