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

相关文章

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带