我正在学习神经网络,它们是我遇到过的最重要的东西。
我的问题是:如何计算具有任意拓扑的神经网络的输出?是否有一些算法或经验法则可供使用?
例如,我知道前馈网络具有直接的矩阵表示,但是具有环路或输出连接到输入的网络呢?那些是否有矩阵形式?或者是产生输出以进行某种图遍历的唯一方法吗?
示例:
答案 0 :(得分:3)
让我们看看你的神经网络结构图片,
附在你的问题上。
人工神经网络连接不像它看起来那样是常见的有向图。
此处隐含了其他限制,例如按层分布的不同类型的节点
有输入节点,隐藏节点和输出节点。
简单来说,输入节点(神经元值)被认为是只读的,并且无法进行修改。这就是为什么节点9和4之间的连接没有意义,因为输入4本身,因为它的信号不会进一步传播。
对于节点8和11之间的连接也是如此。
您可以看一下here,神秘网络的基础知识以简单的方式解释。
谈论带有循环的网络,我们假设经常性的网络。
假设我们在下面的图片中显示recursive neural network。
我们如何计算输出?
我们可以尝试应用与前馈网络相同的计算规则。
,
,此处 f - 激活功能
但是,等一下,我们不需要知道
和
值?
从技术上讲,这不是递归。
您可以将其读作“节点的下一个值取决于节点的当前值”。
所描绘的网络的动态可以通过“展开”(如下所示)来可视化。
因此,可以将循环网络视为深度网络,每个时间步长具有单个层,并且跨时间步长共享权重。在这里,我们将步骤0隐藏层视为步骤1的输入
回到我们的案例,第一步计算的公式应该看起来像。
同样,第二步可以计算为
。
为了简化,和的值可以通过零初始化(尽管实际上初始状态被训练为模型参数)。展开用于training(从技术上讲,我们只是用一系列前馈隐藏层替换循环网络。)
总而言之,经常性网络仍然具有矩阵表示和操作,尽管它看起来并不明显和直截了当。