论文地址 ; 中文翻译 ; 代码地址 ; 视频地址 ; 本篇大部分内容来源 。只做整理补充,推荐去看李沐老师原视频,讲的真的很好
建议学习顺序:5min全局理解 -> 李沐老师论文讲解 -> 图解or手推BERT -> 代码讲解 ,都强力安利
图解 BERT真的非常适合过完论文对每一个小 part 都有所感受以后做整体串联!!我可太喜欢这个 up 了
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
摘要第一段:和哪两篇工作相关,区别是什么:BERT 是在 GPT 和 ELMo 的基础上的改动。
新的语言表征模型 BERT: Bidirectional Encoder Representations from Transformer,是 Transformers 模型的双向编码表示。与 ELMo 和 Generative Pre-trained Transformer 不同:
可以说,BERT 具有预训练、深度、双向这几个特点
摘要第二段:BERT 的好处(实例)
simple and empirically powerful
导言第一段:本篇论文关注的研究方向的一点点 background
注意,NLP 预训练很早之前存在,BERT 使 NLP 预训练 出圈了
导言第二段:摘要第一段的扩充
每一个下游的任务 都去构造一个和 这个任务相关的 神经网络介绍别人工作的目的:铺垫自己方法的好
导言第三段:当前相关技术的局限性
已知相关工作的局限性,+ 解决局限性的想法 -- > 导言第四段: 如何解决?
BERT 通过 MLM(Masked language model) 带掩码的语言模型 作为预训练的目标,来减轻 语言模型的单向约束
导言第五段:文章的贡献
从左看到 和 从右看到左的模型独立训练 + shallow concatenation 拼在一起近期实验表明,非监督的预训练模型很好, 资源不多的任务也能
本文拓展前任的结果到 deep bidirectional architectures,使同样的预训练模型能够处理大量的 NLP 任务
近年来语言模型迁移学习的研究表明:
锐评:A + B 缝合工作 or C 技术解决 D 领域的问题,不要觉得想法小、不值得写出来;简单朴实的写出来。简单好用 说不定会出圈 ?
非监督的基于特征表示的工作:词嵌入、ELMo 等
单词表征学习是多年来较活跃的研究领域。预训练的词嵌入被认为是现代 NLP 系统的组成部分,与从头学习的嵌入相比提供了显着的改进
这些方法已经被推广到更粗的粒度,如句子嵌入或段落嵌入。与传统词嵌入一样,这些学习到的表征通常用作下游模型中的特征
ELMo将传统的词嵌入研究概括为不同维度。他们建议从语言模型中提取语境敏感型特征。把语境字词嵌入与现有任务特定架构集成时,ELMo 针对一些主要的 NLP 基准
非监督预训练 -> 微调:GPT 等,一种源于语言模型(LMs)的迁移学习新趋势
产生 contextual token representations 的句子或文档 encoders 从未标记文本中预先训练,然后对有监督的下游任务进行微调
这些方法的优点是几乎不需要从头学习参数。部分基于这一优势,OpenAI GPT(Radford et al.,2018)在 GLUE 基准测试中的许多句子级任务上取得了前所未有的先进成果
在有监督有标号的数据上做迁移学习
NLP 有监督 的大数据集:natural language inference and machine translation
CV 做的还不错,ImageNet 训练好、再做迁移
NLP 表现不那么好:可能差别确实很大,且 NLP 数据远远不够
BERT 发现:
BERT 有两个任务:预训练 + 微调
预训练和微调不是 BERT 的创新,CV 里用的不少
李沐老师锐评:有关于预训练和微调的介绍 就很好,哪怕之前已经被使用。
如果假设读者都知道论文的技术,而只给 Ref 会让读者很懵。论文写作要自洽,简单的说明就好,避免读者不知道预训练和微调,增加理解文章的障碍。
预训练+微调示意图:

