[PyTorch][chapter 44][时间序列表示方法3]

news2024/10/5 21:24:31

简介:

      word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。由于 word2vec 的作者 Tomas Mikolov 

其主要知识点

目录:

  1.    word2vec 基本思想
  2.   Skip-gram
  3.   cbow
  4.   Hierarchical softmax
  5.  Negative sampling
  6.   Subsampling of Frequent words

   


一  word2vec 基本思想

   1.1  语言模型基本思想:


          句子中下一个词出现和前面的词是有关系的,所以可以使用前面的词预测下一个词


        1.2  word2vec 基本思想:
         句子中相近的词是有联系的,如下:

                                                                                                 今天

早上

中午

晚上


         Word2Vec 基本思想:  使用词来预测词

         Skip-gram 基本思想: 使用中心词 预测 周围词

         cbow  基本思想:         使用周围词 预测 中心词


二  Skip-gram

      2.1 简介

           使用中心词 预测 周围词

w_{i-2}

w_{i-1}

w_i

w_{i+1}

w_{i+2}

向量

今天

下午

羽毛球

 

  我们分别预测了

       P(W_{i-2}|w_i)

      P(W_{i-1}|W_i)

       P(W_{i+1}|W_i)

      P(W_{i+2}|W_i)

 2.2 模型结构

 输入层:x_{v,1} 

        使用 one-hot 编码 的词向量  

       中心词矩阵W_{v,d}:最终通过训练得到的矩阵

       a_{d,1}=W^Tx(中心词向量)

       矩阵的shape 【input size, output size】

      下面softmax 公式中V_{w_i}=a

     

 隐藏层

       z=U^Ta \in[v,1]

      其中权重系数矩阵

         U \in [v,d]

          

  输出层

      \hat{y}=softmax(z)

     

      其中

      U \in [v,d]

     周围词向量

        U_{W_{i-1}}\in[d,1]

    中心词向量

        V_{W_i} \in [d,1]

  

 例: 我们最后训练出来的W,用来代表该词向量

损失函数

 例1

       


三 CBOW(Continuous Bag-of-Word)

   3.1 简介

    利用周围词预测中心词

3.2 模型

   

 输入:

     4个[v,1]的 One-hot  编码向量 

      x_{i-2},x_{i-1},x_{i+1},x_{i+2}

    

      乘以一个[v,d]矩阵得到4个【d,1】的向量

     e_1=W^Tx_{i-2}

      e_2=W^Tx_{i-1}

      e_3=W^T x_{i+1}

      e_4=W^Tx_{i+2}

      把4个向量加起来或者求平均值得到  上下文词向量U_0

      该词也称为窗口内上下文词向量[d,1]

     其中W的shape 为[v,d]

   隐藏层:

      h=V^Tu_0

       V \in[d,v] 还是按照 【input size, output size】

   输出层

          \hat{y}=softmax(h)

  损失函数:


四  hierarchical softmax

     4.1 核心思想:

      如下是一个skip-gram 模型

       词向量的维度v都非常大,直接做softmax 计算量非常大.

      把 softmax 计算转换为求解sigmod 计算,降低运算量。

      跟原模型相比:

    原来激活函数softmax 函数,现在改成了如下图

      的层次sigmoid 结构

    

       

 4.2  流程:

      1: 构建Huffman 树

               

               左分支概率<0.5,

               右分支概率>0.5

               比如skip-gram中我们要通过中心词求周围词I的概率

                

                

      4.3 : skip-gram 例子

  其中:

  [[n(w,j+1)==ch(n(w,j))]] 

  代表: 当前的节点 是否为其父节点的右节点

   如上图,I 为其父节点的左节点,所以取值为-1.

       哈夫曼编码(Huffman Coding),又称霍夫曼编码,通过编码后把高频词放在上面,

低频词放下面,使得带权路径最短。

 4.4  损失函数

      因为最终输出值是一个概率,依然使用CrossEntroy 交叉熵作为损失函数模型

    ,通过反向传播,更新参数。

    要注意的是训练的时候: 根据label 标签值 比如 001,决定分支路径,

计算当前的分支的概率值。


五:  Negative sampling

       这种方案是目前常用的,hierarchical  softmax基本不用了

     5.1 核心思想:

               将多分类问题,变成二分类问题。

               以skip-gram 为例:输入单词w, 

                            从周围词 U中随机采样一个u_1作为正标签

                            从所有词中随机采样3-10 u_2个作为负标签

                正样本:  [w,u_1]

                负样本: 【w,u_2

5.2 损失函数

    

  K 为随机采样的负样本个数,正常3-10个 

5.3 如何采样

     P(w)=\frac{P(w)^{3/4}}{Z}

     P(w) 是词w在数据集中出现的概率,

      Z为归一化的参数,使得求解之后的概率和依旧为1.

    作用: 增大频率小的抽样概率,减少频率大的抽样概率

    例:

  已知

     P(a)=0.01
     p(b)=0.99

   则:

     

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 11 14:09:20 2023

