lstm数学推导_如何在训练LSTM的同时训练词向量?

你本来也不用自己手动进行词向量更新啊,你搞这么一出最后收敛到0那不是必然的么? @霍华德 老师的答案已经给你推导出来了。

实际上你问的这个问题很简单——只要把Embedding层本身也当成模型参数的一部分就可以了,一开始不使用外部词向量,直接随机初始化一个Embedding层,然后正常读入训练数据开始执行训练就可以了。在训练的过程中,如果指定Embedding层也是可训练的参数(pytorch里设置requires_grad=True)的话,那么在训练的时候Embedding层的参数也会被更新,就像更新LSTM的参数一样,对损失函数求导,通过BP更新Embedding层的参数,然后就可以实现你说的“同时训练词向量”了。

但一般情况下我们不会这么做——即使是不考虑梯度从损失函数出发,穿透LSTM到达Embedding层之后还能剩下多少(LSTM显然也不可能完全克服梯度消失问题),你这么一搞的话模型的参数总量就相当于你的LSTM的参数总量,加上Embedding层的参数总量。假设词表长度是10W,词向量维度是100的话,这种做法就意味着你的模型凭空多出了10W * 100 = 1000W的参数,显然你那点标注数据根本就喂不饱这么多参数,真这么玩的话直接就过拟合到姥姥家了。

这也就是为什么我们要使用预训练词向量——训练模型同时训练词向量,就意味着要使用宝贵的标注数据去填Embedding层这个大窟窿。而预训练词向量就完全不一样了——主流的词向量训练方法,比如早年间的word2vec,GloVe,或者近年来的各种Context-aware Embedding,都可以通过自监督(Self-Supervised)方法进行训练。也就是说,语料的词与词间共现关系(word2vec)或者上下文顺序(ELMo和BERT等)本身就是给模型的标注信息——这就意味着我们可以轻而易举地使用大量的无监督文本语料进行词向量训练。要知道,互联网时代,无监督文本语料本身的获取成本是很低的,基本上只要你往上堆算力堆模型就可以了。通过预训练词向量,不仅可以通过大量的文本获得质量更高的词向量,还可以在训练的时候直接把Embedding层当成常数(requires_grad=False),这样的话需要训练的参数就只有LSTM本身的参数了,让宝贵的标注数据可以好钢用在刀刃上。

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

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

相关文章

Javascript在页面加载时的执行顺序(转载)

原文&#xff1a;http://dancewithnet.com/2007/03/22/order-of-execution-of-javascript-on-web/ 一、在HTML中嵌入Javasript的方法 直接在Javascript代码放在标记对<script>和</script>之间由<script />标记的src属性制定外部的js文件放在事件处理程序中&a…

TClientDataSet[27]: 字段值的约束(或叫输入限制)

Required、Precision、MaxValue、MinValue:begin{ Required: 必填字段 }with TIntegerField.Create(Self) do beginFieldName : ID;Required : True;DataSet : ClientDataSet1;end;{ Precision: 浮点数精度}with TFloatField.Create(Self) do beginFieldName : Float;Precision…

年度总结文章的抽奖结果公布

大家好&#xff0c;我是若川。2月4日&#xff0c;发表了我的2020年度总结文章《若川的2020年度总结&#xff0c;水波不兴》&#xff0c;本以为阅读量应该突破一千会比较快&#xff0c;实际上比较艰难&#xff0c;而且还掉粉10来人。2020年运营公众号以来&#xff0c;不知不觉发…

php 正则表达式 匹配中日韩字符(GBK)

转载链接&#xff1a;http://www.cnblogs.com/ITEagle/archive/2013/01/14/2859775.html 首先是这些非英文字符的编码范围&#xff1a; 这里是几个主要非英文语系字符范围 2E80&#xff5e;33FFh&#xff1a;中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假…

linux多线程求和_linux 多线程信号处理总结

linux 多线程信号总结(一)1. 在多线程环境下&#xff0c;产生的信号是传递给整个进程的&#xff0c;一般而言&#xff0c;所有线程都有机会收到这个信号&#xff0c;进程在收到信号的的线程上下文执行信号处理函数&#xff0c;具体是哪个线程执行的难以获知。也就是说&#xff…

Elon Musk

人物事件 成长学习 1971年6月28日&#xff0c;埃隆马斯克在南非的比勒陀利亚出生&#xff0c;他的 埃隆马斯克 父亲是一名南非机电工程师&#xff0c;母亲是加拿大人&#xff0c;从事营养师兼模特。[8] 1981年&#xff0c;10岁的马斯克就拥有了自己的第一台电脑&#xff0c;并…

真诚推荐这7个大佬的公众号,碎片化学习

逆水行舟&#xff0c;不进则退。我们的工作已经占用了大块的时间了&#xff0c;剩下的只有各种碎片&#xff0c;最适合碎片时间学习的&#xff0c;莫过于优质的技术干货公众号啦~以下这些是小编精选&#xff0c;里面有很多资讯和资源&#xff0c;内含干货&#xff0c;希望能给大…

