基于ERNIR3.0模型的向量计算的开发与实践

参考:飞桨PaddlePaddle-源于产业实践的开源深度学习平台

自然语言处理 Paddle NLP - 检索式文本问答-理论 - VipSoft - 博客园 (cnblogs.com)

词向量(Word Embedding)是表示自然语言里单词的一种方法,即把每个词都表示为一个N维空间内的点,即一个高维空间内的向量。通过这种方法,实现把自然语言计算转换为向量计算。

先把每个词(如queen,king等)转换成一个高维空间的向量,这些向量在一定意义上可以代表这个词的语义信息。再通过计算这些向量之间的距离,就可以计算出词语之间的关联关系,从而达到让计算机像计算数值一样去计算自然语言的目的。

如何把词转换为向量? 自然语言单词是离散信号,比如“香蕉”,“橘子”,“水果”在我们看来就是3个离散的词。 如何把每个离散的单词转换为一个向量?

通常情况下,我们可以维护一个如 图 所示的查询表。表中每一行都存储了一个特定词语的向量值,每一列的第一个元素都代表着这个词本身,以便于我们进行词和向量的映射(如“我”对应的向量值为 [0.3,0.5,0.7,0.9,-0.2,0.03] )

先把每个词(如queen,king等)转换成一个高维空间的向量,这些向量在一定意义上可以代表这个词的语义信息。 再通过计算这些向量之间的距离,就可以计算出词语之间的关联关系,从而达到让计算机像计算数值一样去计算自然语言的目的。

1、通过查询字典,先把句子中的单词转换成一个ID(通常是一个大于等于0的整数),我=>1, 人工=>2,爱=>3,…)

2、得到ID后,再把每个ID转换成一个固定长度的向量。          假设字典的词表中有5000个词,那么,对于单词“我”,就可以用一个5000维的向量来表示。          由于“我”的ID是1,因此这个向量的第一个元素是1,其他元素都是0([1,0,0,…,0]);          由于每个单词的向量表示都只有一个元素为1,而其他元素为0,因此我们称上述过程为One-Hot Encoding。

张量本质上是一种**多维数组**,它可以用来表示具有特定维度结构和数值的数据。 张量的概念扩展了标量(0维张量,即单个数字)、向量(1维张量,一列有序数字)和矩阵(2维张量,由行和列构成的矩形数字阵列)的概念,以涵盖更高维度的数据结构。 张量的维度被称为秩(rank),它对应于张量中独立索引的数量。 阶数与维度: 张量的阶数(rank)指定了它涉及向量空间的数量。一阶张量即为向量,二阶张量可以理解为矩阵,三阶及更高阶张量则对应更复杂的多维数组结构。 张量的维度是指其在某个坐标系下的分量总数,通常用一个列表或元组来表示其各模式(mode)的大小。比如,一个三维张量可能有形状 (m, n, p),表示它有 m 行、n 列和 p 层。 独热编码会创建一组新的二进制特征(通常是虚拟或指示符变量),其中每一个新特征代表原特征中的一个特定类别。

3、经过One-Hot Encoding后,句子“我,爱,人工,智能”就被转换成为了一个形状为 4×5000的张量       在这个张量里共有4行、5000列,从上到下,每一行分别代表了“我”、“爱”、“人工”、“智能”   四个单词的One-Hot Encoding        

4、把这个张量V和另外一个稠密张量W相乘,其中W张量的形状为5000 × 128(5000表示词表大小,128表示        每个词的向量大小)。经过张量乘法,我们就得到了一个4×128的张量,从而完成了把单词表示成向量。

稠密张量的初始值通常是由特定的词向量学习算法自动生成的。这些算法旨在将每个词汇映射到一个低维、稠密的向量空间中,使得语义相关的词在该空间中的向量距离较近,而不相关的词则距离较远。 预训练模型:直接使用已经训练好的词向量模型(如Word2Vec、GloVe、FastText、BERT、ELMo等)提供的词向量作为初始值。这些模型基于大规模文本语料库学习得到,其词向量蕴含丰富的语言学和语义信息,能够为后续任务提供良好的起点。 5000×128 的张量 行数(5000) 表示词表大小,即词汇表中不同词语的数量。这意味着您的词汇表包含5000个不同的词语或词项。 列数(128) 表示每个词的向量大小,即每个词语在词向量空间中所对应的向量维度。这意味着每个词语都被表示为一个长度为128的浮点数向量。

