| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 神经网络与深度学习7---注意力机制与seq2seq模型 -> 正文阅读 |
|
[人工智能]神经网络与深度学习7---注意力机制与seq2seq模型 |
本文是邱锡鹏教授撰写的《神经网络与深度学习》一书中 第8章:注意力机制与外部记忆 的读书笔记,主要内容是一些本人觉得比较值得记录的内容,中间也会包括一些拓展和思考。 注意力评分函数以下为注意力机制的流程图,查询 q \boldsymbol q q 通过注意力评分函数 a a a 与键 k \boldsymbol k k 作用,并通过softmax得到对应 k \boldsymbol k k 的概率分布值,最后这些概率分布值与值 v \boldsymbol v v 做加权和: 写成数学公式: 常用的注意力评分函数有 加性注意力 和 点积注意力 两种: 加性注意力: 点积注意力
在实践中,可以考虑批量计算注意力值来提升效率: 其中 Q ∈ R n × d \boldsymbol Q \in \mathbb{R}^{n\times d} Q∈Rn×d 表示 n n n 个查询, K ∈ R m × d \boldsymbol K \in \mathbb{R}^{m\times d} K∈Rm×d 表示 m m m 个键, V ∈ R m × v \boldsymbol V \in \mathbb{R}^{m\times v} V∈Rm×v 表示 m m m 个值。 基于rnn的seq2seq模型首先回忆基于循环神经网络的seq2seq模型:
这种结构的seq2seq会有一个问题:decoder所有时间步从encoder中获得的信息都是一样的,没有区分。但这与实际情况往往是不相符的,例如对于翻译模型,target language中的某个词往往会与source language的某一两个词具有强相关性,而跟其它的词相关性很弱。而注意力机制恰好就可以解决这样的问题。 带注意力机制的基于rnn的seq2seq模型带注意力机制的seq2seq模型中,上下文变量
c
\boldsymbol c
c 不再简单的采用encoder的输出,而是encoder层隐变量与decoder上一时间步的注意力输出: 其中 s t ? 1 \boldsymbol s_{t-1} st?1? 是decoder上一时间步的隐层输出, h i \boldsymbol h_i hi? 是encoder最后隐层的所有时间步的输出。 多头注意力所谓“多头”,是通过给{查询,键,值}组合施加不同的线性变换来实现的,每个头的定义如下: h i = ∑ t = 1 n softmax ( a ( W i q q , W i k k t ) ) W i v v t ∈ R p v h_i = \sum_{t=1}^n \text{softmax}(a(\boldsymbol W^{q}_i \boldsymbol q, \boldsymbol W^{k}_i \boldsymbol k_t)) \boldsymbol W^{v}_i \boldsymbol v_t \in \mathbb{R}^{p_v} hi?=t=1∑n?softmax(a(Wiq?q,Wik?kt?))Wiv?vt?∈Rpv? 其中 W i q ∈ R p d × d q , W i k ∈ R p k × d k , W i v ∈ R p v × d v \boldsymbol W^{q}_i \in \mathbb{R}^{p_d \times d_q}, \boldsymbol W^{k}_i \in \mathbb{R}^{p_k \times d_k}, \boldsymbol W^{v}_i \in \mathbb{R}^{p_v \times d_v} Wiq?∈Rpd?×dq?,Wik?∈Rpk?×dk?,Wiv?∈Rpv?×dv? 是可学习参数。 之后所有的头需要经过一个线性转换: 其中 W o ∈ R p o × h p v \boldsymbol W^{o} \in \mathbb{R}^{p_o \times hp_v} Wo∈Rpo?×hpv? 也是可学习参数。
为了能够并行计算多个头,需要设置 p d = p k = p v = p o h p_d = p_k = p_v = \frac{p_o}{h} pd?=pk?=pv?=hpo?? Transfomer论文地址:Attention Is All You Need 正如标题所表达的,Transfomer完全摒弃了循环神经网络的结构:
关于Transformer中注意力机制的详细使用情况,可以参加本人的另一篇博客 Transfomer矩阵维度分析及MultiHead详解 Reference: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 1:20:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |