CBOW最强理解_创造之最强C位

CBOW最强理解_创造之最强C位翻译自:https://iksinc.online/tag/continuous-bag-of-words-cbow/向量空间模型在信息检索中是众所周知的,其中每个文档被表示为向量。矢量分量表示文档中每个单词的权重或重要性。使用余弦相似性度量计算两个文档之间的相似性。尽管对单词使用矢量表示的想法也已经存在了一段时间,但是对于嵌入单词的技术,将单词映射到向量的技术,最近一直在飙升。其中一个驱…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

翻译自:https://iksinc.online/tag/continuous-bag-of-words-cbow/

向量空间模型在信息检索中是众所周知的,其中每个文档被表示为向量。矢量分量表示文档中每个单词的权重或重要性。使用余弦相似性度量计算两个文档之间的相似性。

尽管对单词使用矢量表示的想法也已经存在了一段时间,但是对于嵌入单词的技术,将单词映射到向量的技术,最近一直在飙升。其中一个驱动因素是TomášMikolov的Word2vec算法,该算法使用大量文本来创建高维(50到300维)的单词表示,捕获单词之间的关系,无需外部注释。这种表述似乎捕获了许多语言规律。例如,它产生一个近似于vec(’Rome’)表示的向量,作为向量运算vec(’Paris’) – vec(’France’)+ vec(’Italy’)的结果。

Word2vec使用单个隐藏层,完全连接的神经网络如下所示。隐藏层中的神经元都是线性神经元。输入层设置为具有与用于训练的词汇中的单词一样多的神经元。隐藏图层大小设置为生成的单词向量的维度。输出图层的大小与输入图层相同。因此,假设用于学习单词向量的词汇表由V个单词组成并且N为单词向量的维度,则对隐藏层连接的输入可以由大小为VxN的矩阵WI表示,其中每行表示词汇单词。以相同的方式,可以通过矩阵WO来描述从隐藏层到输出层的连接大小为NxV。在这种情况下,WO矩阵的每列  表示来自给定词汇表的单词。使用“ 1-out of -V ”表示对网络的输入进行编码这意味着只有一条输入线被设置为1,其余输入线被设置为零。

屏幕截图2015-04-10在4.16.00 PM

为了更好地处理Word2vec的工作原理,请考虑具有以下句子的训练语料库:

“狗看到了一只猫”,“狗追着猫”,“猫爬上了一棵树”

语料库词汇有八个单词。按字母顺序排序后,每个单词都可以通过其索引引用。对于这个例子,我们的神经网络将有八个输入神经元和八个输出神经元。让我们假设我们决定在隐藏层中使用三个神经元。这意味着WIWO将分别是8×33×8矩阵。在训练开始之前,这些矩阵被初始化为小的随机值,如通常在神经网络训练中那样。仅为了说明,让我们假设WIWO初始化为以下值:

WI = 

屏幕截图2015-04-10在8.54.39 PM

W0 =

屏幕截图2015-04-10在8.54.57 PM

假设我们希望网络学习单词“cat”和“climb”之间的关系。也就是说,当“猫”输入到网络时,网络应该显示“攀爬”的高概率。在单词嵌入术语中,单词“cat”被称为上下文单词,单词“climbed”被称为目标单词。在这种情况下,输入矢量X将是[0 1 0 0 0 0 0 0] t。请注意,只有向量的第二个分量是1.这是因为输入的单词是“cat”,它在语料库单词的排序列表中保持第二个位置。鉴于目标字是“爬升”,目标矢量看起来像[0 0 0 1 0 0 0 0] t。

利用表示“cat”的输入向量,可以将隐藏层神经元的输出计算为

H t = X t WI = [-0.490796 -0.229903 0.065460]

我们不应该感到惊讶的是隐藏神经元输出的向量H模仿了WI矩阵的第二行的权重,因为V表示为1-out-of-V因此隐藏层连接的输入功能基本上是将输入字向量复制到隐藏层。对隐藏到输出层执行类似的操作,输出层神经元的激活矢量可以写成

H t WO = [0.100934 -0.309331 -0.122361 -0.151399 0.143463 -0.051262 -0.079686 0.112928]

由于目标是为输出层中的单词生成概率,  对于= 1,V的Pr(单词k |单词上下文),为了反映它们与输入处的上下文单词的下一个单词关系,我们需要神经元输出的总和。输出图层添加到一个。Word2vec通过使用softmax函数将输出层神经元的激活值转换为概率来实现此目的。因此,第k个神经元的输出通过以下表达式计算,其中activation(n)表示第n个输出层神经元的激活值: 

屏幕截图2015-04-12 at 10.00.48 PM

因此,语料库中八个单词的概率是:

0.143073 0.094925 0.114441   0.111166    0.149289 0.122874 0.119431 0.144800

