NLP Word Embeddings

Word representation

One-hot形式

在上一周介绍RNN类模型时,使用了One-hot向量来表示单词的方式。它的缺点是将每个单词视为独立的,算法很难学习到单词之间的关系。

比如下面的例子,即使语言模型已经知道orange juice是常用组合词,但是却不容易泛化到知道apple juice。这主要是因为单词之间的内积是0向量。

因此我们可以用非One-hot的多维向量描述一个单词,单词之间的距离可以描述单词之间的相似度,这样可以让算法更快的学习到单词之间的联系。

多维向量形式

使用多维向量,向量每一维是一个浮点数,这样可以使用更少维度的dense向量表征单词。

1. 可以使用迁移学习的思想,预训练大量数据获取每个单词的embdding,或者直接从网络找到其他人训练好的模型获取Embedding。

2. 获取到Embdding之后可以再应用到你的任务当中,比如名字识别等模型,这是你的训练集可能是比较小的。

3. 如果你的训练集很大,也可以尝试fine-tune第一步中的预训练模型

单词之间的相似度

使用多维向量表征单词时,可以使用cos距离或者L2距离等来表征单词之间的相似度

Learning Word Embddings

在NLP最开始的时候,研究人员尝试用很复杂的模型来获取Word Embdding,但是后来大家发现可以用越来越简单的模型来获取并且效果很好,尤其是在大数据集下。该小节从复杂模型讲起,然后逐步简化。

早期模型

每次取数据集中句子中待预测词前面的4(超参)个单词,输入到模型中,模型输出层是softmax输出每个单词的可能性。

Word2Vec 之 skip-grams

原始论文中作者提供了Word2Vec的两个版本:skip-grams、CBow。

CBow是利用中间词周围的上下文预测中间词,有优点有缺点,不展开讲,这里只介绍skip-grams。

定义

首先介绍什么是skip-grams,skip-grams需要提供一个context单词和一个target单词,先选定context单词,然后在其前后k(超参)个相邻单词的窗口内,随机选取一个target单词组成一个pair

模型结构

输出层为词库大小个softmax分类单元

缺点

这个算法存在一些问题:

1. softmax在词库很大时计算成本很高,可以使用多层softmax降低计算量(后面的课程中有更优的解决方案,这里没展开),建立多层softmax树时,可以使用启发式算法优化(不展开),把常用词放在浅层,低频词放在深层,减少检索成本。

2. 如何选取context单词,如果正态分布选取会导致抽取的都是高频词,低频词很难被取出来,也需要用启发式算法抽样(不展开)。

Negative Sampling

定义

负采样是对原始skip-grams的优化,可以有效降低多类分类问题的计算量。

负采样是选取一个context单词,然后从其前后一定窗口内选取一个临近的target单词作为正样本,其标签是1;然后用同样的context单词,从词库随机选取k(超参)次target单词分别组成负样本,其标签是0。

小概率会抽到实际也是context单词附近的单词,因为是随机误差所以影响不大。

模型结构

跟skip-grams相比,模型的输出层将词库大小个softmax单元,替换为了词库大小个逻辑回归单元,并且在每次迭代中只需要更新跟正负样本相关的k+1个输入层的逻辑回归单元参数,大幅降低计算量。

如何进行负样本选取

既不是随机采样,也不是按照词频采样,作者用了一个经验公式(无法证明是最好的,但是现在都用的这个公式):

P(w_i)=\frac{f(w_i)^{\frac{3}{4}}}{\sum_{j=1}^{10000}f(w_j)^{\frac{3}{4}}}

GloVe

全称:Global Vectors for word representation。使用不如Word2Vec广泛。

定义

首先统计词库中每两个单词在训练集中一起出现的次数,然后输入context单词模型预测其跟target词出现次数并最小化两者之间的差值。

模型结构

在实际模型中,增加了一个权重系数经验公式f(x_{ij})用于对低频词提权,高频词降权。

\thetae分别是单词的context向量和target向量,分别为单词作为context单词时使用和作为target单词时使用,训练完成后可以使用\theta_w\frac{\theta_w+e_w}{2}作为最终的词向量。

