![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自然语言处理
文章平均质量分 95
我就算饿死也不做程序员
欢迎关注同名公众号:"我就算饿死也不做程序员"。
交个朋友,一起交流,一起学习,一起进步。
展开
-
基于LangChain的RAG开发教程(二)
RAG(Retrieval Augmented Generation,检索增强生成):在生成过程中,外部的数据会通过检索然后传递给LLM,让LLM能够利用这些新知识作为上下文原创 2024-07-08 21:12:16 · 750 阅读 · 0 评论 -
LangChain入门开发教程(一):Model I/O
LangChain是一个能够利用大语言模型(LLM,Large Language Model)能力进行快速应用开发的框架:高度抽象的组件,可以像搭积木一样,使用LangChain的组件来实现我们的应用集成外部数据到LLM中,比如API接口数据、文件、外部应用等;提供了许多可自定义的LLM高级能力,比如Agent、RAG等等。原创 2024-05-29 21:14:25 · 1197 阅读 · 0 评论 -
BERT模型系列大全解读
本文讲解的BERT系列模型主要是**自编码语言模型**-AE LM(AutoEncoder Language Model):通过在输入X中随机掩码(mask)一部分单词,然后预训练的主要任务之一就是根据上下文单词来预测这些单词,从而得到的预训练语言模型。原创 2023-02-22 21:25:59 · 2461 阅读 · 2 评论 -
BERT句向量(一):Sentence-BERT
前言句向量:能够表征整个句子语义的向量,目前效果比较好的方法还是通过bert模型结构来实现,也是本文的主题。有了句向量,我们可以用来进行聚类,处理大规模的文本相似度比较,或者基于语义搜索的信息检索。例如搜索系统中的输入query和匹配文档document、Q&A任务的问题和答案等等,都可以转化为计算两个句子的语义相似/相关度,相关度最高的n个作为模型的返回结果。题外话这种类似的模型一般称为passage retrieval models,即段落检索,有两个代表:sparse model原创 2022-04-26 09:30:00 · 11972 阅读 · 0 评论 -
Transformer原理解析及机器翻译的应用
基于Seq2Seq模型的机器翻译引入Attention的Seq2Seq模型-机器翻译Transformer首先,可以思考为什么会需要Transformer?大部分的机器翻译等序列生成任务都是基于Encoder-Decoder的模式,而Encoder和Decoder一般是由RNN、LSTM、GRU其中一种,它们的特点就是:每个时刻的输出是根据上一时刻隐藏层state和当前时刻的输入,由这样的方式来实现产生序列。那这样的特点就会导致无法并行计算,因为每次计算都需要等待上一时刻的计算完成。每个原创 2020-09-15 21:01:01 · 4263 阅读 · 1 评论 -
引入Attention的Seq2Seq模型-机器翻译
在上一篇博客中,我们介绍了 基于Seq2Seq模型的机器翻译。今天,在此基础上,对模型加入注意力机制Attention。模型结构首先,我们先了解一下模型的结构,基本与Seq2Seq模型大体一致:首先,第一部分是编码器Encoder,它接收source sentence,然后Encoder将其转换为一个包含具体语义信息的中间向量;加入Attention机制,接收Encoder的输出和隐藏层,得到attention weights、context vector和attention vector;最后原创 2020-09-08 22:08:02 · 724 阅读 · 0 评论 -
基于Seq2Seq模型的机器翻译
如标题所见,这篇博客的主题就是基于Seq2Seq模型的机器翻译,它的主要任务就是将一种语言翻译为另一种语言,在这里我们以英语翻译成法语为例子,如I'm a student.---->>>Je suis étudiant.这份数据是公开,可以直接下载的,下载地址为:翻译语料下载地址模型结构首先,我们先了解一下模型的结构:首先,第一部分是编码器Encoder,它接收source sentence,然后Encoder将其转换为一个包含具体语义信息的中间向量;接着,是一个解码器Deco原创 2020-09-07 21:43:51 · 2996 阅读 · 1 评论 -
tensorflow是如何实现RNN的递归计算
我们都知道RNN是一种循环神经网络,其实可以认为是一种递归计算,每一个时刻的输出都是根据上一个时刻的输出和本时刻的输入得到:Ht+1(xt+1)=f(Ht,xt)H_{t+1}(x_{t+1}) = f(H_t, x_t)Ht+1(xt+1)=f(Ht,xt)那么在tensorflow是如何实现这种递归计算的呢?RNNCell + dynamic_rnn结合上图和下面的代码,首先,我们需要自定义一个RNN类,并继承tf.nn.rnn_cell.RNNCell其中,必须实现state_原创 2020-09-01 22:17:56 · 278 阅读 · 0 评论 -
局部敏感哈希(LSH):高维数据下的最近邻查找
哈希算法首先,将局部敏感哈希之前,我们先说下普通的哈希算法,把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。最理想的是所有不同的输入都可以映射到散列值,但是存在这种可能性的。当不同的输入映射到相同的散列值时,就称为碰撞冲突。哈希算法是要避免碰撞冲突,而局部敏感哈希(Locality-Sensitive Hashing, 下面我们简称LSH)则相反,是要创造更多的碰撞冲突。局部敏感哈希应用首先,我们讲一下LSH的应用,方便理解LSH是做什么的。在很多领域中,经常会使用最近邻查原创 2020-08-20 20:23:58 · 4522 阅读 · 9 评论 -
BERT等复杂深度学习模型加速推理方法——模型蒸馏
参考《Distilling the Knowledge in a Neural Network》Hinton等蒸馏的作用首先,什么是蒸馏,可以做什么?正常来说,越复杂的深度学习网络,例如大名鼎鼎的BERT,其拟合效果越好,但伴随着推理(预测)速度越慢。此时,模型蒸馏酒派上用场了,其目的就是为了在尽量减少模型精度的损失的前提下,大大的提升模型的推理速度。实现方法其实,模型蒸馏的思想很简单。第一步,训练好原本的复杂网络模型,如BERT,我们称为Teacher模型;第二步,用一个较为简单的模型去拟原创 2020-08-11 21:44:47 · 1136 阅读 · 0 评论 -
隐马尔科夫模型(HMM)模型训练:Baum-Welch算法
在上一篇博客中隐马尔科夫模型(HMM)原理详解,对隐马尔科夫模型的原理做了详细的介绍。今天,我们要对其中的模型训练算法Baum-Welch做一个实现,Baum-Welch算法可以在不知道状态序列的情况下,对模型的参数进行训练拟合。这其实是非常实用的,例如在分词任务,对文本进行词性的标注成本是很高,所以我们经常面临着没有词性标注的训练文本,这个时候Baum-Welch算法就派上用场了。首先,我们创建一个隐马尔科夫模型的类class HMM: """ 状态取值有N个,观测序列取值有M个原创 2020-07-30 22:16:49 · 4912 阅读 · 1 评论 -
条件随机场(CRF)的原理与实现
一、概率无向图模型模型定义又称马尔科夫随机场。设有联合概率分布P(Y),由无向图G=(V,E)表示,结点V表示随机变量,边E表示随机变量之间的依赖关系。如果P(Y)满足成对、局部或全局马尔科夫性,就此联合概率分布为概率无向图模型。成对马尔科夫性u和v是无向图G中任意两个没有边连接的结点,其他结点为O,成对马尔科尔性是指YOY_OYO的条件下,YuY_uYu和YvY_vYv是条件独立的,即P(Yu,Yv∣YO)=P(Yu∣YO)P(Yv∣YO)P(Y_u,Y_v|Y_O) = P(Y_u|Y_原创 2020-07-30 22:09:05 · 1429 阅读 · 0 评论 -
隐马尔科夫模型(HHM)原理详解
文章目录一、马尔科夫链二、隐马尔科夫模型原理三个基本问题三、概率计算1. 前向算法2. 后向算法3. 常用的概率计算三、实际应用四、模型训练(学习)1. 监督学习2. Baum-Welch算法五、模型预测维特比(Viterbi)算法隐马尔科夫模型(Hidden Markov Model,HHM)是一种有向图模型,属于生成式模型,考虑联合概率分布。HHM有两组变量,第一组是状态变量I={i1,i...原创 2020-04-29 21:04:10 · 6590 阅读 · 2 评论 -
维特比(Viterbi)算法
算法思想维特比(Viterbi)算法属于一种动态规划算法,目标在于寻找最优路径。我个人用得最多就是与BiLSTM+CRF模型的结合,比如命名实体识别、分词等,计算了每个token的归一化概率矩阵和转移概率矩阵之后,最后根据维特比算法得到整个文本句子的最优概率输出。它的思想是这样:如果最优路径在时刻t经过结点iti_tit,那么这一路径从结点iti_tit到终点iTi_TiT的部分路径,对...原创 2020-04-20 22:34:30 · 9666 阅读 · 2 评论