我们用transformer干啥?

article/2025/10/7 6:47:56

点击下面卡片关注我呀,每天给你送来AI技术干货!

来自:AI部落联盟

前言

2021年4月,距离论文“Attention is all you need”问市过去快4年了。这篇论文的引用量正在冲击2万大关


笔者所在的多个学习交流群也经常有不少同学在讨论:transformer是什么?transformer能干啥?为什么要用transformer?transformer能替代cnn吗?怎么让transformer运行快一点?以及各种个样的transformer技术细节问题。

解读以上所有问题不再本文范畴内,但笔者也将在后续文章中继续探索以上问题。本文重点关注:我们用transformer干啥?

我们用transformer干啥?笔者突然发现这句话有两种理解(orz中文博大精深),希望我的语文不是体育老师教的。

  1. 疑问句:

    我们使用transformer在做什么?

    解决什么深度学习任务?

  2. 反问句:

    我们用用transformer干啥?

    为啥不用LSTM和CNN或者其他神经网络呢?

疑问句:用transformer干啥?

谷歌学术看一眼。


为了简洁+有理有据回答这个问题(有缺失之处忘大家指出),笔者首先在谷歌学术上搜寻了一下“Attention is all you need”看了一下被引,到底是哪些文章在引用transformer呢?

“Attention is all you need”被引:19616次。

先看一下前几名引用的被引:

  • 最高引用的“Bert:Pre-training of deep bidirectional transformers for language understanding"被引:17677次。BERT在做自然语言处理领域的语言模型。

  • 第2和4名:“Squeeze and Excitaion Networks”被引用6436次,“Non-local neural networks”。计算机视觉领域,但还没有直接用transformer

  • 第3名:“Graph attention networks”被引用3413,一种图神经网络,该文也不是直接使用transformer的,但使用了attention

  • 第5和6名:“Xlnet:Generalized autoregressive pretraining for language undersstanding“ 2318次和 ”Improving language understanding by generative pretraining“ 1876次。自然语言处理领域预训练/语言模型/生成模型。

  • 第7名“self-attention generative adversarial networks” 1508次。基于self-attetnion的生成对抗网络。

  • 第8、9、10都属于自然语言处理领域,一个是GLUE数据集,一个做multi-task learning。

从Top的引用已经看出自然语言处理领域肯定是使用transformer的大头了。随后笔者对熟悉的深度学习任务关键词搜了一下被引用:

  • 计算机视觉领域vision前2的被引用:“Vibert”和“Stand-alone self-attetnion in vision model”分别为385和171次。

  • 语音信号处理领域speech:“state-of-the-art speech recognition with sequence-to-sequence model” 被引710次。

  • 多模态任务modal:“Unicoder-Vl:

  • A universal encoder for vision and language by cross-model pre-training。

  • 检索领域etrieval:“multilingual universal sentence encoder for semantic retrieval”被引73次

  • 推荐领域recommendation:惊讶的我发现居然只有10篇文章orz。

初步结论:transformer在自然语言处理任务中大火,随后是语音信号领域和计算机视觉领域,然后信息检索领域也有所启航,推荐领域文章不多似乎刚刚起步。

执着的笔者扩大搜索范围直接谷歌搜索了一下,找到了这篇文章BERT4Rec(被引用128):"BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer"。

Github上搜一搜。

排名第1的是HuggingFace/transformers代码库。笔者对这个库还算熟悉,但最近疯狂新增的模型缺失还没有完全跟进过,于是也整理看了一下。

图1 HuggingFace/transformers代码库关系图

如图1所示,左边展示了Huggingface/transformers代码库能处理的各种深度学习任务,中间展示的是处理这些任务的统一流水线(pipeline),右边展示的是与任务对应的transformers模型名称,下方表示用transformers解决这些深度学习任务可以在cpu或者gpu上进行,可以使用tensorflow也可以使用pytorch框架。

那么根据谷歌和github结果基本可以得到这个核心结论啦:transformer能干啥?目前已有的transformer开源代码和模型里自然语言处理任务占大头(几乎覆盖了所有自然语言处理任务),随后是计算机视觉和语音信号处理,最后自然而然进行多模态信号处理啦,推荐系统中的序列建模也逐步开始应用transformer啦。


