小白学大模型:Hugging Face Tokenizer

Tokenizer介绍

在自然语言处理(NLP)领域,Tokenizer(分词器)是准备输入模型的关键步骤之一。Hugging Face 提供了用于各种模型的分词器库,其中大多数分词器都以两种风格提供:一种是完整的 Python 实现,另一种是基于 Rust 库 🤗 Tokenizers 的“Fast”实现。这两种实现方式各有特点,其中“Fast”实现具有两大优势:

  1. 显著提升速度: 特别是在批处理分词时,使用“Fast”实现可以获得显著的速度提升。
  2. 额外的方法: 提供了额外的方法,用于在原始字符串(字符和单词)与标记空间之间进行映射。例如,可以获取包含给定字符的标记的索引,或获取与给定标记对应的字符范围。

PreTrainedTokenizer 和 PreTrainedTokenizerFast 实现了所有分词器主要方法的核心功能:

  1. 分词(Tokenizing): 将字符串分割成子词标记字符串,将标记字符串转换为标识符(ids)并反向转换,即进行编码/解码(即分词并转换为整数)。
  2. 向词汇表添加新标记: 以与底层结构(BPE、SentencePiece 等)无关的方式添加新标记。
  3. 管理特殊标记: 比如掩码、句首等,包括添加这些标记、将它们分配给分词器的属性以便轻松访问,并确保在分词过程中它们不会被拆分。

BatchEncoding 存储了 PreTrainedTokenizerBase 的编码方法(__call__encode_plusbatch_encode_plus)的输出,是一个继承自 Python 字典的类。当分词器是纯 Python 分词器时,该类的行为与标准 Python 字典完全相同,存储了这些方法计算得到的各种模型输入(input_idsattention_mask 等)。

当分词器是“Fast”分词器(即由 HuggingFace 的 tokenizers 库 支持)时,该类提供了几种高级的对齐方法,可用于在原始字符串(字符和单词)与标记空间之间进行映射。例如,可以获取包含给定字符的标记的索引,或获取与给定标记对应的字符范围。这为更复杂的分析和理解模型输入与原始文本之间关系提供了便利。

Tokenizer用途

将文本拆分成较小块是一项比看起来更加困难的任务,而且有多种方法可以实现。例如,让我们看看句子 "Don't you love 🤗 Transformers? We sure do."

一种简单的标记化方法是通过空格拆分,得到:

["Don't", "you", "love", "🤗", "Transformers?", "We", "sure", "do."]

这是一个明智的第一步,但如果我们看一下标记 "Transformers?""do.",我们会注意到标点符号附在单词 "Transformer""do" 上,这是不太理想的。我们应该考虑标点符号,以便模型不必学习单词及其可能跟随的每个可能的标点符号的不同表示,这将导致模型需要学习的表示数量激增。考虑标点符号后,对我们的示例文本进行标记化会得到:

["Don", "'", "t", "you", "love", "🤗", "Transformers", "?", "We", "sure", "do", "."]

更好了。然而,标记化处理单词 "Don't" 的方式并不理想。"Don't" 代表 "do not",因此最好将其标记化为 ["Do", "n't"]。这就是事情开始变得复杂的地方,也是每个模型都有自己的分词器类型的原因之一。根据我们用于标记化文本的规则,相同文本的不同标记化输出会生成不同的结果。只有当输入与模型训练数据相同的规则进行标记化时,预训练模型才能正常运行。

spaCy 和 Moses 是两个受欢迎的基于规则的分词器。对我们的示例应用 spaCyMoses,会得到类似以下的结果:

["Do", "n't", "you", "love", "🤗", "Transformers", "?", "We", "sure", "do", "."]

可以看到,这里使用了空格和标点标记化,以及基于规则的标记化。空格和标点标记化以及基于规则的标记化都是词标记化的示例,它宽泛地定义为将句子拆分为单词。虽然这是将文本分块的最直观方法,但对于大规模文本语料库可能会带来问题。

这么大的词汇表强迫模型拥有一个巨大的嵌入矩阵作为输入和输出层,从而导致内存和时间复杂性增加。通常来说,transformer 模型很少具有超过 50,000 的词汇表大小,特别是如果它们只在单一语言上进行预训练。

尽管字符标记化非常简单且可以大大减少内存和时间复杂性,但这使得模型更难学习有意义的输入表示。

不同的分词方法

