1.【信息抽取】UIE——基于prompt的分源信息抽取模型(附源码)
2.分享10篇最新NLP顶级论文,有研究竟提出:给大型语言模型(LLM)增加水印
3.基于梯度的开源NLP对抗攻击方法
4.W2NER论文详解
5.NLP修炼系列之Bert(二)Bert多分类&多标签文本分类实战(附源码)
6.AI - NLP - 解析npy/npz文件 Java SDK
【信息抽取】UIE——基于prompt的信息抽取模型(附源码)
信息抽取是NLP任务中的一个常见模块,旨在从自然文本中提取关键信息结构。分源通过例子理解,开源例如从"新东方烹饪学校在成都"中提取"新东方烹饪学校"与"成都"作为实体。分源
命名实体识别(NER)是开源医保小程序源码提取词语级别的实体任务,而关系抽取(RE)则更进一步,分源关注实体之间的开源关系。序列标注(Sequence Labeling)方法通过为文本中的分源每个词分配类别标签,来实现信息抽取。开源
序列标注面临实体重叠问题,分源指针网络(Pointer Network)通过为每个实体单独预测解决此问题。开源它设计多头网络,分源为每个实体分别预测起始和结束位置,开源确保实体重叠问题得到解决。分源
UIE(基于prompt的指针网络)旨在提供更灵活的信息抽取方式。它通过引入prompt参数,允许模型在输入时激活与特定实体类型相关的参数,从而实现不同实体的抽取任务。此方法解决了模型结构随实体类型变化而变化的问题,同时可以高效处理实体关系抽取任务。
UIE的实现相对简洁,主要包含构建起始层和结束层,以及计算损失函数(BCE Loss)以优化模型。通过这种机制,UIE不仅简化了模型结构的调整,还提高了任务处理的灵活性和效率。
完整源码可供查阅,实现了一个高效且灵活的信息抽取解决方案,UIE展示了在信息抽取领域的创新与进步。
分享篇最新NLP顶级论文,有研究竟提出:给大型语言模型(LLM)增加水印
新整理的最新论文又又来了,今天继续分享十篇今年最新NLP顶级论文,其中主要包括模型水印添加、状态空间模型在语言建模中的应用、指令元学习、大型模型训练效率提升、大模型到小模型推理能力转移、大模型简化、对话模型合规检测等。
模型添加水印:
大型语言模型 (LLM) 如 ChatGPT 可以编写文档、企业微网站源码创建可执行代码和回答问题,通常具有类似人类的能力。然而,这些系统被用于恶意目的的风险也越来越大,因此检测和审核机器生成文本的使用能力变得关键。本文提出了「一个为专有语言模型加水印的框架」,以减轻潜在的危害。该水印对于人类是不可见,但可以通过算法检测的方式嵌入到生成的文本中,对文本质量的影响可以忽略不计,并且可以在不访问模型 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 自动选择高质量的训练数据来加速对比图文训练,并且不需要离线数据过滤管道,友点cms源码从而允许更广泛的数据源。该算法由两个循环组成:一个管理训练数据的外循环和一个使用管理的训练数据的内循环,这两个循环由文本编码器进行连接。 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] 颠覆传统神经网络!个神经元驾驶一辆车!
基于梯度的NLP对抗攻击方法
Facebook的研究团队在EMNLP上发布了一项名为“Gradient-based Adversarial Attacks against Text Transformers”的NLP通用攻击策略,源代码可在facebookresearch/text-adversarial-attack获取。
首先,研究者定义了模型,其中输入集[公式]和输出集[公式]。对于测试样本[公式],如果预测标签为[公式],则目标是找到与[公式]相近的对抗样本[公式],使其预测结果变为[公式]。通过定义函数[公式]来量化两者的接近程度,如果对抗样本[公式]满足[公式],则认为两者非常接近。
寻找对抗样本的过程转化为优化问题,如在分类问题中,使用margin loss作为对抗损失,公式为[公式]。当损失为0时,模型在超参数[公式]的影响下会预测错误。margin loss在年的研究中证明了对抗图像的有效性。
优化目标是通过梯度方法实现,给定对抗损失[公式],对抗样本生成的优化问题可以表述为[公式],通过引入可微的约束函数,如[公式],ckplayer如何修改源码进行优化。
论文解决了文本数据中应用[公式]的困难,通过概率分布[公式],每个token独立采样。目标是优化参数矩阵[公式],使得[公式]成为对抗样本,优化目标函数[公式],可以包含对抗损失如margin loss。
文章还探讨了如何将概率向量输入模型,通过Gumbel-softmax进行平滑估计,引入梯度。同时,加入了流畅性和语义相似性约束,如因果语言模型和BERTScore,以生成更自然和语义连贯的对抗样本。
实验结果显示,作者的方法可以有效降低模型准确率至%以下,同时保持高语义相似度。消融实验揭示了流畅性约束对结果的影响。
尽管我最初误以为是关于Adversarial训练的内容,但实际研究的是Attack技术,这与我的研究领域不直接相关。
W2NER论文详解
论文: arxiv.org/pdf/....
代码: github.com/ljynlp/W2NER
W2NER模型将命名实体识别(NER)任务转化为预测word-word(字-字)的关系,能够统一处理扁平实体、重叠实体和非连续实体三种NER任务。
模型假定摄入的句子X由N个token或word组成,X = { x_1,x_2,...,x_N},对每个word pair(x_i,x_j)中的两个word关系类别R进行预测,其中R属于{ None,NNW,THW-^*}。
以一个具体例子为例(蓝色箭头表示NNW、红色箭头表示THW-*),分析句子中两个症状实体“aching in legs”和“aching in shoulders”之间的关系,构建二维矩阵表示句子按word维度。
模型架构主要是预测word pair中两个word之间的关系,如图所示。
数据流转过程中,对output的最后一个维度取softmax,得到word-word pair,再进行关系解码。
模型中存在四种情况:扁平实体(情况a)、重叠实体(情况b)、扁平实体+非连续实体(情况c和情况d)。
源码中,B表示batch_size,L表示当前句子的长度。以句子“常建良,男”为例,实体为“常建良(Name类型)”,数据输入格式包括pieces2word、pieces2word、grid_mask2d、grid_labels等。
模型代码包括主类Model、ConvolutionLayer类、CoPredictor类、MLP类和Biaffine类。
参考资料包括博客、知乎专栏和参照代码。
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公众号获取,回复相应关键词获取多分类和多标签分类项目源码。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链接
人脸检测RetinaFace算法原理详解
RetinaFace是一个单阶段的人脸检测算法,是CVPR 接收的成果。它基于SSD算法原理,但具有独特的贡献和结构。本文将深入解析RetinaFace的原理、代码实现与关键点,旨在帮助读者理解人脸检测算法,并进一步深化对SSD算法的理解。
RetinaFace的主要贡献包括使用WIDER FACE数据集进行训练,并针对人脸检测中的挑战进行了改进。数据集包含,个图像和,个人脸框,具有较大的尺度、姿态、表情、遮挡和光照变化。数据集分为训练集(%)、验证集(%)和测试集(%),并通过场景分类随机采样进行划分。RetinaFace对数据集进行了额外的标注,包括5个人脸质量级别和5个人脸关键点(眼睛中心、鼻尖、嘴角)的标注。
RetinaFace的网络结构由特征金字塔、上下文模块和损失模块组成。特征金字塔将特征层通过1x1卷积改变通道数后,上采样相加,形成多尺度特征表示。上下文模块SSH通过引入较大尺寸的卷积核增大感受野,引入更多上下文信息。作者借鉴GoogleNet中的策略,使用多个小卷积代替大卷积,优化计算效率。三个特征层通过SSH输出,分别用于预测人脸边界框(BBOX)、关键点(Landmarks)和进行分类。
损失函数是RetinaFace的关键部分,包含分类损失、BBOX回归损失、关键点回归损失和Dense Regression分支带来的损失。损失函数设计确保了人脸检测的准确性,通过计算先验框与ground truth框的IOU,选择正负样本进行训练。
RetinaFace源码提供了一套完整的实现流程,从ResNet特征抽取到特征金字塔、上下文模块,最后进行分类、BBOX回归和关键点回归。代码结构清晰,易于理解。
理解RetinaFace的原理与实现,不仅能够深入了解人脸检测算法的核心机制,还能为后续的模型优化和应用提供重要参考。关注微信公众号 funNLPer,获取更多AI算法解析。
序列化推荐中的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代码,目标是通过三篇文章全面探讨两个模型的细节。感谢关注。