cbow和skipgram适用于什么场景?_gram矩阵

cbow和skipgram适用于什么场景?_gram矩阵在cbow方法中,是用周围词预测中心词,从而利用中心词的预测结果情况,使用GradientDesent方法,不断的去调整周围词的向量。当训练完成之后,每个词都会作为中心词,把周围词的词向量进行了调整,这样也就获得了整个文本里面所有词的词向量。要注意的是,cbow的对周围词的调整是统一的:求出的gradient的值会同样的作用到每个周围词的词向量当中去。可以看到,cbow预测行为的次数跟整个文本的…

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

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

在cbow方法中,是用周围词预测中心词,从而利用中心词的预测结果情况,使用GradientDesent方法,不断的去调整周围词的向量。当训练完成之后,每个词都会作为中心词,把周围词的词向量进行了调整,这样也就获得了整个文本里面所有词的词向量。要注意的是, cbow的对周围词的调整是统一的:求出的gradient的值会同样的作用到每个周围词的词向量当中去。可以看到,cbow预测行为的次数跟整个文本的词数几乎是相等的(每次预测行为才会进行一次backpropgation, 而往往这也是最耗时的部分),复杂度大概是O(V);

 

而skip-gram是用中心词来预测周围的词。在skip-gram中,会利用周围的词的预测结果情况,使用GradientDecent来不断的调整中心词的词向量,最终所有的文本遍历完毕之后,也就得到了文本所有词的词向量。可以看出,skip-gram进行预测的次数是要多于cbow的:因为每个词在作为中心词时,都要使用周围词进行预测一次。这样相当于比cbow的方法多进行了K次(假设K为窗口大小),因此时间的复杂度为O(KV),训练时间要比cbow要长。

 

但是在skip-gram当中,每个词都要收到周围的词的影响,每个词在作为中心词的时候,都要进行K次的预测、调整。因此, 当数据量较少,或者词为生僻词出现次数较少时, 这种多次的调整会使得词向量相对的更加准确。因为尽管cbow从另外一个角度来说,某个词也是会受到多次周围词的影响(多次将其包含在内的窗口移动),进行词向量的跳帧,但是他的调整是跟周围的词一起调整的,grad的值会平均分到该词上, 相当于该生僻词没有收到专门的训练,它只是沾了周围词的光而已。

 

 

在skip-gram里面,每个词在作为中心词的时候,实际上是 1个学生 VS K个老师,K个老师(周围词)都会对学生(中心词)进行“专业”的训练,这样学生(中心词)的“能力”(向量结果)相对就会扎实(准确)一些,但是这样肯定会使用更长的时间;

cbow是 1个老师 VS K个学生,K个学生(周围词)都会从老师(中心词)那里学习知识,但是老师(中心词)是一视同仁的,教给大家的一样的知识。至于你学到了多少,还要看下一轮(假如还在窗口内),或者以后的某一轮,你还有机会加入老师的课堂当中(再次出现作为周围词),跟着大家一起学习,然后进步一点。因此相对skip-gram,你的业务能力肯定没有人家强,但是对于整个训练营(训练过程)来说,这样肯定效率高,速度更快。

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196586.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NV21 旋转+转为NV12

    NV21 旋转+转为NV12yuv420sp的分两种,nv21和nv12。Android取摄像头中的数据,当使用camera1.0时,onPreviewFrame返回的数据yuv420sp的nv21,并且camera中取出的数据显示时是偏转的,需要将其旋转顺时针旋转270或逆时针旋转90,注:旋转后宽高对调/***此处为顺时针旋转270*@paramdata旋转前的数据*@paramima…

    2022年9月2日
    2
  • pygame的安装

    pygame的安装默认python和pip已经安装好了1、去官网下载pygame我使用的是py3.8,所以选择cp38。里面包括ios、linux和windows,注意选择64/32位。2、将pygame复制到项目所在的文件夹中,如图:3、单击选中include文件夹,按住shift键,右键点击空白处,点击:在此处打开WindowPowerShell。4、输入:pipinstallpygame-2.0.1-cp38-cp38-win_amd64.whl,加粗部分为下载的文件名。我是提前已经下好了所以会

    2022年5月23日
    54
  • pycharm中安装模块_pycharm怎么下载模块

    pycharm中安装模块_pycharm怎么下载模块pycharm如何安装python的模块包目录pycharm如何安装python的模块包1.打开Pycharm点击菜单设置2.然后进入设置界面,点击项目-》projectInterpreter3.然后点击+添加模块4.接着搜索matplotlib它会自动搜索,然后点击左下角安装,然后退出就可以了5.安装好后会自动出现这个包名假设我们安装matplotlib包1…

    2022年8月29日
    3
  • vscode新建html文件并快速生成标准的html代码_用vscode写一个html页面

    vscode新建html文件并快速生成标准的html代码_用vscode写一个html页面在vscode中新建html文件的两种方法:第一个方法:1点击菜单【文件】,如图所示。2点击【新建文件】,如图所示。3就会创建一个没有命名的文件,如图所示。4点击选择语言开始,会弹出选择语言模式,在自动检测的下拉菜单中选择html,一个没有命名的html文件就创建好了。5点击保存或者另存为,给没有命名的html起个名字,可以起字母,数字,中文,起好名字,点击保存,一个html文件就创建好了。6我们在html文件上输入【!】叹号(在英文状态下),然后按键盘的【Tab】键,只

    2022年8月22日
    13
  • linux修改文件没有权限设置,Linux下修改文件权限(所有权)

    linux修改文件没有权限设置,Linux下修改文件权限(所有权)Linux与Unix是多用户操作系统,所以文件的权限与所有权的实现就显得很有必要;每个文件主要与三组权限打交道,分别是用户(user),用户组(group),其他用户(other)用户(u)是文件的所有者,通常有所有的文件的操作权限用户组(g)是多个用户的集合,可能有文件的部分访问权,相当于各用户之间的共享文件其他(o)是指文件所有者和用户组成员之外的任何人使用ls-l可以显示出当前目录下的文件…

    2022年9月12日
    0
  • keras自带数据集(横线生成器)

    原文地址:AdetailedexampleofhowtousedatageneratorswithKeras引言在使用kears训练model的时候,一般会将所有的训练数据加载到内存中,然后喂给网络,但当内存有限,且数据量过大时,此方法则不再可用。此博客,将介绍如何在多核(多线程)上实时的生成数据,并立即的送入到模型当中训练。工具为keras。Tu…

    2022年4月15日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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