transformer之预训练task小析(五)

2024-09-04 13:08

本文主要是介绍transformer之预训练task小析(五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    上接transformer预训练task之小析(四)

     首先思考一个问题,怎么表示掌握了一门语言?

     最好的方式可能体现在遣词造句上吧,比如饱受诟病的八股文上有很多的旷世奇作[1],比如很多读起来朗朗上口的👇

天对地,雨对风。大陆对长空。山花对海树,赤日对苍穹。雷隐隐,雾蒙蒙。日下对天中。风高秋月白,雨霁晚霞红。牛女二星河左右,参商两曜斗西东。十月塞边,飒飒寒霜惊戍旅;三冬江上,漫漫朔雪冷渔翁。河对汉,绿对红。雨伯对雷公。烟楼对雪洞,月殿对天宫。云叆叇,日曈朦。腊屐对渔蓬。过天星似箭,吐魄月如弓。驿旅客逢梅子雨,池亭人挹藕花风。茅店村前,皓月坠林鸡唱韵;板桥路上,青霜锁道马行踪。山对海,华对嵩。四岳对三公。宫花对禁柳,塞雁对江龙。清暑殿,广寒宫。拾翠对题红。庄周梦化蝶,吕望兆飞熊。北牖当风停夏扇,南檐曝日省冬烘。鹤舞楼头,玉笛弄残仙子月;凤翔台上,紫箫吹断美人风。

     我们的语言教育也正是从遣词造句开始的,组词的基本训练,完形填空,各种题目衡量的对于语言的深层语义的理解,而这不正是MLM体现的东西嘛,其他预训练任务也可以找到类似的对照

        

    而在更早期的训练形式更贴近于多模态,尚在牙牙学语不会写字的时候就通过看图说话,看图连线的方式来建立图像和声音,图像和文字的联系了。所以,不负责任地说,灵长类高级是不是就在于天然具有可以处理多模态信息的复杂构造啊。

    回到多模态预训练的主题,图像和文本联合起来的关键在于把二者投影到同一个表征空间,在这个表征空间里,两者的信息可以互相补充,验证,就可以达到我们想在多模态上做的事情了。在预训练任务上采用的预训练任务有:

     MVLM

    Masked Visual-Language Model,正是从MLM延伸而来。做法上会mask文本的部分token,通过使用图像和未mask的文本来对mask掉的文本内容进行预测,图像会提供mask掉token的位置信息,以及整个文本的布局信息。

    MDC

    Multi-label Document Classication,通过对图像tag分类来实现统一,比如给一张图像,会将图像中文本内容的要点作为tag。

    Text-image alignment strategy

    图文对齐,在图像上遮挡text部分,通过文本内容预测图像是否遮挡

    Text-image matching strategy

    图文相关,这个比较好理解,判断图文内容是否相关

任务明确以后,来到结构部分。一图以蔽之,整个结构还是非常明了的,在预处理阶段,对图文分别进行编码,统一编号后送入transformer模型,在模型输出上执行各种任务

    上code

# 模型部分,分别计算图,文embedding,联合作为transformer输入,得到outingdef forward(self,input_ids=None,bbox=None,image=None,attention_mask=None,token_type_ids=None,position_ids=None,head_mask=None,inputs_embeds=None,encoder_hidden_states=None,encoder_attention_mask=None,output_attentions=None,output_hidden_states=None,return_dict=None,):output_attentions = output_attentions if output_attentions is not None else self.config.output_attentionsoutput_hidden_states = (output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states)text_layout_emb = self._calc_text_embeddings(input_ids=input_ids,bbox=bbox,token_type_ids=token_type_ids,position_ids=position_ids,)
​visual_emb = self._calc_img_embeddings(image=image,bbox=visual_bbox,position_ids=visual_position_ids,)final_emb = torch.cat([text_layout_emb, visual_emb], dim=1)
​extended_attention_mask = final_attention_mask.unsqueeze(1).unsqueeze(2)
​extended_attention_mask = extended_attention_mask.to(dtype=self.dtype)extended_attention_mask = (1.0 - extended_attention_mask) * -10000.0
​if head_mask is not None:if head_mask.dim() == 1:head_mask = head_mask.unsqueeze(0).unsqueeze(0).unsqueeze(-1).unsqueeze(-1)head_mask = head_mask.expand(self.config.num_hidden_layers, -1, -1, -1, -1)elif head_mask.dim() == 2:head_mask = head_mask.unsqueeze(1).unsqueeze(-1).unsqueeze(-1)head_mask = head_mask.to(dtype=next(self.parameters()).dtype)else:head_mask = [None] * self.config.num_hidden_layers
​encoder_outputs = self.encoder(final_emb,extended_attention_mask,bbox=final_bbox,position_ids=final_position_ids,head_mask=head_mask,output_attentions=output_attentions,output_hidden_states=output_hidden_states,return_dict=return_dict,)sequence_output = encoder_outputs[0]pooled_output = self.pooler(sequence_output)
​if not return_dict:return (sequence_output, pooled_output) + encoder_outputs[1:]
​return BaseModelOutputWithPoolingAndCrossAttentions(last_hidden_state=sequence_output,pooler_output=pooled_output,hidden_states=encoder_outputs.hidden_states,attentions=encoder_outputs.attentions,cross_attentions=encoder_outputs.cross_attentions,)

  

 

    需要说明的是,本文提到的预训练任务处理的都是Visual rich document,偏向于文档领域。但在多模态处理上,指导思想是不变的,绕不开对图文同一表征空间的映射,在结构上就表现为双塔结构(如代码中的_calc_text_embeddings, _calc_image_embeddings)。从双塔结构出发,结合大规模未标注语料,又来到了全新的对比学习(contrastive learning)的领域:广阔天地,大有可为有木有

1、https://www.zhihu.com/question/55762656?from=timeline

2、https://github.com/microsoft/unilm/tree/master/layoutlm

3、https://arxiv.org/abs/1912.13318

4、https://arxiv.org/abs/2012.14740

5、https://arxiv.org/abs/2104.08836

6、https://github.com/microsoft/unilm

7、https://www.microsoft.com/en-us/research/project/document-ai/

8、https://zhuanlan.zhihu.com/p/370782081

这篇关于transformer之预训练task小析(五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136112

相关文章

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

多云架构下大模型训练的存储稳定性探索

一、多云架构与大模型训练的融合 (一)多云架构的优势与挑战 多云架构为大模型训练带来了诸多优势。首先,资源灵活性显著提高,不同的云平台可以提供不同类型的计算资源和存储服务,满足大模型训练在不同阶段的需求。例如,某些云平台可能在 GPU 计算资源上具有优势,而另一些则在存储成本或性能上表现出色,企业可以根据实际情况进行选择和组合。其次,扩展性得以增强,当大模型的规模不断扩大时,单一云平

神经网络训练不起来怎么办(零)| General Guidance

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。关键词:模型性能,Model Bias, Optimization, Overfitting。 零,领域背景 如果我们的模型表现较差,那么我们往往需要根据 Training l

如何创建训练数据集

在 HuggingFace 上创建数据集非常方便,创建完成之后,通过 API 可以方便的下载并使用数据集,在 Google Colab 上进行模型调优,下载数据集速度非常快,本文通过 Dataset 库创建一个简单的训练数据集。 首先安装数据集依赖 HuggingFace datasetshuggingface_hub 创建数据集 替换为自己的 HuggingFace API key

Transformer从零详细解读

Transformer从零详细解读 一、从全局角度概况Transformer ​ 我们把TRM想象为一个黑盒,我们的任务是一个翻译任务,那么我们的输入是中文的“我爱你”,输入经过TRM得到的结果为英文的“I LOVE YOU” ​ 接下来我们对TRM进行细化,我们将TRM分为两个部分,分别为Encoders(编码器)和Decoders(解码器) ​ 在此基础上我们再进一步细化TRM的

【YOLO 系列】基于YOLOV8的智能花卉分类检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言: 花朵作为自然界中的重要组成部分,不仅在生态学上具有重要意义,也在园艺、农业以及艺术领域中占有一席之地。随着图像识别技术的发展,自动化的花朵分类对于植物研究、生物多样性保护以及园艺爱好者来说变得越发重要。为了提高花朵分类的效率和准确性,我们启动了基于YOLO V8的花朵分类智能识别系统项目。该项目利用深度学习技术,通过分析花朵图像,自动识别并分类不同种类的花朵,为用户提供一个高效的花朵识别

深度学习与大模型第3课:线性回归模型的构建与训练

文章目录 使用Python实现线性回归:从基础到scikit-learn1. 环境准备2. 数据准备和可视化3. 使用numpy实现线性回归4. 使用模型进行预测5. 可视化预测结果6. 使用scikit-learn实现线性回归7. 梯度下降法8. 随机梯度下降和小批量梯度下降9. 比较不同的梯度下降方法总结 使用Python实现线性回归:从基础到scikit-learn 线性