PyTorch笔记 - Word Embeddings Word2vec 原理与源码

2023-11-06 05:30

本文主要是介绍PyTorch笔记 - Word Embeddings Word2vec 原理与源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎关注我的CSDN:https://blog.csdn.net/caroline_wendy
本文地址:https://blog.csdn.net/caroline_wendy/article/details/128227529

语言建模

  1. 基于已有的人类组织的文本语料,来去无监督学习如何组织一句话,并还能得到单词的语义表征。
  2. 统计模型:n-gram,N个单词所构成的序列,在文档中出现的次数,基于贝叶斯公式。
  3. 无监督学习:NNLM(Neural Network Language Model)《A Neural Probabilistic Language Model》,Neural Network + n-gram
  4. 大规模无监督学习:word2vec、BERT(Bidirectional Encoder Representations from Transformers)

n-gram模型

  1. 特点:统计性、简单、泛化能力差、无法得到单词的语义信息
  2. 定义:n个相邻字符构成的序列
    1. uni-gram,单一单词
    2. bi-gram,两个单词
    3. tri-gram,三个单词
  3. 用途:基于n-gram的频数分析文本,如垃圾邮件分类
  4. 对于word n-gram(基于单词),特征维度随着语料词汇增大和n增大而指数增大(curse of dimensionality,维度灾难)
  5. 对于character n-gram(基于字母),特征维度只随着n增大而增大

单词的语义表征

  1. 稀疏式:one-hot encoding,只有1个位置上的元素是1,只能反应单词在单词表中的位置,维度很长,不利于计算。
  2. 分布式:类似于word embedding,连续浮点型的向量,维度是固定的,隐式的语义表征。
  3. 应用场景:
    1. word/character/phrase/sentence/paragraph embedding
    2. speaker/user/item embedding

基于神经网络的语言模型(NNLM)

  1. 由Bengio(CA,University of California,加州大学)提出,解决Curse of Dimensionality问题。
  2. NNLM包含:
    1. 输入层(one-hot),排列矩阵
    2. 投影层,查询embedding table,将离散的index转换为连续的向量表示。
    3. 隐含层,映射为隐含层
    4. 输出层,映射到大小为单词表数量的embedding之上。
  3. word embeddings是副产物,隐含的语义表征
  4. 主要复杂度:N*D*H + H*V
  5. 如何降低复杂度,如何训练大数据,2010年左右面临的问题

image-20221207185332539

Word2vec模型

  1. 改进1:抛弃隐含层,并提出CBOW和Skip-gram
  2. Continuous Bag-of-Words(CBOW)连续词袋算法,与BERT类似
    1. 不同于NNLM,CBOW考虑到了前后上下文
    2. 使用周围单词预测中间单词
    3. image-20221207190330455
  3. Skip-gram
    1. 与CBOW相反,使用中间单词预测周围单词,判断两个单词是否为相邻单词
    2. image-20221207190343645
  4. 论文《Efficient Estimation of Word Representations in Vector Space》,Tomas Mikolov,CA

image-20221207190515415

Word2vec模型

  1. 改进2:优化Softmax

  2. Softmax计算量跟K呈线性关系,单词维度

    1. image-20221207200221338
  3. Hierarchical Softmax,参考详解Hierarchical Softmax,Huffman树

    1. l o g 2 K log_2K log2K次的二分类
    2. N个单词,N个节点
    3. 选择权重最小的2个单词,合并一课树的左右子树
    4. 重复筛选。
    5. 统计全部单词出现的次数,构建Huffman树的权重,

    image-20221207200507478

img

基于H-Softmax的word2vec

  1. Continuous Bog of Words (CBOW)
    1. 输入:前n个单词和后n个单词
    2. 目标:基于H-Softmax预测中间单词
  2. Skip-gram
    1. 输入:中间单词
    2. 目标:基于H-Softmax预测前n个单词和后n个单词

这篇关于PyTorch笔记 - Word Embeddings Word2vec 原理与源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354709

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu