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

相关文章

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

高仿精仿愤怒的小鸟android版游戏源码

这是一款很完美的高仿精仿愤怒的小鸟android版游戏源码,大家可以研究一下吧、 为了报复偷走鸟蛋的肥猪们,鸟儿以自己的身体为武器,仿佛炮弹一样去攻击肥猪们的堡垒。游戏是十分卡通的2D画面,看着愤怒的红色小鸟,奋不顾身的往绿色的肥猪的堡垒砸去,那种奇妙的感觉还真是令人感到很欢乐。而游戏的配乐同样充满了欢乐的感觉,轻松的节奏,欢快的风格。 源码下载

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

转发来源:https://swift.ctolib.com/ooooverflow-chinese-ocr.html chinese-ocr 基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别 环境部署 sh setup.sh 使用环境: python 3.6 + tensorflow 1.10 +pytorch 0.4.1 注:CPU环境

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象