1.【信息抽取】UIE——基于prompt的案案例信息抽取模型(附源码)
2.基于梯度的NLP对抗攻击方法
3.轻松理解ViT(Vision Transformer)原理及源码
4.NLP修炼系列之Bert(二)Bert多分类&多标签文本分类实战(附源码)
5.分享10篇最新NLP顶级论文,有研究竟提出:给大型语言模型(LLM)增加水印
6.AI - NLP - 解析npy/npz文件 Java SDK
【信息抽取】UIE——基于prompt的例源信息抽取模型(附源码)
信息抽取是NLP任务中的一个常见模块,旨在从自然文本中提取关键信息结构。分析通过例子理解,案案例例如从"新东方烹饪学校在成都"中提取"新东方烹饪学校"与"成都"作为实体。例源
命名实体识别(NER)是分析you游内部源码提取词语级别的实体任务,而关系抽取(RE)则更进一步,案案例关注实体之间的例源关系。序列标注(Sequence Labeling)方法通过为文本中的分析每个词分配类别标签,来实现信息抽取。案案例
序列标注面临实体重叠问题,例源指针网络(Pointer Network)通过为每个实体单独预测解决此问题。分析它设计多头网络,案案例为每个实体分别预测起始和结束位置,例源确保实体重叠问题得到解决。分析
UIE(基于prompt的指针网络)旨在提供更灵活的信息抽取方式。它通过引入prompt参数,允许模型在输入时激活与特定实体类型相关的参数,从而实现不同实体的抽取任务。此方法解决了模型结构随实体类型变化而变化的问题,同时可以高效处理实体关系抽取任务。
UIE的实现相对简洁,主要包含构建起始层和结束层,以及计算损失函数(BCE Loss)以优化模型。通过这种机制,UIE不仅简化了模型结构的调整,还提高了任务处理的灵活性和效率。
完整源码可供查阅,实现了一个高效且灵活的信息抽取解决方案,UIE展示了在信息抽取领域的创新与进步。
基于梯度的NLP对抗攻击方法
Facebook的研究团队在EMNLP上发布了一项名为“Gradient-based Adversarial Attacks against Text Transformers”的NLP通用攻击策略,源代码可在facebookresearch/text-adversarial-attack获取。
首先,研究者定义了模型,其中输入集[公式]和输出集[公式]。对于测试样本[公式],如果预测标签为[公式],则目标是找到与[公式]相近的对抗样本[公式],使其预测结果变为[公式]。通过定义函数[公式]来量化两者的接近程度,如果对抗样本[公式]满足[公式],则认为两者非常接近。
寻找对抗样本的过程转化为优化问题,如在分类问题中,使用margin loss作为对抗损失,公式为[公式]。源码手机建站当损失为0时,模型在超参数[公式]的影响下会预测错误。margin loss在年的研究中证明了对抗图像的有效性。
优化目标是通过梯度方法实现,给定对抗损失[公式],对抗样本生成的优化问题可以表述为[公式],通过引入可微的约束函数,如[公式],进行优化。
论文解决了文本数据中应用[公式]的困难,通过概率分布[公式],每个token独立采样。目标是优化参数矩阵[公式],使得[公式]成为对抗样本,优化目标函数[公式],可以包含对抗损失如margin loss。
文章还探讨了如何将概率向量输入模型,通过Gumbel-softmax进行平滑估计,引入梯度。同时,加入了流畅性和语义相似性约束,如因果语言模型和BERTScore,以生成更自然和语义连贯的对抗样本。
实验结果显示,作者的方法可以有效降低模型准确率至%以下,同时保持高语义相似度。消融实验揭示了流畅性约束对结果的影响。
尽管我最初误以为是关于Adversarial训练的内容,但实际研究的是Attack技术,这与我的研究领域不直接相关。
轻松理解ViT(Vision Transformer)原理及源码
ViT,即Vision Transformer,是将Transformer架构引入视觉任务的创新。源于NLP领域的Transformer,ViT在图像识别任务中展现出卓越性能。理解ViT的原理和代码实现在此关键点上进行。
ViT的核心流程包括图像分割为小块、块向量化、多层Transformer编码。图像被分为大小为x的块,块通过卷积和展平操作转换为向量,最终拼接形成序列。序列通过多层Transformer编码器处理,编码器包含多头自注意力机制和全连接前馈网络,实现特征提取和分类。aqs实现源码模型输出即为分类结果。
具体实现上,Patch Embedding过程通过卷积和展平简化,将大小为x的图像转换为x的向量序列。Transformer Encoder模块包括Attention类实现注意力机制,以及Mlp类处理非线性变换。Block类整合了这两个模块,实现完整的编码过程。
VisionTransformer整体架构基于上述模块构建,流程与架构图保持一致。代码实现包括关键部分的细节,完整代码可参考相关资源。
综上所述,ViT通过将图像分割与Transformer架构相结合,实现高效图像识别。理解其原理和代码,有助于深入掌握这一创新技术。
NLP修炼系列之Bert(二)Bert多分类&多标签文本分类实战(附源码)
在NLP修炼系列之Bert(二)的上一篇文章中,我们对Bert的背景和预训练模型进行了深入讲解。现在,我们将步入实战环节,通过Bert解决文本的多分类和多标签分类任务。本文将介绍两个实际项目,一个是基于THUCNews数据集的类新闻标题分类,另一个是我们公司业务中的意图识别任务,采用多标签分类方式。 1.1 数据集详解多分类项目使用THUCNews数据集,包含万个新闻标题,长度控制在-个字符,共分为财经、房产等个类别,每个类别有2万个样本。训练集包含万个样本,验证集和测试集各1万个,每个类别条。
多标签任务数据集来自公司业务,以对话形式的json格式存在,用于意图识别。由于隐私原因,我们无法提供,但网上有很多公开的多标签数据集,稍加调整即可适用。
1.2 项目结构概览项目包含Bert预训练模型文件、配置文件和词典等,可以从Huggingface官网下载。新江湖源码
datas 目录下存放数据集、日志和模型。
models 包含模型定义和超参数配置,还包括混合模型如Bert+CNN等。
run.py 是项目入口,负责运行训练。
train_eval.py 负责模型训练、验证和测试。
utils 提供数据预处理和加载工具。
2. 项目流程和环境要求 通过run.py调用argparse工具配置参数。安装环境要求Python 3.8,项目中已准备好requirements.txt文件。 3. 项目实战步骤 从构建数据集到模型定义,包括数据预处理、数据迭代器的创建、配置定义以及训练、验证和测试模块的实现。 4. 实验与总结 我们尝试了以下实验参数:num_epochs、batch_size、pad_size和learning_rate。在fine-tune模式下,Bert表现最佳,否则效果不佳。项目代码和数据集可通过关注布尔NLPer公众号获取,回复相应关键词获取多分类和多标签分类项目源码。分享篇最新NLP顶级论文,有研究竟提出:给大型语言模型(LLM)增加水印
新整理的最新论文又又来了,今天继续分享十篇今年最新NLP顶级论文,其中主要包括模型水印添加、状态空间模型在语言建模中的应用、指令元学习、大型模型训练效率提升、大模型到小模型推理能力转移、大模型简化、对话模型合规检测等。
模型添加水印:
大型语言模型 (LLM) 如 ChatGPT 可以编写文档、创建可执行代码和回答问题,通常具有类似人类的能力。然而,这些系统被用于恶意目的的风险也越来越大,因此检测和审核机器生成文本的使用能力变得关键。本文提出了「一个为专有语言模型加水印的框架」,以减轻潜在的危害。该水印对于人类是不可见,但可以通过算法检测的approve授权源码方式嵌入到生成的文本中,对文本质量的影响可以忽略不计,并且可以在不访问模型 API 或参数的情况下使用开源算法进行检测。
状态空间模型:
本文研究了「状态空间模型(SSM)在语言建模中的应用」,并将其性能与基于Attention的模型进行比较。作者发现,SSM在回调序列较早的Token以及在整个序列中做Token对比的时候存在困难。为解决这两个问题,他们提出了一种新的SSM层,称为H3,其在语言合成上与Attention模型相匹配,并接近于Transformer在OpenWebText上的性能。他们还提出了一种名为FlashConv的方法,提高了SSM在当前硬件上的训练效率,同时也让它们可以扩展到更长的序列。
指令元学习:
本文提出了一个「应用于指令元学习(instruction meta-learning)的大型基准」,该基准将8个现有基准的任务类别合并,总计包含了个自然语言处理(NLP)任务。作者评估了不同决策对性能的影响,例如:指令调整基准的规模和多样性、不同任务采样策略、有无示范的微调、使用特定数据集对推理和对话进行训练以及微调目标等。他们使用该基准来训练两个经过指令调指OPT的版本(为OPT-IML B和OPT-IML B),结果显示,这两个版本在四个不同的评估基准上表现出更好的泛化能力,优于普通的OPT模型。
训练效率提升:
本文提出了「一种名为 Cuation in Training (CiT) 的方法,旨在提高大型视觉语言模型的训练效率」,以方便更多机构的进行使用。CiT 自动选择高质量的训练数据来加速对比图文训练,并且不需要离线数据过滤管道,从而允许更广泛的数据源。该算法由两个循环组成:一个管理训练数据的外循环和一个使用管理的训练数据的内循环,这两个循环由文本编码器进行连接。 CiT 将元数据用于感兴趣的任务,例如类名和大量图像文本对,通过测量文本嵌入和元数据嵌入的相似性来选择相关的训练数据。实验表明,「CiT 可以显着加快训练速度,尤其是当原始数据量很大时」。
从大模型到小模型:
本文探索了「一种通过知识蒸馏将推理能力从大型语言模型转移到小型模型的方法」。作者指出,利用较大的“教师”模型的输出微调较小的“学生”模型可以提高一系列推理任务的性能,例如算术、常识和符号推理。论文中的实验表明,这种方法可以显着提高任务性能,例如,当在 PaLM-B 生成的思维链上进行微调时,将名为 GSM8K 的数据集上的较小模型的准确性从 8.% 提高到 .%。本文探索了「一种通过微调将推理能力从大型语言模型转移到较小模型的方法」并提出了“Fine-tune-CoT”,这是一种利用超大型语言模型(例如 GPT-3)的能力来生成推理样本并教授较小模型的方法。
大模型简化:
本文提出了「一种名为 SparseGPT 的新型模型简化方法」,它能够将大型生成预训练 Transformer (GPT) 模型中的权重数量至少减少%,并且无需进行任何再训练,并且精度损失最小。作者通过将 SparseGPT 应用于最大的开源模型 OPT-B 和 BLOOM-B ,在几乎没有增加复杂度的情况下,模型权重数量减少了 % 。该方法不仅还与权重量化方法兼容,并且可以推广到其他模式。
模型压缩对并行性的影响:
针对大规模Transformer 模型,本文「研究了不同模型压缩方法对模型并行性的有效性」。作者在当前主要流行的 Transformer 训练框架上使用三种类型的压缩算法进行了实证研究:基于修剪的、基于学习的和基于量化的。在 多个设置和 8 个流行数据集上评估这些方法,同时考虑了不同的超参数、硬件以及微调和预训练阶段。该论文提供了模型并行性和数据并行性之间差异的见解,并为模型并行性压缩算法的未来发展提供了建议。
对话模型合规发布判定:
本文工作「为从业者提供了一个框架,来判定end-to-end神经对话Agent的发布是否合规」。作者出发点是:对话式 AI 领域的最新进展以及从互联网上发布的基于大型数据集训练的模型可能产生的潜在危害。他们调查了最近的相关研究,强调了价值观、潜在的积极影响和潜在的危害之间的紧张关系。他们提出了一个基于价值敏感设计原则的框架,以帮助从业者权衡利弊,并就这些模型的发布做出符合规范的决策。
推荐阅读:
- [1] NLP自然语言处理:生成式人工智能(Generative AI)是 “未来” 还是 “现在” ?
- [2] 「自然语言处理(NLP)」 你必须要知道的 “ 十二个国际顶级会议 ” !
- [3] 年!自然语言处理 大预训练模型
- [4] NLP自然语言处理:分享 8 篇NLP论文,有研究惊奇发现:大语言模型除了学习语言还学到了... ...
- [5] 超详细!一文看懂从逻辑回归(Logistic)到神经网络(NN)
- [6] 北大 |一种细粒度的两阶段训练框架(FiTs)(开放源码)
- [7] NLP自然语言处理:NLP不断突破界限, 十篇必读的顶级NLP论文!
- [8] 颠覆传统神经网络!个神经元驾驶一辆车!
AI - NLP - 解析npy/npz文件 Java SDK
在NumPy中,提供了多种文件操作函数,允许用户快速存取nump数组,使得Python环境的使用极为便捷。然而,如何在Java环境中读取这些文件?此Java SDK旨在演示如何读取保存在npz和npy文件中的Python NumPy数组。
SDK提供了名为NpyNpzExample的功能示例。运行此示例后,命令行应显示以下信息,表示操作成功完成。
NumPy提供了多种文件操作函数,用于对nump数组进行存取,操作简便高效。本节将介绍如何生成和读取npz、npy文件。
使用**np.save()**函数,可以将一个np.array()数组存储为npy文件。
若需存储多个数组,**np.savez()**函数则更为适用。此函数的第一个参数是文件名,随后的参数为待保存的数组。若使用关键字参数为数组命名,非关键字参数传递的数组将自动命名为arr_0, arr_1, 等。
欲了解更多详情,请访问官网获取更多资源。
对于开源爱好者,Git仓库提供了项目源代码,欢迎访问以下链接进行探索:Git链接
基于PaddleNLP搭建评论观点抽取和属性级情感分析系统
基于PaddleNLP搭建评论观点抽取和属性级情感分析系统旨在实现对带有情感色彩的主观性文本进行深入分析与处理,广泛应用于消费决策、舆情分析、个性化推荐等领域。百度工程师将带来直播讲解,深入解读情感分析等系统方案,并带来手把手项目实战,详情请点击课程直通车。本项目源代码全部开源在PaddleNLP中。
情感分析任务包括语句级情感分析、评论对象抽取和观点抽取。其中,语句级别的情感分析在宏观上分析整句话的感情色彩,粒度较粗。而属性级别的情感分析则针对某一产品或服务的多个属性进行评论,能提供更具体、细致的分析结果。例如,关于薯片的评论“这个薯片味道真的太好了,口感很脆,只是包装很一般。”可以看出,顾客在味道和口感两个方面给出了好评,但在包装上给出了负面评价。这种细粒度的分析,对于商家改进产品或服务具有重要意义。
项目提出细粒度的情感分析能力,首先进行评论观点抽取,然后分析不同观点的情感极性。评论观点抽取采用序列标注方式,利用BIO的序列标注体系拓展标签,包括B-Aspect、I-Aspect、B-Opinion、I-Opinion和O。在抽取评论观点后,对评论属性和观点进行拼接,并与原文拼接作为独立训练语句,最终传入SKEP模型进行细粒度情感倾向分析。
评论观点抽取模型通过序列标注完成,训练、评估和测试数据集包含标签词典,数据集格式包含文本串和序列标签。数据加载、转换成特征形式,构造DataLoader后,基于SKEP模型实现评论观点抽取功能,进行文本数据输入和向量序列产生,基于CLS位置的输出向量进行情感分析。训练配置包括环境配置、模型参数定义等。
属性级情感分类模型同样基于SKEP模型实现,将处理好的文本数据输入SKEP模型进行编码,使用CLS位置对应的输出向量进行情感分类。训练配置、训练与测试定义完成后,模型训练与测试进行评估,模型效果最好的模型将被保存。在完成模型训练与测试后,可以使用全量数据训练好的评论观点抽取模型和属性级情感分类模型进行全流程情感分析预测。
基于PaddleNLP开源的PP-MiniLM实现属性级情感分类模型,利用模型蒸馏技术蒸馏出6层小模型,效果好、运行速度快。PP-MiniLM数据集在7项CLUE任务上的平均值表现良好。模型量化操作后,与SKEP-Large、PP-MiniLM进行性能和效果对比,展现出显著的性能提升。
加入PaddleNLP的QQ技术交流群,一起学习NLP技术,获得更多关于情感分析的信息。
史上最细节的自然语言处理NLP/Transformer/BERT/Attention面试问题与答案
经过精心整理,以下内容包含了史上最详尽的NLP面试问题,关注Transformer、BERT以及Self Attention,还包括Norm相关问题,旨在深入理解这些技术的细节。 问题精选自论文与实践,如Transformer的“Attention Is All You Need”和BERT的“Pre-training of Deep Bidirectional Transformers for Language Understanding”。深入学习,需要对这些基础模型有基本认知,包括Transformer的Pytorch源码、BERT的实现以及HuggingFace Transformers库。为何BERT首句加[CLS]标记?
BERT的Embedding相加对语义的影响如何?
BERT词掩码策略分别针对哪些情况?
为何选择%词进行mask,可否调整比例?
如何针对不同任务调整BERT的Fine-tuning方法?
限制BERT输入长度的原因是什么?
BERT中的非线性来源,multi-head attention是否线性?
BERT如何处理一词多义问题?
BERT输入细节,position id、type_id和attention_mask的作用是什么?
学习率warm-up策略的原理和目的?
BERT使用的Normalization结构及其区别?
ELMO与BERT的双向性差异何在?
BERT与Transformer Encoder的区别及其目的?
BERT的损失函数是什么?
Masked LM与Next Sentence Prediction任务的训练顺序?
Transformer的权重共享机制及其好处。
Transformer的点积模型缩放原因及multi-head attention的实现。
Transformer Encoder-Decoder交互及与seq2seq的区别。
multi-head attention降维的原因及好处。
XLNet如何利用上下文信息,双流注意力的作用和设计。
ALBERT的优化策略和与BERT的对比。
Attention与全连接层的区别,以及self-attention的细节。
Norm的基础操作及其在NLP中的应用。
面试中,面试官会关注你的实际应用和理解能力,因此理解Transformer/BERT在项目中的应用至关重要。本文旨在加深你对这些技术的理解,提升你的面试准备。 对于未解答的问题,鼓励思考和探索,我会在有空时补充答案。如需NLP相关咨询,欢迎提问。 参考资源链接省略。序列化推荐中的GRU与Transformer源码解析之一
GRU4Rec源码(TF版本):github.com/Songweiping/...
Transformer源码:github.com/kang/SASR...
序列化推荐领域中,GRU4Rec成功地将循环神经网络(NLP和时序预测常用)应用至推荐领域,此模型取得了良好效果。紧随其后的是"SASR",基于注意力机制的自适应序列推荐模型,实验表明其性能超越了GRU4Rec。
两篇论文的作者均在源码公开阶段,为研究者提供参考。我们深入剖析源码,后续系列文章将比较GRU4Rec与SASR的差异、联系与优缺点。
GRU4Rec模型结构简洁,采用门限循环神经网络,Embedding层处理item_id的one_hot编码,降低维度,便于优化。
并行化训练数据集优化了模型训练速度,构建了training_batch,便于使用GPU加速矩阵运算。
负采样技术提高了训练频率,利用同一时刻不同session中的item作为负样本。
模型设计了贝叶斯排序和TOP1等pairwise方法计算排序损失,认为pairwise结果优于pointwise。
实验数据集包括RSC和私有VIDEO集,结果表明GRU4Rec模型性能优秀,测试集评价指标包括召回率(recall)和倒序排名得分(mrr)。
深入分析模型的Tensorflow版本代码,主要从main.py和model.py文件开始,重点解析模型定义、损失函数、GRU4Rec核心代码、数据集初始化、模型训练与预测以及评估函数。
GRU4Rec的代码分析暂告一段落,后续将详细梳理SASR代码,目标是通过三篇文章全面探讨两个模型的细节。感谢关注。