训练神经网络以模拟哈希函数

数据挖掘 神经网络
2022-02-16 00:30:13

散列函数接受一个输入,执行一组复杂的操作,然后产生一个输出。出于我的目的,对于任何给定的输入,函数的输出总是相同的。

我记得很久很久以前读过,神经网络在理论上(假设无限大的网络)可以复制任何算法 - 因此理论上的神经网络可以复制哈希函数是有道理的。话虽如此,我搜索了这样一个神经网络(只用谷歌),但我找不到像我描述的那样纯粹的东西(可能是因为散列输入已经很受欢迎)。

如果我们将范围限制为仅查看加密哈希并假设我们可以使用输入/输出对进行训练,那么为此训练网络是否合理?

1个回答

我记得很久很久以前读过,神经网络在理论上(假设无限大的网络)可以复制任何算法 - 因此理论上的神经网络可以复制哈希函数是有道理的。

这是通用逼近定理,它确实适用于学习哈希函数。

然而,该定理没有说明泛化,这是学习任何伪随机函数时的一个主要问题。

任何具有以下属性的散列函数:

  • 输出很难或不可能反转回任何原始输入,

  • 输出对输入高度敏感,因此输入中的单个位更改将(伪随机)更改输出中的所有位。

将不可能使用统计技术进行近似和概括。密码散列算法将这些作为设计目标,并试图满足随机预言机的理想

如果你可以训练一个神经网络在看不见的输入上泛化超过 50% 的准确率(逐位,并在适当大的测试数据集上测量以确定重要性),这将表明散列被破坏以用于加密。即使对于已知的损坏哈希(例如 MD5),您也可能无法实现此目的。

如果我们将范围限制为仅查看加密哈希并假设我们可以使用输入/输出对进行训练,那么为此训练网络是否合理?

您不太可能为此创建任何有用的可重用模型。对于练习机器学习来说,它可能仍然是一个值得学习的练习,主要好处是很容易将训练和测试数据集放在一起。您对无法找到任何东西的期望可以用作统计知识的测试和寻找错误。如果你得到积极的结果,你的第一个怀疑是检查你的代码和假设。但是,在其他学习场景中,您对制作有用的模型有更高的期望,而 IMO 会更有回报。