当前位置:网站首页>【Attention 演变史】RNN的产生、架构、推广、问题(第一弹)
【Attention 演变史】RNN的产生、架构、推广、问题(第一弹)
2022-08-04 19:13:00 【Petersburg】
栏目介绍
最近在搭司法的一个模型,现在在处理数据的阶段,后面在和师兄讨论的时候说应该要用attention,毕竟司法这一块对解释性的要求还是比较高的。虽然之前有所了解,但是总感觉没有能拿到attention的本质,并且多少有点忘了,所以从头开始这个栏目,相当于在给自己做一个笔记。
RNN
出现背景
RNN(Recurrent Neural Network)循环神经网络是一类可以处理不同长度输入的一种深度学习模型,产出的压力主要在于NLP任务,比如翻译任务。就中英翻译来说,我们拿到的英文可能是任意长度的,短到一个人名,长到阅读里的长难句翻译。这种数据在当时有很多人通过截断来做,但显然这会对输入内容有所牺牲,不是理想的解决方式,于是RNN就背负着希望出现了。
模型架构
通过这张图可以很容易地说明情况,首先整个RNN的代码的参数就在h这一块(箭头左侧),x是输入,o是输出。具体而言,箭头左边绿色这一块可以仅仅只是两个矩阵W和U。我们现在来说整个数据是如何通过这个模型过了一遍。
我们不妨假设我们的输入 x = Where have you been recently?
是一个有五个单词的句子,首先我们当然会用一些方法把这些单词向量化,这里我们不详述,默认已经把这句话的五个单词分别转化成的五个定长的向量
v 1 , v 2 , v 3 , v 4 , v 5 v_1, v_2, v_3, v_4, v_5 v1,v2,v3,v4,v5
他们每一个都是对应位置英文单词的向量,比如 v 1 v_1 v1对应的是where
, v 3 v_3 v3对应的是you
。那么现在我们的输入从五个人容易读的英文单词,变成了5个计算机容易处理的定长向量。下面我们描述RNN怎么处理这五个向量。
模型计算
第一步
随机初始化一个隐层向量 h 1 h_1 h1,计算向量 W ∗ h 1 W * h_1 W∗h1,和 U ∗ v 1 U * v_1 U∗v1,得到两个向量 s 1 和 e 1 s_1和e_1 s1和e1,这里为了简化,以 s 1 + e 1 s_1 + e_1 s1+e1作为输出 o 1 o_1 o1,以 s 1 s_1 s1作为 h 2 h_2 h2。至此,我们完成了第一步,输入:随机向量和第一个单词向量;输出:第一个输出向量和第二个隐层向量。
第二步
用上面得到的 h 2 , v 2 h_2, v_2 h2,v2重复上一步的操作,具体而言,计算 s 2 = W ∗ h 2 , e 2 = U ∗ v 2 s_2 = W * h_2, e_2 = U * v_2 s2=W∗h2,e2=U∗v2。令输出 o 2 = s 2 + e 2 o_2 = s_2 + e_2 o2=s2+e2,新隐层向量 h 3 = s 2 h_3 = s_2 h3=s2。
第三步
利用 h 3 , v 3 h_3, v_3 h3,v3,继续重复,计算 s 3 = W ∗ h 3 , e 3 = U ∗ v 3 s_3 = W * h_3, e_3=U*v_3 s3=W∗h3,e3=U∗v3。令 o 3 = s 3 + e 3 , h 4 = s 3 o_3 = s_3 + e_3, h_4 = s_3 o3=s3+e3,h4=s3。
第四步
输入: h 4 , v 4 h_4, v_4 h4,v4. 输出: o 4 , h 5 o_4, h_5 o4,h5
第五步
输入: h 5 , v 5 h_5, v_5 h5,v5. 输出: o 5 , h 6 o_5, h_6 o5,h6. 结束
至此我们得到了h 和 o两个东西,一般我们会用隐层h代表句意。
模型评价
这里简单地说一下,首先最为明显的,我们解决了不同长度输入的问题,通过让每一个单词都进行重复性的操作,我们达成了初始的目标;其次,我们注意到每一步的计算我们都涉及两个输入向量,一个是隐层向量h,其综合了前面所有单词的信息,某种程度上来说每一步的h都代表了之前那些词放在一起的语义,另一个是当前新词x,可以理解为新的词对于整体句意的修改。
整体来看,RNN不仅解决了当时困扰研究者一时的数据长度问题,还给出了一个合乎直觉的模型设计方法。但是这种丐版的RNN也是有着自身问题的,比如如果句子非常长,那么前面几个词的语义很有可能会随着不断的计算而衰减掉,从而影响整体句子的表示。
模型推广
为进一步解决丐版RNN的不足,研究者们还陆续提出了LSTM、GRU这样的模型,其本质都是RNN,不同在于每一步的计算,他们通过自己的设计,让句子前面的信息得以部分留存,从而缓解这种“注意力不集中”的问题。但尽管如此,翻译任务在遇到极长的输入时仍有可能忽略掉前面的信息,以及翻译前后颠倒的情况出现,因此我们还需要进一步去研究更好的方法。
请关注完整栏目
边栏推荐
猜你喜欢
CPU突然飙高系统反应慢,是怎么导致的?有什么办法排查?
基于YOLOV5行人跌倒检测实验
四维图新:子公司首款功能安全 MCU 芯片已陆续送样
PHP代码审计8—SSRF 漏洞
重构指标之如何监控代码圈复杂度
按需视觉识别:愿景和初步方案
笔记本WIFI无法上网(无Internet访问权限)
CIFAR发布《AI伦理的文化:研讨会报告》【附下载】
EuROC dataset format and related codes
The upgrade of capacity helps the flow of computing power, the acceleration moment of China's digital economy
随机推荐
STP实验
服务器
入选爱分析·银行数字化厂商全景报告,网易数帆助力金融数字化场景落地
MMDetection usage example: from entry to exit
Switch node version and switch npm source tool
BigDecimal 使用注意!!“别踩坑”
c语言进阶篇:自定义类型--结构体
动手学深度学习_VggNet
迪赛智慧数——其他图表(主题河流图):近年居民消费、储蓄、投资意愿
正畸MIA微种植体支抗技术中国10周年交流会在沈举办
七夕福利!中奖名单:书籍免费送!
Openharmony code framework (2) the person that
如何给MySQL添加自定义语法 ?
工业相机CCD与CMOS
SIGIR 2022 | 邻域建模Graph-Masked Transformer,显著提高CTR预测性能
ACP-Cloud Computing By Wakin自用笔记(2)CPU和内存虚拟化
SAP UI5 视图控制器 View Controller 的生命周期方法 - Lifecycle methods
切换node版本和切换npm源工具
win10 uwp json
零基础做出高端堆叠极环图