-
一、自然语言处理
- NLP 是借助计算机技术研究人类语言的科学
- 自然语言处理发展史
- 一、不懂语法怎么理解语言
- 依靠语言学家人工总结文法规则
- Chomsky Formal Languages
- 难点:上下文有关文法
- 规则增多,存在矛盾
- 依靠语言学家人工总结文法规则
- 二、只要看得足够多,就能处理语言
- 基于数学模型和统计方法
- 通信系统加隐马尔可夫模型
- 对一维且有序任务有优势
- 对二维及次序变化任务不能处理
- 通信系统加隐马尔可夫模型
- 硬件能力提升、海量数据,统计机器学习方法
- 基于有向图的统计模型
- 如2005年 Google 基于统计方法的翻译系统超过基于规则的SysTran系统
- 2006年 Hinton 证明深度信念网络 DBN , 逐层预训练策略, 基于神经网络和反向传播算法 Back Propagation 的深度学习方法 ; LSTM 长短时记忆网络 ;2024年 xLSTM
- 卷积神经网络 CNN ; 2017年 Attention 注意力模型 Transformer 结构
- 基于有向图的统计模型
- 基于数学模型和统计方法
- 一、不懂语法怎么理解语言
- 统计语言模型发展史
- 为自然语言建立数学模型
- 判断一个文字序列是否构成人类能理解并且有意义的句子
- 70年代 Jelinek 贾里尼克 统计模型
- P(S) = P(w_1,w_2,...,w_n)= P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)...P(w_n|w_1,w_2,...,w_{n-1})
- 词语w_n出现的概率取决于在句子中出现在它之前的所有词(理论上也可以引入出现在它之后的词语)。但是,随着文本长度的增加,条件概率P(w_n| w_1,w_2,…,w_{n-1}) 会变得越来越难以计算,因而在实际计算时会假设每个词语 w_i 仅与它前面的 n-1个词语有关
- P(w_i|w_1,w_2,...,w_{i-1}) = P(w_i|w_{i-N+1},w_{i-N+2},...,w_{i-1})
- 这种假设被称为马尔可夫(Markov)假设,对应的语言模型被称为 N 元(N-gram)模型。例如当 N = 2 时,词语 w_i 出现的概率只与它前面的词语w_{i-1} 有关,被称为二元(Bigram)模型;而 N =1 时,模型实际上就是一个上下文无关模型。由于 N 元模型的空间和时间复杂度都几乎是 N 的指数函数,因此实际应用中比较常见的是取 N =3 的三元模型
- 2003年 本吉奥,NNLM 模型,神经网络语言模型
- 通过输入词语前面的 N-1 个词语来预测当前词语
- 词表 词向量 激活函数 Softmax 函数 , 词表 需要学习获得
- 2013年 Google ,Word2Vec 模型
- Word2Vec 模型提供的词向量在很长一段时间里都是自然语言处理方法的标配
- 训练方法 CBOW (Continuous Bag of Words)和 Skip-gram
- 使用周围词语来预测当前词
- 使用了上文和下文来预测,打破只通过上文来预测当前词的惯性
- 使用当前词来预测周围词
- 使用周围词语来预测当前词
- 多义词问题
- 运用词语之间的互信息 雅让斯基
- 2018年 ELMo模型 Embeddings from Languages Models
- 会根据上下文动态的调整词语的词向量
- 采用双层双向LSTM作为编码器
- 2018年 BERT模型 Bidirectional Encoder Representations from Transformers
- 两阶段框架 预训练 微调
- 类似ELMo 双向语言模型
- UNILM 模型
- 大语言模型
- Emergent Abilities 涌现能力
- 规模扩展定律 Scaling Laws
- 2022年11月 ChatGPT 模型
- Qwen LLaMA
- Emergent Abilities 涌现能力
- 为自然语言建立数学模型
-
二、Transformer模型
- 取代循环神经网络RNN和卷积神经网络CNN成为当前NLP模型的标配
- 2017年 Google 《Attention Is All You Need》
- 序列标注
- 《Universal Language Model Fine-tuning for Text Classification》
- GPT (the Generative Pretrained Transformer)
- BERT (Bidirectional Encoder Representations from Transformers)
- 结构
- 纯Encoder 模型
- BERT
- DistilBERT
- RoBERTa
- XLM
- ALBERT
- ELECTRA
- DeBERTa
- XLM-R
- ALBERT
- XLM
- BERT
- 纯Decoder 模型
- GPT
- GPT-2
- CTRL
- GPT-3
- GPT-Neo
- GPT-J
- GPT-3
- CTRL
- GPT-2
- GPT
- Encoder-Decoder 模型
- T5
- BART
- M2M-100
- BigBird
- M2M-100
- BART
- T5
- Encoder(左边):负责理解输入文本,为每个输入构造对应的语义表示(语义特征)
- Decoder(右边):负责生成输出,使用 Encoder 输出的语义表示结合其他输入来生成目标序列
- 注意力层
- 原始结构
- 纯Encoder 模型
- Transformer
- 预训练语言模型
- 自监督学习
- 自监督学习是一种训练目标可以根据模型的输入自动计算的训练方法。
- 因果语言建模
- NNLM
- 遮盖语言建模
- CBOW
- 迁移学习
- 特定任务的标注语料
- 有监督学习
- 微调
- 有监督学习
- 找到一个尽可能接近我们任务的预训练模型,然后微调它
- 特定任务的标注语料
- 更好的性能 不断地增加模型大小
- 海量数据
- 时间和经济成本都非常高
- 模型蒸馏
-
三、注意力机制
- Attention
- 分词 词向量 矩阵
- RNN
- 递归计算 较慢
- Yt = f(Yt-1, Xt)
- 递归计算 较慢
- CNN
- 滑动窗口 局部上下文计算
- Yt = f(Xt-1, Xt,Xt+1)
- 滑动窗口 局部上下文计算
- Attenion
- Self-Attention
- Yt = f(Xt, A,B)
- A=B=X
- Yt = f(Xt, A,B)
- Self-Attention
- Scaled Dot-product Attention
- 计算注意力权重
- 更新 token embeddings
- Attention(Q,K,V) = softmax( ....)
- Pytorch 实现, torch.nn.Embedding
- Multi-head Attention
- 首先通过线性映射将序列映射到特征空间,每一组线性投影后的向量表示称为一个头 (head),然后在每组映射后的序列上再应用 Scaled Dot-product Attention
- Transformer Encoder
- The Feed-Forward Layer
- Layer Normalization
- Positional Embeddings
- 绝对位置表示
- 相对位置表示
- Transformer Decoder
- Masked multi-head self-attention layer
- Encoder-decoder attention layer
- Attention
-
四、开箱即用的pipelines
- NLP 任务分类
- 文本分类
- 对文本中词语进行分类
- 文本生成
- 从文本中抽取答案
- 根据输入文本生成新的句子
- pipelines
- feature-extraction 获得文本的向量化表示
- fill-mask 填充被遮盖的词、片段
- ner 命名实体识别
- question-answering 自动问答
- sentiment-analysis 情感分析
- summarization 自动摘要
- text-generation 文本生成
- translation 机器翻译
- zero-shot-classification 零训练样本分类
- 情感分析
- 示例代码:下载了模型 distilbert-base-uncased-finetuned-sst-2-english
- 零训练样本分类
- 不提供任何标注数据的情况下自定义分类标签
- 示例代码:下载了模型 facebook/bart-large-mnli
- 文本生成
- 遮盖词填充
- 命名实体识别
- 自动问答
- 示例: 根据给定的上下文回答问题
- 分类
- 抽取式
- 多选
- 无约束
- 自动摘要
- 旨在将长文本压缩成短文本 , 尽可能保留原文的主要信息
- pipeline 原理
- 结构:
- 将文本预处理为模型可以理解的格式;
- 使用分词器进行预处理
- 将预处理好的文本送入模型;
- Model input
- Full model
- Transformer network
- Embeddings
- Layers
- Hidden states
- Head
- Transformer network
- Model outputs
- 对模型输出进行后处理
- 对模型的预测值进行后处理,输出人类可以理解的格式。
- 将文本预处理为模型可以理解的格式;
- Tokenizer ; Model ; Post-Processing
- 结构:
- NLP 任务分类
-
五、模型与分词器
- 模型
- 加载模型
- AutoModel 或者 对应Model类, 如BertModel
- BertModel.from_pretrained()
- 保存模型
- Model.save_pretrained()
- 加载模型
- 分词器
- 分词策略
- 按词切分 word-based
- 按字符切分 character-based
- 按子词切分 subword
- 复杂单词 被分为多个子词
- 加载与保存分词器
- Tokenizer.from_pretrained()
- Tokenizer.save_pretrained()
- 文件: special_tokens_map.json、tokenizer_config.json 、vocab.txt
- 编码与解码文本
- 文本编码 : 分词 和 映射
- 解码 :: token IDs 转回原来的字符串 , 合并被分为多个token的单词
- 分词策略
- 处理多段文本
- Padding 操作
- Attention Mask
- 直接使用分词器
- 编码句子对
- 添加Token
- 添加新Token
- tokenizer.add_tokens
- tokenizer.add_special_tokens
- 调整embedding 矩阵
- resize_token_embeddings
- 添加新Token
- Token embedding 初始化
- 直接赋值
- 初始化为已有token的值
- 模型
-
六、必要的Pytorch知识
- Pytorch 基础
- 张量
- 张量计算
- 自动微分
- backward
- 调整张量形状
- view \ reshape
- 转置 transpose
- 交换维度 permute
- 广播机制
- 索引与切片
- 降维与升维
- unsqueeze
- squeeze
- 加载数据
- Dataset
- 映射型Map-style数据集
- 迭代型Iterable-style数据集
- DataLoader
- Dataset
- 训练模型
- 构建模型
- 优化模型参数
- 损失函数
- 优化器
- 训练循环
- optimizer.zero_grad()
- loss.backwards()
- optimizer.step()
- 验证,测试循环
- 保存及加载模型
- 保存和加载模型权重
- 保存和加载完整模型
- 代码
- Pytorch 基础
- 七、微调预训练模型
- 八、快速分词器
相关推荐
Transformers 快速入门 | 一
作者|huggingface 编译|VK 来源|Github 理念 Transformers是一个为NLP的研究人员寻求使用/研究/扩展大型Transformers模型的库。 该库的设计有两个强烈的目标: 尽可能简单和快速使用: 我们尽可能限制了要学习的面向对象抽象的类的数量,实际上几乎没有抽象,每个模型只需要使用三个标准类:配置、模型和tokenizer, 所有这些类都可以通过使用公共的fro...
【深度学习|基础算法】快速入门Transformer教程(小白友好向)
关于transformer的学习
Huggingface Transformers库学习笔记(一):入门(Get started)
前言 Huggingface的Transformers库是一个很棒的项目,该库提供了用于自然语言理解(NLU)任务(如分析文本的情感)和自然语言生成(NLG)任务(如用新文本完成提示或用另一种语言翻译)的预先训练的模型。其收录了在100多种语言上超过32种预训练模型。这些先进的模型通过这个库可以非常轻松的调取。同时,也可以通过Pytorch和TensorFlow 2.0进行编写修改等。 本系列学习资料来自于该库的官方文档(v4.4.2),链接为Transformers Huggingface Transfo
Transformers实战(一)快速入门命名实体识别、多项选择
Transformers实战(一)快速入门命名实体识别、多项选择
【12】Transformers快速入门:Transformers 模型加载与保存实战?
想象一下,Transformer 模型就像一个已经经过海量数据训练、知识渊博的“大脑”。我们的任务就是把这个“大脑”请到我们的程序里来工作。训练好一个模型,或者只是加载了一个预训练模型想以后再用,就需要把它保存下来。当你从 Hub 下载模型或查看本地模型目录时,通常会看到几个关键文件。是你的万能钥匙,它既可以从云端按名字取模型,也可以从本地目录加载你准备好的模型文件。库加载预训练模型,并将其保存到本地。等文件,但本课聚焦模型本身)后,它会在你指定的目录(如。),加载的核心方法都是。, 特定模型类 (如。
transformers库快速入门
Transformers 库的API:主要包括配置(configuration)、模型(model)、分词器(tokenizer)和流水线(pipeline)这几个最重要的类。MODELS:库中和每个模型实现有关的类和函数。:内部使用的工具类和函数。
Transformers快速入门 Quick tour
先简单介绍一下Transformers库的特点。Transformers可用于下载自然语言理解(Natural Language Understanding)任务的预训练模型,如情感分析任务;也可以用于下载自然语言生成(Natural Language Generation)任务的预训练模型,如翻译任务。 使用pipline进行一个自然语言处理任务 使用pipline可以快速地使用一些预训练模型。 transformers提供了一些经典的自然语言任务: 情感分析:分析文本是正面的还是负面的。 文本生成:提
LLM 基础-transformers 库快速入门
本文总结了 Transformers 的常用术语并给出详细解释,然后对 transformers 库总结了快速使用方法,并结合实例代码做分析,可当作 LLM 的快速入门学习。
Transformers快速入门-学习笔记(二)
Transformers快速入门-学习笔记
HMMER实战:从零部署到序列分析
本文详细介绍了HMMER工具的安装与使用,从源码编译到环境配置,再到核心工具hmmbuild、hmmsearch等的实战应用。通过球蛋白序列分析案例,展示了HMMER在生物信息学中的强大功能,帮助读者快速掌握序列分析技巧。
数据仓库建模的步骤-从需求分析到模型优化的全面指南
数据仓库建模是一个系统化的过程,旨在设计和构建一个高效、可扩展的数据存储和分析环境。它的目标是将来自不同源系统的数据整合到一个统一的、面向主题的、随时间变化的数据集合中,以支持企业的决策制定过程。数据仓库建模不仅仅是创建表格和定义关系,它更是一门艺术,需要平衡业务需求、技术限制和未来的可扩展性。提供快速的查询性能支持复杂的分析需求适应业务的变化和增长保持数据的一致性和准确性接下来,让我们深入探讨数据仓库建模的每个主要步骤。
【“Transformers快速入门”学习笔记4】添加Token
tokenizer.add_tokens([“aaa”,“bbb”]),参数是新 token 列表{】,返回的是添加的token的数量。
Jetson Orin NX上CAN总线调试全攻略:从硬件焊接到开机自启动(附常见问题解决方案)
本文详细介绍了在NVIDIA Jetson Orin NX开发板上进行CAN总线调试的全过程,包括硬件焊接、驱动配置、通信测试和开机自启动设置。针对常见问题如信号接反、波特率设置等提供了实用解决方案,帮助开发者快速实现稳定的CAN总线通信。
【“Transformers快速入门”学习笔记1】pipeline操作背后做了什么?
比如,对于情感分析任务,很明显我们最后需要使用的是一个文本分类 head。包括input_ids和attention_mask,表示对应分词之后的 tokens 映射到的数字编号列表和用来标记哪些 tokens 是被填充的(这里“1”表示是原文,“0”表示是填充字符)。可以看到,对于 batch 中的每一个样本,模型都会输出一个两维的向量(每一维对应一个标签,positive 或 negative)。模型的输出是数值,人看不懂,需要进一步处理.这样模型的预测结果就是容易理解的概率值。
ENVI5.6 Seamless Mosaic多景影像镶嵌色差问题
多景影像无缝镶嵌色差问题拟解决方法
家长必看!用RouterOS轻松屏蔽不良网站,保护孩子上网安全
本文为家长提供了一份详细的RouterOS路由器配置指南,旨在通过技术手段保护儿童上网安全。文章核心介绍了如何利用RouterOS的DNS静态条目功能,轻松实现禁止访问特定不良网站,并结合防火墙时间规则,为孩子构建一个纯净、可控的家庭网络环境,操作简单,无需专业背景。
【“Transformers快速入门”学习笔记5】pytorch中的Dataset和DataLoaders
import osself.img_labels = pd.read_csv(annotations_file) # 从 CSV 文件中读取图像路径和标签self.img_dir = img_dir # 图像文件所在的目录self.transform = transform # 对图像进行的转换(如预处理)self.target_transform = target_transform # 对标签进行的转换return len(self.img_labels) # 返回数据集中图像的数量。
IGV实战指南:从数据导入到Peak可视化的全流程解析
本文提供了一份IGV实战指南,详细解析了从数据导入到Peak可视化的全流程。内容包括软件安装、参考基因组加载、测序数据处理、信号调整以及如何精准定位和可视化Peak区域,并分享了导出出版级矢量图的高级技巧,帮助用户高效完成基因组数据可视化分析。
【“Transformers快速入门”学习笔记3】处理多段文本
现实场景中,我们往往会同时处理多段文本,而且模型也只接受批 (batch) 数据作为输入,即使只有一段文本,也需要将它组成一个只包含一个样本的 batch。按批输入多段文本产生的一个直接问题就是:batch 中的文本有长有短,而输入张量必须是严格的二维矩形,维度为(batch_size,sequence_length),即每一段文本编码后的 token IDs 数量必须一样多。
JFET放大电路实例设计仿真
参照《晶体管电路设计》中的例子 JFET 2SK184 JFET 2SK184 数据手册如下 电路设计 共源放大 步骤:1、静态工作点 2N4416 1ma 2、RD和RS A=5 5:1 RS 2V /1m=2k RD 5k 3、偏压VG 根据传输特性 VGS-ID vgs=-0.7 vg=2-0.7=1.3 400k^2/50k...
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
【“Transformers快速入门”学习笔记8】学习中遇到的一些方法和关键字
Dropout 在训练时,以指定的丢弃概率(通常在 0.1 到 0.5 之间)随机将输入张量的部分元素置零,并按比例缩放剩余元素:[ \text{output} = \frac{\text{input} \times \text{mask}}{1 - \text{p}} ] 其中 p 是丢弃概率,mask 是二元掩码张量,其形状与输入张量相同。例如,nn.Linear(768, 2) 表示一个线性层,它将输入大小为 768 的张量转换为输出大小为 2 的张量,适用于二分类问题。
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
【“Transformers快速入门”学习笔记6】训练模型,保存和加载模型
Pytorch 所有的模块(层)都是的子类,神经网络模型本身就是一个模块,它还包含了很多其他的模块。下面给出了一个完整的训练循环和测试循环过程,以及详细注释。
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
【“Transformers快速入门”学习笔记2】加载与保存模型和分词器
Model.from_pretrained() 会自动缓存下载的模型权重,默认保存到 ~/.cache/huggingface/transformers,我们也可以通过 HF_HOME 环境变量自定义缓存目录。以上步骤可以使用encode()合并,并且 encode() 会自动添加模型需要的特殊 token,例如 BERT 分词器会分别在序列的首尾添加 [CLS] and [SEP]解码过程不是简单的映射回tokens,还需要合并被分为多个token的单词。如上文所述,编码(Encoding)包括。
【“Transformers快速入门”学习笔记7】一个完整的训练需要做什么,以AFQMC数据集为例
首先继承Dataset类构造自定义数据集,以组织样本和标签。AFQMC 样本以 json 格式存储,因此我们使用 json 库按行读取样本,并且以行号作为索引构建数据集。每一个样本将以字典的形式保存。Data = {}若是数据集太大,也可以继承IterableDataset类构建迭代型数据集# 每次生成器函数执行到 yield 语句时,会保存当前的状态(例如文件读取位置、局部变量等),直到下一次迭代请求时继续执行。
【学习笔记】Transformers库笔记
库API文档: https://huggingface.co/transformers/ 版本号: 4.3.0 序言 Transformers库应该算是一个比较新的项目,截至2021年3月2日,当中已经收录了不少arxiv上2020年发表的论文的模型代码,通过这个库可以非常轻松的调取最先进的,包括BERT在内的深度学习模型(以自然语言处理领域的模型为主),并且可以使用PyTorch或TensorFlow 2.x进行继续训练或微调。 相对于Tensorhub需要翻墙,目前在网络情况不错的情况下,从hugg.
5588



被折叠的 条评论
为什么被折叠?



