自然语言处理
文章平均质量分 89
NLP
funNLPer
2 B A NB NLPer
展开
-
大模型基础知识
大语言模型基础知识原创 2024-05-27 21:54:47 · 1244 阅读 · 1 评论 -
双向最大匹配算法
假定分词词典中最长词有M个汉字符,则被处理文档的当前字符串中前M个字作为匹配字段,查找词典。若字典中存在这样M个字组成的词,则匹配成功,匹配字段作为一个词切分出来;若匹配不成功,将匹配字段最后一个字去掉,剩下的字符串重新进行匹配,如此进行下去,直至匹配成功。然后取下一个M字符进行匹配处理,直到文档被扫描完为止。原创 2024-03-27 22:49:05 · 637 阅读 · 0 评论 -
一文打通RLHF的来龙去脉
强化学习、RLHF、PPO、chatGPT、文生图、微调原创 2023-12-17 12:12:32 · 322 阅读 · 0 评论 -
大模型训练显存优化推理加速方案
当前的深度学习框架大都采用的都是fp32来进行权重参数的存储,比如Python float的类型为双精度浮点数fp64,pytorch Tensor的默认类型为单精度浮点数fp32。随着模型越来越大,加速训练模型的需求就产生了。在深度学习模型中使用fp32主要存在几个问题,第一模型尺寸大,训练的时候对显卡的显存要求高;第二模型训练速度慢;第三模型推理速度慢。其解决方案就是使用低精度计算对模型进行优化。本文主要讲解几种优化显存存储的方法。原创 2023-09-22 22:43:28 · 1644 阅读 · 0 评论 -
【论文阅读】InstructGPT: Training language models to follow instructions with human feedback
把语言模型变大并不意味着会让模型更好的理解用户意图,例如大的语言模型会生成一些不真实、有害的、没有帮助的输出给用户,换句话说,这些模型并没有和用户的意图对齐(aligned)。在这篇论文中我们展示了通过使用用户反馈来微调模型的方法,从而使得语言模型在一系列任务上与用户意图对齐。首先通过人工撰写和OpenAI API两种方式收集问题(prompts),然后人工来写这些问题的答案,从而构建成一个数据集,再使用这些数据集对GPT3进行有监督的微调;原创 2023-03-22 00:16:04 · 7768 阅读 · 3 评论 -
详解GPU显存和batch size的关系
GPU显存、规格指标;神经网络训练,显存占用原创 2023-09-15 23:45:18 · 4046 阅读 · 0 评论 -
CoSENT:比sentence bert更好的向量表征
本文是对https://spaces.ac.cn/archives/8847文章的总结有监督的文本表征主流方案是sentence bert,虽然sentence BERT效果还行,但是存在训练和预测不一致的问题,而一些文章也指出而如果直接优化预测目标cos值,效果往往特别差(如,我也尝试了下,效果貌似不是太差,甚至比sentence bert好一点)原创 2022-12-15 00:32:12 · 1141 阅读 · 0 评论 -
【论文阅读】多模态模型CoCa
在这项工作中,我们统一了单编码器、双编码器和编码器-解码器范式,并训练了一个包含三种方法优点的图像-文本基础模型。我们提出了对比Captioner模型(CoCa),该模型采用经过对比损失和captioning损失训练的编码器-解码器架构。如图1所示,我们将Transformer解码器解耦为两部分,分别是单模态解码器和多模态解码器。我们省略了单模态解码器中的交叉注意力来编码纯文本表示,并用交叉注意力将图像编码器的输出和多模态解码器级联起来,以学习多模态图像-文本表示。原创 2022-11-21 22:57:50 · 1254 阅读 · 2 评论 -
词之间的相关性--点互信息PMI算法
PMI原创 2022-08-17 00:54:47 · 2057 阅读 · 0 评论 -
新词发现&判断一个词是否为词
新词发现转载 2022-08-17 00:31:41 · 842 阅读 · 0 评论 -
弱监督学习-snorkel
弱监督问题旨在研究通过较弱的监督信号来构建预测模型,即在少量的标注样本上学习建模,达到大量样本上同样的效果弱监督学习主要分为三类不确切监督(inexact supervision):标签不确切,粗粒度标签;只到大类,没有到具体的小类。不准确监督(inaccurate supervision):标签不准确,有噪声;打标人员打标的时候存在结果矛盾的标签不完全监督(incomplete supervison):标签少,标签不全。其中这种是最常见的情况。Snorkel框架能解决的是后面两种可以视为弱监督源的示例包括原创 2022-06-13 00:03:19 · 1818 阅读 · 1 评论 -
对比学习和度量学习loss的理解
度量学习和对比学习的思想是一样的,都是去拉近相似的样本,推开不相似的样本。但是对比学习是无监督或者自监督学习方法,而度量学习一般为有监督学习方法。而且对比学习在 loss 设计时,为单正例多负例的形式,因为是无监督,数据是充足的,也就可以找到无穷的负例,但如何构造有效正例才是重点。而度量学习多为二元组或三元组的形式,如常见的 Triplet 形式(anchor,positive,negative),Hard Negative 的挖掘对最终效果有较大的影响1. infoNCE loss(对比学习)inf原创 2022-04-07 00:58:20 · 8203 阅读 · 3 评论 -
卷积神经网络CNN及其在NLP中应用
1.卷积的优点在图像处理中,卷积层通常比全连接层需要更少的参数,但依旧获得高效用的模型设输入图像为28X28,隐藏层有15个神经元,卷积核size=5*5对于全连接网络总共参数为:28x28x15=11760对于卷积网络所需参数数量:5x5=25多个输入和输出通道使模型在每个空间位置可以获取图像的多方面特征2. 卷积操作卷积层对输入和卷积核权重进行互相关运算,并在添加标量偏置之后产生输出互相关和卷积的关系: 卷积层执行互相关运算并学习得到的卷积核为K, 其他条件不变,当这个层执行原创 2021-12-26 01:40:29 · 1652 阅读 · 0 评论 -
Roformer-sim模型
文章目录1. 简介2. RoformerSim Model2.1 Roformer模型介绍2.2 Roformer-Sim 模型2.2.1 语料2.2.2 生成2.2.3 检索3. 总结4. 参考1. 简介RoFormer-Sim模型融合了检索和生成于一体的模型。在roformer-sim之前作者也提出了一种类似的模型BERTSIM,roformer-sim是对 SimBERT 相关技术进一步整合和优化,可以用来作为句向量的一个比较高的 baseline,也可以用来实现相似问句的自动生成,可以作为辅助数原创 2021-11-16 14:29:09 · 3011 阅读 · 0 评论 -
doc2vec原理
doc2vec和word2vec类似,Doc2vec也有两种训练方式,分别是Distributed Memory(DM) 和 Distributed Bag of Words(DBOW)。DM 试图在给定上下文和段落向量的情况下预测单词的概率,与word2vec中CBOW类似,在一个句子或者文档的训练过程中,段落 ID 保持不变,共享着同一个段落向量;DBOW 则在仅给定段落向量的情况下预测段落中一组随机单词的概率,与word2vec中skip-gram类似。1.DM模型训练过程中新增了paragr原创 2021-11-11 01:16:55 · 1254 阅读 · 0 评论 -
残差网络ResNet
文章目录1. 什么是残差2. 什么是残差网络2.1 神经网络越深越好吗?2.2 残差网络3.残差网络的作用1. 什么是残差假设我们想要找一个 xxx,使得f(x)=bf(x)=bf(x)=b,给定一个 xxx 的估计值x0x_0x0 ,残差(residual)就是 b−f(x0)b−f(x_0)b−f(x0),同时,误差就是 x−x0x−x_0x−x0;即使 xxx 不知道,我们仍然可以计算残差,只是不能计算误差罢了2. 什么是残差网络2.1 神经网络越深越好吗?理论上,越深的网络,效果应该原创 2021-11-11 01:11:27 · 1010 阅读 · 0 评论 -
TF-IDF与BM25算法原理
1. TF-IDF原理TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比,但同时会随着它在语料库中出现的频率成反比词频TF(item frequency):某一给定词语在该文本中出现次数。该数字通常会被归一化,以防止它偏向长文本,因为不管该词语重要与否,它在长文件中出现的次数很可能比在短文本中出现的次数更大。TF(t)=单词t在文章中出现次数该文章的总词数TF(t)=\frac{单词t在文章中出现次数}{该文章的总原创 2021-10-23 21:09:09 · 1501 阅读 · 0 评论 -
自然语言生成中解码算法:beam-search、topk-topp、基于kmeans的聚类
1. 背景在生成任务中,经过如图1所示的预训练网络输出的是词表中各词的分布概率,我们要从中找出一条最优路径,使得P(y1,…,yT∣x1,…,xT)P\left(y_{1}, \ldots, y_{T} \mid x_{1}, \ldots, x_{T}\right)P(y1,…,yT∣x1,…,xT)最大,本文将介绍贪婪搜索、beam-search搜索、基于kmeans聚类的beam-search、topk-topp等方法。2. 贪婪搜索若词表大小为 |V|,输出序列的最大长度为T ,则所原创 2021-10-10 22:22:01 · 1692 阅读 · 0 评论 -
FP16和FP32以及基于Apex的混合精度加速
1. FP16FP16也称为半精度浮点数是一种计算机使用的二进制浮点数数据类型,使用 2 字节(16 位)存储图1. FP16和FP32表示范围对比FP16的表示范围(6∗10−8→655046*10^{-8} \to 655046∗10−8→65504),FP32表示范围(1.4∗10−45→1.7∗10381.4*10^{-45} \to 1.7*10^{38}1.4∗10−45→1.7∗1038)FP16的作用减少显存占用,FP16 的内存占用只有 FP32 的一半,自然地就可以帮助训原创 2021-09-21 02:09:48 · 6622 阅读 · 2 评论 -
gensim加载预训练好的词向量(预训练好的词向量使用)
本文主要介绍如何使用预训练好的词向量,本文以腾讯AI Lab预训练中文词向量为例,本文使用到的python包为gensim1. 将词向量载入gensim模块# tencent 预训练的词向量文件路径vec_path = "/share_v3/fangcheng/data/Tencent_AILab_ChineseEmbedding.txt"# 加载词向量文件wv_from_text = gensim.models.KeyedVectors.load_word2vec_format(vec_path原创 2021-09-12 18:20:25 · 9564 阅读 · 5 评论 -
相似度检索Faiss模型
1. faiss作用相似度检索TopK的问题一般的解决方案是暴力检索,循环遍历所有向量计算相似度然后得出TopK,但是当向量数量巨大时,这种方法及其耗时,Faiss的出现就很好地解决了这个问题。2. faiss介绍Faiss的全称是Facebook AI Similarity Search是FaceBook的AI团队针对大规模相似度检索问题开发的一个工具,使用C++编写,有python接口,对10亿量级的索引可以做到毫秒级检索的性能。Faiss的工作,就是把我们自己的候选向量集封装成一个index数据原创 2021-09-05 00:05:35 · 9369 阅读 · 0 评论 -
NLP中数据增强的方法
1. 词汇替换这种方法试图在不改变句子主旨的情况下替换文本中的单词1.1 基于词典的替换从句子中随机取出一个单词,并使用同义词词典将其替换为同义词。例如,我们可以使用WordNet的英语词汇数据库来查找同义词,然后执行替换。1.2 基于词向量的替换我们采用预先训练好的单词嵌入,如Word2Vec、GloVe、FastText、Sent2Vec,并使用嵌入空间中最近的相邻单词替换句子中的某些单词。1.3 Masked Language Model我们可以使用一个预训练的BERT模型并屏蔽文本的某原创 2020-12-23 15:07:19 · 907 阅读 · 0 评论 -
模型压缩常用方法
常见的模型压缩方法有以下几种:模型蒸馏 Distillation,使用大模型的学到的知识训练小模型,从而让小模型具有大模型的泛化能力量化 Quantization,降低大模型的精度,减小模型剪枝 Pruning,去掉模型中作用比较小的连接参数共享,共享网络中部分参数,降低模型参数数量1. teacher-student模型teacher-student模型是迁移学习的一种,迁移学习也就是将一个模型的性能迁移到另一个模型上,对于教师网络往往是一个更加复杂的网络,具有非常好的性能和泛化能力,可以原创 2020-09-13 11:25:28 · 11601 阅读 · 0 评论 -
transformerXL、RoBERT,XLNet简述
1. transfomerXL1.1 transformer的缺点Transformer编码固定长度的上下文,即将一个长的文本序列截断为几百个字符的固定长度片段,然后分别编码每个片段,片段之间没有任何的信息交互。比如BERT,序列长度的极限一般在512。总结如下:Transformer无法建模超过固定长度的依赖关系,对长文本编码效果差Transformer把要处理的文本分割成等长的片段,导致上下文碎片化1.2 transfomerXL的改进提出片段级递归机制(segment-level r原创 2020-09-13 10:56:32 · 816 阅读 · 0 评论 -
从梯度下降到AdamW机器学习优化方法详解
1. 梯度下降在深度学习里,目标函数通常是训练数据集中有关各个样本的损失函数的平均。设 fi(x)f_{i}(x)fi(x) 是有关索引为 iii 的训练数据样本的损失函数, nnn 是训练数据样本数, xxx 是模型的参数向量,那么目标函数定义为f(x)=1n∑i=1nfi(x)f(\boldsymbol{x})=\frac{1}{n} \sum_{i=1}^{n} f_{i}(\boldsymbol{x})f(x)=n1i=1∑nfi(x)目标函数在 xxx 处的梯度计算为∇f(x)=1原创 2020-08-23 16:28:05 · 1485 阅读 · 1 评论 -
CRF
参考文献简明条件随机场CRF介绍 | 附带纯Keras实现掌握动态规划,助你成为优秀的算法工程师1. 逐帧 softmax 和 CRF 的异同CRF 主要用于序列标注问题,可以简单理解为是给序列中的每一帧都进行分类,既然是分类,很自然想到将这个序列用 CNN 或者 RNN 进行编码后,接一个全连接层用 softmax 激活,如下图所示:图1. 逐帧softmax并没有直接考虑输出的上下文关联当我们设计标签时,比如用 s、b、m、e 的 4 个标签来做字标注法的分词,目标输出序列本身会带有一些原创 2020-08-12 21:30:07 · 462 阅读 · 0 评论 -
GPT2原理
GPT-2 是使用 transformer 的解码块构建的,而 BERT 用的是编码块,但一个关键不同在于 GPT-2 是和传统语言模型一样,每次只输出一个token;模型实际运作方式是将已经输出的token作为下一轮输入的一部分,这也叫“自回归”图1. time step = 1 输入[recite the first law $ A] 输出robot图2. 输入[recite the first law $ A robot] 输出mayGPT-2 和后来的模型比如 Transform原创 2020-08-05 11:44:02 · 1659 阅读 · 0 评论 -
Focal Loss总结
1. introFocal loss主要是为了解决样本不均衡问题,该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。2. 基本原理2.1 二分类损失函数L=−ylogy′−(1−y)log(1−y′)={−logy′y=1−log(1−y′),y=0\mathrm{L}=-\mathrm{ylogy}^{\prime}-(1-y) \log \left(1-y^{\prime}\right)=\left\{\begin{array}{ll}-\log y^{\pr原创 2020-07-31 13:42:57 · 1613 阅读 · 0 评论 -
DSTC9介绍
1. 数据集logs.json文件是实例列表,每个实例是用户从开始到结束对话的一部分speaker:每一轮的说话人(“U"代表"User”,“S"代表"System”)text:说话内容labels.json文件是logs.json中每个实例的最后回合的真实的标签和人工响应。 按输入实例相同的顺序包括以下对象的列表:target:该回合是否属于knowledge-seeking(boolean:true/false)knowledge:[domain:在knowledge.json中涉及原创 2020-08-15 19:20:28 · 1108 阅读 · 1 评论 -
预处理相关
文章目录1. 基于keras的文本预处理2. 多标签的one-hot表示1. 基于keras的文本预处理见使用keras进行文本处理2. 多标签的one-hot表示sklearn.preprocessing.MultiLabelBinarizer(classes=None, sparse_output=False)classes_属性:若设置classes参数时,其值等于classes参数值,否则从训练集统计标签值from sklearn.preprocessing原创 2020-05-31 01:13:48 · 244 阅读 · 0 评论 -
使用keras对文本处理
本文主要参考 keras中文文档1.句子分割text_to_word_sequencekeras.preprocessing.text.text_to_word_sequence(text, filters='!"#$%&()*+,-./:;<=>?@[\]^_`{|}~\t\n', lower=T原创 2020-05-31 00:32:39 · 717 阅读 · 0 评论 -
语言模型中的子词分词算法BPE和worldPiece
1. subword与传统分隔tokenization技术相比传统词表示方法无法很好的处理未登录词汇传统分词方法不利于模型学习词缀之间的关系Character embedding作为OOV的解决方法粒度太细subword粒度在词与字符之间能够较好平衡OOV问题2. BPE(Byte Pair Encoding)BPE编码是一种简单的数据压缩形式,将最常见的一对连续字节数据被替换为该数据中不存在的字节。后期使用时需要一个替换表来重建原始数据优点可以有效的平衡词汇表大小和步数缺点基于贪婪原创 2020-08-09 15:43:54 · 209 阅读 · 1 评论 -
ELMO面试
1. ELMO的基本原理是什么ELMO采用了典型的两阶段过程:第一个阶段是利用语言模型进行预训练第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中1.1第一阶段:利用语言模型进行预训练下图展示的是其预训练过程,它的网络结构采用了双层双向LSTM,其中单词(token)特征这一块采用的是单词的embedding或者采用字符卷积得到其embedding表示语言模型训练的任务目标是根据单词 的上下文去WiW_iWi正确预测原创 2020-05-22 12:33:10 · 405 阅读 · 0 评论 -
BatchNormalization & LayerNormalization
1. 概述机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。那BatchNorm的作用是什么呢?BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布深度神经网络随着网络深度加深,训练起来越困难,收敛越来越慢,很多论文都是解决这个问题的,比如ReLU激活函数,再比如Residual Network(残差网络),BN本质上也是解释并从某个不同的角度来解决这个问题的。原创 2020-05-19 00:03:26 · 935 阅读 · 0 评论 -
激活函数总结
1.为什么需要激活函数神经网络用于实现复杂的函数,非线性激活函数可以使神经网络随意逼近复杂函数。没有激活函数带来的非线性,多层神经网络和单层无异。2. sigmoid将实数值压缩进 0 到 1 的区间内,还可以在预测概率的输出层中使用。该函数将大的负数转换成 0,将大的正数转换成 1。σ(x)=11+e−x\sigma(x)=\frac{1}{1+e^{-x}}σ(x)=1+e−x1下图展示了 Sigmoid 函数及其导数:Sigmoid 函数的三个主要缺陷:(1) 梯度消失:注意:Si原创 2020-05-09 17:01:57 · 518 阅读 · 0 评论 -
ALBERT概述
1.Introduction通常来说,模型深度与模型效果成正比,但是模型越深也会带来动则数亿甚至数十亿的参数量,这就对计算内存有了一定的要求。而在分布式训练中,通信开销与参数也成正比,所以其对训练速度也产生了显著的影响。目前已有的解决方案要么是并行化,要么是内存管理,但是都没有解决通信开销,即降低模型本身的参数。在本文,作者设计一种轻量级的 Bert,并取名为 ALBERT(A Lite BERT),ALBERT 的参数比传统的 BERT 要少得多,有效的解决了模型通信开销的问题。ALBERT 提出转载 2020-05-09 15:11:52 · 765 阅读 · 0 评论 -
jieba分词原理
1. 原理(1)基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)(2)采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合(3)对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法2. 详细解释2.1. 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)结巴分词自带了一个叫做dict.txt的词典,里面有349046条词,其每行包含了词条、词频(这个次数是于作者自己基于人民日原创 2020-05-09 11:59:25 · 2239 阅读 · 0 评论 -
seq2seq及注意力机制
1. 简介seq2seq 是一个 Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。这个结构最重要的地方在于输入序列和输出序列的长度是可变的,可以用于翻译,聊天机器人,句法分析,文本摘要等。Encoder-Decoder结构先将...原创 2020-04-09 22:47:34 · 1696 阅读 · 0 评论 -
RNN总结
1. 普通RNN对于单隐藏层的多层感知机H=ϕ(XWxh+bh)\boldsymbol{H}=\phi \left( \boldsymbol{XW}_{xh}+\boldsymbol{b}_h \right) H=ϕ(XWxh+bh)O=HWhq+bq\boldsymbol{O}=\boldsymbol{HW}_{hq}+\boldsymbol{b}_qO=HWhq+bq其中X∈...原创 2020-04-08 01:05:08 · 721 阅读 · 0 评论 -
生成任务中的评价指标BLEU/ROUGE/METEOR
1. BLEU计算评价机器翻译结果通常使⽤BLEU来评价,对于模型预测序列中任意的⼦序列,BLEU考察这个⼦序列是否出现在标签序列中。具体来说,设词数为nnn的⼦序列的精度为pnp_npn,他是预测序列_与_标签序列_匹配词数为nnn的子序列的数量_与_预测序列中词数为nnn 的_子序列的数量之比。举个例子,假设标签序列为A, B, C, D, E, F,预测序列为A, B, B, C, ...原创 2020-04-03 16:48:54 · 3307 阅读 · 0 评论