[转]Windows 7 产品密钥是否安全

提到Windows 7&#xff08;或Windows Server 2008&#xff09;有些人认为自己的产品密钥&#xff08;Product Key&#xff09;很安全&#xff0c;甚至在公司内部有些网管也认为公司部署的Windows 7 系统的密钥不会泄露。但其实并非如此&#xff0c;众所周知我们的密钥都是写在注…

HttpWatch的Result中出现Aborted的原因分析[配图]

转载链接&#xff1a;http://www.cnblogs.com/yutiansanshou/archive/2013/02/01/2889486.html 我们在使用HttpWatch进行Web调试的过程中有时候会看到非HTTP Status Code&#xff08;状态码&#xff09;的值&#xff0c; 例如&#xff1a;(Aborted)。 (Aborted)是HttpWatch中定…

android显示布局边界的边距_Android设计规范 Material Design-Layout(2 度量与边框)

度量与边框基准网络所有组件都与间隔为8dp的基准网格对齐。排版/文字(Type)与间隔为4dp的基准网格对齐。在工具条中的图标同样与间隔为4dp的基准网格对齐。这些规则适用于移动设备、平板设备以及桌面应用程序。有关详细信息请参见组件一节。有关详细信息请参见字体排版一节。边…

《大规模分布式系统架构与设计实战》

《大规模分布式系统架构与设计实战》 基本信息 作者&#xff1a; 彭渊 丛书名&#xff1a; 大数据技术丛书 出版社&#xff1a;机械工业出版社 ISBN&#xff1a;9787111455035 上架时间&#xff1a;2014-2-21 出版日期&#xff1a;2014 年2月 开本&#xff1a;16开 页码&…

WINDOWS下的squid

今天写这篇教程目的在于分享自己在WINDOWS主机下配置squid的方法。哪些地方写的不完善或是不完整或是需要修改的地方&#xff0c;大家可以提出。我会第一时间纠正。下面看正文部分。先提条件&#xff0c;您预安装配置squid的这台计算机必须是联入网络的&#xff0c;系统版本是w…

Provide/inject 真的可以取代 Vuex 吗?

Hello&#xff0c;各位小伙伴&#xff0c;接下来的一段时间里&#xff0c;我会把我的课程《Vue.js 3.0 核心源码解析》中问题的答案陆续在我的公众号发布&#xff0c;由于课程的问题大多数都是开放性的问题&#xff0c;所以我的答案也不一定是标准的&#xff0c;仅供你参考喔。…

php 计算代码执行时间

转载链接&#xff1a;http://blog.csdn.net/php_boy/article/details/6450678 class runtime {var $StartTime 0;var $StopTime 0;function get_microtime(){list($usec, $sec) explode( , microtime());return ((float)$usec (float)$sec);}function start(){$this->S…

参数方程求二阶偏导_偏微分方程

常微分方程&#xff08;ODE&#xff09; 的时候我们更多是关于时间的导数。偏微分方程&#xff08;partial differential equation) 则不仅仅是与时间相关&#xff0c;加上了与空间位置相关的一些信息。解当 ODE 满足 利普希茨连续&#xff08;Lipschitz continuity&#xff09…

Spring Batch 批量处理策略

为了帮助设计和实现批量处理系统&#xff0c;基本的批量应用是通过块和模式来构建的&#xff0c;同时也应该能够为程序开发人员和设计人员提供结构的样例和基础的批量处理程序。当你开始设计一个批量作业任务的时候&#xff0c;商业逻辑应该被拆分一系列的步骤&#xff0c;而这…

CString原理介绍

看了很多人写的程序,包括我自己写的一些代码&#xff0c;发现很大的一部分bug是关于MFC类中的CString的错误用法的.出现这种错误的原因主要是对CString的实现机制不是太了解。 CString是对于原来标准c中字符串类型的一种的包装。因为&#xff0c;通过很长时间的编程&#xff0c…

如何从零开始开发一个 Chrome 插件?

什么是浏览器插件&#xff1f;简单来说浏览器插件&#xff0c;是浏览器上的一种工具&#xff0c;可以提供一些浏览器没有的功能&#xff0c;帮你做一些有趣的事情。开发者可以根据自己的喜欢&#xff0c;去实现一些功能。插件基于Web技术&#xff08;html、css、js&#xff09;…

mysql 重复字段查询及排除重复值

转载链接&#xff1a;http://blog.sina.com.cn/s/blog_3edc5e2e010131ys.html mysql 重复字段查询及排除重复值 SELECT a.id,a.title FROM dede_archives a left join dede_taglist t on t.taga.title WHERE t.typeid$id and t.arcrank>-1 and a.typeid28 group by t.tag; …

swiper移入暂停_react中swiper注意事项及鼠标划入停止轮播

首先是实例化swiper这里有一个注意点&#xff0c;就是实例化的时机如果你的swiper内容是写死的&#xff0c;可以在componentDidMount中实例化&#xff0c;但是如果你的内容是通过接口异步请求过来的&#xff0c;就必须在componentDidUpdate里实例化&#xff0c;因为如果在 comp…