有一点值得注意:自然语言处理里,所有研究同学的词表库基本统一,所有谷歌/facebook在大规模语料上预训练的transformer模型大家都可以使用。推荐系统不像自然语言处理,各家对user ID,Item ID或者物品类别ID的定义是不一样的,所以各家的pretrain的模型基本也没法分享给其他家使用(哈哈哈商业估计也不让分享),也或许也是为什么transformer的开源推荐系统较少的原因之一吧,但不代表各大厂/研究机构用的少哦。

反问句:用transformer干啥?

为什么非要使用transformer呢?

笔者从一个散修(哈哈修仙界对修炼者的一种称呼)的角度聊一聊自己的看法。

  • 不得不用。

    首先谷歌/Facebook一众大厂做出来了基于transformer的BERT/roberta/T5等,刷新了各种任务的SOTA,还开源了模型和代码。

    注意各种任务啊,啊这,咱们做论文一般都得在几个数据集上验证自己的方法是否有效,人家都SOTA了,咱得引,得复现呀,再说,站在巨人的肩上创下新SOTA也是香的。

  • 的确好用。

    Transformer是基于self-attetion的,self-attention的确有着cnn和lstm都没有的优势:

    比如比cnn看得更宽更远,比lstm训练更快。

    重复累加多层multi-head self-attetion还在被不短证明着其强大的表达能力!

  • 改了继续用。

    如果不说transformer的各种优点,说一个大缺点自然就是:

    参数量大、耗时耗机器。

    但这些问题又被一众efficient transformers再不断被解决。

    比如本来整型数运算的硬件开发板无法使用transformers,随后就有INT-BERT说我们不仅可以用,还能更快更好。

  • 上手就用。

    以Huggingface/Transformers为例子,一个代码库包含多种深度学习任务,多个开源的transfromer模型,各种预训练transformer模型,以至于各种深度学习任务上手就来,十分方便。

    笔者似乎并没有看到其他模型结构有如此大的应用范围和规模了。

  • 未来还要用。

    从上一章节可以看出,transformer这股风已经从自然语言处理领域吹出去了,其他领域的SOTA也在不断被transformer打破,那么以为这,自然语言处理领域的历史逐渐在其他领域复现(当然只是笔者个人观点哈)。

后记

以上就是今天想聊的话题,希望大家喜欢。Transformers交流群中也不断有新的问题和细节的探讨产生。比如:

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

点击上面卡片,关注我呀,每天推送AI技术干货~

整理不易,还望给个在看!

http://chatgpt.dhexx.cn/article/r8nqXf95.shtml

相关文章

通信工程师,到底是干啥的?

作为一名通信工程师 小枣君无数次被人问到以下问题: 每次 小枣君都要不厌其烦地解释 久而久之,越描越黑 干脆,就懒得解释了 如今,又到了一年一度的校招季 眼瞅着很多年轻人 投了通信岗位的简历 却又不知道这些岗位具体是做什么的 …

不知道Gartner是干啥的?看看这里就知道了!

点击上方“蓝字”关注我们吧 在IT行业工作的小伙伴经常会听到Gartner,尤其是当某个厂商进入了Gartner的报告,就会听到厂商大佬的产品介绍中提到Gartner,反正在我们的印象中听上去是一个很牛的公司做的一个很牛的事情,那究竟Gart…

Python到底是干啥的?

说到Python,高科技产业链,下游服务业。 那么你作为一个普通人如何理解Python是什么,可以用来干什么? Python 是一种多范式,通用,解释的高级编程语言。Python 允许程序员使用不同的编程风格来创建简单或复…

window.print网页打印——打印htmlbody的实际高度,而不是看到的内容

文章目录 文章参考问题描述使用chrome保存图片功能——验证问题3测试代码测试结果测试结论 使用浏览器打印功能为pdf打印的API通用JS代码——将网页总具体的某段保存为pdf天坑——为什么我打印的时候只显示当前页禁止页面打印 样式在class中,如何获取DOM的样式&…

页码在html中怎么设置,如何设置网页打印的网址、日期、页码等?

2005-12-22 怎样更改网页打印时的外观? 在“文件”菜单上,单击“页面设置”。 在“页边距”框中,键入页边距(以英寸为单位)。 在“方向”下面,单击“纵向”或“横向”,指定要纵向还是横向打印页面。 在“页眉”和“页脚”框中&am…

ASP.NET网页打印

昨晚朋友要求在前段时间完成的新闻的网站上加上一个功能,就是在每篇新闻浏览的页面, 加一个打印铵钮。让用户一点打印,能把整篇文章打印。一开始Insus.NET建议朋友,叫用户使用IE浏览器的打印功能,但是朋友说&#xff0…