@author: chengxf2
"""

import numpy as np
import random

def run():
    
    pa = 0.01
    pb = 0.99
    
    power_a= np.power(pa,0.75)
    power_b = np.power(pb,0.75)

    z = power_a+power_b
    
    pa = power_a/z
    pb = power_b/z
    
    print("\n pa: %4.2f"%pa, "\t pb:%4.2f "%pb)


    
def sampling():
    
 
    # 定义概率分布
    probabilities = [0.1, 0.2, 0.3, 0.4]
    # 定义待抽样元素
    elements = ['A', 'B', 'C', 'D']

    # 使用 random.choices() 函数进行抽样
    result = random.choices(elements, probabilities)
    
 
    #print(result)
    return result[0]

 

 5.4 例子

    以skip-gram 为例,中心词为 of

    句子  It is a technically demanding piece of music to play. 

正样本

负样本

[of, music]

[of ,play]

[of ,it]

[of ,is]

[of , technically ]

5.5 CBOW 负采样

         

  


六  Sub-sampling of Frequent words

     6.1 简介

       文档或者数据集中 高频词 往往携带的 信息较少。
        例如 [the is a and ],而低频词 携带信息多。

     例如:

     搜索 “什么是青蛙”,

   按照词频: “什么“  词频最高

    那匹配的结果应该是第一个,

     实际上用户搜索的是第二个

    

 

    

6.2重采样的原因:

  

     跟多训练重要词对,
     例如训练  France 和 pairs 关系
     比 训练  France 和 the 之间关系更重要

     高频词很快就训练好了,而低频词需要跟多的轮次

 

6.3  方案:

      比如:

 t=10^{-5} ,相对  f(w_i)=10^{-3}f(w_i)=10^{-4}删除概率更小

高频单词,删除概率也高


 

参考:

NLP-baseline-word2vec补充2-2_哔哩哔哩_bilibili

层次softmax (hierarchical softmax)理解_BGoodHabit的博客-CSDN博客

层次softmax (hierarchical softmax)理解_BGoodHabit的博客-CSDN博客

word2vec原理及其Hierarchical Softmax优化_hierarchical softmax word2vec_编程密码的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MedNeXt的一些问题集锦

归纳偏差是一种关于机器学习算法的目标函数的假设&#xff0c;也就是目标函数评分的标准。 归纳偏差是指模型更容易学习到训练数据中的局部和表面特征&#xff0c;而较难捕捉全局和抽象特征。 scalable 可扩展的 network-wide优势&#xff1f;&#xff1f;&#xff1f; 深度监…

(论文精读)PRUNING FILTER IN FILTER《滤波器中的剪枝滤波器》

论文地址&#xff1a;原文 代码实现 中文翻译 一、精读论文 论文题目 PRUNING FILTER IN FILTER 论文作者 Fanxu Meng 孟繁续 刊物名称 NeurIPS 2020 出版日期 2020 摘要 剪枝已成为现代神经网络压缩和加速的一种非常有效的技术。现有的剪枝方法可分为两大类:滤波器…

MVC三层架构

1.MVC三层架构 MVC&#xff08;Model-View-Controller&#xff09;是一种常见的软件设计模式&#xff0c;用于组织和管理应用程序的代码和逻辑。它将应用程序分为三个主要部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#…

营销同质化,博鱼 sports牵手那不勒斯打开新大门

体育营销是企业进入新市场的经典方式&#xff0c;特别是对当今寻求高质量发展的国产品牌而言&#xff0c;从产品出海升级为品牌出海&#xff0c;体育营销可谓是一条必经之路。海信、OPPO、华为等中国品牌通过持续的体育营销不断拉近自身与海外消费者的距离&#xff0c;成功在海…

反常积分定义

目录 反常积分的定义 判断敛散性的方法 方法2&#xff1a; 例题 无界函数的反常积分 判断敛散性的方法 例题 反常积分的定义 该极限存在就表示该反常积分收敛 对于定义3&#xff0c;只有两个都收敛的情况下&#xff0c;原反常积分才收敛。 判断敛散性的方法 始终大的函数形成…

走进USB的U1模式

综述&#xff1a; PCIE有PM和ASPM两种功耗管理模式&#xff0c;USB只有一种 USB有U1/U2/U3三种低功耗模式 本文只针对U1进行分析 如下图所示&#xff0c;为主要状态变换 背景知识 U1是一种低功耗模式&#xff0c;定义的是link的状态不是设备的状态发送LGO_X进入低功耗模式&a…

C++图形开发(12):随机方块的速度和高度

文章目录 1.随机高度2.随机速度3.整段代码4.总结 1.随机高度 那既然是随机&#xff0c;自然少不了随机函数rand()咯~ 详见&#xff1a;C爱好者的自我修养&#xff08;17&#xff09;:rand()随机函数 那么随机速度就可以是&#xff1a; rect_height rand() % int(height / 4)…

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pulseaudio 是什么&#xff1f;二、部署步骤1.下载PulseAudio2.前提条件3.开始配置1.配置pulseaudio2.配置麦克风权限3.配置WSL2外放4.配置WSL2麦克风 总结…

hbase之引入Phoenix

Phoenix简介 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表&#xff0c;插入数据和查询HBase数据。 1&#xff09;容易集成&#xff1a;如Spark&#xff0c;Hive&#xff0c;Pig&#xff0c;Flume和Map Reduce&#xff1b; 2&#xf…

RocketMQ5.0消息存储<四>_刷盘机制

RocketMQ5.0消息存储<四>_刷盘机制 一、刷盘概览 RocketMQ存储与读写是基于JDK NIO的内存映射机制(MappedByteBuffer),消息存储时首先将消息追加到文件内存映射(commit操作),再根据配置的刷盘策略在不同时间进行刷写到磁盘(flush操作)。同步刷盘,消息提交到文件内…

计算机实习学习总结报告10篇

计算机实习学习总结报告篇1 一、实习单位&#xff1a; 来到实习单位后主要是在门市从事产品的销售和商家间渠道工作。在工作的过程中了解计算机相关行业的发展现状及趋势;熟悉计算机硬件组装、计算机系统及软件安装、局域网搭建;掌握典型计算机网络工程的安装与维护;了解网站…

Linux之Shell进阶(变量和条件判定语句)

文章目录 变量变量的含义变量的定义与使用&#xff08;重点&#xff09;只读变量接收用户输入删除变量 条件判断语句 变量 变量的含义 什么是量&#xff1f; 量就是数据. 什么是变量&#xff1f; 数据可以发生改变就是变量。 在一个脚本周期内,其值可以发生改变的量就是变…

python调用钉钉发送告警消息

zabbix和prometheus都能做监控告警调用企业微信和钉钉。那么问题来了做为一名合格的运维和开发人员&#xff0c;脚本发现故障告警&#xff0c;自动调用发送详细告警内容&#xff0c;这点儿东西得会。 效果图如下&#xff1a; 普通发送方式 import requestsdef dingding_info(…

AR 技术应用与管理解决方案:施工建造、机柜扫描、办公室导航

建筑行业作为人类历史上最重要的产业之一&#xff0c;在数字化转型方面同样也在不断推进。图扑软件结合 AR 技术的应用&#xff0c;为建筑行业带来了更加便捷高效的建筑施工过程管理。 传统的建筑施工管理过程中&#xff0c;由于缺乏信息化手段&#xff0c;往往存在资料不全、…

解决microsoft windows 恶意软件删除工具 占用内存高

1、winR快捷键&#xff0c;输入regedit&#xff0c;按回车键进入注册表编辑器 2、定位到 \HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ 并创建新项MRT 3、 新建DWORD(32)值&#xff0c;命名为DontOffer ThroughWUAU,数值数据为1; 4、以管理员身份运行命令提示符&#x…

vue3的customRef

文章来源:我的博客,欢迎访问,不欢迎攻击,谁攻击谁儿子 customRef 作用:实现一个自定义的ref,并对其依赖项跟踪和更新触发进行显示控制 像是下面的代码一样: <template><div class"lim"><div class"btns"><el-input type"text…

web期末作业(html+css)-中华美食介绍(附带文档)

作品展示 web期末作业-中华美食介绍 首页包含功能&#xff1a; 轮播图&#xff1a;在首页顶部设置一个可自动轮播的图片展示区域&#xff0c;展示多张宣传图片或产品图片&#xff0c;提升页面的视觉效果和吸引力。 鼠标滑过文字变色&#xff1a;为首页的一些关键文字或链接添…

python安装opencv出错 PEP 517

我的 python 版本是 3.6 的&#xff0c;当需要安装 opencv 时&#xff0c;使用pip install opencv-python 命令进行安装时&#xff0c;出现错误&#xff0c;如下所示&#xff1a; Building Custom Rule C:/Users/liqian/AppData/Local/Temp/pip-install-6jpavinn/opencv-pytho…

element 树形表格每次刷新列表保存展开关闭状态

树形表格保存展开关闭状态 编辑数据后&#xff0c;记录用户操作行的展开和关闭 注意&#xff0c;以下列子是默认展开&#xff0c;记录合上的状态 注意 row-key 需要给每行一个key expand-change 点击行的操作 <el-tableref"tableItem"slot"table":data…

Matrix Breakout:2 Morpheus(靶机详细渗透测试过程记录)

nmap -sS -p 80 -oG - 192.168.192.0/24 | grep open 探测网段下开放80端口的主机。 扫描目录 发现该界面 存储型xss 发现file参数貌似可以控制读取文件目标。 尝试利用伪协议读取&#xff0c;文件内容。 解码&#xff0c;分析源代码&#xff1a; <?php$file"graff…