采用推理的方法认知单词、CBOW模型

基于计数的方法,根据一个单词周围的单词的出现频数来表示该单词。需要生成所有单词的共现矩阵,再对这个矩阵进行 SVD,以获得密集向量,如果语料库处理的单词数量非常大,将需要大量的计算资源和时间。基于计数的方法使用整个语料库的统计数据(共现矩阵、PPMI),通过一次处理(SVD)获得单词的分布式表示。

基于推理的方法,使用神经网络,在 mini-batch 数据上进行学习,神经网络一次只需要看一部分学习数据(mini-batch),并反复更新权重。神经网络的学习可以使用多台机器、多 个 GPU 并行执行,从而加速整个学习过程。

如果需要向词汇表添加新词并更新单词的分布式表示,基于计数的方法需要从头开始计算,重新完成生成共现矩阵、进行 SVD 等一系列操作。基于推理的方法(word2vec)允许参数的增量学习。可以将之前学习到的权重作为下一次学习的初始值,在不损失之前学习到的经验的情况下,高效地更新单词的分布式表示。

推理:当给出周围的单词(上下文)时,预测“?”处会出现什么单词。

在这里插入图片描述

基于推理的方法:输入上下文,模型输出各个单词的出现概率。这个模型接收上下文信息作为输入,并输出(可能出现的)各个单词的出现概率。作为模型学习的产物,也能得到单词的分布式表示。如下图所示。

在这里插入图片描述

分布式假设:基于推理的方法和基于计数的方法一样,也基于分布式假设。分布式假设,“单词含义由其周围的单词构成”。

one-hot 表示:神经网络无法直接处理 you 或 say 这样的单词,要用神经网络处理单词,需要先将单词转化为固定长度的向量。在 one-hot 表示中,只有一个元素是 1,其他元素都 是 0;将单词转化为 one-hot 表示,就需要准备元素个数与词汇个数相等的向量,并将单词 ID 对应的元素设为 1,其他元素设为 0。

单词的表示:单词可以表示为文本、单词 ID 和 one-hot 表示。如果语料库中,一共有 7 个单词(“you”“say”“goodbye”“and”“i”“hello”“.”),单词表示如下图所示。

在这里插入图片描述

将单词转化为固定长度的向量(one-hot 表示),神经网络的输入层的神经元个数就可以固定下来,比如,输入层由 7 个神经元表示,分别对应于 7 个单词。

全连接层变换:c 和 W 的矩阵乘积相当于“提取”权重的对应行向向量。

在这里插入图片描述

import numpy as np
c = np.array([[1, 0, 0, 0, 0, 0, 0]]) # 输入
W = np.random.randn(7, 3) # 权重
h = np.dot(c, W) # 中间节点
print(h)
# [[-0.70012195 0.25204755 -0.79774592]]

CBOW模型:它是根据上下文预测目标词的神经网络。模型的输入是上下文。这个上下文用 [‘you’, ‘goodbye’] 这 样的单词列表表示。可以转换为 one-hot 表示,以便 CBOW 模型进行处理。大致结构如下。

在这里插入图片描述

输入层:如果对上下文仅考虑两个单词,输入层有两个;如果对上下文考虑N个单词,则输入层会有N个。

中间层:中间层的神经元是各个输入层经全连接层变换后得到的值的平均,经全连接层变换后,第 1 个输入层转化为h1,第 2 个输入层转化为h2,那么中间层的神经元是(1/2)*(h1+h2)。中间层的神经元数量比输入层少,因为,中间层需要将预测单词所需的信息压缩保存,从而产生密集的向量表示。

输出层:输出层有 7 个神经元,这些神经元对应于各个单词。输出层的神经元是各个单词的得分,它的值越大,说明对应单词的出现概率就越高。对这些得分应用 Softmax 函数,就可以得到概率。

全连接层:从输入层到中间层的变换由全连接层完成,全连接层的权重是一个 7 × 3 的矩阵,权重的各行对应各个单词的分布式表示。

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

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

相关文章

CBOW模型正向传播、矩阵乘积层实现

把矩阵乘积称为MatMul节点: 下面这个图表示矩阵乘积yxW的计算图 。因为考虑了mini-batch 处理,假设x中保存了N个数据。此时x 、W、y 的形状分别是 ND、DH 、NH 。 下面是推反向传播的数学式: 用代码表述MatMul层:params 中保存要…

CBOW模型的数据预处理

数据预处理:从语料库生成上下文和目标词。如下图所示,contexts 的各行成为神经网络的输入,target 的各行成为正确解标签(要预测出的单词)。 之前做过一个preprocess函数,将文本分割为单词,并将分…

实现CBOW模型类

初始化:初始化方法的参数包括词汇个数 vocab_size 和中间层的神经元个数 hidden_size。首先生成两个权重(W_in 和 W_out),并用一些小的随机值初始化这两个权重。设置astype(‘f’),初始化将使用 32 位的浮点数。 生成…

CBOW模型的学习、Trainer类的实现

CBOW 模型的学习的实现:给神经网络准备好学习数据。然后求梯度,并逐步更新权重参数。 Trainer类:学习的类。 初始化:类的初始化程序接收神经网络(模型)和优化器(SGD、Momentum、AdaGrad、Adam) 学习&…

stm32 I2C、EEPROM

