0%

层次分解位置编码 (Hierarchical Decomposition of Position Encoding)

论文标题: 层次分解位置编码,让BERT可以处理超长文本
作者: 苏剑林
时间: 2020-12-04
核心算法名: 层次分解位置编码
论文链接: https://spaces.ac.cn/archives/7947

背景

BERT模型最多能处理512个token的文本。这一瓶颈的根本原因是BERT使用了从随机初始化训练出来的绝对位置编码,一般的最大位置设为了512,因此顶多只能处理512个token,多出来的部分就没有位置编码可用了。另一个重要的原因是Attention的$O(n^2)$复杂度,导致长序列时显存用量大大增加,一般显卡也finetune不了。

解决问题

如何简单修改当前最大长度为512的BERT模型,使得它可以直接处理更长的文本。主要思路是层次分解已经训练好的绝对位置编码,使得它可以延拓到更长的位置。

Read more »

打造更强大的Transformer - Google

文章作者:苏剑林,发布时间:2020-04-13,核心算法名:Low-Rank Bottleneck in Multi-head Attention Models & Talking-Heads Attention,文章链接:https://spaces.ac.cn/archives/7325

背景

自《Attention is All You Need》一文发布后,基于Multi-Head Attention的Transformer模型开始流行起来,而去年发布的BERT模型更是将Transformer模型的热度推上了又一个高峰。然而,技术的探索是无止境的,改进的工作也相继涌现:有改进预训练任务的,比如XLNET的PLM、ALBERT的SOP等;有改进归一化的,比如Post-Norm向Pre-Norm的改变,以及T5中去掉了Layer Norm里边的beta参数等;也有改进模型结构的,比如Transformer-XL等;有改进训练方式的,比如ALBERT的参数共享等。

解决问题

以上的这些改动,都是在Attention外部进行改动的,也就是说它们都默认了Attention的合理性,没有对Attention本身进行改动。而本文我们则介绍关于两个新结果:它们针对Multi-Head Attention中可能存在建模瓶颈,提出了不同的方案来改进Multi-Head Attention。

Read more »

Java 模拟58登录(二) 实现

实习期间需要做一个模拟58登录然后爬取简历,之前已经写了一篇分析,现在具体实现过程

Read more »

单元测试与Spring框架

参考博客
源代码

当进行单元测试的时候,需要给对象的依赖一个mock对象
但是对于Spring项目对象的私有成员,我们无法访问给他一个mock对象.这个时候我们就需要ReflectionTestUtils,他能够像Spring一样注入filed,通过手动给私有成员一个mock对象

Read more »

开源代码学习

无聊至极,学习一下一些简单的开源项目

Webbench

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。 –by 林木

Read more »

大小尾端

提到体系结构时,经常遇到大小尾端的概念,这里做个总结。
big endian:大尾端,也称大端(高位)优先存储。
little endian:小尾端,也称小端(低位)优先存储。
如下00000000 00000000 00000000 00000001的存储

Read more »

实习期间需要做一个模拟58登录然后爬取简历,第一次做项目遇到很多坑
同时网上关于58登录的又没有很多资料,遇到了很多坑,这里记录一下,方便自己以及他人学习

Read more »

想看书籍c++系列

转自知乎

阶段 1

《Essential C++》

这是一本内容不多但很实用的C++入门书籍,强调快速上手与理解C++编程。本书主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只学到C++的函数和结构,也会学习到它们的设计目的和基本原理。

Read more »