下游任务:创建同样的 BERT 的模型,权重的初始化值来自于 预训练好 的权重。
MNLI, NER, SQuAD 下游任务有 自己的 labeled data, 对 BERT 继续训练,得到各个下游任务自己的的 BERT 版本。
multi-layer bidirectional Transformer encoder:一个多层双向 Transformer 的解码器,基于 transformer 的论文和代码
主要调了三个参数:
主要两个 size:
BERT 模型复杂度和层数 L 是线性关系, 和宽度 H 是 平方关系。
因为 深度 变成了 以前的两倍,在宽度上面也选择一个值,使得这个增加的平方大概是之前的两倍
H = 16,因为每个 head 的维度都固定在了 64。因为你的宽度增加了,所以 head 数也增加了

BERT_base 的参数选取 和 GPT 差不多,可以比较公平地对比模型;BERT_large 刷榜
https://www.bilibili.com/video/BV1PL411M7eQ?t=1400.8
这篇讲的比较清楚: 一文懂“NLP Bert-base” 模型参数量计算
词向量的一个 remark: 词向量
下游任务有处理一个句子、有的处理 2 个句子,BERT 能处理不同句子数量的下游任务,使输入可以是 a single sentence and a pair of sentences (Question answer)
这里和 transformer 不同

上图是预训练整体过程:

上图是 Input embeddings、得到这个 token 的 embedding 的过程:
预训练的 key factors: 目标函数,预训练的数据
为什么 bidirectional 好? MLM 是什么?完形填空


其实这两个任务在真实场景都不算实用,我们只是希望得到副产品——对语言的”感觉“、得到最好的句子中词的 representation。毕竟如此大量的数据我们不希望都去标注,那能学会这些句子内的联系对我们来说就很好
2 个数据集:BooksCorpus (800 M) + English Wikipedia (2500 M)
使用一篇一篇文章,而不是随机打断的句子。 a document-level corpus rather than a shuffled sentence-level corpus
transformer 确实可以处理较长的序列,一整个文本的输入当然效果会好一些
根据下游任务,设计我们任务相关的输入和输出

softmax 得到 标号 labelsoftmax 哦顺便,微调比预训练便宜。TPU 1 hour, GPU a few hours.
很重要的一点事写出了具体对每一个下游任务到底是怎么样构造输入输出
General Language Understanding Evaluation (一般语言理解能力评估)
输出通过:

表 1 是 BERT 在 分类任务的表现

Stanford Question Answering Dataset 斯坦福问答数据集

具体计算 每个 token 是答案开始的概率,结尾词 E 的计算与之类似:
本文微调时,epochs = 3(数据扫三遍), 学习率 = 5e-5, batch_size = 32 【意义备忘】
略了一个 3 SQuAD v2.0 表现也很不错
Situations With Adversarial Generations 判断两个句子之间的关系,BERT 和之前的训练没多大区别,效果好。
总结:BERT 在不一样的数据集上,用起来很方便,效果很好。
输入表示成“一对句子的形式”,最后拿到 BERT 对应的输出,然后加一个输出层 softmax,完事了。
BERT 对 NLP 整个领域的贡献非常大,有大量的任务用一个相对简单、只改数据输入形式和最后加一个输出层,就可以效果很不错。
消融研究