main.c 硬件结构如下,EEPROM 芯片(AT24C02)的 SCL 及 SDA 引脚连接到了 STM32 的 I2C 引脚中,结合上拉电阻,构成了 I2C 通讯总线,它们通过 I2C 总线交互。 EEPROM 芯片的设备地址:一共有 7 位,其中高 4 位…

stm32 I2C架构

STM32的 I2C 片上外设专门负责实现 I2C 通讯协议, 只要配置好该外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU 只要检测该外设的状态和访问数据寄存器,就能完成数据收发。架构图如下所示。 通讯引脚…

多级放大电路

定义: 耦合方式、阻容耦合、变压器耦合、直接耦合、零点漂移、零漂 耦合方式:多级放大电路内部各级之间的连接方式称为耦合方式。常用的耦合方式有三种,阻容耦合、变压器耦合、直接耦合。 阻容耦合:电路的第一级与第二级之间通过…

放大电路频率响应基础概念

定义: 放大电路频率响应、幅频特性、相频特性、下限频率、上限频率、通频带、频率失真、波特图、高通电路、低通电路、共射截止频率、特征频率共、基截止频率。 放大电路频率响应:当放大电路输入不同频率的正弦波信号时,电路的放大倍数将有所…

skip gram模型的实现

CBOW模型的概率表示: P(A):A发生的概率。 P(A,B):事件A和事件B同时发生的概率,称为联合概率。 P(A|B):在给定事件B的信息后,事件A发生的概率,称为后验概率。 CBOW模型:当给定某个…

stm32 SPI架构

STM32 芯片集成了专门用于 SPI 协议通讯的外设。 通讯引脚:SPI 硬件架构从 MOSI、MISO、SCK 及 NSS 线展开;STM32 芯片有多个 SPI 外设,它们的 SPI 通讯信号引出到不同的 GPIO 引脚上,使用时必须配置到这些指定的引脚。 SPI1是AP…

stm32 SPI、FLASH

main.c FLASH:掉电后数据不丢失,U 盘、SD 卡、SSD 固态硬盘、STM32 芯片内部用于存储程序的设备,都是 FLASH 类型的存储器。FLASH芯片(W25Q64)是一种使用 SPI 通讯协议的 NOR FLASH 存储器。 STM32 的 NSS 引脚是一个普通的 GPIO&#xff0c…

二分类负采样方法

多分类问题处理为二分类问题,需要能够正确地对正例和负例进行分类。 如果以所有的负例为对象,词汇量将增加许多,无法处理。作为一种近似方法,将只使用少数负例。 负采样方法:求正例作为目标词时的损失,同…

二分类改进CBOW

解决问题二:中间层的神经元和权重矩阵的乘积、Softmax 层的计算需要花费很多计算时间 第k个单词的 Softmax 的计算式如下,其中Si是第i个单词的得分。这个计算也与词汇量成正比,所以需要一个替代Softmax的计算。 使用 Negative Sampling (负采…

Embedding改进CBOW

假设词汇量为 100 万个时的 CBOW 模型如下,输入层和输出层存在 100 万个神经元。 下面两个问题导致耗时严重。 问题一、输入层的 one-hot 表示和权重矩阵的乘积。one-hot 表示占用内存过多,计算 one-hot 表示与权重矩阵 的乘积,需要花费大量…

解决win10使用GPU跑程序遇到的一系列报错

解决win10使用GPU跑程序遇到的一系列报错安装cupy包使用cupy包的时候报错 ImportError: DLL load failed: 找不到指定的模块。卸载cuda11.5、安装cuda10.2安装适配于cuda10.2的cudnn报错CUDA path could not be detected. Set CUDA_PATH environment variable if CuPy fails to…

keil5新建freertos工程

1.建几个文件夹如下图所示。 2.打开keil5,project-new project,文件位置放到之前创建好的project文件夹下。 3.选择处理器。 4.接下来选择下面两个选项。 5.创建好之后是下面这样的。 6.增加文件,点击这个manage project。 然后添加文件即可。…

freertos 双向循环链表插入删除的实现与直观理解

freertos 双向循环链表插入删除的实现与直观理解main.clist.h其他头文件FreeRTOS.hFreeRTOSConfig.hportable.hportmacro.hlist.cvListInsertEnd函数vListInsert函数uxListRemove函数main.c 用debug之后,查看观察窗口,结果如下。这个实验目的就是&#…

cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断

cortex-m3操作模式寄存器组异常类型堆栈中断参考操作模式 处理器的操作模式:为了区别正在执行代码的类型。复位后,处理器进入线程模式、特权级。 处理者模式(handler mode):异常服务例程的代码 ,包括中断…

freertos里面用到的汇编语言总结

汇编语言基础知识多重存储器访问MRS 和 MSRisb 和 dsbldr 和 strmovbl 和 bxcps多重存储器访问 感叹号!表示要自增(Increment)或自减(Decrement)基址寄存器 Rd 的值,时机是在每次访问前(Before)或访问后(After)。增/减,单位:字&am…

freertos内核 任务定义与切换 原理分析

freertos内核 任务定义与切换 原理分析主程序任务控制块任务创建函数任务栈初始化就绪列表调度器总结任务切换主程序 这个程序目的就是,使用freertos让两个任务不断切换。看两个任务中变量的变化情况(波形)。 下面这个图是任务函数里面delay(100)的结果。 下面这个…