稀疏向量检索:双塔 基于词的稀疏表示 匹配能力有限,只能捕捉字面匹配 不可学习 把文本表示成 one hot (拼写可能有错)的形式,常见的有 TFDF、BM? 文章编码成向量,向量的长度和词典的大小一致,比如词典的大小是3W,稀疏向量表示3W, 每个位置表示这个词有没有在问题中出现过,出现过就是1 倒排索引,一般采用稀疏向量方式,只能做字面匹配 稀疏向量,几百、上千万的文档都支持

稠密向量检索:单塔 基于对偶模型结构,进行稠密向量表示 能够建模语义匹配 可学习的 把文本表示成稠密向量,也就是 Embedding,需要通过模型,对文本的语义信息进行建模,然后把信息记录在向量里,这边的向量长度,一般是128、256、768,相较于稀疏向量检索小很多,每个位置的数字是浮点数 一般通过对偶模型的结构进行训练,来获得建模的语义向量, 例: Q:王思聪有几个女朋友 P:国民老公的恋人A、B、C...... 如果通过 稀疏向量检索,可能完全匹配不到 稠密向量检索,可以学习到,国民老公=>王思聪,恋人=> 女朋友

文本匹配中的两种模型结构

对偶式模型结构:问题、段落分别编码,得到各自的 Embedding,然后通过内积或者 cosin 来计算向量之间的相似度,这个相似度代表了问题和段落之间的匹配程度 问题和段落之间难以交互,因为他们是分别编码的。底层没有交互,所以逻辑会弱些 可以快速索引,可以提前把段落向量这边计算好

交互式模型结构:输入把问题和段落拼一起,在中间交互层问题的文本和段落的文本会有个完全的交互。最后输出一个来表示问题和段落的匹配程度 对偶模型的参数可以共享,共享参数对字面匹配效果好些,不共享效果也差不了太多 实际应用中,把所有的文档都计算完,把向量存储下来。在线计算时,直接去检索

单塔模型 常用于处理稠密向量(如通过深度学习模型生成的低维、连续且大部分元素非零的特征向量,如词嵌入、深度特征提取等)的检索任务。单塔模型只有一个共享的神经网络结构: 共享塔(Shared Tower):对于用户和物品,都通过相同的神经网络结构进行编码,生成各自的向量表示。输入可以是用户和物品的联合特征,也可以是各自独立的特征,然后通过共享的权重进行学习。 在训练阶段,单塔模型通过联合学习用户和物品的向量表示,使得正样本对的向量相似度高于负样本对。与双塔模型类似,也常常采用对比学习或最大内积采样等策略。 在推理阶段,给定一个用户,通过共享塔生成用户向量,然后与所有物品向量(同样通过共享塔预先计算并存储)计算相似度,以找到最相关的物品。虽然单塔模型没有像双塔模型那样明确分离用户和物品的处理,但由于其共享权重的特性,能够在一定程度上捕获用户和物品之间的共性,有时能带来更好的表示学习效果。

总结来说,双塔模型利用两个独立的神经网络分别对用户和物品进行编码,适用于处理稀疏向量的检索任务,具有较高的检索效率和良好的可扩展性。而单塔模型采用一个共享的神经网络结构对用户和物品进行联合编码,适用于处理稠密向量的检索任务,可能在表示学习方面具有更强的灵活性和捕获交叉信息的能力。选择哪种模型结构取决于具体的应用场景、数据特性以及对检索效率、模型复杂度等方面的需求。

ErnieTokenizer.from_pretrained('ernie-3.0-tiny-medium-v2-zh') 初始化了一个分词器(Tokenizer),该分词器基于预训练模型 ernie-3.0-tiny-medium-v2-zh 的词汇表和编码规则。分词器负责将原始文本字符串转换为模型可接受的输入格式,如整数索引列表(token IDs)或子词单元(subwords)。