网页打印怎样去掉网址

在打印设置里面去掉一个页眉和页脚前的勾就可以了

网页打印与导出word实现在A4纸上相同效果

在工作中遇到这样一个需求,客户要求: 1、实现在浏览器中打印和导出到word中,要求浏览器打印出来的效果和word中打印的效果基本一致。2、打印的内容要自动分页,第一页的顶部有文件头,最后一页的底部有页尾。 这里记录…

网页打印文档,不弹出浏览器打印对话框设计思路

一、需求 客户提出一个功能,在浏览器上点击打印按钮,不弹出浏览器的打印对话框,让打印机直接打印所需内容。 二、过程 在接收到该需求后,就去查询相关资料,查询到一个解决方案,使用ie插件,由于…

网页打印表格

如标题所说就是调用网页打印器来打印表格,先说以下具体实现步骤: 将数据查询出来(因为网页的打印器是打印的当前网页的内容,所以需要新建一个页面专门用来打印数据用) 查询出来的数据保存到请求中,在把请求…

页面打印不全怎么办html css,win7打印网页显示不全怎么办|win7设置网页打印页面的方法...

‍‍ 有很多win7 32位系统的用户反馈,在使用浏览器的网页打印功能时,发现打印出来的网页显示不全,内容超出了纸张,遇到win7打印网页显示不全怎么办呢?出现打印网页显示不全很有可能是网页打印页面设置出了问题&#xf…

Javascript网页打印大全

目录 普通打印(整页打)打印去掉/添加页眉页脚 使用外部控件/方法实现多功能打印 打印背景 普通打印(整页打) window.print(); 打印网页内部分内容(自定义) 用css控制 media print .a {display:block}…

java.util. 什么意思_java.util中,util是什么意义

展开全部 1. util包的框架 常用的集合类主要636f70793231313335323631343130323136353331333431343630实现两个“super接口”而来:Collection和Map。 1.1 Collection有两个子接口:List和Set List特点是元素有序,且可重复。实现的常用集合类有…

Java.util包简单总结

之前听一位老师讲过,学Java的程序员,lang包和util包至少是要过一遍的。 很惭愧的是,从入门到现在,我还没完整的探究过这两个基础包。 今天借着跟公司小伙伴分享的机会,把util包简单的梳理一遍。由于最近加班很多&…

mysql-Util

将13位的时间戳字符串转换为4位的年的字符串 FROM_UNIXTIME(CONVERT(UPLOAD_TIME/1000 , signed),"%Y") 年结果: 将10位的时间戳字符串转换为4位的年的字符串 FROM_UNIXTIME(CONVERT(UPLOAD_TIME , signed),"%Y") 年结果: 根据A…

Util类简单介绍

集合简单介绍 一. Set集合 1.不包含重复元素、无序的元素集合 且存和取顺序不一致 无索引 2.Set集合的实现类有HashSet和LinkedHashSet Set接口继承于Collection接口 3.Set集合中没有get()方法 只有add(Element e)方法 没有add(key,Element)方法 4. 如:HashSet mySe…

史上最全总结!Util、POJO、domain、entity、model、DAO、DTO、view、mapper、service、controller的作用和区别分析

文章目录 前言工具类层Util 数据层POJO对象domainentitymodelviewDTO总结 数据访问层DAOmapper 业务层service 控制层Controller 前言 做开发项目时,总会遇到这些包,理清他们的层次,非常有助于我们对于项目的理解和建立。 现阶段CSDN上貌似…

vivado case_【vivado(3)】序列检测/状态机

手机上不好看可用电脑看 (1)首先建立一个工程名叫seq_det: 详细步骤可查看: 【vivado(1)】vivado软件的简单使用 【vivado(2)】计数器/testbench仿真 (2)建立一个design source如下所示: 右击design source, 选择add or create design source, 然后next 选择create file, …

vivado dcp生成

dcp与edif (write_edif命令生成) 比较: dcp主要有两个优点:第一个不需要手动生成stub文件,dcp是一个 压缩包里面包含所有文件。 第二个不需要xdc,尤其对于使用ip的设计。同时还可以使用加密功能。 不同阶段产生的dcp也不相同&a…

vivado ip打包归档

一般来说,要保存vivado工程使用的ip只需要xci文档即可。 但xci文档不仅仅是包含对应ip的配置信息,同样记录了一些path路径,以及ip核的属性(core container/ooc等) 使能core container后,将会以xcix方式保存ip核信息&…