接下来详细介绍了几种子词(subword)分词算法,主要包括Byte-Pair Encoding (BPE),WordPiece,Unigram和SentencePiece。这些算法的共同目标是根据文本中的频率将词分解为有意义的子词,以便在建模中更好地处理语言。

  1. Byte-Pair Encoding (BPE):

    • BPE根据一个预分词器将训练数据拆分为单词。
    • 创建一个基础词汇,包括训练数据中的所有符号。
    • 学习合并规则,形成新的符号,直到达到所需的词汇大小。
    • 合并规则基于符号对的频率,选择最常见的符号对进行合并。
    • 通过合并规则,BPE创建一个包含合并后符号的词汇。
  2. WordPiece:

    • 与BPE相似,但不是选择最常见的符号对,而是选择最大化加入词汇后训练数据似然的符号对。
    • WordPiece初始化词汇包括训练数据中的每个字符,并逐渐学习一定数量的合并规则。
  3. Unigram:

    • Unigram使用大量符号初始化基础词汇,并逐渐修剪每个符号以获得较小的词汇。
    • 在每个训练步骤中,计算当前词汇和unigram语言模型给定训练数据的损失。
    • 移除影响整体损失最小的符号,重复此过程直到词汇达到所需大小。
    • Unigram保留基本字符,以便能够对任何单词进行分词。
  4. SentencePiece:

    • SentencePiece将输入视为原始输入流,将空格包括在要使用的字符集中。
    • 使用BPE或unigram算法构建适当的词汇。
    • SentencePiece用于处理不使用空格分隔单词的语言,如中文、日文和泰文。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/682678.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 MDC 实现日志链路跟踪,包教包会!

在微服务环境中,我们经常使用 Skywalking、Spring Cloud Sleut 等去实现整体请求链路的追踪,但是这个整体运维成本高,架构复杂,本次我们来使用 MDC 通过 Log 来实现一个轻量级的会话事务跟踪功能,需要的朋友可以参考一…

三十七、openlayers官网示例Earthquakes Heatmap解析——在地图上加载热力图

官网demo地址: Earthquakes Heatmap 这篇主要介绍了热力图HeatmapLayer HeatmapLayer 是一个用于在地图上显示热力图的图层类型,通常用于表示地理数据中的密度或强度。例如,它可以用来显示地震、人口密度或其他空间数据的热点区域。在这个示…

springboot3 一些听课笔记(1)

文章目录 一、日志框架二、springboot 自动配置三 、springweb3.13.2 自己编写一个messageconvert3.2.2 如果我们想让其支持yaml格式呢? 一、日志框架 springboot底层 默认使用logbacksjf4j作为日志框架。 1、每个 starter 场景,都会导入一个核心场景 …

鸿蒙开发接口安全:【@system.cipher (加密算法)】

加密算法 说明: 本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import cipher from system.ciphercipher.rsa rsa(Object): void RSA 算法加解密。 系统能力: SystemCapabil…

JVM学习-Jprofiler

JProfiler 基本概述 特点 使用方便,界面操作友好对被分析的应用影响小(提供模板)CPU,Tread,Memory分析功能尤其强大支持对jdbc,noSql,jsp,servlet,socket进行分析支持多种模式(离线、在线)的分析支持监控本地、远程JVM跨平台,拥…

Android WebView上传文件/自定义弹窗技术,附件的解决方案

安卓内核开发 其实是Android的webview默认是不支持<input type"file"/>文件上传的。现在的前端页面需要处理的是&#xff1a; 权限 文件路径AndroidManifest.xml <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/&g…

代理IP类型有哪些?定义与区别

您应该对代理有了一定的了解。但是&#xff0c;代理服务器也有不同的类型。就其来源而言&#xff0c;最常见的代理服务器类型是住宅代理和数据中心代理&#xff1a; 1、住宅代理 住宅代理是 ISP 向房主提供的 IP 地址。它是与物理位置关联的真实 IP 地址&#xff0c;因此允许…

运放应用1 - 反相放大电路

1.前置知识 反相放大电路存在 负反馈电路 &#xff0c;工作在线性区&#xff0c;可以利用 虚短 概念来分析电路。 注&#xff1a;运放的 虚断 特性是一直存在的&#xff0c;虚短特性则需要运放工作在 线性区 有关运放的基础知识&#xff0c;可以参考我的另外一篇文章&#xff…

flutter as连接网易模拟器