ErnieModel.from_pretrained('ernie-3.0-tiny-medium-v2-zh') 初始化了一个模型实例,该模型加载了预训练模型 ernie-3.0-tiny-medium-v2-zh 的权重。预训练模型是在大规模无标注文本数据上预先训练好的,旨在学习语言的通用表示。ERNIE(Enhanced Representation through kNowledge IntEgration)是百度研发的一种预训练语言模型,具备优秀的中文语言理解能力。

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

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

相关文章

.net6 webapi 部署到IIS

一、发布.net6 webapi 项目 1.1 visual studio 2022右键发布到文件夹。 二、增加IIS容器 2.1 控制面板 2.2 启用或关闭Windows功能 3.3 勾选Internet Information Services,点击确定进行安装 三、部署webapi到IIS 3.1 安装 dotnet-hosting-6.0.29-win.exe 3.2 创建应用…

vue 项目关于不同分辨率的电脑网页适配方案

流式布局:这是一种相对灵活的布局方式,页面的元素宽度使用相对宽度(例如百分比)来定义,而不是使用绝对宽度(例如像素)。这样,当浏览器窗口大小变化时,元素会自动调整大小…

csdn的复制代码功能如何实现

页面布局分析&#xff1a; 按钮在文本框里面&#xff0c;所以文本框是父元素&#xff0c;按钮是子元素。要使得按钮在文本框的右上角&#xff0c;需要使用绝对定位。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">…

数字电路-可预置倒计时器Multisim仿真

数字电路之于FPGA意义重大。本“可预置倒计时器”设计采用施密特触发器40106作为振荡电路&#xff0c;由同步十进制可逆计数器74LSl92、译码器74LS47D和七段共阳数码管构成计时电路&#xff0c;具有启动/预置、暂停/继续计时和报警功能。紫色文字是超链接&#xff0c;点击自动跳…

Vscode配置C/C++编程环境@配置C和CPP的运行和调试环境@配置过程的相关问题@中文文件名乱码@build和debug方案组合配置

文章目录 abstractgcc/g文档和用法常见用例设置源文件编码和调试信息选型示例 目录.vscode中的相关文件说明tasks.jsonlaunch.jsonc_cpp_properties.json IDE或编辑器配置vscode配置相关指令和快捷键默认task配置和取消默认 配置文件使用vscode预置变量和环境变量环境变量的使用…

【树莓派】树莓派4B配置环境

当你在配置你的系统时&#xff0c;这些指令将会非常有用。首先&#xff0c;你可能需要设置代理&#xff0c;特别是当你在一个受限的网络环境下工作时。以下是一些指令的详细说明&#xff1a; 设置代理 export http_proxyhttp://192.168.3.2:10811 export https_proxyhttp://1…

冰箱主控 32位MCU,多通道、高精度的AD采样配合温度传感器,实现冰箱各温室的精确控温;低功耗设计

概览 小华高性价比32位MCU&#xff0c;多通道、高精度的AD采样配合温度传感器&#xff0c;实现冰箱各温室的精确控温&#xff1b;低功耗设计&#xff0c;绿色低碳、节能环保&#xff1b;模块化设计&#xff0c;充分利用丰富的通讯接口&#xff0c;使主控板、显示板和驱动板灵活…

贝叶斯(Bayes)法则

1.生活中的贝叶斯 学概论统计或者机器学习经常都会提到贝叶斯法则&#xff0c;它到底是个啥&#xff0c;让我们一起看看。在生活中我们都会对人或者事物有一个非常主观的判断&#xff0c;这个主观的判断的基础是我们的生活经历总结出来的经验。先来两个例子&#xff1a; One&a…

加速博客体验:静态资源优化技巧大揭秘!

如今有许多人涉足博客写作&#xff0c;其中大多数正处于博客创作的旅程中。每位程序员都梦想拥有自己的服务器&#xff0c;理想情况下&#xff0c;服务器配置越高越好&#xff0c;价格越实惠越好。购买一台基础款服务器用于建立博客是一个不错的选择&#xff0c;因为并不需要处…

Date类.Java

目录 1.1Date概述 1.2Date常用方法 1.2.1 日期比较 2.1SimpleDateFormat类 1. 基本概念 2.构造方法 2.1格式规则&#xff1a; 3.成员方法 3.1格式化日期和时间 3.2解析日期和时间 4.练习1(出生日期&#xff09; 5.练习2(秒杀活动) 1.1Date概述 util里面的Data类…