偏置项存在的意义ChatGPT的解释如下

词向量的应用

Sentiment Classification

通过分析文本的情感表达来确定其情感倾向。在NLP中经常使用。

在有词向量的情况下,你可以使用中等大小的标注训练集来进行情感分类,而不需要大量标注数据集。

如下图可以将评价中的所有词向量相加或取平均作为输入预测分数,但是这样存在一个问题,无法理解上下文,比如左下角例子,good出现更多可能预测分较高,但实际是差评

进一步使用RNN模型逐次输入每个单词词向量,输出打分。

消除词向量偏见

以性别偏见为例,计算he/she、male/female这些词向量的差并计算平均值,找到性别差异向量;然后对于不应该跟性别关联的词如医生、婴儿看护在这个方向上移动到0坐标;然后对性别差异的反义词组在这个方向上移动为对称的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据)

代码地址:CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据) 标题:CNN卷积神经网络多变量多步预测,光伏功率预测 一、引言 1.1 研究背景及意义 随着全球能源危机的加剧和环保意识的提升&#xff…

本地部署DeepSeek Nodejs版

目录 1.下载 Ollama 2.下载DeepSeek模型 3.下载 ollama.js 1.下载 Ollama https://ollama.com/ 下载之后点击安装,等待安装成功后,打开cmd窗口,输入以下指令: ollama -v 如果显示了版本号,则代表已经下载成功了。…

【Vue中BUG解决】npm error path git

报错内容如下: 从错误信息可知,这是一个 ENOENT(No Entry,即找不到文件或目录)错误,并且与 git 相关。具体来说,npm 在尝试调用 git 时,无法找到 git 可执行文件,下面为…

Jenkins+gitee 搭建自动化部署

Jenkinsgitee 搭建自动化部署 环境说明: 软件版本备注CentOS8.5.2111JDK1.8.0_211Maven3.8.8git2.27.0Jenkins2.319最好选稳定版本,不然安装插件有点麻烦 一、安装Jenkins程序 1、到官网下载相应的版本war或者直接使用yum安装 Jenkins官网下载 直接…

插入排序和希尔排序

目录 插入排序 插入排序代码实现: 插入排序思路: 希尔排序: 什么是希尔排序: 希尔排序代码实现: 希尔排序思路: 插入排序(稳定) 假设有这样一个数组,想要从小到大进行排…

elasticsearch

1、什么是elasticsearch elasticsearch被广泛用于日志分析、实时监控领域 elastic stack (ELK) ①kibana 数据可视化 ②elasticsearch存储、计算、搜索数据 ③Longstash、Beats 数据抓取 操作ES的语句称之为DSL语句 2、ES倒排索引 3、ES单节点安装…

【AcWing】蓝桥杯辅导课-数学与简单DP

目录 数学 买不到的数目 蚂蚁感冒 饮料换购 DP 01背包问题 摘花生 最长上升子序列 地宫取宝 波动数列 数学 买不到的数目 1205. 买不到的数目 - AcWing题库 这道题的意思就是给定两个正整数p和q,求xpyq这一个组合不能凑出来的最大正整数是多少 首先我们…

PyQt学习记录01——加法计算器

0. 安装配置 0.1 安装相关库 首先打开你的PyCharm程序,然后新建一个目录用于学习,其次在terminal中输入 pip install pyqt5如果你不具有科学上网能力,请改为国内源 pip install pyqt5 -i https://pypi.douban.com/simple然后安装pyqt相关…

[Linux] 信号(singal)详解(二):信号管理的三张表、如何使用coredump文件、OS的用户态和内核态、如何理解系统调用?

标题:[Linux] 信号管理的三张表、如何使用coredump文件、OS的用户态和内核态、如何理解系统调用? 水墨不写bug (图片来源:文心一言) 正文开始: 目录 一、信号管理的三张表 (1)三张表…

2025.2.11

1> 制作一个闹钟软件 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QTime> #include <QTimer> #include <QTimeEdit> #include <QDa…