网易模拟器下载 Mac 使用MuMu模拟器调试 Flutter开发 Android Studio 安装第三方模拟器—网易MuMu Mac 安卓Studio使用外部模拟器 Mac电脑:Android Studio 连接 MUMU 网易模拟器 Mac 上 Android Studio 链接网易 MuMu 模拟器调试 在 .zshrc 中设置 adb 二进制文件路径: …

纯血鸿蒙开发实战—如何使用画布组件Canvas绘制图形和文字,以及转圈动画的实现

本文主要通过抽奖转盘小项目讲解在鸿蒙开发中如何使用画布组件Canvas绘制图形和文字&#xff0c;以及转圈动画的实现。效果图如下&#xff1a; 首先绘制转盘的六个分区&#xff1a; drawInnerArc() {let colors [rgb(61,127,255),rgb(121,189,255)];let radius this.screenW…

运维系列.Linux下的用户管理

运维系列 Linux下的用户管理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/ar…

[RK3588-Android12] 关于BQ25703充电IC+CW2017电量计调试

问题描述 BQ25703充电ICCW2017电量计调试 解决方案&#xff1a; 附上dts配置文件 &i2c6 {clock-frequency <400000>;status "okay";// CONFIG_BATTERY_CW2017cw2017: cw201763 {status "okay";compatible "cellwise,cw2017";re…

数字影像产业园的三大赋能:科技、创新与无限可能

数字影像产业园作为文创产业的重要载体&#xff0c;以科技为核心驱动力&#xff0c;不断推动产业的技术革新和升级。 园区内汇聚了最前沿的数字技术资源&#xff0c;高清摄影设备、虚拟现实技术、人工智能应用等尖端科技在这里得到广泛应用&#xff0c;不仅提升了生产效率&…

如何一键批量下载淘宝高清主图、详情图、sku及视频信息

图片对电商至关重要&#xff0c;因为它们是商品展示的主要方式&#xff0c;直接影响消费者的购买决策。高质量的图片能够吸引顾客注意&#xff0c;提升产品吸引力&#xff0c;增加点击率和转化率。此外&#xff0c;好的图片还有助于建立品牌形象&#xff0c;提高客户信任度。 …

算法金 | 10 大必知的自动化机器学习库(Python)

大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 一、入门级自动化机器学习库 1.1 Auto-Sklearn 简介&#xff1a; Auto-Sklearn 是一个自动机器学习库&#xff0c;基于 Python 的 scikit…

IP黑名单与IP白名单是什么?

在IP代理使用中&#xff0c;我们经常听到黑名单与白名单两个名词&#xff0c;它们不仅提供了强大的防御机制&#xff0c;还可以灵活应对不同的安全威胁。本文将详细探讨IP黑名单和白名单在网络安全中的双重屏障作用。 一、IP黑名单和白名单定义 IP黑名单与IP白名单是网络安全中…

AI技能培训课程知识付费小程序的作用是什么

AI近些年逐渐走入工作生活中&#xff0c;如AI创作/绘图/视频/配音/渲染等&#xff0c;妙用AI可以节约大量时间和带来灵感&#xff0c;不少平台或个人也在围绕其开展生意&#xff0c;技术在不断进步&#xff0c;对此感兴趣及想要应用的用户/单位也不少&#xff0c;但苦于不掌握不…

linux信号集与信号掩码-保护信号处理程序,确保进程正确运行

在Linux环境下&#xff0c;当进程收到信号时&#xff0c;如何优雅地处理并确保程序的正常运行?这就需要借助信号集和信号掩码的功能。本文将为你揭开信号集和信号掩码的神秘面纱&#xff0c;并通过生动的代码示例&#xff0c;让你彻底掌握在C程序中使用它们的技巧。 一、信号集…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【06】【商品服务】接口文档地址_三级分类_SPU_SKU

持续学习&持续更新中… 学习态度&#xff1a;守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【06】【商品服务】接口文档地址_三级分类_SPU_SKU 接口文档地址三级分类效果图建表后台组建数据的树形结构在人人(后台管理系统)中实现管理商品的三级分类路径规则使用…

开关电源基本原理1

目录 内容概述 关于电感 认识电感 电感充电 电感储能 电感充电 电感参数 电感放电 利用电感升压 电感电流波形 伏秒法则 电流纹波率 电感电流三种导电模式 电流纹波率与频率的关系 电流纹波率与电感值的关系 电感值与电感体积 电路纹波率r的最优值 电感值与电…