李宏毅机器学习入门笔记——第四节

news2024/11/18 3:22:37

自注意力机制(常见的神经网络结构)

上节课我们已经讲述过 CNN 卷积神经网络 和 spatial transformer 网络。这次讲述一个其他的常用神经网络自注意力机制神经网络。
对于输入的变量长度不一的时候,采用frame的形式,进行裁剪设计。
对于模型输入输出,存在几种情况:
(1) n个输入对应n个输出
(2) n个输入对应一个输出
(3) n个输入对应多个输出

输入输出数目问题
对于不定长输入数据的时候,可以进行裁剪变帧进行输入,但是对于模型的训练就是需要查看前后frame的关系,进行结果的关联,如何实现的这个关联,就是使用self-attention机制进行设计。
self-attention作为一个层,进行前后输入数据的关联。其实本质上就是全部关联的过程。
self-attention的两种方式
实现self-attention关联程度的两种方式,其中对于输入的每个变量与其它变量的关联程度使用阿法表示,如上图,计算这个程度的方式有两种。
左边的方法也是常用在transformer的方法。而左边的方式计算过程如下:
计算关联性
计算出变量的q 然后计算和其他变量的关联性,最后做一个softmax
计算过程第二部
对于计算过程,使用矩阵计算能够更快速的计算
转为矩阵计算
计算为矩阵计算
转为矩阵计算
尝试使用多个head的超参数设定,来设计关联程度,计算过程就是多了对应的head参数矩阵计算。多个head的自关注机制
但是对于上面讲述的算法中,没有关于位置信息的加入,假如输入的变量前后是具有关联性的话,就需要使用位置信息编码:
位置咨询
对不同位置都有不同的e,但是是通过人为设定的。
对于长段的输入的时候,可能存在导致attention matrix过大,所以使用小个范围进行设计。
self-attention可以用在语音输入、图片输入。
语音输入对于每个frame进行处理,而对于图片输入,可以进行多通道的关联进行特征提取。

self-attention 和 CNN

self-attention和CNN的关系

CNN是self-attention的特例,self-attention弹性比较大,对于数据量较大的时候训练效果会更好。

self-attention 和 RNN

对于RNN的缺点就是从左到右进行逐步分析,不想self-attention进行平行计算。
self-attention和RNN

self-attention for graph

对于图的计算使用self-attention,就是一种的GNN,对于图中点与点的关系,类似于数据结构上的图的关系,进行矩阵表示,表示对应的权重。
图的self-attention

Recurrent Neural Network(RNN)

对于网络存在记忆能力,所以需要额外的空间记录信息,因为在使用过程中,我们遇到很多时候都有顺承关系的输入。
对于RNN的输入会考虑输入变量的顺序。
对于RNN存在两种方式,一种是下面左边的存储每一层的输出值,另一种是像右边存储整个网络的最终输出值。
两种RNN

可以训练正向和反向的RNN。
两边训练的RNN

Long Short-term Memory(LSTM)

