CS224N刷题——Assignment2.3_RNN:Language Modeling
Assignment #2
3.Recurrent Neural Networks: Language Modeling
在这一节中,计算RNN语言模型的梯度。
语言模型是NLP中的一个核心任务,语言模型也存在于语音识别、机器翻译等许多其他系统的核心部分。给定一个单词(表示为一个one-hot行向量)序列,语言模型根据下列模型预测下一个单词:
其中是单词表中的一个单词。
下面计算RNN语言模型的梯度,它使用隐藏层中的反馈信息来模拟“历史”,形式化定义如下:
对于:
其中是隐藏层的一些初始向量,和one-hot行向量的点积表示当前词。参数如下:
其中L是词嵌入矩阵,I是输入词表示矩阵,H是隐藏变换矩阵,U是输出词表示矩阵,和是偏置值,d是词嵌入的维度,|V|是单词表的大小,是隐藏层的维度。
输出向量是单词表上的一个概率分布。模型通过最小化交叉熵损失函数(没有正则化的)来训练:
其中是与目标单词(在这里等于)相关的one-hot向量,对一个序列中的所有样本(即单词)的交叉熵损失进行平均来得到单个序列的损失。
(a)按照惯例,当报告语言模型的表现时,我们评估困惑度,其定义为:
即正确单词的逆概率,根据模型的分布。从交叉熵损失中推导出困惑度(记住是one-hot向量),因此讨论在训练集上最小化(算术)平均交叉熵损失也会最小化(几何)平均困惑度。
对于一个有|V|个单词的单词表,如果模型预测完全随机(从单词表中均匀选取),你预期中的困惑度是多少?计算|V|=10000时相关的交叉熵损失。
(b)计算损失J关于下列模型参数在时刻t的梯度:
其中是L关于当前词的行向量,表示t时刻关于该参数的梯度。
附加:计算关于之前的隐藏层的偏导数:
(c)下面是一个单独时间步的网络示意图:
画出三个时间步的“展开”形式的网络,计算BPTT梯度:
其中表示在t-1时刻关于参数的梯度,因为参数在前馈计算中使用了很多次,我们需要在每次它们出现时计算梯度。
需要使用第五节课中的反向传播法则,以上一节中计算得到的误差项的形式来表示这些导数。
注意,关于训练样本的真正的梯度需要我们进行所有的反向传播直到t=0时刻,而在练习中,通常缩减为仅反向传播5~10个时间步。
(d)给定,需要多少步操作来进行一步前向传播以计算损失函数?一个时间步的反向传播呢?个时间步呢?以O为记号,以的形式表示。slow step是哪一步?
CS224N刷题——Assignment2.3_RNN:Language Modeling相关推荐
- leetcode c程序总提示主函数_帅气中国小哥出“大招”,程序员跳槽面试刷题必备...
整理 | 一一 出品 | AI科技大本营 春节刚过,年终奖收入囊中,属于工程师们一年一度的跳槽季也来了. 跳槽后薪水翻倍自然爽歪歪,但最怕的是面试翻车,那就悲剧了.可想而知,想要跳槽或者为春招准备的毕 ...
- 程序员跳槽面试刷题必备,微软工程师放大招!| 程序员硬核评测
整理 | 一一 出品 | AI科技大本营(ID:rgznai100) 春节刚过,年终奖收入囊中,属于工程师们一年一度的跳槽季也来了. 跳槽后薪水翻倍自然爽歪歪,但最怕的是面试翻车,那就悲剧了.可想而知 ...
- Bigder:53/100 真香免费网站!在线练习SQL\Python\Shell像游戏通关一样刷题
给大家推荐一个在线练习语言的网站.有20多个语言:像游戏通关一样刷题,如:SQL\Python\Shell,在看.转发分享给更多人 入口: https://www.codewars.com/join ...
- Pintia(拼题A)刷题插件 on VS Code
开发背景 初次在拼题A(Pintia)上刷题是在2019年的暑假,使用的首选语言是 C++,编辑器则以 VS Code 为主.VS Code 由于其免费.轻量以及插件库丰富的特性,吸引了越来越多的开发 ...
- 各大编程语言、软件,电子电路刷题学习网站链接及微信公众号
20210813 增加一些公众号 一些对程序员有用的网站 https://mp.weixin.qq.com/s/GiEbcBSReaKrVezjGA9_fA 20210715:公众号:拓跋啊秀 资源: ...
- 【HDLBits 刷题】所有答案直达链接汇总
写在前面 以下为HDLBits全部答案,有些题的解法不唯一,我的也许不是最优解,欢迎提出更好的想法,HDLBits总的来说比较适合初学者. HDLBits 答案汇总 Language [HDLBits ...
- 数学建模进入“新课标”,告别了“刷题”“押题”数学应该怎么学?
前段时间,光明日报教育周刊发表了一篇题为<靠刷题.押题还能得高分吗>的文章,并用一整个版面来探讨"双减"后的数学教育问题.各大媒体纷纷转发,一时间刷爆朋友圈. < ...
- BUUCTF-2020寒假刷题记录
BUUCTF-2020寒假刷题记录 Web [RoarCTF 2019]Easy Calc 打开源码,看到calc.php,打开看到源码. 在 num 前面加个空格即可绕过 ? num=phpinfo ...
- 【牛客网】C/C++牛客网专项刷题(02)
以下为牛客网C/C++专项刷题: 1.虚函数不可以内联,因为虚函数是在运行期的时候确定具体调用的函数,内联是在编译期的时候进行代码展开,两者冲突,所以没有一起使用的做法. 2.C++中构造函数和析构函 ...
- 《学Unity的猫》——第十八集:Unity3D游戏开发工程师笔试刷题,皮皮收到面试邀请
文章目录 18.1 皮皮收到面试邀请 18.2 面试题库相关网站 18.2.1 牛客网 18.2.2 领扣LintCode 18.2.3 力扣LeetCode 18.3 优质学习网站 18.3.1 菜 ...
最新文章
- mysql 释放错误连接_JSP连接MySQL后数据库链接释放的错误
- 管家服务器未显示数据库启动,服务器受到后缀为gupwp的**,10年数据库等大神解救...
- 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - I. 后缀表达式
- redis布隆过滤器PHP,Redis 中的布隆过滤器
- java jdbc分页_使用JDBC进行分页查询
- PIX防火墙security context配置手册(虚拟防火墙技术)
- Python 绘图,我只用 Matplotlib
- 《数字视频和高清:算法和接口》一2.6消费类电子显示器
- CCF NOI1061 Wifi密码
- 以太坊地址和公钥_以太坊的私钥、公钥、地址、账户
- 数理统计-随机变量的数字特征:期望、方差、协方差、矩、协方差矩阵
- 如何从C快速过渡到C++
- php mysql统计去掉重复的,php - Mysql:根据最小数量删除重复记录 - 堆栈内存溢出...
- 推荐个工作日志的软件nyfedit
- 线性调频信号与脉冲压缩
- win10更新后C盘空间变小解决方法
- 华硕双屏笔记本windows系统驱动安装
- 外贸里面 LC TT DP DA BG 是什么
- 数据库系统原理期末复习
- C#基础知识点个人整理【菜鸟教程】
热门文章
- ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决...
- 第一百六十天 how can I 坚持
- ASP.NET中 Bin,App_Browser,App_code,App_Data,App_Theme 等文件
- [书目20080225]软件工程与项目管理解析
- OpenCV2 图像叠加 给照片加水印
- 【GDB调试学习笔记】调试程序段错误
- 魔方机器人之下位机编程---模拟PWM
- BERT-BiLSTM-CRF命名实体识别应用
- NSGA-II资料合集
- 从零基础入门Tensorflow2.0 ----五、20. 预定义estimator使用