粗体的概率是针对所选择的目标词“攀爬”。给定目标矢量[0 0 0 1 0 0 0 0] t,通过从目标矢量中减去概率矢量,可以容易地计算输出层的误差矢量。一旦知道了错误,就可以使用反向传播来更新矩阵WOWI中
的权重。因此,训练可以通过从语料库呈现不同的上下文目标词对来进行。从本质上讲,这就是Word2vec如何学习单词之间的关系,并在此过程中开发语料库中单词的向量表示。

连续词汇(CBOW)学习

以上描述和架构旨在用于学习单词对之间的关​​系。在连续的单词模型中,上下文由给定目标单词的多个单词表示。例如,我们可以使用“cat”和“tree”作为“攀爬”的上下文单词作为目标单词。这需要修改神经网络架构。如下所示,修改包括将隐藏层连接的输入复制C次,上下文单词的数量,以及在隐藏层神经元中添加除C操作。[警报读者指出,下图可能会让一些读者认为CBOW学习使用了几个输入矩阵。不是这样。它是相同的矩阵WI,它接收代表不同上下文词的多个输入向量]

屏幕截图2015-04-12在10.58.21 PM

利用上述配置来指定C上下文字,使用1-out-of-V表示编码的每个字意味着隐藏层输出是与输入处的上下文字相对应的字矢量的平均值。输出层保持不变,并且以上面讨论的方式完成训练。

Skip-Gram模型

Skip-gram模型反转了目标和上下文单词的使用。在这种情况下,目标字在输入处被馈送,隐藏层保持相同,并且神经网络的输出层被多次复制以适应所选数量的上下文字。以“cat”和“tree”为例,作为上下文单词,“爬”作为目标词,skim-gram模型中的输入向量为[0 0 0 1 0 0 0 0] t,而两个输出层将具有[0 1 0 0 0 0 0 0] t和[0 0 0 0 0 0 0 1] t分别作为目标向量。代替产生一个概率向量,将为当前示例产生两个这样的向量。以上面讨论的方式产生每个输出层的误差向量。然而,将来自所有输出层的误差向量相加以通过反向传播来调整权重。这确保了每个输出层的权重矩阵WO在整个训练中保持相同。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196299.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 类加载器的方法_JS加载器

    类加载器的方法_JS加载器packagecom.tech.load.def;/***@authorlw*@since2021/12/3*/publicclassUserImpl{static{System.out.println(“UserImplinit…”);}}packagecom.tech.load.def;/***@authorlw*@since2021/12/3*/publicclassDe..

  • RxJava(七) 使用 debounce 操作符优化 App 搜索功能[通俗易懂]

    RxJava(七) 使用 debounce 操作符优化 App 搜索功能[通俗易懂]RxJava系列文章目录导读:一、RxJavacreate操作符的用法和源码分析二、RxJavamap操作符用法详解三、RxJavaflatMap操作符用法详解四、RxJavaconcatMap操作符用法详解五、RxJavaonErrorResumeNext操作符实现app与服务器间token机制六、RxJavaretryWhen操作符…

  • webapp开发框架选择注意点[通俗易懂]

    webapp开发框架选择注意点[通俗易懂]webapp开发框架选择需要注意:第一步:开发支持的语言类型根据前端开发人员的能力,来选择webapp开发框架。例如:前端人员只会写react就要求webapp开发框架支持react。第二步:查看webapp开发框架文档是否齐全例如:功能性API的详细使用文档和示例等插件功能示例代码第三步:确认webapp开发框架能否满足项目需求确认APP的功能是否都能满足,开发难易程度开发的APP复杂度、功能是否能满足,交互比较多,业务逻辑比较复杂,找到对应功能点,提前确

  • Java酒店管理系统_java酒店管理系统报告

    Java酒店管理系统_java酒店管理系统报告基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的小型酒店管理系统,该项目可用各类java课程设计大作业中,小型酒店管理系统的系统架构分为前后台两部分,最终实现在线上进行小型酒店管理系统各项功能,实现了诸如用户管理,登录注册,权限管理等功能,并实现对各类小型酒店管理系统相关的实体进行管理。该小型酒店管理系统为一个采用mvc设计模式进行开发B/S架构项…

  • C#的一些关键字的总结

    C#的一些关键字的总结

  • 【算法题】单例模式的8种实现方式(java版)「建议收藏」

    【算法题】单例模式的8种实现方式(java版)「建议收藏」根据马士兵老师的视频整理下来的8种单例模式的实现方式,在此记录一下。代码示例1:饿汉式packagecom.examples.singleton;publicclassMgr01{publicstaticvoidmain(String[]args){Mgr01m1=Mgr01.getInstance();Mgr01m2=Mgr01.getInstance();System.out.println(m1…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号