K8s 使用 CephFS 作为后端存储(静态供给、动态供给)

一、K8s 使用 CephFS CephFS是 Ceph 中基于RADOS&#xff08;可扩展分布式对象存储&#xff09;构建&#xff0c;通过将文件数据划分为对象并分布到集群中的多个存储节点上来实现高可用性和可扩展性。 首先所有 k8s 节点都需要安装 ceph-common 工具&#xff1a; yum -y ins…

项目进度规划全攻略,助你成为项目管理高手

项目进度管理作为项目管理中的核心环节&#xff0c;对于确保项目按时交付、控制成本和提高质量至关重要。本文将详细介绍项目进度管理的基本步骤&#xff0c;帮助项目经理和团队成员更好地理解和执行进度管理工作。 项目进度管理的基本步骤主要包括以下几个方面&#xff1a; …

236基于matlab的三维比例导引法仿真

基于matlab的三维比例导引法仿真&#xff0c;可以攻击静止/机动目标。1.三维空间内的比例导引程序&#xff0c;采用龙哥库塔积分法&#xff1b;2.文件名为bili3dnew的.m文件是主函数&#xff0c;执行时需调用目标机动子函数、导引律子函数、数值积分法子函数&#xff1b;3.文件…

微服务之并行与分布式计算

一、概述 1.1集中式系统vs分布式系统 集中式系统 集中式系统完全依赖于一台大型的中心计算机的处理能力&#xff0c;这台中心计算机称为主机&#xff08;Host 或 mainframe &#xff09;&#xff0c;与中心计算机相连的终端设备具有各不相同非常低的计算能力。实际上大多数终…

《ESP8266通信指南》8-连接WIFI(Arduino开发)(非常简单)

往期 《ESP8266通信指南》7-Arduino 开发8266的环境配置与示例代码烧录-CSDN博客 《ESP8266通信指南》6-创建TCP服务器&#xff08;AT指令&#xff09;-CSDN博客 《ESP8266通信指南》5-TCP通信透传模式(AT指令)-CSDN博客 《ESP8266通信指南》4-以Client进行TCP通信&#xf…

弹性盒之主轴侧轴对齐方式

弹性盒设置主侧轴对齐方式 1.默认 justify-content: flex-start 2.justify-content: flex-end 3.justify-content: center 4.justify-content: space-between; 两端对齐 5.justify-content: space-around; 距离环绕 调整侧轴上中下 1.默认align-items: flex-start; …

论机器学习(ML)在网络安全中的重要性

机器学习是什么&#xff1f; 机器学习(ML)是人工智能的一个分支&#xff0c;它使用算法来使计算机系统能够自动地从数据和经验中进行学习&#xff0c;并改进其性能&#xff0c;而无需进行明确的编程。机器学习涉及对大量数据的分析&#xff0c;通过识别数据中的模式来做出预测…

在MySQL中isnull()函数不能作为替代null值!

在MySQL中isnull()函数不能作为替代null值&#xff01; 如下&#xff1a; 首先有个名字为business的表&#xff1a; SELECT ISNULL(business_name,no business_name) AS bus_isnull FROM business WHERE id2 直接运行就会报错&#xff1a; 错误代码&#xff1a; 1582 Incor…

5本On Hold,6本预警被踢,学术诚信高风险期刊被踢9本,还剩1本你还敢投吗?

本周投稿推荐 SSCI • 2/4区经管类&#xff0c;2.5-3.0&#xff08;录用率99%&#xff09; SCIE&#xff08;CCF推荐&#xff09; • 计算机类&#xff0c;2.0-3.0&#xff08;最快18天录用&#xff09; SCIE&#xff08;CCF-C类&#xff09; • IEEE旗下&#xff0c;1/2…

禅道项目管理系统身份认证绕过漏洞

禅道项目管理系统身份认证绕过漏洞 1.漏洞描述 禅道项目管理软件是国产的开源项目管理软件&#xff0c;专注研发项目管理&#xff0c;内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能&#xff0c;完整覆盖了研发项目管理的核心流程。 禅道项目管理系统…