带外部存储器的神经网络与神经图灵机详解
1. 基于策略网络的学习设置
在某些学习场景中,其设置与Atari视频游戏设置相似。可以使用策略网络,将当前的四个数字序列作为神经网络的输入,输出则是6种可能动作各自的概率。例如,在一个排序游戏里,动作可能是交换序列中不同位置的数字。
在策略梯度方法中,若动作 $a = SWAP(i, j)$ 的概率为 $\pi(a)$(由神经网络的softmax函数输出),其优势为 $F(a)$,则可设置目标函数 $J_a$,它是动作 $a$ 的期望优势。该优势关于策略网络参数的梯度为:
$\nabla J_a = F(a) \cdot \nabla \log(\pi(a))$
此梯度会在各个滚动操作的小批量动作上累加,用于更新神经网络的权重。强化学习有助于为从示例中学习的算法实现策略。
2. 用内存操作实现交换
上述视频游戏也可通过神经网络实现,允许的操作是内存读写,目标是用最少的内存读写操作对序列进行排序。
以下是实现交换操作的步骤:
1. 将序列的状态保存在外部内存中,并预留额外空间存储交换所需的临时变量。
2. 使用循环神经网络将状态从一个时间戳复制到下一个时间戳。
3. 对于操作 $SWAP(i, j)$:
- 从内存中读取位置 $i$ 和 $j$ 的值,并存储到临时寄存器中。
- 将寄存器 $i$ 的值写入内存中的位置 $j$。
- 将寄存器 $j$ 的值写入内存中的位置 $i$。
通过训练一个“控制器”循环网络,决定从哪些内存位置读取和写入,就可以实现排序策略。内存可用性越高,架构的能力和复杂度就越高。内存较少时,策略网络可能只能学习到使用交换的简单 $O(n^2)$ 算法;而内存较多时,策略网络可以利用内存读写合成更多操作,可能学习到更快的排序算法。
3. 神经图灵机概述
传统神经网络的一个长期弱点是无法清晰地将内部变量(即隐藏状态)与网络内部的计算分离,导致状态短暂。而神经图灵机(Neural Turing Machine)或可微神经计算机,具有外部存储器,并能以可控方式读写不同位置,这为模拟现代计算机上可实现的通用算法提供了途径。
神经图灵机的核心是一个控制器,通常使用循环神经网络实现。它在每个时间步接收来自环境的输入,并向环境输出结果,同时通过读写头对外部内存进行读写操作。外部内存被构建为一个 $N \times m$ 的矩阵,其中有 $N$ 个内存单元,每个单元长度为 $m$。在第 $t$ 个时间戳,第 $i$ 行的 $m$ 维向量表示为 $M^t(i)$。
读写头会输出一个特殊的权重 $w_t(i) \in (0, 1)$,用于控制对每个输出位置的读写程度。读取时,读取头输出的权重会对从第 $i$ 个内存位置读取的内容进行缩放,并将不同 $i$ 值的加权读取结果相加。写入时,写入头的权重定义类似。权重使用时间戳 $t$ 作为下标,每个时间戳会发出一组独立的权重。
读取操作可表示为:
$r_t = \sum_{i = 1}^{N} w_t(i)M^t(i)$
且权重满足:
$\sum_{i = 1}^{N} w_t(i) = 1$
写入操作基于先擦除部分内存再添加内容的原则。在第 $i$ 个时间戳,写入头会发出一个加权向量 $w_t(i)$ 以及长度为 $m$ 的擦除向量 $e_t$ 和添加向量 $a_t$。更新单元的过程如下:
- 擦除操作:
$M’^t(i) \Leftarrow M^{t - 1}(i) \odot (1 - w_t(i)e_t(i))$
- 添加操作:
$M^t(i) = M’^t(i) + w_t(i)a_t$
若有多个写入头,加法操作的顺序无关紧要,但所有擦除操作必须在所有加法操作之前完成,以确保结果的一致性。
4. 权重作为寻址机制
神经图灵机的权重可看作一种寻址机制,寻址方式有基于内容和基于位置两种。
4.1 基于内容的寻址
使用长度为 $m$ 的向量 $v_t$(关键向量),根据其与 $M^t(i)$ 的点积相似度对位置进行加权。权重计算方式如下:
$w^c_t(i) = \frac{\exp(\cosine(v_t, M^t(i)))}{\sum_{j = 1}^{N} \exp(\cosine(v_t \cdot M^t(j)))}$
还可使用温度参数 $\beta_t$ 调整寻址的锐度:
$w^c_t(i) = \frac{\exp(\beta_t \cosine(v_t, M^t(i)))}{\sum_{j = 1}^{N} \exp(\beta_t \cosine(v_t \cdot M^t(j)))}$
增大 $\beta_t$ 使寻址更接近硬寻址,减小 $\beta_t$ 则类似软寻址。若仅使用基于内容的寻址,可令 $w_t(i) = w^c_t(i)$。纯基于内容的寻址几乎类似于随机访问。
4.2 基于位置的寻址
基于位置的寻址使用当前迭代中的内容权重 $w^c_t(i)$ 和上一次迭代的最终权重 $w_{t - 1}(i)$ 作为起点,具体步骤如下:
1.
插值
:使用控制器输出的单个插值权重 $g_t \in (0, 1)$,将上一次迭代的向量与当前迭代创建的内容权重 $w^c_t(i)$ 相结合:
$w^g_t(i) = g_t \cdot w^c_t(i) + (1 - g_t) \cdot w_{t - 1}(i)$
若 $g_t$ 为 0,则不使用内容权重。
2.
移位
:执行旋转移位操作,使用归一化的整数移位向量。例如,若 $s_t[-1] = 0.2$,$s_t[0] = 0.5$,$s_t[1] = 0.3$,则权重应分别以 0.2 和 0.3 的门控权重向左和向右移动。移位后的向量 $w^s_t(i)$ 定义为:
$w^s_t(i) = \sum_{i = 1}^{N} w^g_t(i) \cdot s_t[i - j]$
其中,$s_t[i - j]$ 的索引结合模函数调整到定义的整数范围内。
3.
锐化
:使用参数 $\gamma_t \geq 1$ 对当前权重进行锐化,使权重更倾向于 0 或 1,同时不改变其顺序:
$w_t(i) = \frac{[w^s_t(i)]^{\gamma_t}}{\sum_{j = 1}^{N} [w^s_t(j)]^{\gamma_t}}$
$\gamma_t$ 的作用类似于基于内容的权重锐化中的温度参数 $\beta_t$。
以下是基于位置寻址的流程图:
graph LR
A[Content Weights] --> B[Interpolation]
B --> C[Shift]
C --> D[Sharpen]
5. 控制器架构选择
控制器的神经网络架构选择是一个重要的设计决策。自然的选择是使用循环神经网络,因为它有时间状态的概念。使用LSTM还能为神经图灵机的外部内存提供额外的内部内存。不过,一旦有了外部内存的概念,使用循环网络并非绝对必要,因为内存可以捕捉状态的概念,通过在连续时间戳对同一组位置进行读写操作可实现时间状态性。因此,也可以使用前馈神经网络作为控制器,它比控制器中的隐藏状态更具透明度。但前馈架构的主要限制是读写头的数量会限制每个时间戳的操作数量。
6. 与循环神经网络和LSTM的比较
所有循环神经网络在理论上都是图灵完备的,这意味着它们可以用于模拟任何算法。因此,神经图灵机在理论上并没有增加任何循环神经网络(包括LSTM)的固有能力。
然而,在实际性能和对包含较长序列的数据集的泛化能力方面,循环网络存在严重限制。例如,若在一定大小的序列上训练循环网络,然后应用于不同大小分布的测试数据,性能会很差。
神经图灵机对外部内存的可控访问方式使其相对于循环神经网络具有实际优势,在循环神经网络中,瞬态隐藏状态的值与计算紧密结合。虽然LSTM有自己的内部内存,对更新有一定的抗性,但计算和内存访问过程仍然没有像现代计算机那样清晰分离。实际上,在所有循环神经网络中,计算量(即激活次数)和内存量(即隐藏单元数量)也紧密相关。
实验比较表明,与LSTM相比,神经图灵机在处理更长的输入序列时表现更好。例如,在一个复制输入到输出的实验中,神经图灵机通常表现更优,尤其是在输入较长时。神经图灵机的内存网络操作比难以解释的LSTM更具可解释性,其隐式学习的复制算法执行的步骤类似于人类程序员执行任务的方式。因此,神经图灵机的复制算法在测试时甚至可以泛化到比训练时更长的序列。
以下是神经图灵机与LSTM的性能对比表格:
| 模型 | 处理长序列性能 | 操作可解释性 | 泛化能力 |
| ---- | ---- | ---- | ---- |
| 神经图灵机 | 好 | 高 | 强 |
| LSTM | 差 | 低 | 弱 |
带外部存储器的神经网络与神经图灵机详解
7. 神经图灵机的优势总结
神经图灵机在深度学习领域展现出了独特的优势,这些优势使其在处理复杂任务时具有显著的竞争力。
-
内存与计算分离
:神经图灵机实现了内存和计算的清晰分离,这使得对内存操作的控制更加直观和可解释。就像人类程序员在操作计算机时,可以清晰地管理数据和执行计算一样,神经图灵机能够以一种类似的方式处理信息,提高了模型的可理解性和可调试性。
-
更好的泛化能力
:在处理长序列数据时,神经图灵机的泛化能力明显优于传统的循环神经网络和LSTM。它能够学习到更具通用性的模式,从而在测试数据上取得更好的性能,即使测试数据的序列长度与训练数据不同。
-
操作可解释性强
:神经图灵机的内存操作过程相对容易理解,其权重作为寻址机制的设计使得模型的行为更加透明。这对于需要理解模型决策过程的应用场景,如医疗诊断、金融分析等,具有重要意义。
8. 潜在应用领域
神经图灵机的独特特性使其在多个领域具有潜在的应用价值。
-
自然语言处理
:在文本生成、机器翻译、问答系统等任务中,神经图灵机可以更好地处理长文本信息,提高模型对上下文的理解和记忆能力。例如,在问答系统中,它可以将问题和相关的文本信息存储在外部内存中,以便更准确地回答问题。
-
序列预测
:对于时间序列预测、股票价格预测等任务,神经图灵机能够捕捉序列中的长期依赖关系,从而做出更准确的预测。它可以利用外部内存存储历史数据,为预测提供更丰富的信息。
-
机器人控制
:在机器人的路径规划、动作决策等方面,神经图灵机可以帮助机器人更好地理解环境信息和自身状态。通过将环境地图和历史动作记录在外部内存中,机器人可以更智能地规划下一步的行动。
9. 挑战与未来发展方向
尽管神经图灵机具有诸多优势,但也面临着一些挑战,同时也为未来的研究提供了方向。
-
计算复杂度
:神经图灵机的计算复杂度相对较高,尤其是在处理大规模数据时。如何优化算法,降低计算成本,是未来需要解决的一个重要问题。
-
训练难度
:由于神经图灵机的结构较为复杂,训练过程可能会比较困难。需要开发更有效的训练方法,提高模型的收敛速度和稳定性。
-
与其他技术的融合
:探索神经图灵机与其他深度学习技术,如卷积神经网络、强化学习等的融合,可能会产生更强大的模型,进一步拓展其应用领域。
以下是神经图灵机面临的挑战及对应的解决方向列表:
| 挑战 | 解决方向 |
| ---- | ---- |
| 计算复杂度高 | 优化算法,采用高效的硬件加速 |
| 训练难度大 | 开发新的训练方法,调整超参数 |
| 与其他技术融合不足 | 探索融合方式,开展跨领域研究 |
10. 总结
神经图灵机作为一种具有外部存储器的神经网络架构,为深度学习带来了新的思路和方法。它通过清晰分离内存和计算,提高了模型的可解释性和泛化能力,在处理长序列数据方面表现出色。虽然面临着一些挑战,但随着技术的不断发展,神经图灵机有望在更多领域得到应用,并为解决复杂问题提供有效的解决方案。
以下是神经图灵机的发展流程的mermaid流程图:
graph LR
A[提出概念] --> B[理论研究]
B --> C[实验验证]
C --> D[应用拓展]
D --> E[面临挑战]
E --> F[解决问题]
F --> G[持续发展]
希望通过本文的介绍,读者能够对神经图灵机有更深入的了解,并认识到其在深度学习领域的重要性和潜力。在未来的研究和实践中,我们可以进一步探索神经图灵机的应用,推动其不断发展和完善。
超级会员免费看
939

被折叠的 条评论
为什么被折叠?