和鲸科技上线 DeepSeek 系列模型服务,助力数智企业 AI 业务创新!

近日&#xff0c;和鲸科技团队宣布旗下数据科学协同平台 ModelWhale 实现对 DeepSeek 全系列大模型的深度支持&#xff0c;旨在帮助更多数智化转型企业提供从算力基建到业务融合的全栈式解决方案&#xff0c;快速搭建自主可控的云端智能服务体系&#xff0c;实现大模型与业务系…

使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器进行模型检查点处理

2023 年 11 月&#xff0c;Amazon 宣布推出适用于 PyTorch 的 S3 连接器。适用于 PyTorch 的 Amazon S3 连接器提供了专为 S3 对象存储构建的 PyTorch 数据集基元&#xff08;数据集和数据加载器&#xff09;的实现。它支持用于随机数据访问模式的地图样式数据集和用于流式处理…

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发(文末联系,整套资料提供)

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发 一、系统介绍 随着人们生活水平的提高和健康意识的增强&#xff0c;智能健康监测设备越来越受到关注。智能腰带作为一种新型的健康监测设备&#xff0c;能够实时采集用户的腰部健康数据&#xff0c;如姿势、运动…

【cocos creator】拖拽排序列表

DEMO下载 GameCtrl.ts import ItemCtrl from "./ItemCtrl";const { ccclass, property } cc._decorator;ccclass export default class GameCtrl extends cc.Component {property(cc.Node)content: cc.Node null;property(cc.Node)prefab: cc.Node null;arr []…

Vision Transformer:打破CNN垄断,全局注意力机制重塑计算机视觉范式

目录 引言 一、ViT模型的起源和历史 二、什么是ViT&#xff1f; 图像处理流程 图像切分 展平与线性映射 位置编码 Transformer编码器 分类头&#xff08;Classification Head&#xff09; 自注意力机制 注意力图 三、Coovally AI模型训练与应用平台 四、ViT与图像…

国产编辑器EverEdit - 编辑辅助功能介绍

1 编辑辅助功能 1.1 各编辑辅助选项说明 1.1.1 行号 打开该选项时&#xff0c;在编辑器主窗口左侧显示行号&#xff0c;如下图所示&#xff1a; 1.1.2 文档地图 打开该选项时&#xff0c;在编辑器主窗口右侧靠近垂直滚动条的地方显示代码的缩略图&#xff0c;如下图所示&…

Spring AI 介绍

文章来源&#xff1a;AI 概念 (AI Concepts) _ Spring AI1.0.0-SNAPSHOT中文文档(官方文档中文翻译)|Spring 教程 —— CADN开发者文档中心 本节介绍 Spring AI 使用的核心概念。我们建议仔细阅读它&#xff0c;以了解 Spring AI 是如何实现的。 模型 AI 模型是旨在处理和生成…

Spring MVC 拦截器(Interceptor)与过滤器(Filter)的区别?

1、两者概述 拦截器&#xff08;Interceptor&#xff09;&#xff1a; 只会拦截那些被 Controller 或 RestController 标注的类中的方法处理的请求&#xff0c;也就是那些由 Spring MVC 调度的请求。过滤器&#xff08;Filter&#xff09;&#xff1a; 会拦截所有类型的 HTTP …

qt QCommandLineOption 详解

1、概述 QCommandLineOption类是Qt框架中用于解析命令行参数的类。它提供了一种方便的方式来定义和解析命令行选项&#xff0c;并且可以与QCommandLineParser类一起使用&#xff0c;以便在应用程序中轻松处理命令行参数。通过QCommandLineOption类&#xff0c;开发者可以更便捷…

Flink KafkaConsumer offset是如何提交的

一、fllink 内部配置 client.id.prefix&#xff0c;指定用于 Kafka Consumer 的客户端 ID 前缀partition.discovery.interval.ms&#xff0c;定义 Kafka Source 检查新分区的时间间隔。 请参阅下面的动态分区检查一节register.consumer.metrics 指定是否在 Flink 中注册 Kafka…