NTU ML2023Spring Part2.6 Transformer

news/2025/2/4 9:38:01/文章来源:https://www.cnblogs.com/x383494/p/18697979

License: CC BY-NC-SA 4.0

seq2seq:输出长度由模型自行决定。例如语音识别,机器翻译。

即使不是 seq2seq 的问题,也可以用 seq2seq model 大力出奇迹。例如文法剖析,将「deep learning is very powerful」拆成「(S (NP deep learning) (VP is (ADJV very helpful)))」这种形式(感觉像 lisp)。简单来说就是把语法树转成括号序列,是个序列就能上 seq2seq. seq2seq 还可以用于 multi-label classification,在这种任务里一个物品可以同时属于多个种类。由于不知道 label 的数目,因此可以看成一个不定长的 sequence,然后就是熟悉的 seq2seq 了。还有图像中的物品识别,一张图中物品个数不是定值。

一般的 seq2seq 会分为 encoder 和 decoder 两块。encoder 要做的就是输入一排向量,输出另一排向量。transformer 的 encoder 就包含了 self-attention(以及一些别的层)。encoder 使用 residual network。它由多个 block 组成,对一个 block,它把输入和经过 self-attention 层的输出相加,做 layer normalization(对一个向量考虑它的所有维度均值和方差的 normalization). 完了之后再扔给 fc 层,(normalization 后的向量)也与 fc 层的输出结果相加,然后再 layer normalization,这就是 residual network 里一个 block 干的事。

也有别的设计可以做到更优。上面是原论文的架构。

下面是 decoder. 一种常见的 decoder 是 autoregressive,以语音识别为例。它读入由 encoder 产生的向量序列和自己已经生成的 token,然后生成下一个 token。decoder 的架构与 encoder 大同小异,每个 block 从一层 self-attention 变为连续的两层 masked self-attention。所谓 masked,就是一个词只能注意到它自己和之前的词,把注意力矩阵相应部分设为 \(- \infty\) 再做 softmax 即可实现。

decoder 的输入最前方要加一个特殊的 token 标记开始,输出最后要加一个 token 标记结束。这两个 token 由于不同时出现,可以直接用同一个表示开始和结束。

与 autoregressive(AT)对应的就是 non-autoregressive(NAT). NAT 输入 encoder 的输出和一堆 begin token,每个 begin token 对应输出一个 token. 但如何知道要输出多长呢?

有两种策略:

  • 用一个 classifier 决定输出长度
  • 输入一大堆 begin token,然后忽略 end token 之后的东西

NAT 的优势是它可以并行计算,但一般来说 NAT 的表现还是打不过 AT。

encoder 的输出不是直接给 decoder 当输入的,中间还有 cross attention. 它看起来有点像缝合怪,\(\vec q\) 来自 decoder,\(\vec k, \vec v\) 来自 encoder. 得到的结果会丢给 fc 层。但是 encoder 和 decoder 都有很多层,拿哪些层呢?原始的论文里是拿 encoder 的最后一层给 decoder 的每一层,但其他的方式也可以尝试。

下面是训练的过程,以语音识别为例。先将数据进行人工标注(先考虑有标准答案的情况),decoder 输出每个字其实都是一个 distribution,所以可以上 cross entropy. 它和分类很像。但是 decoder 的输入来自自己之前输出的 token,所以为了避免一步错步步错,会采取 teacher forcing(把它之间输出的 token 换成标准答案并让它输出下一个 token)的方法。这个名字有种莫名其妙的感觉。

训练的一些 tips:

  • 有的时候机器不用自己创造,直接从输入里照抄就行。例如看到「我是某某」,回答「你好,某某」,就可以直接抄对方输入的名字。文章摘要的方法是类似的。详细介绍在 这个链接.

  • guided attention:避免机器漏掉输入序列的某些信息。详细了解可以搜索:monotonic attention, location-aware attention

  • 每次 decoder 输出一个 token 时,输出的实际上是一个概率分布。每次选概率最大的那个作为一种贪心算法,可能陷入局部最优,而 beam search 就是另一种搜索算法,用起来比较玄学。LHY 总结说标准答案越单一的任务越适合用 beam search.

  • 更有创造力的任务往往要在 decoder 里加一点随机性。(不完美反而是一种完美?)

  • 本课的作业评价标准是看 BLEU score,但训练时 loss 函数是 cross entropy. 当然也可以用 BLEU score 做 loss,但它不可微,于是梯度下降就失效了。

    但是 LHY 给了一个方法:遇到你在 optimization 无法解决的问题,用 reinforcement learning 硬 train 一发就行了。

  • 训练的时候看到的都是正确答案,但测试的时候不一定。这种现象叫 exposure bias,一种可能的解决方法是训练的时候就给 decoder 一些错误答案。这种方法叫 scheduled sampling.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Traefik新一代反代服务器,兼容所有主要的集群技术(二)

