- 博客(60)
- 收藏
- 关注

原创 文本相似度,文本匹配模型归纳总结
本文将会整合近几年来比较热门的一些文本匹配模型,并以QA_corpus为测试基准,分别进行测试,代码均采用tensorflow进行实现,每个模型均会有理论讲解与代码实现,现已添加到我的github欢迎star项目代码与论文讲解都在持续更新中,如没有找到实现的代码,或相关论文讲解,请给我一首歌的时间ABCNN详解[DSSM详解] 待更新[ConvNet详解] 待更新[ESIM详解] 待更新...
2019-05-13 19:18:52
23134
20

原创 BERT完全指南-从原理到实践
转载请注明出处,原文地址简介本文将会从BERT的原理开始讲起,并带领大家分析tansformer的源码,并分别介绍如何使用BERT做本文分类与句向量的生成。顺便说一句,BERT世界第一,不接受任何反驳。原理篇本章将会先给大家介绍BERT的核心transformer,而transformer又是由attention组合而成,希望这两篇博客能让大家对transformer有一个详细的了解。...
2019-01-11 12:33:42
10477

原创 使用BERT做中文文本相似度计算与文本分类
简介最近Google推出了NLP大杀器BERT,BERT(Transformer双向编码器表示)是Google AI语言研究人员最近发表的一篇论文。它通过在各种NLP任务中呈现最先进的结果,包括问答系统、自然语言推理等,引起了机器学习社区的轰动。本文不会去讲解BERT的原理,如果您还不清楚什么是BERT建议先参阅Google的论文或者其他博文,本文主要目的在于教会大家怎么使用BERT的预训练模...
2018-11-29 18:37:53
52068
83
原创 ChatGPT:探索RLHF与GPT的完美结合
ChatGPT已经发布一周了热度依旧不减,ChatGPT也各种大显神通,为各大网友“出谋划策”,有写周报的,有写绩效的甚至还有写论文的,作为一个NLP从业者,除了好好体验下其中的乐趣,其背后的原理当然也要有所了解,本文就从其技术细节为大家一一揭开奥秘。
2022-12-14 17:09:57
6545
原创 Hydra Attention 真的快197倍吗
15号Meta发了篇新paper取名hydra attention,各大媒体宣称hydra比vanilla快了197倍,事实真是如此吗,答案是:No,实际上hydra attention的快依赖于你处理的序列长度,该paper的作者主要是在cv上做的测试,对于384px的图片,如果是12层的attention那么FLOPs能减少11%,224px的图片,12层attention的FLOPs减少4%。
2022-09-27 11:50:09
1670
3
原创 还在用ES?基于深度学习的文本检索全攻略
文本检索,NLP中的经典问题,其应用场景十分丰富,搜索引擎、智能问答等等。传统的文本检索大部分都是基于统计学的BM25算法,包括ES也是基于BM25的改进,该方案最大的优势在于实现简单,检索速度快,但BM25只考虑了词权,导致检索出来的结果在语义方面有所欠缺。随着业务的发展,老版本基于ES的文本检索能力已经无法满足业务方的需求,更合理的检索结果也能帮助业务方提高解决问题的效率,因此我们需要一套更加高效高质的文本检索系统。
2022-09-15 10:44:13
4562
3
原创 稳定提点的Mixup
前言俗话说想训练好一个模型,3分靠模型,7分靠数据,然而真实情况往往是缺少数据,高额的标注成本、极为常见的长尾问题都限制了模型的效果。因此数据增强在AI领域基本上是必不可少,在CV中有图片的旋转、裁剪偏移等等,但是在nlp领域中想做好数据增强就有一点麻烦了,一些采样的方法例如smote在深度学习领域更是基本没啥效果。那么有没有什么好的方法,能在各种不同的领域都能做到数据增强并且稳定提升效果呢?MixupMixup是近几年提出来的一种新的数据增强的方法,它的核心思想是采用线性插值的方式从训练集生成新的数
2021-12-29 11:32:21
4044
1
原创 NLP中长尾、数据不均衡问题可落地解决方案
在真实的工业场景中,通常都会遇到长尾问题(部分类别数据很多,部分类别数据量极少,如下图所示)。例如比较典型的风控场景,负样本通常都是极少的,甚至有些负样本需要人工造。对于这样的场景,模型对于样本较少的类别拟合能力是不足的,甚至无法满足上线的要求。目前比较通用的解决方案即采样和加权,但是如何采样,是欠采样还是过采样,如何加权权重怎么设置,这些都包含了较多的方法。本文将会先从这两个方案出发,再扩展到一些其它比较通用、有效的nlp长尾问题解决方案采样采样的方法主要是两种,过采样和欠采样。欠采样是指从过多的
2021-10-22 17:03:44
5133
原创 AI随笔、
参数初始化一般来说,正态分布的采样结果更多样化一些,但它理论上是无界的,如果采样到绝对值过大的结果可能不利于优化;相反均匀分布是有界的,但采样结果通常更单一。于是就出现了结合两者优点的“截尾正态分布”。截尾正态分布既指定均值μ\muμ和方差σ2\sigma^2σ2,也需要指定区间[a,b][a,b][a,b],它从N(μ,σ2)\mathcal{N}(\mu,\sigma^2)N(μ,σ2)中采样,如果采样结果在[a,b][a,b][a,b]中,那么保留该结果,否则重复采样直到采样结果落到[a,b][a,
2021-08-31 16:27:59
253
原创 札记~~~
本文简单记录一些平时看到的、想到的、悟到的人生百态关于博客的编写问题是什么原因分析解决思路与方案对比学习的本质对比学习系统应该具备两个属性:Alignment和Uniformity(参考上图)。所谓“Alignment”,指的是相似的例子,也就是正例,映射到单位超球面后,应该有接近的特征,也即是说,在超球面上距离比较近;所谓“Uniformity”,指的是系统应该倾向在特征里保留尽可能多的信息,这等价于使得映射到单位超球面的特征,尽可能均匀地分布在球面上,分布得越均匀,意味着保留的信息越充分
2021-08-09 11:03:11
203
原创 如何使用预训练模型优雅的生成sentence embedding
前言预训练语言模型在目前的大部分nlp任务中做个微调都能取得不错的一个结果,但是很多场景下,我们可能没办法微调,例如文本聚类,我们更需要的是文本的向量表示;又亦如文本匹配,特别是实时搜索场景,当候选集数量较多时,直接使用ptm做匹配速度较慢。那么如何优雅的使用预训练模型生成文本embedding呢?本文将会从不同的预训练模型与不同的优化方法去介绍文本embedding的生成方式,如有理解错误,欢迎大家指正。本文所有的测试结果基于哈工大开源的LCQMC数据集,共20+w条数据,测试方法是计算两个句子的S
2021-04-15 20:04:59
7808
6
原创 Transformer-XL全解读
MotivationTransformer最大的问题在于没有办法建模超过最大长度的序列,例如base bert其支持的序列最大长度是512,超过了该长度的序列需要进行截取,再把截取后的片段分别用bert进行编码,该方法虽然可行,但是存在上下文碎片化的问题,也就是说每个片段是单独建模的,互相之间没有上下文信息,并且,不同的片段位置编码都是从0开始,明显是有问题的。可见Transformer对于较长的序列建模能力有限,如何解决该弊端就该Transformer-XL大显身手了。Transformer-XL
2020-10-21 10:08:44
7448
4
原创 后Transformer时代
前言Transformer(下文用Tm代替)引领了预训练模型的潮流,创造了NLP中的无数SOTA。Tm从RNN的串行结构进化成了并行结构,但是因为其高复杂度的模型结构,时间复杂度达到了O(n2)O(n^2)O(n2),那么Tm能否把时间复杂度降低的同时效果也能保留呢?目前大部分的预训练语言模型base版本,其支持的文本最大长度仅有512,如果想让其支持更长的序列,对于显存的要求也是极高的,对于过长的序列,Tm又该怎么处理呢?也因这两个问题的存在,这两年提出了很多优秀的Tm改版,本文会为读者介绍分享这些新
2020-10-16 17:30:33
477
原创 概率论题目
1、从一副52张扑克牌中随机抽两张,颜色相等的概率2C262C522\frac{2 C_{26}^2}{C_{52}^2}C5222C2622、54张牌,分成6份,每份9张牌,大小王在一起的概率C61C527C549\frac{C_{6}^1C_{52}^7}{C_{54}^9}C549C61C5273、52张牌去掉大小王,分成26*2两堆,从其中一堆取4张牌为4个a的概率2C4822C5226\frac{2 C_{48}^{22}}{C_{52}^{26}}C52262C4822
2020-10-15 17:39:08
23882
2
原创 图卷积神经网络GCN降维全解析
Spectral Graph Theory首先我们定义一下几个符号图 G=(V,E),N=∣V∣G=(V,E),N=|V|G=(V,E),N=∣V∣邻接矩阵 A∈RN×NA \in R^{N×N}A∈RN×N度矩阵 D∈RN×ND \in R^{N×N}D∈RN×N节点的信号 f:V→RNf:V \to R^Nf:V→RN 其中fif_ifi表示的是iii节点的信号拉普拉斯矩阵 L=D−AL=D-AL=D−A, LLL是一个半正定矩阵,我们考虑的是一个无向图,所以也是一个对称阵,拉普拉斯矩
2020-06-22 15:21:02
6003
2
原创 图算法图神经网络归纳总结
本文是我对图算法的一个归纳总结,学习过程按照以下博文顺序,持续更新中[什么是图][谱聚类]Random Walk节点分类图神经网络[图卷积神经网络][图注意力网络]
2020-06-04 11:44:20
1037
原创 图神经网络入门篇Graph Neural Network
前言在我上一篇博客,介绍基于random walk的节点表示方式,该方法的主要是思想是以one-hot的形式,经过Embedding层得到node vector,然后优化以下的似然函数来得到最优的Embedding Matrixmax∑u∈VlogP(NR(u)∣zu)max \sum_{u \in V} logP(N_R(u)|z_u)maxu∈V∑logP(NR(u)∣zu)该方法有很多缺点需要∣V∣|V|∣V∣大小的空间参数没有共享,一个节点对应一个embedding值图通常需要用
2020-06-03 22:34:03
4033
原创 图算法之节点分类Node Classification
在图谱当中,有一项很重要的任务,节点分类。该任务通常是给定图中某些节点对应的类别,从而预测出生于没有标签的节点属于哪一个类别,该任务也被称为半监督节点分类。本文主要要解决的问题就是如何做节点分类。图中的相互关系在图谱中,存在着两种重要的相互关系homophily亲和性(我自己的翻译成,不一定准确),具体意思就是指人以群分物以类聚,例如在社交网络中,喜欢蔡徐坤的人通常都会有同样的喜好。influence影响性,某节点的行为可能会影响到和他有关系的节点行为,例如有一天你吃起了螺蛳粉,结果你身边的人都
2020-06-01 22:35:14
18872
1
原创 基于随机游走Random Walk的图节点Node表示
Embedding Nodes既然要对graph进行embedding,那么我们可以参考下word embedding,在nlp中,embedding过后的同意词,通常会聚在一起,同样的,如果我们对图的节点进行embedding,有关系的节点,我们自然希望其embedding之后能聚在一起,如下图所示也就是说,我们希望embedding之后的node vector点乘之后的值(可以理解为未归一化的cosine)接近于原graph中的节点相似度,原图的相似度可以采用是否节点相连,是否有相同的邻居节点等
2020-06-01 14:38:50
6010
1
原创 全网最通俗的条件随机场CRF
对概率无向图模型建模,首先需要求其联合概率分布,求一个无向图的联合概率,则需要求其最大团,设每个最大团的概率为Φc(Yc)\Phi_c(Y_c)Φc(Yc),那么无向图的联合概率为:P(Y)=1Z∏cΦc(Yc)P(Y) = \frac{1}{Z} \prod_c \Phi_c(Y_c)P(Y)=Z1c∏Φc(Yc)Z=∑Y∏cΦc(Yc)Z= \sum_Y \prod_c \Ph...
2019-12-13 11:27:25
1707
原创 MLE与MAP的关系
设数据集为DDD,参数为θ\thetaθ对于MLE有P(D∣θ)=P(x1,x2...xn∣θ)=∏i=1nP(xi∣θ)P(D|\theta) = P(x_1,x_2...x_n|\theta) = \prod^n_{i=1}P(x_i|\theta)P(D∣θ)=P(x1,x2...xn∣θ)=i=1∏nP(xi∣θ)取对数logP(D∣θ)=∑i=1nlogP(xi∣θ...
2019-10-31 19:57:58
758
原创 keras源码分析之fit
keras最优雅的地方还是在于其fit函数,自动验证,灵活的callback,batch_size、epochs的简单设置,相比于tensorflow需要自己编写验证代码,自己编写循环模块来实现多个epoch的训练,可谓是简单了太多。那么fit函数到底做了些什么呢,本文将会带领大家一起探讨其中的原理。代码分析首先,fit函数会对batch_size进行一个验证,这里调用了另外一个函数batc...
2019-10-11 20:35:35
4606
5
原创 一文揭开ALBERT的神秘面纱
前言RoBERTa没霸榜几天,这不Google爸爸就又放大招,这次的新模型不再是简单的的升级,而是采用了全新的参数共享机制,反观其他升级版BERT模型,基本都是添加了更多的预训练任务,增大数据量等轻微的改动。这次ALBERT的改进,不仅提升了模型的整体效果再一次拿下来各项榜单的榜首,而且参数量相比BERT来说少了很多。对于预训练模型来说,提升模型的大小是能对下游任务的效果有一定提升,然而如果进...
2019-10-02 16:36:31
30272
4
原创 从统计学看NLP之维特比Vertbi(2)
前言上一篇博客中简单介绍了下维特比算法,但是没有细纠其中的细节,本文将会以一个分词的例子来讲解维特比算法。分词分词已经是目前比较成熟的技术了,市面上也有很多优秀的包供大家使用,但是你真的明白了其中的原理吗。分词的方式有基于匹配规则的,也有基于语言模型,深度学习模型来的,但是其原理终究还是离不开上一篇博客介绍的那个流程即预分词+语言模型。本文将会给大家先简单介绍一下基于匹配规则的分词方式,最...
2019-09-17 16:04:11
443
原创 从统计学看NLP之概述(1)
前言在我看来NLP的所有思想都是基于统计学来的,不管是HMM,CRF还是说目前火热的神经网络,而目前入行NLP领域的同学可能大部分都没有接触过其中的统计学原理,所谓的神经网络没可解释性也导致大家没兴趣去研究为什么NLP的神经网络要这么去设计。在接下来的一系列文章中,我将会给大家从统计学的角度来揭开NLP原理的神秘面纱。机器翻译说到机器翻译,目前大部分都是采用seq2seq的模型,如果你是一...
2019-09-11 22:14:12
1080
原创 NLP竞赛tricks
长期更新中,如果其中提到的技巧对您有帮助,请点个赞。本文是对于我之前参加过的NLP比赛总结出来的一些经验,希望这些tricks能对大家有所帮助。输入1、字向量2、词向量3、位置编码,tm的相对位置编码或者w2v思路的位置编码4、对于字向量与词向量如果要采用相加的形式组合在一起,可以把词向量重复n词,n表示的是当前词有多少个字序列标注问题1、采用BI0做数据标注2、预测开始位置与结...
2019-09-03 21:26:12
1418
原创 keras源码分析之Dense
上一篇博客我们分析了Layer类的源码,本文将会分析下Dense的源码。本文主要讲解一下Dense层的源码,Dense层即最常用的全连接层,代码很简单,主要是重写了build与call方法,在我们自定义Layer时,也可以参考该层的实现。class Dense(Layer): def __init__(self, units, activation=...
2019-08-13 15:30:38
2475
原创 keras源码分析之Input
上一篇博客我们分析了Layer类的源码,本文将会分析下Input的源码。所有的Function api 都需要定义一个Input,Input是InputLayer的实例化对象,InputLayer继承于Layer层,并重写了init方法和get_config方法,InputLayer多了一个额外的参数sparse,该参数的意思是输入值placeholder是否是稀疏的,我们先详细看下InputL...
2019-08-12 17:34:02
2193
原创 keras源码分析之Layer
简介本文主要是对class Layer(object)代码的分析,keras所有的层都是Layer的父类,class Sequential(Model)继承了keras/engine/training.py中的Model类,而Model类则继承了同目录下的keras/engine/topology.py中的Container类,Container类继承了同文件中的Layer类,所以说Layer类...
2019-08-02 17:26:07
5101
5
原创 keras随笔
对于深度学习的coder来说,首先需要选择一个合适的深度学习框架,之前一直用的tensorflow,偶尔会用下keras和pytorch,在tf2.0推出之后集成了keras的api,因此打算记录一些keras框架中可能会遇到的一些坑。1、RNN的stateful对于RNN结构的网络有一个参数stateful,如果设置为True则每个batch_size的最后一个时刻的隐藏状态会被保存下来,作...
2019-08-02 15:11:43
274
原创 keras源码全解析
前言做为一个tensorflow的忠实用户,一直对keras有一种‘鄙视’之心,直到tf2.0决定添加keras的api后,我改变了这种想法。keras上手简单能快速复原模型,不用再一直玩矩阵变化,其次相比自己写的tf代码,日志输出更加合理,总感觉自己对tf的封装还是做的不尽如人意,这也是我为什么打算出一个keras源码分析专题的原因。后续的文章,会对所有keras的代码进行分析讲解,并结合一些...
2019-08-02 15:10:20
6074
1
原创 最通俗易懂的XLNET详解
Two-Stream Self-Attention for Target-Aware RepresentationsXLNET其中一个优化点是基于目标感知表征的双流自注意力虽然排列语言模型能满足目前的目标,但是对于普通的transformer结构来说是存在一定的问题的,为什么这么说呢,看个例子,假设我们要求这样的一个对数似然,pθ(Xzt∣xz<t)p_{\theta} (X_{...
2019-06-24 10:35:41
64494
20
原创 tensorflow word2vec源码分析
简介最近在编写文本匹配模型时输入需要传入词向量,并在训练的过程中更新词向量。由于之前都是采用的gensim来生成词向量,词典和嵌入矩阵都不太方便获取到,因此决定采用tensorflow来训练词向量,但是据我在网上的了解,tensorflow训练的词向量整体效果还是不如gensim,gensim的源码我没有看过,如果对此清楚的童鞋请留言,十分感谢。不过在模型的训练阶段,还是会对词向量进行更新,因此...
2019-06-12 14:52:55
958
原创 文本匹配、文本相似度模型之DRCN
本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集所有的模型均采用tensorflow进行了实现,欢迎start,代码地址简介DRCN和DIIN的结构十分相似,包括输入层与特征提取层, DRCN在特征提取阶段结合了DenseNet的连接策略与Attention机制,在interaction阶段,也、采取了更加多样化的交互策略,接下来就为大家详细...
2019-06-03 18:49:22
6267
2
原创 文本匹配、文本相似度模型之DIIN
本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集所有的模型均采用tensorflow进行了实现,欢迎start,代码地址简介DIIN模型和其他匹配模型的结构都很接近,也是采用CNN与LSTM来做特征提取,但是在其输入层,作者提出了很多想法,同时采用了词向量、字向量,并且添加了一些额外的特征例如词性等,其本意在于能额外输入一些句法特征,CNN部分...
2019-05-31 09:51:21
4744
原创 一文看懂学习率Learning Rate,从入门到CLR
前言对于刚刚接触深度学习的的童鞋来说,对学习率只有一个很基础的认知,当学习率过大的时候会导致模型难以收敛,过小的时候会收敛速度过慢,但其实学习率是一个十分重要的参数,合理的学习率才能让模型收敛到最小点而非鞍点。本文后续内容将会给大家简单回顾下什么是学习率,并介绍如何改变学习率并设置一个合理的学习率。什么是学习率首先我们简单回顾下什么是学习率,在梯度下降的过程中更新权重时的超参数,即下面公式中...
2019-05-23 18:53:35
50451
1
原创 文本匹配、文本相似度模型之ESIM
本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集所有的模型均采用tensorflow进行了实现,欢迎start,代码地址简介ESIM模型主要是用来做文本推理的,给定一个前提premise ppp 推导出假设hypothesis hhh,其损失函数的目标是判断ppp与hhh是否有关联,即是否可以由ppp推导出hhh,因此,该模型也可以做文本匹配,...
2019-05-20 19:31:52
12657
原创 文本匹配、文本相似度模型之DSSM
本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集所有的模型均采用tensorflow进行了实现,欢迎start,代码地址简介DSSM是2013年提出来的模型,主要应用场景为query与doc的匹配,在这之前,用的更多的还是一些传统的机器学习算法,例如LSA,BM25等。DSSM也算是深度学习在文本匹配领域中的一个先驱者,接下来我们会先从其结构开...
2019-05-14 18:17:30
9055
原创 文本匹配、文本相似度模型之ABCNN
简介本文将会介绍以CNN与attention机制做文本匹配的模型即ABCNN,这里给出论文地址ABCNN这里是我的代码实现在文本任务上,大部分模型均是采用以LSTM为主的结构,本文的作者采用了CNN的结构来提取特征,并用attention机制进行进一步的特征处理,作者一共提出了三种attention的建模方法,下文会详细介绍。在开始讲解之前,我们简单说明下attention机制,例如我们有...
2019-05-13 19:19:20
5138
原创 文本匹配、文本相似度模型之BiMPM
转载请注明出处,原文地址简介本文是对论文BiMPM:BilateralMulti-PerspectiveMatchingforNaturalLanguageSentences的解读。该模型主要用于做文本匹配,即计算文本相似度。文本匹配是NLP领域较为常见的技术,但是大部分的匹配方法都是从单一的角度去做匹配,例如ANCNN把两个句子通过同样权重的网络结构,把得到的向量进行相似度计算。BiMPM...
2019-03-19 15:41:32
5412
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人