去掉任何一个组成部分,BERT 的效果都会有打折,特别是 MRPC。
BERT 首先证明了大力出奇迹,引发了模型“大”战
现在:GPT-3 1000 亿可学习参数
没有微调的 BERT,将 pre-trained 得到的 BERT 特征作为一个静态的特征输入,效果没有 + 微调好
用 BERT 需要微调
老师锐评:写的就还可以
文章 1 个卖点,容易记。
但 BERT 是否要选择 'bidirectional' 双向性呢?
可以写,但也要写 双向性带来的不足是什么?
再看 BERT,有一个完整的解决问题的思路 ---- 大家对 DL 的期望
BERT 把 CV 的套路搬到了 NLP,1 个 3 亿参数的模型,展示:模型越大、效果越好。大力出奇迹。
为什么 BERT 被记住?
BERT 用了 ELMo, GPT 更大的训练数据集,效果更好;BERE 也被更大的训练数据集和更大的模型超越。
BERT 的引用率是 GPT 的 10 倍,影响力 ✔
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报
CSDN优秀解读:https://blog.csdn.net/jiaoyangwm/article/details/1266387752021https://arxiv.org/pdf/2103.14259.pdf关键解读在目标检测中标签分配的最新进展主要寻求为每个GT对象独立定义正/负训练样本。在本文中,我们创新性地从全局的角度重新审视标签分配,并提出将分配程序制定为一个最优传输(OT)问题——优化理论中一个被充分研究的课题。具体来说,我们将每个需求方(锚框)和供应商(GT标签)的单位传输成本定义为他们的分类和回归损失加权之和。在公式化后,找到最好的分配方案即为最小传播成本解决最优传输方案,
VXLAN简介定义RFC定义了VLAN扩展方案VXLAN(VirtualeXtensibleLocalAreaNetwork,虚拟扩展局域网)。VXLAN采用MACinUDP(UserDatagramProtocol)封装方式,是NVO3(NetworkVirtualizationoverLayer3)中的一种网络虚拟化技术。目的随着网络技术的发展,云计算凭借其在系统利用率高、人力/管理成本低、灵活性/可扩展性强等方面表现出的优势,已经成为目前企业IT建设的新趋势。而服务器虚拟化作为云计算的核心技术之一,得到了越来越多的应用。服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时,为
今天想要跟着沐神学习一下循环神经网络,在跑代码的时候,d2l出现了问题,这里记录一下解决的过程,方便以后查阅。李沐《动手学深度学习》d2l——安装和使用安装d2l解决Import“...“couldnotberesolved问题PermissionError:[WinError5]拒绝访问。:'..\\\data'安装d2l下载whl:https://www.cnpython.com/pypi/d2l/dl-d2l-0.15.1-py3-none-any.whl将下载的文件放到这里:在这个文件中右键,选择“在终端中打开”在终端中输入如下命令:condaactivatepytorch_envpi
目录一、原理部分1、什么是串行通信(1)并行通信与串行通信(2)串行通信的制式(3)串行通信的主要方式 2、配置串口(1)SCON和PCON:串行口1的控制寄存器(2)SBUF:串行口数据缓冲寄存器 (3)AUXR:辅助寄存器编辑(4)ES、PS:与串行口1中断相关的寄存器(5)波特率设置 3、串口框架编写二、程序案例一、原理部分1、什么是串行通信(1)并行通信与串行通信微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。并行通信:数据的各位同时发送与接收,每个数据位使用一条导线,这种方式传输快,但是需要多条导线进行信号传输。串行通信:数据一位一
这篇文章,主要介绍如何使用SpringCloud微服务组件从0到1搭建一个微服务工程。目录一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件(2)微服务依赖1.2、搭建注册中心(1)引入依赖(2)配置文件(3)启动类1.3、搭建配置中心(1)引入依赖(2)配置文件(3)启动类1.4、搭建API网关(1)引入依赖(2)配置文件(3)启动类1.5、搭建服务提供者(1)引入依赖(2)配置文件(3)启动类1.6、搭建服务消费者(1)引入依赖(2)配置文件(3)启动类1.7、运行测试一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件这里主要是使用的SpringCloudNetflix
Two-StreamConvolutionalNetworksforActionRecognitioninVideos双流网络论文精读论文:Two-StreamConvolutionalNetworksforActionRecognitioninVideos链接:https://arxiv.org/abs/1406.2199本文是深度学习应用在视频分类领域的开山之作,双流网络的意思就是使用了两个卷积神经网络,一个是SpatialstreamConvNet,一个是TemporalstreamConvNet。此前的研究者在将卷积神经网络直接应用在视频分类中时,效果并不好。作者认为可能是因为卷积神经