简介 笔记将记录如何使用docker配置traefik,代理一个gitea,自动申请tls证书,cloudflare反代80,443端口一系列实操。 daemon.json配置如下,主要是为了IPv6能访问,以及更改了主存储位置,配置了docker代理。{"data-root": "/storage/docker","ipv6…

macbookpro m3本地部署DeepSeek模型

macbookpro m3有着十分强大的性能。在deepseek如火如荼的当下,可以尝试在本地部署并使用。还可以将自己的文档作为语料喂给deepseek,使其能成为自己专属的AI助手。 本文介绍使用ollama在本地部署deepseek模型,并使用chatbox优化访问的步骤。 下载ollama https://ollama.com …

基于生成式AI的访问控制, 迁移传统安全策略到基于LLM的风险分类器

基于规则的风险分类风险分类是网络安全系统的核心能力之一,它将访问请求和命令映射到其风险级别/类别:高(High)、中(Medium)、低(Low)。目前,即便是在大规模环境中,风险分类器仍主要采用基于规则的系统实现。基于规则的分类器易于以符合人类直觉的方式定义——这也使…

坐标系与向量

坐标系规定 一般使用左手坐标系,+x,+y,+z分别指向右方、上方、前方。 多坐标系 世界坐标系:协议某个点为原点,其他所有点都有具体不变的坐标,能够用世界坐标系描述其他坐标系的位置,而不能使用更大的、外部的坐标系来描述世界坐标系。 物体坐标系:和物体相关联的坐标…

Netty实战入门教程

概述 Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端 Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE 开发中的地位 以下的框架都使用了 Netty,因为它们有网络通信需求!Cassandra - nosql 数据库 Spark…

FFT入门

这是一个题图前置知识 复数 也可以参考高中数学课本,这里只会介绍 fft 需要的(默认已经入门复数)。 多项式的相关概念。 点值表示法:假设 \(f(x)\) 是一个 \(n-1\) 次多项式,那么将 \(n\) 个 不同的 \(x\) 代入,可以得到 \(n\) 个 \(y\)。这 \(n\) 个点对 \((x,y)\) 唯一…

GPUStack:一个开源的GPU集群管理和自动化部署大模型的LLM服务平台

正如我们以前文章中说过,在过去近两年中,AI发展速度超过任何历史时期,基于大模型的各类应用已经渗透到了各行各业中,很多企业都在积极探索如何利用大模型提高公司运营管理的能效。 阿里云 CTO 周靖人也说过““当下企业应用大模型存在三种范式:一是对大模型开箱即用,二是…

Deskflow:一个能在多个设备之间共享鼠标键盘的工具

有多台设备的同学肯定都感受过切换鼠标和键盘的痛苦。比如家里有个台式机配了键盘和鼠标,工作有台笔记本,但是如果想用家里的键盘和鼠标操作笔记本那么除了插拔线(蓝牙也一样),好像没有其他特别的办法。 以为我个人为例,插拔切换鼠标键盘,最头疼的就是以下两个点: 线缆…

DeepSeek + Dify :零成本搭建企业级本地私有化知识库保姆级喂饭教程

最近,DeepSeek大火,想必大家都有所耳闻,各路媒体从各个方面报道了DeepSeek这家神秘的公司的各方面消息,这家低调的技术公司用一组硬核数据回应了所有关注: 千亿参数规模下实现0.5元/百万tokens的API调用成本,91.5%的中文基准测试得分,推理效率较传统架构提升5倍。 DeepS…

[Tools] Vite intro

Overview为什么选Vite: https://cn.vite.dev/guide/why.htmlesbuild, Rollup: https://cn.vite.dev/guide/why.html#why-bundle-for-production Quick start 1. Start a new project pnpm init 2. installl Vite, Typescript pnpm add vite typescript -D 3. create index.ht…

在做同城多活方案中如何实现机房之间的数据同步?

一、前言 现在是数据的时代,如何发挥数据的价值,让系统具备更多的数据处理能力。如何完善响应的数据架构。多机房建设是其中的解决策略。 二、背景 在业务初期,考虑到投入成本,很多公司通常只用一个机房提供服务。但随着业务发展,流量不断增加,我们对服务的响应速度和可用…