你本来也不用自己手动进行词向量更新啊,你搞这么一出最后收敛到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本身的参数了,让宝贵的标注数据可以好钢用在刀刃上。

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

  1. lstm数学推导_手推公式:LSTM单元梯度的详细的数学推导

    长短期记忆是复杂和先进的神经网络结构的重要组成部分.本文的主要思想是解释其背后的数学原理,所以阅读本文之前,建议首先对LSTM有一些了解. 介绍 上面是单个LSTM单元的图表.我知道它看起来可怕,但我 ...

  2. 基于pytorch构建双向LSTM(Bi-LSTM)文本情感分类实例(使用glove词向量)

    学长给的代码,感觉结构清晰,还是蛮不错的,想以后就照着这样的结构走好了,记录一下. 首先配置环境 matplotlib==3.4.2 numpy==1.20.3 pandas==1.3.0 sklea ...

  3. 飞桨模型保存_手把手教你用飞桨做词向量模型 SkipGram

    飞桨开发者说成员:肥猫.忆臻 在做 NLP 的任务时,一个非常 basic 的操作就是如何编码自然语言中的符号,例如词.短语,甚至词缀.目前流行的方法有大约三种: •  特征工程:这类方法依赖于手工特 ...

  4. lstm预测股票_股票相关性与lstm预测误差

    lstm预测股票 When trying to look at examples of LSTMs in Keras, I've found a lot that focus on using the ...

  5. 机器学习实战 梯度上升 数学推导_机器学习全路线经典书籍

    ❝ 前情提要:为了让大家学好机器学习,我问了几个大佬学长并找了些资料,整理了一些学习路上必看的书籍,从数学基础.算法基础,到入门,再到进阶实战,都是精选的经典书籍,并给出了图片和简要介绍(还附带 Gi ...

  6. lstm 输入数据维度_理解Pytorch中LSTM的输入输出参数含义

    本文不会介绍LSTM的原理,具体可看如下两篇文章 Understanding LSTM Networks DeepLearning.ai学习笔记(五)序列模型 -- week1 循环序列模型 1.举个 ...

  7. lstm 输入数据维度_[mcj]pytorch中LSTM的输入输出解释||LSTM输入输出详解

    最近想了解一些关于LSTM的相关知识,在进行代码测试的时候,有个地方一直比较疑惑,关于LSTM的输入和输出问题.一直不清楚在pytorch里面该如何定义LSTM的输入和输出.首先看个pytorch官方 ...

  8. Glove模型训练自己的中文数据集词向量详细步骤

    首先,下载Glove项目资源: https://github.com/stanfordnlp/GloVe  注意1: 后续训练命令仅在服务器命令行界面有效,在本机命令行.anaconda prompt ...

  9. lstm数学推导_LSTM简介以及数学推导(FULL BPTT)

    前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了.现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初 ...

最新文章

  1. 消息队列处理微信支付超时订单
  2. ajax提交表单,导致浏览器卡死
  3. 深入理解DefaultMessageListenerContainer
  4. UI设计素材|字体的重要性
  5. C 输入 输出——Day03
  6. linux学习之vi编辑器的使用详解
  7. ThinkPad P73 拆机清灰日志
  8. Windows XP SP3安装后瘦身法
  9. 区块链技术在银行业的应用
  10. 51nod 牛奶 bfs深度优先搜索
  11. python NLP中文近义词
  12. 查看html代码来下载mp4视频的一次记录
  13. 【H5即时通讯系统PHP源码】支持嵌入+单聊+群聊+可单独封装APP
  14. flutter实战!一个Android应届生从上海离职,深度好文
  15. 《关键对话》:高效沟通与数据分析的意义不言而喻
  16. AlertManager实现企业微信报警(十三)
  17. Mysql之using用法
  18. 【TeXstudio】【2】一般的图片和表格的表现形式
  19. Java实现抽奖功能
  20. 复变函数与积分变换(五)学习笔记[孤立奇点,留数,零点与奇点,无穷远点的留数,留数计算的应用]

热门文章

  1. 给UIWebView增加搜索栏
  2. 在Red Hat 4 AS U7上安装oracle10gR2
  3. 机票预订系统活动图_软件工程(第五版)--习题及答案技术总结.docx
  4. 电子计算机场地通用规范_最全的视频监控系统施工规范要求
  5. mysql可能锁的表命令_mysql 默许是表级锁一些不太常用命令
  6. 矩阵位移法matlab编程,矩阵位移法_MATLAB_GUI.doc
  7. JNI----Native本地方法接口
  8. Windows系统优化12个默认设置
  9. 为什么 SQL 正在击败 NoSQL,这对未来的数据意味着什么?
  10. 我在工作中是如何使用Git的