Deep Learning Part Eight--Attention 24.5.4

news2024/11/28 22:39:36

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 np

N, 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 = None

    def forward(self, hs, h):
        a = self.attention_weight_layer.forward(hs, h)
        out = self.weight_sum_layer.forward(hs, a)
        self.attention_weight = a
        return out

    def backward(self, dout):
        dhs0, da = self.weight_sum_layer.backward(dout)
        dhs1, dh = self.attention_weight_layer.backward(da)
        dhs = dhs0 + dhs1
        return dhs, dh

 

 

 

 TimeAttention代码实现:

class TimeAttention:
    def __init__(self):
        self.params, self.grads = [], []
        self.layers = None
        self.attention_weights = None

    def forward(self, hs_enc, hs_dec):
        N, T, H = hs_dec.shape
        out = 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 out

    def backward(self, dout):
        N, T, H = dout.shape
        dhs_enc = 0
        dhs_dec = np.empty_like(dout)

        for t in range(T):
            layer = self.layers[t]
            dhs, dh = layer.backward(dout[:, t, :])
            dhs_enc += dhs
            dhs_dec[:,t,:] = dh

        return 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!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1650039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 面试经典150题 252.会议室

题目:给定一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] [starti, endi] ,请你判断一个人是否能够参加这里面的全部会议。 思路:因为一个人在同一时刻只能参加一个会议,因此…

QGraphicsView实现简易地图10『自适应窗口大小』

