Deep Learning Part Eight--Attention 24.5.4

2024-05-05 07:44

本文主要是介绍Deep Learning Part Eight--Attention 24.5.4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

01.在翻译、语音识别等将一个时序数据转换为另一个时序数据的任务中,时序数据之间常常存在对应关系

引入了Attention的概念,介绍了Attention的注意力机制:

困难出现,seq2seq的问题引入:固定化长度问题(过于死板)占用的资源过多

 具体化实例引入:就好比把衣服乱塞,早晚都会出问题———衣服找不到的,回到案例:我们用固定化长度,终将会造成信息溢出的问题。

解决方案引入:编码器改进(核心:根据输出的隐藏层来对信息进行合理的长度规划) 

 长度改变的策略:隐藏层线索改善

 问题连锁发现:各个输出的向量中蕴含着各个单词的对应信息,为接下来的Attention从数据中学习两个时序的对应关系埋下伏笔:

 讲述了编码器的改进:可以根据输出的隐藏层灵活变换,减少不必要的信息扩充(核心:简化)

 解码器随着编码器的改进一同改进:核心目的:提高机器学习seq2seq的效率,优化程序。

下面核心强调了对齐对机器翻译的好处:(这里是专注于一个单词,或者是单词集合的;举个例子:例如:中文“猫”,翻译程序就将英文“cat”与“绑定”,像不像一个男孩极致去只爱一个女孩!!!浪漫,为什么我热衷于这种思维?嘿嘿,看过斗罗大陆的宝子们都知道答案的嘞,每部都是男主只爱女主一个人,无论发生什么!所以这也许是斗罗留给我童年最珍贵的礼物吧,O(∩_∩)O哈哈~)

类比人类玩极致(就是将精力全部放在一件事情上,也类似于斗罗大陆的极致武魂:斗罗大陆2:绝世唐门:霍雨浩的极致之冰(冰碧帝皇蝎),王秋儿的极致之光明和极致之力量(金龙王),马小桃的极致之火(邪火凤凰),斗罗大陆4:终极斗罗:蓝轩宇的九种元素全部极致,(蓝银皇武魂,龙神血脉!!!)哈哈)

极致就是那么无敌!!!

也可以理解绝对的专注!!!

一生专注做于一件事!!!

一生专注爱一个人!!!

一生专注于一个梦想!!!

 

 介绍了改进后的解码器层结构,然后引出了下文Atttention的可微对下面用到的神经网络的学习核心:误差反向传播法的重要性,为啥重要?因为:不可微分的话,误差反向传播法就用不了啦(没错,就是数学的可微分的意思,宝子要相信自己!)

02.Attention 从数据中学习两个时序数据之间的对应关系

接下来,介绍了一个实战案例:日期格式转换的嘞

核心:就是你随便输一个格式的日期,她都会给你转换成一种固定的格式。

 机器学习的本质:你给他准备好一个一个好的数据集,给他些时间,他会自己探索其中的规律的。

这里我们给他了一个5000个日期的数据集,让他学习一下。

 

 学习结果:通过终端看:

 学习正确率:通过图像来看

通过图像对比基础状态,偷窥状态,和注意力状态学习的效率

03.Attention 使用向量内积(方法之一)计算向量之间的相似度,并输出这个相似度的加权和向量

 先说明:向量内积计算相似度,并输出加权和的核心目的:就是为了帮助更好的实现之前所说的Attention的对齐,也就是玩极致,让每个单词都对应一个翻译后的单词,提高翻译效率和准确率(书上称为精度:也就是精准度,看你翻译的好不好的嘞)。然后就没了的,所以学习这部分不用害怕的。

 

讲述了通过加权和计算可以得到上下文的向量(也就是坐标) ,抽象可以理解为机器理解啦翻译这个工作的嘞

(偷偷说,这难道不是我们小学的记答案,摸索答案的规律,然后蒙答案嘛,真的神似,说实话,机器其实啥也不会的,很笨很笨,但是,一些大牛通过让机器(也就是电脑,还可以称呼他为图灵机)学习大量的数据,从大量数据中摸索规律,然后成功的让机器大概了解怎么为人类工作的,对的,机器就是那么笨的,不怕你笑话的,但是机器有几点优点:不死性和可以精准学习我们人类根本难以想象的数据内容的,这就决定了人类通过现有的方式是永远也没有任何胜算的,但人类也有机器无法媲美的优点,那就是人类不完美中绽放着完美之花!!!熠熠生辉。人类的任何灵感和大胆的想法,更加是机器所无法取代的!!!)

人类可以没有机器聪明,但是可以比机器更蠢哇!有时候,做个可爱的小蠢货也挺好得嘞!

两个极端都是一种智慧!聪明与蠢蠢,大智如愚嘛!

未来,我就做个可爱的小蠢货啦!哈哈

 

 

接着再讲一下解码器的改进:

核心:为Attention服务

初心:为了让机器翻译功能更精准!优化机器翻译。 

 

 

 介绍了向量内积的基础概念和实战案例:

然后啥是相似度?

 

hs是个啥?

使用编码器各个时刻(各个单词)的 LSTM 层的隐藏状态(这里表示为 hs

LSTM这个加工厂的隐藏层状态的加工品和另一个工厂的加工品对比一下的嘞

可以类似:华强北的师傅们的copyApple的优秀产品的

向优秀者学习:这可是乔布斯老爷子的至理名言!

没说谎,Stay hungry,stay foolish.

Good artists copy, great artists steal!

优秀者模仿,伟大者剽窃!

高尚是高尚者的墓志铭,卑鄙是卑鄙者的通行证!

--这也许就是好人难做的法则吧!

做人嘛,我个人还是分裂型人格的,善良与邪恶都要有的

面对善良的人,那就是善良的

面对恶人,那就是邪恶的!

用善良对待值得的人,用邪恶保护善良!

 然后老一套,softmax

 

import sys
sys.path.append('..')
from common.layers import Softmax
import numpy as npN, T, H = 10, 5, 4
hs = np.random.randn(N, T, H)
h = np.random.randn(N, H)
hr = h.reshape(N, 1, H).repeat(T, axis=1)
# hr = h.reshape(N, 1, H) # 广播t = hs * hr
print(t.shape)
# (10, 5, 4)s = np.sum(t, axis=2)
print(s.shape)
# (10, 5)softmax = Softmax()
a = softmax.forward(s)
print(a.shape)
# (10, 5)

 

 

 

class Attention:def __init__(self):self.params, self.grads = [], []self.attention_weight_layer = AttentionWeight()self.weight_sum_layer = WeightSum()self.attention_weight = Nonedef forward(self, hs, h):a = self.attention_weight_layer.forward(hs, h)out = self.weight_sum_layer.forward(hs, a)self.attention_weight = areturn outdef backward(self, dout):dhs0, da = self.weight_sum_layer.backward(dout)dhs1, dh = self.attention_weight_layer.backward(da)dhs = dhs0 + dhs1return dhs, dh

 

 

 

 TimeAttention代码实现:

class TimeAttention:def __init__(self):self.params, self.grads = [], []self.layers = Noneself.attention_weights = Nonedef forward(self, hs_enc, hs_dec):N, T, H = hs_dec.shapeout = np.empty_like(hs_dec)self.layers = []self.attention_weights = []for t in range(T):layer = Attention()out[:, t, :] = layer.forward(hs_enc, hs_dec[:,t,:])self.layers.append(layer)self.attention_weights.append(layer.attention_weight)return outdef backward(self, dout):N, T, H = dout.shapedhs_enc = 0dhs_dec = np.empty_like(dout)for t in range(T):layer = self.layers[t]dhs, dh = layer.backward(dout[:, t, :])dhs_enc += dhsdhs_dec[:,t,:] = dhreturn dhs_enc, dhs_dec

 解释:

 作者提出用一个更加简单的数据集来验证我们上述学习的正确性的:

 

04.因为 Attention 中使用的运算是可微分的,所以可以基于误差反向传播法进行学习

05.通过将 Attention 计算出的权重(概率)可视化,可以观察输入与输出之间的对应关系

 通过下图,我们可以发现:
机器学习出了时间格式转换的规律的:

 

 作者态度也是那样,他也不理解机器是怎么最基础的学习的,但是我们可以用自己所理解的方式去理解机器如何学习的!

 

06.在基于外部存储装置扩展神经网络的研究示例中,Attention 被用来读写内存

三个实际应用的介绍:
证明作者教我们的知识是有用的!

1.谷歌公司 机器翻译案例:

 

 

 2.Transformer案例:取代RNN优化学习

3.NTM:基于外部存储装置的扩展的光明前景 

本章我们学习了 Attention 的结构,并实现了 Attention 层。然后,我们使用 Attention 实现了 seq2seq,并通过简单的实验,确认了 Attention 的出色效果。另外,我们对模型推理时的 Attention 的权重(概率)进行了可视化。从结果可知,具有 Attention 的模型以与人类相同的方式将注意力放在了必要的信息上。

另外,本章还介绍了有关 Attention 的前沿研究。从多个例子可知,Attention 扩展了深度学习的可能性。Attention 是一种非常有效的技术,具有很大潜力。在深度学习领域,今后 Attention 自己也将吸引更多的“注意力”。

Deep Learning Second Book Finished!

这篇关于Deep Learning Part Eight--Attention 24.5.4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961156

相关文章

什么是 Flash Attention

Flash Attention 是 由 Tri Dao 和 Dan Fu 等人在2022年的论文 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中 提出的, 论文可以从 https://arxiv.org/abs/2205.14135 页面下载,点击 View PDF 就可以下载。 下面我

Level3 — PART 3 — 自然语言处理与文本分析

目录 自然语言处理概要 分词与词性标注 N-Gram 分词 分词及词性标注的难点 法则式分词法 全切分 FMM和BMM Bi-direction MM 优缺点 统计式分词法 N-Gram概率模型 HMM概率模型 词性标注(Part-of-Speech Tagging) HMM 文本挖掘概要 信息检索(Information Retrieval) 全文扫描 关键词

MySQL record 02 part

查看已建数据库的基本信息: show CREATE DATABASE mydb; 注意,是DATABASE 不是 DATABASEs, 命令成功执行后,回显的信息有: CREATE DATABASE mydb /*!40100 DEFAULT CHARACTER SET utf8mb3 / /!80016 DEFAULT ENCRYPTION=‘N’ / CREATE DATABASE myd

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

Vue3图片上传报错:Required part ‘file‘ is not present.

错误 "Required part 'file' is not present" 通常表明服务器期望在接收到的 multipart/form-data 请求中找到一个名为 file 的部分(即文件字段),但实际上没有找到。这可能是因为以下几个原因: 请求体构建不正确:在发送请求时,可能没有正确地将文件添加到 FormData 对象中,或者使用了错误的字段名。 前端代码错误:在前端代码中,可能

Deep Ocr

1.圈出内容,文本那里要有内容.然后你保存,并'导出数据集'. 2.找出deep_ocr_recognition_training_workflow.hdev 文件.修改“DatasetFilename := 'Test.hdict'” 310行 write_deep_ocr (DeepOcrHandle, BestModelDeepOCRFilename) 3.推理test.hdev

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention 文章目录 一、基本原理1. 变分模态分解(VMD)2. 双向时域卷积(BiTCN)3. 双向门控单元(BiGRU)4. 注意力机制(Attention)总结流程 二、实验结果三、核心代码四、代码获取五、总结 时序预测|变分模态分解-双向时域卷积

C++入门(part 2)

前言 在前文我们讲解了C++的诞生与历史,顺便讲解一些C++的小语法,本文会继续讲解C++的基础语法知识。 1. 缺省参数 1.1缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参则采⽤该形参的缺省值,否则使用指定的实参。(有些地⽅把缺省参数也叫默认参数) 1.2 缺省参数的分类 缺省参数分为全缺省和半缺省参数,全缺省就是全部形参给