课程概要
1、反向传播的四种解释
2、项目指导
一、反向传播的解释1
任务:和上一课一样,判断中心词是否是一个命名实体地点,窗口定义和最后一层的函数都是一样的
结构:含有两个隐层
二、反向传播的解释2:circuits
例子来源于:CS231n: http://cs231n.github.io/optimization-2/
用类似树的结构来模拟计算,每个子节点表示一个数字,每个中间节点表示一个运算。
从右往左,我们可以依次计算每个节点对应的梯度,主要的计算是前一个节点的梯度乘以当前节点的梯度
一个更加复杂和具体的例子:
如果可以的话,我们也可以把几个节点合并成为一个节点:
三、反向传播的解释3:高级流程图
对这个图而言,每个节点都代表一个计算结果,每条边都代表一个计算关系,y向量是x向量的衍生。
前馈做的事情是按照正常顺序计算每个节点的结果。而后馈做的事情是初始化输出的梯度为1,计算反向顺序的每个节点的梯度。
整体的梯度求导我们都可以使用自动化的方法求解,在做前馈计算的时候,前馈符号可以自动推断出后馈的计算。每个节点都需要知道如何计算出输出,以及如何基于输出梯度计算出输入的梯度。
四、反向传播的解释4:真实神经网络中的δ误差信号
和之前一样的两个隐层的神经网络
五、项目指导(针对课程项目)
1、一些备选的项目类型
- 对一个新任务运用神经网络模型
- 应用一个复杂的神经框架
- 建立一个新的神经网络模型
- 深度学习的理论:比如优化
2、指导:对一个新任务运用已有神经网络模型
a 定任务:比如说Summarization
- 更多和summarization相关的内容可以参考这个斯坦福大学-自然语言处理入门 笔记 第二十一课 问答系统(2)
b 定数据集
- 查找现有的学术数据集:这些数据集一般都已经有基准(baseline),比如Document Understanding Conference (DUC)
- 定义自己的数据集(会更困难,一般没有基准):Wikipedia,Twitter,Blogs,News
c 定自己的度量标准
- 在网上查找针对该任务的已经建立好的度量(metrics),比如说 Summarization,就可以使用Rouge
d 分裂你的数据
- 把数据分成:训练集,发展集和测试集
- 一定要确保测试集其他数据集之间是完全没有重叠的
e 建立一个基准
- 应用最简单的模型:通常是基于一元模型/二元模型的逻辑回归
- 在测试集和训练集上计算度量(metrics)
- 分析错误
- 如果度量结果很好,那么你就完成了,说明任务太简单了,重新换个任务开始思考。
f 应用现有的神经网络模型
- 在测试集和训练集上计算度量(metrics)
- 分析输出和错误
- 这样就达到了课程的最低要求
g 要非常了解自己的数据
- 对数据集进行可视化
- 收集统计信息
- 关注错误
- 分析超参将会怎么影响模型表现
h 尝试不同的模型变体
- Word vector averaging model (neural bag of words)
- Fixed window neural model
- Recurrent neural network
- Recursive neural network
- Convolutional neural network
3、指导:构建一个新模型
- 首先,先要完成上面的步骤a-h
- 然后,思考为什么现有的模型是存在问题的
- 和研究者/mentor进行大量得交流
- 应用新的模型,并且进行重复的迭代
- 建立一个有效的实验狂降
- 一开始先构建简单模型
- 以summarization为例:平均每个段落的词向量,然后贪婪搜索;应用语言模型;衍生目标:生成seq2seq的总结