| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> attention与self-attention -> 正文阅读 |
|
[人工智能]attention与self-attention |
因为seq2seq模型容易遗忘掉部分信息,引入attention模型,它可以大幅度提高seq2eq模型 下图横轴是输入得句子长度,纵轴是模型评价值,BLEU越高说明翻译越准确,可以看到,当字数很长时,翻译得准确率就会降低 self-attention? 优点: 在attention的机制下,decoder每次更新状态时都会看一眼encoder的所有状态向量避免遗忘,attention还会告诉decoder应该关注哪一个状态(这也是名字的由来) 缺电: attention原理:在encoder输入完最后一个状态向量hm时,decoder与attention会同时开始工作,计算s0与每一个状态h1h2....hm的相关性,用公式(下图给出)计算,结果记为ai? 有m个状态向量,计算出m个ai ,每一个ai在0-1之间,a1+a2+.....ai = 1 【插播一下】计算ai 过程: 第一种: 将hi 与s0做内积,得到更高维向量与矩阵W相乘,结果是一个向量,将该向量送入tanh函数,得到新向量每一个值在[-1 ,1],再将结果乘向量V,(W和V都是参数),最后a1...am送入softmax函数得到的向量中每个值>0,所有和仍为1 第二种(Transformer): 用Wk 和 Wq对两个输入向量hi,s0做线性变换(Wk和Wq是函数中的参数) k向量有m个,ai也有m个 每个Ki 向量都是矩阵的列,最后得到的【a1,a2....am】就是下图的向量,向量中的每个元素都在0-1之间且相加和为1 ?? ? ? 上述两种任选一种计算出a1a2....am共m个权重值,然后利用公式(下图)得到context vector, 每一个c0c1....都对应一个s0s1....., ? ?decoder读入向量x1' ,再将状态更新为s1,更新用下图公式 ?因为c0=a1h1+a2h2+....amhm,所以c0知道x1,x2....xm的所有信息,所以decoder的s1依赖于c0, PS:每一轮算出来了的a1a2....am是不一样的,不能被重复使用 下一轮的s2由 s1c1决定,如下图公式 ?s2算出来后需要计算c2 ,首先需要s2与encoder中h1h2...hm相关性(用上面提到的公式),计算出新的权重a1,a2....am,然后根据公式c2=a1h1+a2h2+...amhm得到c2 下图中的线用来表示相关性,越粗越相关,a值越大
self-attention原理初始h0=c0=0,新状态h1依赖于c0和x1,由于h0=0, 所以c1=h1 ?计算h2 ? 下一步计算a2,?根据这个公式可算出a1和a2 开始计算c2(见下图公式),由于h0=0,之后的计算中我们自动忽略它 然后一直重复上述步骤:计算hi---->计算ai---->计算ci ? ? 直到全部计算完
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 23:28:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |