免责声明:我不是数学天才,也没有编写神经网络的经验。所以,请原谅我在这里说的任何愚蠢的事情。 ;)
我一直都在阅读有关用于机器学习的神经网络,但在尝试编写简单的虚拟机时,我开始怀疑它们是否可以以其他方式应用。
具体来说,虚拟机可以创建为神经网络吗?如果是这样,它将如何工作(如果必须,可以随意使用抽象描述)?
我听说过Joycean机器,但除了非常模糊的解释之外,我找不到任何其他信息。
编辑:我在这里寻找的是对基于神经网络的VM究竟如何解释汇编的解释。如何处理投入等?每个输入都是一个内存地址吗?让我们头脑风暴!
答案 0 :(得分:2)
你真的让我的一天好友......
由于已经训练过的神经网络与常规状态机没有太大区别,因此没有必要为确定性指令集编写神经网络VM。
使用多个指令集或未知集训练这样的VM可能会很有趣。但是,我怀疑执行这样的训练是否切实可行,甚至一个%99正确的解释器也可用于传统的字节码。
我能想到的神经网络VM的唯一用途是执行一个包含模糊逻辑结构或AI算法启发式的程序。
一些愚蠢的堆栈机器示例来展示这个想法:
push [x1]
push [y1] ;start coord
push [x2]
push [y2] ;end coord
pushmap [map] ;some struct
stepastar ;push the next step of A* heuristics to accumulator and update the map
pop ;do sth with is and pop
stepastar ;next step again
... ;stack top is a map
reward ;we liked the coordinate. reinforce the heuristic
stepastar
... ;stack top is a map
punish ;we didn't like the next coordinate. try something different
这里没有明确的启发式方法。假设我们将所有状态保存在* map中,包括启发式算法。
你看它看起来很傻而且不完全是上下文敏感的,但是如果没有在线学习,那么神经网络是没有价值的。
答案 1 :(得分:1)
当然。毫无疑问,网络相当复杂。
大部分字节码/操作码的解析都是神经网络擅长的模式匹配。
答案 2 :(得分:0)
你当然可以用神经网络做到这一点 - 我可以很容易地看到为给定的字节码学习正确的状态转换。
输入可能是这样的:
输出可能类似于:
但是 - 我不确定你为什么要首先这样做。与直接执行字节码相比,神经网络的效率要低得多(并且除非你训练得足够好,否则可能会出错)。你可能还需要编写一个准确的字节码评估器来创建足够的训练数据....
另外,根据我的经验,神经网络往往擅长模式识别,但一旦超出一定比例(即超过几位),就会非常难以学习逻辑运算(如二进制加法或XOR)。因此,根据指令集的复杂程度,网络可能需要花费大量时间进行训练。