前文链接:QGraphicsView实现简易地图9『层级缩放显示底图』 自适应窗口大小 当地图窗口放大或缩小的时候,需要地图能够动态覆盖整个视口。 1、动态演示效果 2、核心代码 注:WHMapView继承自MapViewvoid WHMapView::resize() {if (m_curLev…

Linux\_c输出

第一条Linux_c输出 初界面 : ls # 显示目录下的文件cd # 进入到某个目录 # 比如 我进入了Codels # 发现没有显示, 说明为文件下为空vim cpucdoe.c # 创建一个 .c的源码文件进入到了vim的编辑界面: i # 按i 就可以进行编辑 , 下面显示插入标识在编辑模式下, 可以通…

纯血鸿蒙APP实战开发——底部面板嵌套列表滑动案例

介绍 本示例主要介绍了利用panel实现底部面板内嵌套列表,分阶段滑动效果场景。 效果图预览 使用说明 点击底部“展开”,弹出panel面板。在panel半展开时,手指向上滑动panel高度充满页面,手指向下滑动panel隐藏。在panel完全展开…

netty 高性能架构设计--零拷贝

文章目录 前言一、直接内存1.1 什么是直接内存1.2 代码实现1.3 使用直接内存的优缺点 二、netty 零拷贝设计2.1 netty 直接内存2.2 netty 内存池 三、零拷贝的两种方式 前言 本篇从源码层面剖析 netty 高性能架构设计之零拷贝,并且扩展讲述零拷贝的两种实现方式。 …

免费在线录屏、无需注册、免费可用、无限制

免费在线工具 https://orcc.online/ 在线录屏 https://orcc.online/recorder pdf在线免费转word文档 https://orcc.online/pdf 时间戳转换 https://orcc.online/timestamp Base64 编码解码 https://orcc.online/base64 URL 编码解码 https://orcc.online/url Hash(MD5/SHA…

【C++STL详解(八)】--------stack和queue的模拟实现

目录 前言 一、stack模拟实现 二、queue的模拟实现 前言 前面也介绍了stack和queue的常见接口,我们也知道stack和queue实际上是一种容器适配器,它们只不过是对底层容器的接口进行封装而已,所以模拟实现起来比较简单!一起来看看是…

FastDFS-单机扩容

描述 周一上班收到用户反馈系统异常,紧急排查日志发现报错:FdfsServerException:错误:28,错误信息:没有足够的存储空间。 解决 根据异常信息判断是文件服务器可用内存不够了,首先登录文件服务器,使用df -h命令查看一…

学习和分析各种数据结构所要掌握的一个重要知识——CPU的缓存利用率(命中率)

什么是CPU缓存利用率(命中率),我们首先要把内存搞清楚。 硬盘是什么,内存是什么,高速缓存是什么,寄存器又是什么? 我们要储存数据就要运用到上面的东西。首先里面的硬盘是可以无电存储的&#…

VMware导入ova/ovf虚拟机文件

1.文件-打开-ova文件 2.为新虚拟机起名称 3.等待导入 4.导入完成,可以开始使用 参考链接:VMware导入ova/ovf虚拟机文件

C# OpenCvSharp 图片找茬

C# OpenCvSharp 图片找茬 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; namespace OpenCvSharp_Demo { public partial class Form1 : Form { …

初期Linux

一,系统分为 1.1window系统 个人 :win7,win8,Win10,Win11服务器版:window server 2003,window server 2008 1.2Linux系统 centos7redhatubantukali 1.3什么是Linux? Linux是基…

深入Django:用户认证与权限控制实战指南

title: 深入Django:用户认证与权限控制实战指南 date: 2024/5/7 18:50:33 updated: 2024/5/7 18:50:33 categories: 后端开发 tags: AuthDecoratorsPermissionsGuardianRESTAuthSessionMgmtMFA 第1章:入门Django与设置 1.1 Django安装与环境配置 在…

26 JavaScript学习:JSON和void

JSON 英文全称 JavaScript Object NotationJSON 是一种轻量级的数据交换格式。JSON是独立的语言JSON 易于理解。 JSON 实例 简单的 JSON 字符串实例: "{\"name\": \"Alice\", \"age\": 25, \"city\": \"San Francisco\&…

Transformer详解:从放弃到入门(三)

上篇文章中我们了解了多头注意力和位置编码,本文我们继续了解Transformer中剩下的其他组件。 层归一化 层归一化想要解决一个问题,这个问题在Batch Normalization的论文中有详细的描述,即深层网络中内部结点在训练过程中分布的变化问题。  …

最新版Ceph( Reef版本)块存储简单对接k8s

当前ceph 你的ceph集群上执行 1.创建名为k8s-rbd 的存储池 ceph osd pool create k8s-rbd 64 642.初始化 rbd pool init k8s-rbd3 创建k8s访问块设备的认证用户 ceph auth get-or-create client.kubernetes mon profile rbd osd profile rbd pool=k8s-rbd部署 ceph-rbd-csi …

【PCIE】基于PCIE4C的数据传输(四)——使用MSIX中断

基于PCIE4C的数据传输(三)——遗留中断与MSI中断 一文介绍了遗留中断与MSI中断两种中断方式的代码实现,本文继续基于Xilinx UltrascaleHBM VCU128开发板与linux(RHEL8.9),介绍MSIX中断方式的代码实现。本文…

英语新概念2-回译法-lesson12

第一次翻译 (稀巴烂) Our neiborhood,Capitain Charles Alison,will sail from P. We will ______ in the _. He will sit in his small boat, Topsail,Topsail is a famous boat. It has been across the A many times. Alison will sail at 8 o’cloc…

每日一题(力扣740):删除并获得点数--dp+思维

其实跟打家劫舍没啥区别 排序去重之后去考虑当前位置和前两个位置之间的关系即可&#xff0c;具体见代码&#xff1a; class Solution { public:int deleteAndEarn(vector<int>& nums) {int n nums.size();if (n 1) return nums[0];unordered_map<int, int>…

LLM⊗KG范式下的知识图谱问答实现框架思想阅读

分享一张有趣的图&#xff0c;意思是在分类场景下&#xff0c;使用大模型和fasttext的效果&#xff0c;评论也很逗。 这其实背后的逻辑是&#xff0c;在类别众多的分类场景下&#xff0c;尤其是在标注数据量不缺的情况下&#xff0c;大模型的收益是否能够比有监督模型的收益更多…