
深度学习
文章平均质量分 81
爱编程真是太好了
这个作者很懒,什么都没留下…
展开
-
ChatGPT:探索RLHF与GPT的完美结合
ChatGPT已经发布一周了热度依旧不减,ChatGPT也各种大显神通,为各大网友“出谋划策”,有写周报的,有写绩效的甚至还有写论文的,作为一个NLP从业者,除了好好体验下其中的乐趣,其背后的原理当然也要有所了解,本文就从其技术细节为大家一一揭开奥秘。原创 2022-12-14 17:09:57 · 6557 阅读 · 0 评论 -
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 · 1679 阅读 · 2 评论 -
NLP中长尾、数据不均衡问题可落地解决方案
在真实的工业场景中,通常都会遇到长尾问题(部分类别数据很多,部分类别数据量极少,如下图所示)。例如比较典型的风控场景,负样本通常都是极少的,甚至有些负样本需要人工造。对于这样的场景,模型对于样本较少的类别拟合能力是不足的,甚至无法满足上线的要求。目前比较通用的解决方案即采样和加权,但是如何采样,是欠采样还是过采样,如何加权权重怎么设置,这些都包含了较多的方法。本文将会先从这两个方案出发,再扩展到一些其它比较通用、有效的nlp长尾问题解决方案采样采样的方法主要是两种,过采样和欠采样。欠采样是指从过多的原创 2021-10-22 17:03:44 · 5176 阅读 · 0 评论 -
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 · 256 阅读 · 0 评论 -
如何使用预训练模型优雅的生成sentence embedding
前言预训练语言模型在目前的大部分nlp任务中做个微调都能取得不错的一个结果,但是很多场景下,我们可能没办法微调,例如文本聚类,我们更需要的是文本的向量表示;又亦如文本匹配,特别是实时搜索场景,当候选集数量较多时,直接使用ptm做匹配速度较慢。那么如何优雅的使用预训练模型生成文本embedding呢?本文将会从不同的预训练模型与不同的优化方法去介绍文本embedding的生成方式,如有理解错误,欢迎大家指正。本文所有的测试结果基于哈工大开源的LCQMC数据集,共20+w条数据,测试方法是计算两个句子的S原创 2021-04-15 20:04:59 · 7831 阅读 · 6 评论 -
后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 · 480 阅读 · 0 评论 -
Transformer-XL全解读
MotivationTransformer最大的问题在于没有办法建模超过最大长度的序列,例如base bert其支持的序列最大长度是512,超过了该长度的序列需要进行截取,再把截取后的片段分别用bert进行编码,该方法虽然可行,但是存在上下文碎片化的问题,也就是说每个片段是单独建模的,互相之间没有上下文信息,并且,不同的片段位置编码都是从0开始,明显是有问题的。可见Transformer对于较长的序列建模能力有限,如何解决该弊端就该Transformer-XL大显身手了。Transformer-XL原创 2020-10-21 10:08:44 · 7494 阅读 · 4 评论 -
图卷积神经网络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 · 6047 阅读 · 2 评论 -
Attention机制详解
转载请注明出处,原文地址简介相信做NLP的同学对这个机制不会很陌生,它在Attention is all you need可以说是大放异彩,在machine translation任务中,帮助深度模型在性能上有了很大的提升,输出了当时最好的state-of-art model。当然该模型除了attention机制外,还用了很多有用的trick,以帮助提升模型性能。但是不能否认的时,这个模型的核...原创 2019-01-11 11:46:29 · 10746 阅读 · 2 评论 -
图算法图神经网络归纳总结
本文是我对图算法的一个归纳总结,学习过程按照以下博文顺序,持续更新中[什么是图][谱聚类]Random Walk节点分类图神经网络[图卷积神经网络][图注意力网络]原创 2020-06-04 11:44:20 · 1047 阅读 · 0 评论 -
图神经网络入门篇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 · 4067 阅读 · 0 评论 -
基于随机游走Random Walk的图节点Node表示
Embedding Nodes既然要对graph进行embedding,那么我们可以参考下word embedding,在nlp中,embedding过后的同意词,通常会聚在一起,同样的,如果我们对图的节点进行embedding,有关系的节点,我们自然希望其embedding之后能聚在一起,如下图所示也就是说,我们希望embedding之后的node vector点乘之后的值(可以理解为未归一化的cosine)接近于原graph中的节点相似度,原图的相似度可以采用是否节点相连,是否有相同的邻居节点等原创 2020-06-01 14:38:50 · 6032 阅读 · 1 评论 -
keras源码分析之fit
keras最优雅的地方还是在于其fit函数,自动验证,灵活的callback,batch_size、epochs的简单设置,相比于tensorflow需要自己编写验证代码,自己编写循环模块来实现多个epoch的训练,可谓是简单了太多。那么fit函数到底做了些什么呢,本文将会带领大家一起探讨其中的原理。代码分析首先,fit函数会对batch_size进行一个验证,这里调用了另外一个函数batc...原创 2019-10-11 20:35:35 · 4642 阅读 · 5 评论 -
使用BERT生成句向量
转载请注明出处,原文地址在阅读本文之前如果您对BERT并不了解,请参阅我的其他博文BERT完全指南简介之前的文章介绍了BERT的原理、并用BERT做了文本分类与相似度计算,本文将会教大家用BERT来生成句向量,核心逻辑代码参考了hanxiao大神的bert-as-service,我的代码地址如下:代码地址:BERT句向量传统的句向量对于传统的句向量生成方式,更多的是采用word emb...原创 2019-02-19 11:41:39 · 36338 阅读 · 73 评论 -
keras随笔
对于深度学习的coder来说,首先需要选择一个合适的深度学习框架,之前一直用的tensorflow,偶尔会用下keras和pytorch,在tf2.0推出之后集成了keras的api,因此打算记录一些keras框架中可能会遇到的一些坑。1、RNN的stateful对于RNN结构的网络有一个参数stateful,如果设置为True则每个batch_size的最后一个时刻的隐藏状态会被保存下来,作...原创 2019-08-02 15:11:43 · 279 阅读 · 0 评论 -
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 · 5115 阅读 · 5 评论 -
keras源码分析之Dense
上一篇博客我们分析了Layer类的源码,本文将会分析下Dense的源码。本文主要讲解一下Dense层的源码,Dense层即最常用的全连接层,代码很简单,主要是重写了build与call方法,在我们自定义Layer时,也可以参考该层的实现。class Dense(Layer): def __init__(self, units, activation=...原创 2019-08-13 15:30:38 · 2482 阅读 · 0 评论 -
keras源码全解析
前言做为一个tensorflow的忠实用户,一直对keras有一种‘鄙视’之心,直到tf2.0决定添加keras的api后,我改变了这种想法。keras上手简单能快速复原模型,不用再一直玩矩阵变化,其次相比自己写的tf代码,日志输出更加合理,总感觉自己对tf的封装还是做的不尽如人意,这也是我为什么打算出一个keras源码分析专题的原因。后续的文章,会对所有keras的代码进行分析讲解,并结合一些...原创 2019-08-02 15:10:20 · 6085 阅读 · 1 评论 -
keras源码分析之Input
上一篇博客我们分析了Layer类的源码,本文将会分析下Input的源码。所有的Function api 都需要定义一个Input,Input是InputLayer的实例化对象,InputLayer继承于Layer层,并重写了init方法和get_config方法,InputLayer多了一个额外的参数sparse,该参数的意思是输入值placeholder是否是稀疏的,我们先详细看下InputL...原创 2019-08-12 17:34:02 · 2204 阅读 · 0 评论 -
NLP竞赛tricks
长期更新中,如果其中提到的技巧对您有帮助,请点个赞。本文是对于我之前参加过的NLP比赛总结出来的一些经验,希望这些tricks能对大家有所帮助。输入1、字向量2、词向量3、位置编码,tm的相对位置编码或者w2v思路的位置编码4、对于字向量与词向量如果要采用相加的形式组合在一起,可以把词向量重复n词,n表示的是当前词有多少个字序列标注问题1、采用BI0做数据标注2、预测开始位置与结...原创 2019-09-03 21:26:12 · 1426 阅读 · 0 评论 -
一文揭开ALBERT的神秘面纱
前言RoBERTa没霸榜几天,这不Google爸爸就又放大招,这次的新模型不再是简单的的升级,而是采用了全新的参数共享机制,反观其他升级版BERT模型,基本都是添加了更多的预训练任务,增大数据量等轻微的改动。这次ALBERT的改进,不仅提升了模型的整体效果再一次拿下来各项榜单的榜首,而且参数量相比BERT来说少了很多。对于预训练模型来说,提升模型的大小是能对下游任务的效果有一定提升,然而如果进...原创 2019-10-02 16:36:31 · 30299 阅读 · 4 评论 -
最通俗易懂的XLNET详解
Two-Stream Self-Attention for Target-Aware RepresentationsXLNET其中一个优化点是基于目标感知表征的双流自注意力虽然排列语言模型能满足目前的目标,但是对于普通的transformer结构来说是存在一定的问题的,为什么这么说呢,看个例子,假设我们要求这样的一个对数似然,pθ(Xzt∣xz<t)p_{\theta} (X_{...原创 2019-06-24 10:35:41 · 64569 阅读 · 20 评论 -
Transformer模型详解
转载请注明出处,原文地址简介Attention Is All You Need是一篇Google提出的将Attention思想发挥到极致的论文。这篇论文中提出一个全新的模型,叫 Transformer,抛弃了以往深度学习任务里面使用到的 CNN 和 RNN ,目前大热的Bert就是基于Transformer构建的,这个模型广泛应用于NLP领域,例如机器翻译,问答系统,文本摘要和语音识别等等方向...原创 2019-01-11 12:32:01 · 107448 阅读 · 50 评论 -
文本匹配、文本相似度模型之DRCN
本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集所有的模型均采用tensorflow进行了实现,欢迎start,代码地址简介DRCN和DIIN的结构十分相似,包括输入层与特征提取层, DRCN在特征提取阶段结合了DenseNet的连接策略与Attention机制,在interaction阶段,也、采取了更加多样化的交互策略,接下来就为大家详细...原创 2019-06-03 18:49:22 · 6278 阅读 · 2 评论 -
LSTM网络详解
转载请注明出处,原文地址LSTM 网络长短期记忆网络(Long Short Term)通常也被简称为LSTM,是一种特殊类型的RNN,能够学习长期的依赖关系。LSTM 通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是 LSTM 的默认行为,而非需要付出很大代价才能获得的能力!所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的...原创 2019-03-01 16:25:24 · 4946 阅读 · 0 评论 -
Batch Normalization浅析
转载请注明出处,原文地址背景自从2012年以来,CNN网络模型取得了非常大的进步,而这些进步的推动条件往往就是模型深度的增加。从AlexNet的几层,到VGG和GoogleNet的十几层,甚至到ResNet的上百层,网络模型不断加深,取得的效果也越来越好,然而网络越深往往就越难以训练。我们知道,CNN网络在训练的过程中,前一层的参数变化影响着后面层的变化,而且这种影响会随着网络深度的增加而不断...原创 2019-03-01 16:23:28 · 881 阅读 · 0 评论 -
循环神经网络RNN
为什么需要循环神经网络普通的神经网络只能对单一时刻的数据就行处理,但是,当任务需要处理序列信息时,例如一段文字,音频,视频,即前面的输入与后面的输入是有关联的。举个例子:现在我们要对“我爱你”与“这就是爱”中的“爱”字进行词性分析,在不同的语境下,爱的词性是不同的,在前一句中是动词,后一句中是名词,如果用普通的神经网络进行识别,是无法准确判断的。在词性判断中,前一个词会对后一个词的词性判断产生...原创 2019-03-01 16:22:13 · 1022 阅读 · 0 评论 -
Rasa使用指南02
转载请注明出处,原文地址前言对于还不清楚Rasa是什么的小伙伴,请先参阅我的Rasa使用指南01最近工作很忙,重心也一直在模型方面,例如BERT、GPT-2等等,对于Rasa系列的博文实在是没有时间更新。最近有不停的收到一些小伙伴发来的信息,希望能看到Rasa使用指南02,既然如此,那就满足各位好了,近期也会花更多的时间来更新此系列的内容,如果您对此系列的文章感兴趣那就给我一个评论、一个点赞...原创 2019-03-01 16:16:36 · 10362 阅读 · 16 评论 -
BERT完全指南-从原理到实践
转载请注明出处,原文地址简介本文将会从BERT的原理开始讲起,并带领大家分析tansformer的源码,并分别介绍如何使用BERT做本文分类与句向量的生成。顺便说一句,BERT世界第一,不接受任何反驳。原理篇本章将会先给大家介绍BERT的核心transformer,而transformer又是由attention组合而成,希望这两篇博客能让大家对transformer有一个详细的了解。...原创 2019-01-11 12:33:42 · 10494 阅读 · 0 评论 -
BERT原理详解
转载请注明出处,原文地址简介之前的文章从attention讲解到了transformer,本文将会针对目前大热的BERT进行讲解,bert的内部结构主要是transformer,如果您对transformer并不了解,请参阅我之前的博文。从创新的角度来看,bert其实并没有过多的结构方面的创新点,其和GPT一样均是采用的transformer的结构,相对于GPT来说,其是双向结构的,而GPT...原创 2019-02-18 18:45:52 · 14778 阅读 · 0 评论 -
GPT2.0 Language Models are Unsupervised Multitask Learners 论文解读
转载请注明出处,原文地址本文是对《Language Models are Unsupervised Multitask Learners》的翻译,部分内容可能会存在理解错误,如有错误欢迎指正交流。简介在自然语言处理任务中,如QA、机器翻译、阅读理解、文本摘要、都是在特定数据集上的典型的监督学习任务。我们的模型在一个数百万级别的WebText的数据集上进行非监督训练后,来验证这些NLP任务。当...原创 2019-02-22 17:40:34 · 11765 阅读 · 1 评论 -
TensorFlow常用函数说明
转载请注明出处tf.concat()组合两个张量,axis表示是把哪个维度进行组合即直接把对应维度相加a = np.arange(6).reshape(2, 3)b = np.arange(6).reshape(2, 3)print(a.shape)print(b.shape)c = tf.concat((tf.convert_to_tensor(a), tf.convert_to_...原创 2019-01-17 10:44:21 · 1034 阅读 · 0 评论 -
动量梯度下降法Momentum
转载请注明出处,原文地址前言动量梯度下降法是对梯度下降法的一种优化算法,该方法学习率可以选择更大的值,函数的收敛速度也更快。梯度下降法就像下面这张图,通过不断的跟新w与b,从而让函数移动到红点,但是要到达最优解,需要我们不断的迭代或者调整学习率来达到最后到达最优解的目的。但是调大学习率会导致每一次迭代的步长过大,也就是摆动过大,误差较大。调小学利率会让迭代次数增加。而增加迭代次数则明显的增加了...原创 2019-03-01 16:26:36 · 6590 阅读 · 2 评论 -
Adam优化算法
转载请注明出处,原文地址前言Adam 优化算法是随机梯度下降算法的优化,近来其广泛用于深度学习应用中,尤其是计算机视觉和自然语言处理等任务,该算法是Momentum算法与RMSprop算法的结合。动量梯度下降法Momentum我们之前已经讲解过,本文将会先介绍下RMSprop算法,再讲解Adam。RMSprop(均方根)在图中这样的情况时,梯度下降在横轴方向前进,在纵轴方向却会有大幅度的...原创 2019-03-01 16:27:23 · 3518 阅读 · 0 评论 -
Rasa使用指南01
前言本文内容基于Rasa官网文档,做了翻译与整理,并添加一些自己的理解,方便大家上手Rasa,想了解更多内容的小伙伴可关注Rasa官网Rasa是一个基于多轮对话的框架,其中包含两个模块Rasa core与Rasa nlu。Rasa nlu是用来理解语义的,包括意图识别,实体识别,它会把用户的输入转换为结构化的数据,例如在下图的例子中,nlu会识别出用户打算发一封邮件(意图),邮箱地址amy@...原创 2018-09-30 16:56:37 · 18666 阅读 · 9 评论 -
tensorflow word2vec源码分析
简介最近在编写文本匹配模型时输入需要传入词向量,并在训练的过程中更新词向量。由于之前都是采用的gensim来生成词向量,词典和嵌入矩阵都不太方便获取到,因此决定采用tensorflow来训练词向量,但是据我在网上的了解,tensorflow训练的词向量整体效果还是不如gensim,gensim的源码我没有看过,如果对此清楚的童鞋请留言,十分感谢。不过在模型的训练阶段,还是会对词向量进行更新,因此...原创 2019-06-12 14:52:55 · 962 阅读 · 0 评论 -
文本匹配、文本相似度模型之DIIN
本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集所有的模型均采用tensorflow进行了实现,欢迎start,代码地址简介DIIN模型和其他匹配模型的结构都很接近,也是采用CNN与LSTM来做特征提取,但是在其输入层,作者提出了很多想法,同时采用了词向量、字向量,并且添加了一些额外的特征例如词性等,其本意在于能额外输入一些句法特征,CNN部分...原创 2019-05-31 09:51:21 · 4757 阅读 · 0 评论 -
一文看懂学习率Learning Rate,从入门到CLR
前言对于刚刚接触深度学习的的童鞋来说,对学习率只有一个很基础的认知,当学习率过大的时候会导致模型难以收敛,过小的时候会收敛速度过慢,但其实学习率是一个十分重要的参数,合理的学习率才能让模型收敛到最小点而非鞍点。本文后续内容将会给大家简单回顾下什么是学习率,并介绍如何改变学习率并设置一个合理的学习率。什么是学习率首先我们简单回顾下什么是学习率,在梯度下降的过程中更新权重时的超参数,即下面公式中...原创 2019-05-23 18:53:35 · 50861 阅读 · 1 评论 -
文本匹配、文本相似度模型之ESIM
本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集所有的模型均采用tensorflow进行了实现,欢迎start,代码地址简介ESIM模型主要是用来做文本推理的,给定一个前提premise ppp 推导出假设hypothesis hhh,其损失函数的目标是判断ppp与hhh是否有关联,即是否可以由ppp推导出hhh,因此,该模型也可以做文本匹配,...原创 2019-05-20 19:31:52 · 12664 阅读 · 0 评论 -
文本匹配、文本相似度模型之DSSM
本文是我的匹配模型合集的其中一期,如果你想了解更多的匹配模型,欢迎参阅我的另一篇博文匹配模型合集所有的模型均采用tensorflow进行了实现,欢迎start,代码地址简介DSSM是2013年提出来的模型,主要应用场景为query与doc的匹配,在这之前,用的更多的还是一些传统的机器学习算法,例如LSA,BM25等。DSSM也算是深度学习在文本匹配领域中的一个先驱者,接下来我们会先从其结构开...原创 2019-05-14 18:17:30 · 9071 阅读 · 0 评论