深度学习高级主题:注意力机制与外部记忆神经网络
1. 强化学习与视觉注意力
强化学习方法可用于任何类型的视觉强化学习任务,而非局限于图像识别或分类,监督学习是其简单特例。在该方法中,动作 $a_t$ 通过 softmax 预测选择类别标签。在第 $t$ 个时间戳,如果分类正确,奖励 $r_t$ 为 1,否则为 0。第 $t$ 个时间戳的总奖励 $R_t$ 是未来所有折扣奖励的总和。不过,动作会根据具体应用而变化,例如在图像字幕应用中,动作可能对应选择字幕的下一个单词。
训练过程与相关方法类似,时间戳 $t$ 时预期奖励的梯度为:
$\nabla E[R_t] = R_t\nabla\log(\pi(a_t))$ (10.1)
在神经网络中使用该梯度和策略展开进行反向传播。实际中会有多个展开,每个展开包含多个动作,因此需要将所有这些动作(或这些动作的小批量)的梯度相加,以获得最终的上升方向。为减少方差,通常会从奖励中减去一个基线。随着使用更多的图像瞥见,分类准确性会提高,该方法在各种类型的数据上使用 6 到 8 个瞥见时表现良好。
2. 视觉注意力在图像字幕中的应用
在图像字幕问题中,传统方法是将整个图像的单一特征表示 $v$ 输入到循环神经网络的第一个时间戳,但使用注意力机制时,我们希望在不同时间戳关注与正在生成的单词对应的图像部分。例如,对于 “Bird flying during sunset.” 这样的字幕,生成 “flying” 时注意力应在鸟的翅膀位置,生成 “sunset” 时注意力应在落日位置。
具体实现时,可以通过图 10.2 所示的架构,在每个时间戳预测字幕的一个单词(作为动作)以及图像中的一个位置 $l_t$ ,该位置将是下一个时间戳的关注焦点。文献 [540] 对该思想进行了改进,使用更复杂的卷积架构创建 14×14 的特征图。它从 $L$ 个不同的图像预处理变体开始,这些变体以图像中的不同位置为中心,注意力机制只能从这些位置中选择。在 $(t - 1)$ 个时间戳,它生成一个长度为 $L$ 的概率向量 $\alpha_t$ ,表示每个位置的相关性。
- 硬注意力模型 :使用概率向量 $\alpha_t$ 采样一个位置,将该位置的预处理表示作为输入提供给循环网络下一个时间戳的隐藏状态 $h_t$ 。
- 软注意力模型 :使用概率向量 $\alpha_t$ 对所有 $L$ 个位置的表示模型进行加权平均,将这个平均表示作为时间戳 $t$ 的隐藏状态的输入。软注意力模型使用直接的反向传播进行训练,而硬注意力模型使用 REINFORCE 算法。
以下是相关流程的 mermaid 流程图:
graph TD;
A[输入图像] --> B[卷积特征提取];
B --> C[循环神经网络(带注意力)];
C --> D[生成字幕];
C --> E[生成概率向量αt];
E --> F{硬注意力/软注意力};
F -- 硬注意力 --> G[采样位置];
F -- 软注意力 --> H[加权平均表示];
G --> C;
H --> C;
3. 机器翻译中的注意力机制
循环神经网络(特别是长短期记忆网络 LSTM)常用于机器翻译。在基于注意力的方法中,目标是将源隐藏状态的上下文信息融入目标隐藏状态,以创建新的增强目标隐藏状态。
为了实现基于注意力的处理,需要找到与当前正在处理的目标隐藏状态 $h_t^{(2)}$ 接近的源表示,通过源向量的相似度加权平均创建上下文向量 $c_t$ :
$c_t = \frac{\sum_{j = 1}^{T_s} \exp(h_j^{(1)} \cdot h_t^{(2)})h_j^{(1)}}{\sum_{j = 1}^{T_s} \exp(h_j^{(1)} \cdot h_t^{(2)})}$ (10.2)
其中,$T_s$ 是源句子的长度。可以通过注意力变量 $a(t, s)$ 来理解这种加权方式,它表示源单词 $s$ 对目标单词 $t$ 的重要性:
$a(t, s) = \frac{\exp(h_s^{(1)} \cdot h_t^{(2)})}{\sum_{j = 1}^{T_s} \exp(h_j^{(1)} \cdot h_t^{(2)})}$ (10.3)
向量 $[a(t, 1), a(t, 2), \cdots, a(t, T_s)]$ 称为注意力向量 $a_t$ ,它是特定于目标单词 $t$ 的,可视为一组概率权重,总和为 1。式(10.2)可以重写为:
$c_t = \sum_{j = 1}^{T_s} a(t, j)h_j^{(1)}$ (10.4)
创建新的目标隐藏状态 $H_t^{(2)}$ :
$H_t^{(2)} = \tanh(W_c \cdot c_t + h_t^{(2)})$ (10.5)
使用这个新的隐藏表示 $H_t^{(2)}$ 进行最终预测。该模型被称为全局注意力模型,是一种软注意力模型。文献 [302] 还提出了一种局部注意力机制,它关注句子的一小部分上下文。
计算相似度的不同选项如下:
$Score(t, s) =
\begin{cases}
h_s^{(1)} \cdot h_t^{(2)} & \text{Dot product} \
(h_t^{(2)})^T W_a h_s^{(1)} & \text{General: Parameter matrix } W_a \
v_a^T \tanh(W_a [h_s^{(1)}; h_t^{(2)}]) & \text{Concat: Parameter matrix } W_a \text{ and vector } v_a
\end{cases}$ (10.6)
计算相似度得分后,注意力值的计算方式与点积相似度类似:
$a(t, s) = \frac{\exp(Score(t, s))}{\sum_{j = 1}^{T_s} \exp(Score(t, j))}$ (10.7)
以下是不同相似度计算方法的对比表格:
| 方法 | 描述 | 参数 |
| ---- | ---- | ---- |
| Dot product | 源和目标隐藏状态的点积 | 无 |
| General | 使用参数矩阵 $W_a$ | $W_a$ |
| Concat | 使用参数矩阵 $W_a$ 和向量 $v_a$ | $W_a, v_a$ |
4. 神经网络与外部记忆
近年来,提出了几种将神经网络与持久内存相结合的架构,其中内存的概念与计算明确分离,可以控制计算如何选择性地访问和修改特定的内存位置。LSTM 可以被认为具有持久内存,但它没有明确分离内存和计算。
神经图灵机是具有外部内存的神经网络,基础神经网络可以读写外部内存,起到控制计算的作用。除了 LSTM,大多数神经网络在长时间尺度上没有持久内存的概念,传统神经网络(包括 LSTM)中计算和内存的概念没有明确分离。
能够操作持久内存并将内存与计算明确分离,使得神经网络成为可编程计算机,可以从输入和输出的示例中模拟算法。这一原理催生了许多相关架构,如神经图灵机、可微神经计算机和内存网络。
5. 通过示例学习排序:幻想视频游戏
以排序应用为例,在不知道排序算法的情况下,仅通过打乱的输入和排序后的输出示例,自动学习对任何给定输入执行一系列动作,使输出符合从示例中学到的排序结果。
假设要对四个数字的序列进行排序,“视频游戏屏幕” 上有四个位置显示数字的当前状态。玩家可以执行 6 种可能的动作,每种动作形式为 SWAP(i, j) ,用于交换位置 $i$ 和 $j$ 的内容。游戏目标是使用尽可能少的交换次数对数字进行排序。
机器学习算法没有关于输出应该排序的先验知识,仅通过输入和输出的示例构建模型,学习将输入转换为排序版本的策略。玩家在做出有助于正确排序的 “好交换” 时会获得奖励。
以下是排序游戏的动作列表:
1. SWAP(1, 2)
2. SWAP(1, 3)
3. SWAP(1, 4)
4. SWAP(2, 3)
5. SWAP(2, 4)
6. SWAP(3, 4)
通过这种方式,我们可以看到如何从示例中学习执行复杂任务,这与强化学习方法密切相关。这种从输入输出示例中学习的能力对于通用人工智能非常重要,因为在许多情况下,我们只有生物行为的输入和输出示例,而没有实际计算的算法或函数的明确定义。
深度学习高级主题:注意力机制与外部记忆神经网络
6. 排序游戏的详细分析
在这个幻想的排序视频游戏中,我们可以进一步分析其学习过程和挑战。首先,我们可以将其看作一个马尔可夫决策过程(MDP),当前的数字序列状态就是 MDP 中的状态 $s$,而 SWAP(i, j) 这些动作就是 MDP 中的动作 $a$。每执行一个动作后,会得到一个奖励 $r$,如果该动作使序列更接近排序状态,奖励为正,否则可能为零或负。
为了学习到最优的排序策略,我们可以使用基于策略梯度的强化学习算法。策略网络可以根据当前的数字序列状态输出每个动作的概率,然后根据这些概率采样执行动作。例如,策略网络可以是一个简单的神经网络,输入是当前数字序列的编码表示,输出是 6 个动作的概率分布。
以下是这个策略网络的简单伪代码:
import torch
import torch.nn as nn
class PolicyNetwork(nn.Module):
def __init__(self, input_size, output_size):
super(PolicyNetwork, self).__init__()
self.fc1 = nn.Linear(input_size, 128)
self.fc2 = nn.Linear(128, output_size)
self.softmax = nn.Softmax(dim=1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
action_probs = self.softmax(x)
return action_probs
# 初始化策略网络
input_size = 4 # 四个数字的序列
output_size = 6 # 6 个可能的动作
policy_network = PolicyNetwork(input_size, output_size)
# 输入当前状态
current_state = torch.randn(1, input_size)
action_probs = policy_network(current_state)
# 采样动作
action = torch.multinomial(action_probs, 1).item()
在训练过程中,我们需要收集多个回合的数据,每个回合包含一系列的状态、动作和奖励。然后根据这些数据计算策略梯度,更新策略网络的参数。具体来说,策略梯度的计算公式为:
$\nabla E[R] = \sum_{t=0}^{T} R_t \nabla \log(\pi(a_t|s_t))$
其中,$R_t$ 是从时间步 $t$ 开始的累积折扣奖励,$\pi(a_t|s_t)$ 是在状态 $s_t$ 下选择动作 $a_t$ 的概率。
以下是 mermaid 流程图展示训练过程:
graph TD;
A[初始化策略网络] --> B[开始回合];
B --> C[观察当前状态 s];
C --> D[根据策略网络输出动作概率];
D --> E[采样动作 a];
E --> F[执行动作,得到奖励 r 和新状态 s'];
F --> G{回合是否结束};
G -- 否 --> C;
G -- 是 --> H[收集回合数据];
H --> I[计算策略梯度];
I --> J[更新策略网络参数];
J --> B;
7. 外部记忆神经网络的优势与挑战
外部记忆神经网络(如神经图灵机)的优势在于其能够处理长期依赖问题。在传统的神经网络中,由于梯度消失或爆炸问题,很难记住长时间之前的信息。而外部记忆神经网络通过将记忆与计算分离,使得网络可以在需要时访问和修改外部记忆,从而更好地处理长序列数据。
例如,在自然语言处理任务中,处理长文本时,外部记忆可以存储之前的句子信息,以便在生成后续内容时进行参考。在图像生成任务中,外部记忆可以存储图像的特征信息,帮助网络生成更连贯和准确的图像。
然而,外部记忆神经网络也面临一些挑战。首先,外部记忆的管理和访问是一个复杂的问题。如何有效地选择要读取和写入的记忆位置,以及如何更新记忆内容,都需要设计合适的机制。其次,训练外部记忆神经网络通常需要更多的计算资源和时间,因为需要学习额外的参数来控制记忆的访问和修改。
以下是外部记忆神经网络的优势和挑战对比表格:
| 优势 | 挑战 |
| ---- | ---- |
| 处理长期依赖问题 | 记忆管理和访问复杂 |
| 更好地处理长序列数据 | 需要更多计算资源和时间 |
| 可模拟算法从示例中学习 | 训练难度较大 |
8. 注意力机制在不同任务中的应用总结
注意力机制在图像字幕和机器翻译等任务中都有出色的表现。在图像字幕任务中,注意力机制可以让模型在生成字幕的不同阶段关注图像的不同部分,从而生成更准确和详细的字幕。在机器翻译任务中,注意力机制可以将源句子的上下文信息融入目标句子的生成过程,提高翻译的质量。
不同类型的注意力机制(硬注意力和软注意力)也有各自的特点和适用场景。硬注意力模型通过采样选择一个位置进行关注,更适合需要精确聚焦的任务;而软注意力模型通过加权平均所有位置的信息,更适合需要综合全局信息的任务。
以下是注意力机制在不同任务中的应用总结列表:
1.
图像字幕
:
- 硬注意力:聚焦图像特定区域,适用于强调局部特征的字幕生成。
- 软注意力:综合图像全局信息,适用于生成概括性较强的字幕。
2.
机器翻译
:
- 全局注意力(软注意力):考虑源句子的所有单词,生成流畅的翻译。
- 局部注意力:关注源句子的部分上下文,提高翻译的准确性。
9. 未来发展方向
深度学习中的注意力机制和外部记忆神经网络仍有很大的发展空间。在注意力机制方面,可以进一步研究如何自适应地调整注意力的范围和强度,以更好地适应不同的任务和数据。例如,可以设计一种动态注意力机制,根据输入数据的特点自动选择硬注意力或软注意力。
在外部记忆神经网络方面,可以探索更高效的记忆管理和访问机制,减少计算资源的消耗。同时,可以将外部记忆与其他深度学习技术(如卷积神经网络、循环神经网络)相结合,创造出更强大的模型。
此外,将注意力机制和外部记忆神经网络应用到更多的领域,如医疗图像分析、自动驾驶等,也是未来的重要发展方向。通过这些技术,可以提高模型在复杂任务中的性能和可解释性。
总之,深度学习中的注意力机制和外部记忆神经网络为解决复杂的人工智能问题提供了有力的工具,未来的研究和应用有望取得更多的突破。
超级会员免费看

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



