cbow和skipgram适用于什么场景?_gram矩阵
在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,你的业务能力肯定没有人家强,但是对于整个训练营(训练过程)来说,这样肯定效率高,速度更快。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
相关文章
- 大公司小公司还是中型公司,体验究竟有什么不同?
- 什么是linux Qt[通俗易懂]
- java源文件扩展名_java源文件名的后缀是什么?
- kafka应用场景包括_什么是场景理论
- 【说站】java中transient是什么
- 【可靠性测试】什么是可靠性测试:定义、方法和工具
- toast弹窗教程_toast提示是什么
- 云计算三类巨头:IaaS、PaaS、SaaS,分别是什么意思,应用场景是什么?
- 事件驱动如何理解?什么场景下适合用?Python如何实现一个事件监听器?
- Hadoop支持的压缩格式,是否支持split,什么场景下使用,建议收藏
- 通知短信有什么作用?它的应用场景有哪些?
- 泛微eteams是什么应用?泛微eteams如何自动审批
- 泛型是什么,C++泛型编程又是什么?
- Accenture健康科技创新挑战半决赛落幕,来看看八支入围团队在关注什么医疗领域?
- MySQL的限制是什么?最多可以保存多少行?(mysql最多)
- 对话颜水成:挥别 360,出任依图 CTO,我在思考什么
- Linux查看系统信息:一探究竟(linux查看什么系统)
- MySQL中null表示什么详解MySQL中的null值意义与应用场景(MySQL中null表示)
- 令你提速节省成本何时采用Redis(什么时候采用redis)
- 实时应用场景下考虑使用Redis(什么情况考虑用redis)
- 在实时性要求较高的场景中,避免使用Redis(什么场景不使用redis)