多模态再次统一!Meta发布自监督算法data2vec 2.0:训练效率最高提升16倍!
近几年人工智能领域的突破大多由自监督学习推动,比如BERT中提出的MLM (Masked Language Model) ,通过将文本中的部分单词遮盖后重新预测,使得海量无标记文本数据也能用来训练模型,自此开启了大规模预训练模型的新时代。但自监督学习算法也有明显的局限性,通常只适用于单一模态(如图像、文本、语音等)的数据,并且需要大量的算力从海量数据中进行学习。相比之下,人类的学习效率要显著高于当前的AI模型,并且可以从不同类型的数据中进行学习。
2022年1月,Meta AI发布了自监督学习框架data2vec,将三个模态的数据(语音、视觉和文本)通过一个框架整合起来,大有一统多模态的趋势。最近Meta AI发布了data2cec 2.0版本,主要在性能方面对上一代进行了改进:在精度相同的情况下,训练速度相比其他算法最高提升了16倍!
论文链接:https://ai.facebook.com/research/publications/efficient-self-supervised-learning-with-contextualized-target-representations-for-vision-speech-and-language
代码链接:https://github.com/facebookresearch/fairseq/tree/main/examples/data2vec
data2vec 1.0
目前来说,大部分机器学习模型仍然是基于有监督学习的模式,需要有专门的标注人员对目标数据打标签,但对于某些任务来说(比如地球上的几千种人类语言),收集标注数据是不可行的。
相比之下,自监督学习不需要告诉模型正确和错误,而是让机器通过观察世界来学习图像、语音和文本的结构。相关的研究成果促进了语音(如,wave2vec 2.0)、计算机视觉(例如,掩码自编码器)和自然语言处理(例如,BERT)等领域的发展。
data2vec的主要思路就是先建立一个教师网络,首先计算来自图像、文本或语音的目标表征。然后对数据进行掩码遮盖掉部分输入,并用一个学生网络重复该过程预测教师模型得到的表征。
也就是说,学生模型只能在接受「不完整输入信息」的同时预测「完整输入数据」的表示。为了保证两个模型的一致性,二者的参数时共享的,但在训练初期会让Teacher模型的参数更新更快。在实验结果上,data2vec在语音、视觉、文本等任务上对比baseline模型性能提升明显。
data2vec 2.0
data2vec提出了一个通用的自监督学习框架统一了语音、视觉和语言三个模态数据的学习,而data2vec2.0主要解决的痛点就是构建自监督模型需要大量的GPU做算力支撑才能完成训练。与最初的 data2vec 算法类似,data2vec 2.0预测数据的上下文化的表征(contextualized representations),或是神经网络的层次,而非预测图像的像素、文本段中的词或语音。
与常见的其他算法不同,这些所谓的目标表征是上下文化的,这意味着算法需要将整个训练示例考虑在内。
比如说,模型学习单词 bank 的表征是基于包含bank的整个句子,从而更容易推算出单词的正确含义,比如区分具体指代「金融机构」还是「河边的土地」。研究人员认为上下文化的目标会促进更丰富的学习任务,并使 data2vec 2.0比其他算法学习得更快。
data2vec 2.0通过以下三种方式提高了原始 data2vec 算法的效率:
1、为特定训练样例构建目标表征,并将该表征重用在掩码版本上。在掩码版本中,训练样例中的不同部分会被随机隐藏。随后两个版本学到的表征都会输入到学生模型中,为不同的掩码版本预测相同的上下文化的目标表征,从而有效地分摊了创建目标表征所需的计算量。
2、类似于掩码自编码器(masked autoencoder, MAE),学生模型中的编码器网络并不运训练样例中的空白部分(blanked out)。在图像实验中,大约80%的部分都是空白,从而显著节省了计算周期。
3、使用了一个更有效的解码器模型,不再依赖于Transformer网络,而是依赖于一个多层卷积网络。
实验部分
为了更直观地理解 data2vec 2.0 比 data2vec 和其他同类算法的效率要高多少,研究人员在计算机视觉、语音和文本任务相关的基准测试中进行了广泛的实验。实验中主要考虑最终的精确度以及预训练模型所需的时间,实验环境都是在相同的硬件上(GPU 的型号、数量等)来测量算法的运行速度。
在计算机视觉任务上,研究人员在标准 ImageNet-1K 图像分类基准上评估了 data2vec 2.0,模型通过该数据集可以学习图像表征。实验结果显示,data2vec 2.0可以等同于掩码自编码器(MAE)的准确性,但是速度要快16倍。
如果继续给data2vec 2.0算法更多的运行时间,它可以达到更高的精度,并且仍然会比MAE的速度快。
在语音任务上,研究人员在 LibriLanguage 语音识别基准上进行了测试,它的准确性是 wave2vec 2.0的11倍以上。
对于自然语言处理任务,研究人员在通用语言理解评估(GLUE)基准上评估了 data2vec 2.0,仅需一半的训练时间即可达到与 BERT 的重新实现 RoBERTa 相同的精度。
以上是多模态再次统一!Meta发布自监督算法data2vec 2.0:训练效率最高提升16倍!的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

char 数组在 C 语言中存储字符序列,声明为 char array_name[size]。访问元素通过下标运算符,元素以空终止符 '\0' 结尾,用于表示字符串终点。C 语言提供多种字符串操作函数,如 strlen()、strcpy()、strcat() 和 strcmp()。

避免 C 语言 switch 语句中 default 引发的错误的策略:使用枚举代替常量,限制 case 语句的值为枚举的有效成员。在最后一个 case 语句中使用 fallthrough,让程序继续执行以下代码。对于没有 fallthrough 的 switch 语句,始终添加一个 default 语句进行错误处理或提供默认行为。

C语言中没有内置求和函数,需自行编写。可通过遍历数组并累加元素实现求和:循环版本:使用for循环和数组长度计算求和。指针版本:使用指针指向数组元素,通过自增指针遍历高效求和。动态分配数组版本:动态分配数组并自行管理内存,确保释放已分配内存以防止内存泄漏。

default 语句在 switch case 语句中至关重要,因为它提供了一个默认处理路径,确保在变量值不匹配任何 case 语句时执行一个代码块。这可防止意外行为或错误,并增强代码的健壮性。

C语言函数返回值类型包括int、float、double、char、void以及指针类型。int用于返回整数,float和double用于返回浮点数,char返回字符。void表示函数不返回任何值。指针类型返回内存地址,注意避免内存泄漏。结构体或联合体可返回多个相关数据。

C语言函数是可重复利用的代码块,它接收输入,执行操作,返回结果,可将代码模块化提高可复用性,降低复杂度。函数内部机制包含参数传递、函数执行、返回值,整个过程涉及优化如函数内联。编写好的函数遵循单一职责原则、参数数量少、命名规范、错误处理。指针与函数结合能实现更强大的功能,如修改外部变量值。函数指针将函数作为参数传递或存储地址,用于实现动态调用函数。理解函数特性和技巧是编写高效、可维护、易理解的C语言程序的关键。

!x 的理解!x 是 C 语言中的逻辑非运算符,对 x 的值进行布尔取反,即真变假,假变真。但要注意,C 语言中真假由数值而非布尔类型表示,非零视为真,只有 0 才视为假。因此,!x 对负数的处理与正数相同,都视为真。

C语言中 !x 的用途不局限于取反:逻辑判断:判断是否为 0,比 x == 0 更简洁。控制程序流程或表示状态:利用 0 和非 0 表示真假。位运算:快速取反所有位(慎用)。
