因此,我查看了一些关于神经网络的文献并阅读了一些章节,但是学习曲线非常陡峭,以至于我什至在开始设计神经网络来解决我的问题时都遇到了麻烦。
据我了解,应该根据要解决的问题的性质来设计架构(或神经元及其连接的排列)。根据问题的性质设置的其他参数包括损失指数(如何计算误差以及是否应该有正则化项)、是否应该有任何缩放/取消缩放、边界或条件,以及训练算法(如准牛顿法)。
在给定大量输入和输出的情况下,我感兴趣的特定类型的问题是使用神经网络来计算输入和输出整数(而不是连续值)的未知函数(具有未知复杂性)。
示例函数采用 4 字节输入并返回 2 字节输出。这是通过首先获取输入的前 2 个字节并将它们与最后 2 个字节进行异或运算来完成的,以产生中间结果。然后将这两个字节的值与左移 5 位的自身副本进行异或运算。然后将该结果与右移 7 位的自身副本进行异或运算。然后将该结果与自身的副本向左移 2 位进行异或运算,该值由函数输出,给出最终的 2 字节结果。注意:多个唯一输入可以产生相同的输出。
因此,给定大量未知函数的输入和输出,神经网络应该优化自身以在给定新输入的情况下重现该函数。我不确定如何开始设计这个神经网络,也不确定通读神经网络教科书是最佳的入门方式。我正在使用一个用于设计神经网络的软件库,我可以简单地设置网络架构和上述参数。为了开始解决我的问题,我需要了解多少理论?我应该从哪里开始学习如何设计这个神经网络?
编辑:所有这一切的主要目标是在函数未知的情况下,在给定新输入的情况下,使用现有工具简化生成输出(在上面的示例中为 2 字节代码)。神经网络似乎与我需要的通过反复试验来寻找功能的特征相匹配。该工具应该能够尝试各种可能增加复杂性的功能,以模拟实际未知功能的工作。