存在三个gate。进行存储,全部都是自己训练得出判断gate。
RNN因为每次新的input都会把memory洗掉,而下面的结构能够较长时间的保存短期的数据。
LSTM
对于LSTM模型如下,就是通过sigmoid进行判断,是否要进行计算、输出等操作。
LSTM模型
LSTM例子
对于LSTM运行如下,将输入input形成对应的四个gate的输入的矩阵,再进行判断使用,同时c矩阵表示是记忆cell进行存储信息。
LSTM运行
对于更加复杂的LSTM,也就是最终形态,使用的是需要查看上一个c矩阵进行判断,也就是peephole,同时还需要加上上一个输出的值综合考虑。
更为复杂的LSTM
目前常用的RNN就是使用LSTM,而对于keras直接使用就可以了。
对于RNN的训练是比较困难的,可能会出现梯度爆炸的问题,但是解决这个问题的方式就是LSTM,解决梯度消失和梯度爆炸问题。主要是因为对于memory和输入的操作是相加操作,对于这个memory的影响不会消失直到forget gate打开,可以适当的消除memory。
解决RNN的缺点
![解决RNN的方式![](https://img-blog.csdnimg.cn/6d1711d39c8546eaaed0b7eb0d768d0b.png)

语音辨识关于RNN

对于语音输入的过程,使用RNN进行关联前后关系进行整体识别。
对于语音辨识的输入输出使用的多对多的关系,使用了CTC进行判断,将输出进行压缩。

Attention-based Model (RNN的进阶)

除了RNN网络存在记忆单元以外,这个模型也可以实现

RNN对比structured learning

对比

Graph Neural Network

主要就是突出图的关系,首先进行convolution卷积操作,提取特征。
将变量分为各种关系,将其关系录入到关系网中,其中运行逻辑有:
每个变量的相关节点进行相加

NN4G model

NN4G
NN4G
对于readout层使用
NN4G

DCNN

将距离相等的权重相加平均进行计算。
DCNN
最后将对应每次的不同变量进行计算机得出最后的结果。
DCNN

MoNet

对于距离进行重新计算机,更换不同的函数形式
MoNET

GraphSAGE

GraphSAGE

GAT

GAT
GAT

GIN

对于每层关系函数使用sum函数将关联的变量相加,主要是如果不用相加,使用mean或者maxpool 存在无法区分的情况。
GIN

Graph Signal Pro

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
矩阵A表示对应的图各个节点相连的对称矩阵判断,而D表示A每行的和
在这里插入图片描述
下面举一个例子进行判断:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于L函数可以知道,主要是因为L可能会影响到所有的点,但是我们希望影响是局部的。可以使用 ChebNet进行固定对应的范围。
在这里插入图片描述
在这里插入图片描述
为了解决问题三计算量较大的问题,可以使用公式的转换,对应的就是一个filter,过滤数据,转换以下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用一个递推的公式转换原本的x变量,同时求解对应的filter会更加快速,复杂度会降低。

GCN

在这里插入图片描述
在这里插入图片描述

Graph Generation 图片生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(上面这一块的 GNN不是很熟悉 需要进一步了解底层的原理)

Unsupervised Learning Word Embedding(无监督学习之词嵌入)

通过词汇的含义进行划分分类,不用特意的定制过多的词汇进行分类one-hot导致输出过大。
通过机器读取大量的文章,了解对应的词汇,生成单词变量的过程是无监督的,结果也是不知道的。
维数会比 1-N encoding的方式低


如何找出单词的含义
count based 和 prediction based 的两种方式,前者假如两个单词频繁的同时出现的次数,同时两者的word vector会比较接近,同时计算两个单词的内积,将这两者越接近越好。后者是预测的概念,预测下一个单词的几率,输入的是1-N encoding

在这里插入图片描述
在这里插入图片描述
但是对于一个单词预测下一词汇,关联性很弱,所以需要进行共享变量,多个单词共同输入。

在这里插入图片描述
在这里插入图片描述
参数共享,对于不同输入变量的权重w初始值一样,同时能够将梯度下降的过程合并一起。
在这里插入图片描述
对于prediction based 有种种变形。
将两边的词汇推测中间的单词,
或者将中间词汇推测两边的单词。

在这里插入图片描述

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

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

相关文章

Astra Pro点云代码

github上找到的python读取点云的代码 import timeimport cv2 as cv import numpy as np import open3d from openni import _openni2 from openni import openni2SAVE_POINTCLOUDS True # 是否保存点云数据def get_rgbd(color_capture, depth_stream, depth_scale1000, dept…

猫头虎分享已解决Bug || 依赖问题:DependencyNotFoundException: Module ‘xyz‘ was not found

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

VirtualBox虚拟机安装 Linux 系统

要想学习各种计算机技术,自然离不开Linux系统。并且目前大多数生产系统都是安装在Linux系统上。常用的Linux系统有 Redhat,Centos,OracleLinux 三种。 三者的区别简单说明如下: Red Hat Enterprise Linux (RHEL): RHEL 是由美国…

QEMU之内存虚拟化

内存虚拟化方案 最直观的方案,将QEMU进程的虚拟地址空间的一部分作为虚拟机的物理地址。但该方案有一个问题: 在物理机上,CPU对内存的访问在保护模式下是通过分段分页实现的,在该模式下,CPU访问时使用的是虚拟地址&am…

算法--时空复杂度分析以及各个数据量对应的可使用的算法(C++;1s内)

这里写目录标题 由数据范围反推算法时间复杂度以及算法内容一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 由数据范围反推算法时间复杂度以及算法内容 一级目录 二级目录 二级目录…

龙蜥 Anolis OS8.4 设置IP

1、配置文件路径 /etc/sysconfig/network-scripts/ [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ [rootlocalhost network-scripts]# ls ifcfg-ens32 进入配置文件路径后,展示。ifcfg-ens32这个不同的服务器不一样,本次虚拟机所对应的是ens3…

labelme 使用笔记

下载和安装 labelme官网地址 在Anaconda环境下 conda create -n labelme python3.6 conda activate labelme # go https://anaconda.org/ to find pkg conda install conda-forge/label/cf202003::labelme安装好了,查看版本和使用帮助 labelme -V labelme -h用l…

【机器人最短路径规划问题(栅格地图)】基于蚁群算法求解

基于蚁群算法求解机器人最短路径规划问题的仿真结果 仿真结果 收敛曲线变化趋势 蚁群算法求解最优解的机器人运动路径 各代蚂蚁求解机器人最短路径的运动轨迹

pandas/geopandas 笔记:逐record的轨迹dataFrame转成逐traj_id的轨迹dataFrame

我们现在有这样的一个dataframe,名字为dart 我们需要这样一个DataFrame,每一行有两列,一列是new_installation_id,表示这个轨迹的id;另一列就是这个new_installation_id的轨迹 dart_new dart[[new_installation_id]]…

使用HTML5画布(Canvas)模拟图层(Layers)效果

使用HTML5画布(Canvas)模拟图层(Layers)效果 在图形处理和计算机图形学中,图层(Layers)是指将图像分成不同的可独立编辑、组合和控制的部分的技术或概念。每个图层都可以包含不同的图形元素、效…

你真的了解C语言的枚举和联合吗~

目录 1. 枚举1.1 枚举类型的定义1.2 枚举的优点1.3 枚举的使用 2. 联合(共用体)2.1 联合类型的定义2.2 联合的特点2.3 使用联合体判断当前机器的大小端2.4 联合大小的计算 1. 枚举 枚举顾名思义就是一一列举。 把可能的取值一一列举。 比如我们现实生活…

华为云磁盘挂载

华为云磁盘挂载 磁盘挂载情况 fdisk -l 2. 查看当前分区情况 df -h 3.给新硬盘添加新分区 fdisk /dev/vdb 4.分区完成,查询所有设备的文件系统类型 blkid 发现新分区并没有文件系统类型(type为文件系统具体类型,有ext3,ext4,xfs,iso9660等…

如何一步一步地优化LVGL的丝滑度

经过一番周折将LVGL移植到了STM32F407单片机上,底层驱动的LCD是st7789,移植时的条件和环境如下: ●LVGL用的是单缓冲,一次刷新10行; ●刷新函数用的是最原始的一个一个打点的方式; ●ST7789底层发送数据用的…

寒假开学在即,怎么寄行李才能便宜省钱呢?

在度过了一个充实愉快的假期之后,小伙伴们就要踏上新的征程了,来面对新学期的到来,可是,面对这么多不知道怎么安排的行李可就把人给愁死了,如果通过驿站寄行李的话,又要花费一大笔快递费了,可是…

IAudioManager.cpp源码解读

IAudioManager.cpp源码如下: 源码路径:https://cs.android.com/android/platform/superproject/main//main:frameworks/native/services/audiomanager/IAudioManager.cpp;drc84410fbd18148d422d3581201c67f1a72a6658c4;l147?hlzh-cn /** Copyright (C)…

基于springboot实现线上阅读系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现线上阅读系统演示 摘要 随着社会发展速度的愈来愈快,以及社会压力变化的越来越快速,致使很多人采取各种不同的方法进行解压。大多数人的稀释压力的方法,是捧一本书籍,心情地让自己沉浸在情节里面,以…

【Linux】TCP应用与相关API守护进程

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 1. 相关使用接口2. 代码实现2.1 日志组件2.2 Server端2.3 Client端2.3 bug解决 3. 守…

动态规划|【斐波那契数列模型 】|面试题08.01三步问题

目录 题目 思路 普通思路 动态规划思路 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 代码 空间优化 题目 题目链接 面试题 08.01. 三步问题https://leetcode.cn/problems/three-steps-problem-lcci/ 三步问题。有个小孩正在上楼梯&#xff0c;楼梯有n…

【JAVA日志】关于日志系统的架构讨论

目录 1.日志系统概述 2.环境搭建 3.应用如何推日志到MQ 4.logstash如何去MQ中取日志 5.如何兼顾分布式链路追踪 1.日志系统概述 关于日志系统&#xff0c;其要支撑的核心能力无非是日志的存储以及查看&#xff0c;最好的查看方式当然是实现可视化。目前市面上有成熟的解决…

今天面试了一个工作4年的测试工程师,一问连自动化基础都不知道,还反过来怼我..

金三银四黄金期&#xff0c;我们公司也开始大量招人了&#xff0c;我这次是公司招聘的面试官之一&#xff0c;主要负责一些技术上的考核&#xff0c;这段时间还真让我碰到了不少奇葩求职者 昨天公司的HR小席刚跟我吐槽&#xff1a;这几个星期没有哪天不加班的&#xff01;各种…