transformer-models

transformer-models

MATLAB深度学习变换器模型实现库

该项目提供MATLAB环境下的多种深度学习变换器模型实现,包括BERT、FinBERT和GPT-2。支持文本分类、情感分析、掩码标记预测和文本摘要等自然语言处理任务。项目特点包括预训练模型加载、模型微调、详细示例和灵活API,可用于研究和实际应用。

TransformerBERTMATLAB深度学习自然语言处理Github开源项目

MATLAB 的 Transformer 模型

CircleCI 在 MATLAB Online 中打开

本存储库在 MATLAB 中实现了深度学习 transformer 模型。

翻译

要求

BERT 和 FinBERT

  • MATLAB R2021a 或更高版本
  • Deep Learning Toolbox
  • Text Analytics Toolbox

GPT-2

  • MATLAB R2020a 或更高版本
  • Deep Learning Toolbox

入门

下载或克隆此存储库到你的机器上,并在 MATLAB 中打开它。

函数

bert

mdl = bert 加载预训练的 BERT transformer 模型,如有必要,会下载模型权重。输出 mdl 是一个结构体,包含字段 TokenizerParameters,分别包含 BERT 分词器和模型参数。

mdl = bert("Model",modelName) 指定要使用的 BERT 模型变体:

  • "base" (默认) - 一个 12 层模型,隐藏层大小为 768。
  • "multilingual-cased" - 一个 12 层模型,隐藏层大小为 768。分词器区分大小写。此模型在多语言数据上训练。
  • "medium" - 一个 8 层模型,隐藏层大小为 512。
  • "small" - 一个 4 层模型,隐藏层大小为 512。
  • "mini" - 一个 4 层模型,隐藏层大小为 256。
  • "tiny" - 一个 2 层模型,隐藏层大小为 128。
  • "japanese-base" - 一个 12 层模型,隐藏层大小为 768,在日语文本上预训练。
  • "japanese-base-wwm" - 一个 12 层模型,隐藏层大小为 768,在日语文本上预训练。此外,该模型在掩码语言建模(MLM)目标中启用了全词掩码进行训练。

bert.model

Z = bert.model(X,parameters) 使用指定参数对输入的 1-by-numInputTokens-by-numObservations 编码令牌数组进行 BERT 模型推理。输出 Z 是大小为 (NumHeads*HeadSize)-by-numInputTokens-by-numObservations 的数组。元素 Z(:,i,j) 对应输入令牌 X(1,i,j) 的 BERT 嵌入。

Z = bert.model(X,parameters,Name,Value) 使用一个或多个名称-值对指定附加选项:

  • "PaddingCode" - 对应填充令牌的正整数。默认值为 1
  • "InputMask" - 指示要包含在计算中的元素的掩码,指定为与 X 大小相同的逻辑数组或空数组。掩码在对应填充的索引位置必须为 false,在其他位置为 true。如果掩码为 [],则函数根据 PaddingCode 名称-值对确定填充。默认值为 []
  • "DropoutProb" - 输出激活的丢弃概率。默认值为 0
  • "AttentionDropoutProb" - 注意力层中使用的丢弃概率。默认值为 0
  • "Outputs" - 要返回输出的层的索引,指定为正整数向量或 "last"。如果 "Outputs""last",则函数仅返回最终编码器层的输出。默认值为 "last"
  • "SeparatorCode" - 指定为正整数的分隔符令牌。默认值为 103

finbert

mdl = finbert 加载用于金融文本情感分析的预训练 BERT transformer 模型。输出 mdl 是一个结构体,包含字段 TokenizerParameters,分别包含 BERT 分词器和模型参数。

mdl = finbert("Model",modelName) 指定要使用的 FinBERT 模型变体:

  • "sentiment-model" (默认) - 经过微调的情感分类器模型。
  • "language-model" - FinBERT 预训练语言模型,使用 BERT-Base 架构。

finbert.sentimentModel

sentiment = finbert.sentimentModel(X,parameters) 使用指定参数对输入的 1-by-numInputTokens-by-numObservations 编码令牌数组进行情感分类。输出情感是一个分类数组,类别为 "positive""neutral""negative"

[sentiment, scores] = finbert.sentimentModel(X,parameters) 还返回范围在 [-1 1] 内的对应情感分数。

gpt2

mdl = gpt2 加载预训练的 GPT-2 transformer 模型,如有必要,会下载模型权重。

generateSummary

summary = generateSummary(mdl,text) 使用 transformer 模型 mdl 生成字符串或 char 数组 text 的摘要。输出摘要是一个字符数组。

summary = generateSummary(mdl,text,Name,Value) 使用一个或多个名称-值对指定附加选项。

  • "MaxSummaryLength" - 生成摘要的最大令牌数。默认值为 50。
  • "TopK" - 生成摘要时要采样的令牌数。默认值为 2。
  • "Temperature" - 应用于 GPT-2 输出概率分布的温度。默认值为 1。
  • "StopCharacter" - 表示摘要完成的字符。默认值为 "."

示例:使用BERT对文本数据进行分类

预训练BERT模型最简单的用途是将其作为特征提取器。具体来说,您可以使用BERT模型将文档转换为特征向量,然后将这些向量用作输入来训练深度学习分类网络。

示例 ClassifyTextDataUsingBert.m 展示了如何使用预训练的BERT模型来分类工厂报告数据集中的故障事件。此示例需要Text Analytics Toolbox示例"准备文本数据用于分析"中的 factoryReports.csv 数据集。

示例:微调预训练的BERT模型

为了充分利用预训练的BERT模型,您可以针对您的任务重新训练和微调BERT参数权重。

示例 FineTuneBERT.m 展示了如何微调预训练的BERT模型,以分类工厂报告数据集中的故障事件。此示例需要Text Analytics Toolbox示例"准备文本数据用于分析"中的 factoryReports.csv 数据集。

示例 FineTuneBERTJapanese.m 展示了使用预训练的日语BERT模型的相同工作流程。此示例需要Text Analytics Toolbox示例"分析日语文本数据"中的 factoryReportsJP.csv 数据集,该数据集在R2023a或更高版本中可用。

示例:使用FinBERT进行情感分析

FinBERT是一个在金融文本数据上训练并针对情感分析进行微调的模型。

示例 SentimentAnalysisWithFinBERT.m 展示了如何使用预训练的FinBERT模型对金融新闻报告进行情感分类。

示例:使用BERT和FinBERT预测被掩蔽的标记

BERT模型被训练来执行各种任务。其中一项任务被称为掩蔽语言建模,即预测文本中被掩蔽值替换的标记。

示例 PredictMaskedTokensUsingBERT.m 展示了如何使用预训练的BERT模型预测被掩蔽的标记并计算标记概率。

示例 PredictMaskedTokensUsingFinBERT.m 展示了如何使用预训练的FinBERT模型预测金融文本中被掩蔽的标记并计算标记概率。

示例:使用GPT-2进行文本摘要

像GPT-2这样的Transformer网络可以用于对文本进行摘要。经过训练的GPT-2 transformer可以在给定初始单词序列作为输入的情况下生成文本。该模型是在各种网页和互联网论坛上留下的评论上进行训练的。

由于许多这些评论本身包含以"TL;DR"(太长不看)声明标示的摘要,您可以通过在输入文本后附加"TL;DR"来使用transformer模型生成摘要。generateSummary 函数接收输入文本,自动附加字符串"TL;DR"并生成摘要。

示例 SummarizeTextUsingTransformersExample.m 展示了如何使用GPT-2对一段文本进行摘要。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多