当前位置:网站首页>NLP领域的AM模型
NLP领域的AM模型
2022-07-29 05:21:00 【Quinn-ntmy】
1. Encoder-Decoder框架
绝大多数文献中出现的AM模型都是附着在Encoder-Decoder框架下。但!!AM模型本身并不依赖于Encoder-Decoder框架。
Encoder-Decoder框架:可以把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。
- Encoder:对输入句子X进行编码,将输入句子通过非线性变换转化为中间语义表示C:C=F(x1, x2, …, xm)。
- Decoder:根据句子X的中间语义表示C和之前已经生成的历史信息 y1, y2, …, yi-1 来生成 i 时刻要生成的单词 yi:yi=g(C, y1, y2, …, yi-1)。
每个 yi 都依次这么产生,那么看起来就是整个系统根据输入句子X生成了目标句子Y。
在生成目标句子的单词时,不论生成哪个单词,y1, y2也好,y3也好,它们使用的句子X的语义编码C都是一样的,没有任何区别。就是说句子X中任意单词对生成某个目标 yi 来说影响力都是相同的。相当于一个没有注意焦点的分心模型。
【但!如果Encoder是RNN的话,理论上越是后输入的单词影响越大,并非等权,所以后来Google提出 seq2seq 模型时发现把输入句子逆序输入做翻译效果会更好。】
2. AM
核心思想公式:
每个单词的概率代表了翻译当前单词时,注意力分配模型分配给不同英文单词的注意力大小。【可以理解为各个英文单词对于翻译某个目标单词影响程度的不同。相关性?】
So 在生成每个单词 Yi 的时候,原先都是相同的中间语义表示C会被替换成根据当前生成单词而不断变化的Ci。
重点:固定的中间语义表示C 换成了 根据当前输出单词来调整成 加入注意力模型的变化的Ci。
例:“Tom chase Jerry.”
- C汤姆 = g(0.6 * f2(“Tom”), 0.2 * f2(“chase”), 0.2 * f2(“Jerry”))
- C追逐 = g(0.2 * f2(“Tom”), 0.7 * f2(“chase”), 0.1 * f2(“Jerry”))
- C杰瑞 = g(0.3 * f2(“Tom”), 0.2 * f2(“chase”), 0.5 * f2(“Jerry”))
其中,f2函数表示Encoder对输入单词的某种变换函数,eg:如果Encoder是用RNN模型的话,这个f2函数的结果往往是某个时刻输入xi后隐藏节点的状态值。【隐藏层的作用:把输入数据的特征抽象化,以更好地进行线性划分】
g 函数表示Encoder根据单词的中间表示合成整个句子中间语义表示的变换函数。一般做法,g函数是对构成元素加权求和,论文中常看到公式:
假设Ci中i是“汤姆”,那么Tx是3,代表输入句子的长度,h1=f2(“Tom”),h2=f2(“Chase”),h3=f2(“Jerry”),对应的注意力模型权值分别是0.6,0.2,0.2。
3.单词注意力分配概率分布值
上面的(Tom, 0.6)(chase, 0.2) (Jerry, 0.2)如何得到???
假设对于上面的框架,Encoder采用RNN模型,Decoder也采用RNN模型。
细化后的模型:
注意力分配概率计算过程:
- 对于采用RNN的Decoder来说,如果要生成 yi 单词,在时刻 i,我们可以知道在生成yi之前的隐层节点i时刻的输出值 Hi 的。
- 那么可以用 i 时刻的隐层节点状态 Hi 和输入句子中每个单词对应的RNN隐层节点状态 hj 进行一一对比,即通过函数 F(hj, Hi) 来获得目标单词 Yi 和每个输入单词对应的对齐可能性。( 这个F函数在不同论文中会采取不同的方法)
- 最后函数F的输出经过Softmax进行归一化就得到一个0~1的注意力分配概率分布数值。
大部分AM模型都是采用上述计算框架,只是在F上可能不同。
一般会把AM模型看作是单词对齐模型。
目标句子生成的每个单词对应输入句子单词的概率分布可以理解为输入句子单词和这个目标生成单词的对齐概率。
边栏推荐
- 【数据库】数据库课程设计一一疫苗接种数据库
- Most PHP programmers don't understand how to deploy safe code
- 【语义分割】语义分割综述
- 【Transformer】TransMix: Attend to Mix for Vision Transformers
- Detailed explanation of MySQL statistical function count
- 30 knowledge points that must be mastered in quantitative development [what is level-2 data]
- 并发编程学习笔记 之 工具类Semaphore(信号量)
- Ribbon learning notes II
- Super simple integration of HMS ml kit to realize parent control
- 【Attention】Visual Attention Network
猜你喜欢

Technology that deeply understands the principle of MMAP and makes big manufacturers love it

Training log 7 of the project "construction of Shandong University mobile Internet development technology teaching website"

并发编程学习笔记 之 Lock锁及其实现类ReentrantLock、ReentrantReadWriteLock和StampedLock的基本用法

ROS教程(Xavier)

anaconda中移除旧环境、增加新环境、查看环境、安装库、清理缓存等操作命令

Interesting talk about performance optimization thread pool: is the more threads open, the better?

Process management of day02 operation

My ideal job, the absolute freedom of coder farmers is the most important - the pursuit of entrepreneurship in the future

DataX installation

Centos7 silently installs Oracle
随机推荐
Huawei 2020 school recruitment written test programming questions read this article is enough (Part 2)
【Transformer】AdaViT: Adaptive Vision Transformers for Efficient Image Recognition
File文件上传的使用(2)--上传到阿里云Oss文件服务器
MySql统计函数COUNT详解
通过简单的脚本在Linux环境实现Mysql数据库的定时备份(Mysqldump命令备份)
mysql在查询字符串类型的时候带单引号和不带的区别和原因
Operation commands in anaconda, such as removing old environment, adding new environment, viewing environment, installing library, cleaning cache, etc
【语义分割】SETR_Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformer
File permissions of day02 operation
DataX installation
Spring, summer, autumn and winter with Miss Zhang (4)
【ML】机器学习模型之PMML--概述
并发编程学习笔记 之 原子操作类AtomicReference、AtomicStampedReference详解
Android studio login registration - source code (connect to MySQL database)
【bug】XLRDError: Excel xlsx file; not supported
【目标检测】6、SSD
How does PHP generate QR code?
这些你一定要知道的进程知识
Ribbon learning notes 1
【目标检测】Generalized Focal Loss V1