Class Project
占40%的成绩比重
尽早规划好任务和数据集
project类别:
1. 用已存的神经网络应用在一个新的任务task上
2.开发出一个新的神经网络结构
Class Project: Apply Existing NNets to Tasks
1.构建任务,如:生成摘要
2.准备数据及:
1).已经有基准线的学术上的数据集,如:Document Understanding Conference (DUC)
2).构建你自己的数据集,可以是TwiMer,Blogs,News等
3.定义好任务task的衡量标准
4.划分好数据集,train/cv/test.学术上常用的数据集一般已经划分好了
5.建立基准线:首先完成一个简单的模型(如一元或者二元的逻辑回归),然后再train/cv dataset上计算错误率,分析错误原因。如何没有错误,重新来过:)
6.在已经存在的神经网络模型上实现:计算train/cv dataset的错误率并分析
7.可视化数据集,收集摘要统计信息,分析错误,分析不同的参数对运行结果的影响。
8.尝试更多不同种类的模型
Class Project:A New Model -‐-‐ Advanced Option
Project Ideas
Summary:Feed-‐forward Computation
http://nlp.stanford.edu/sentiment/">电影评论情感分析参考:http://nlp.stanford.edu/sentiment/
假设:1.s=score(museums in Paris are amazing) 2.sc=score(Not all museums in Paris)
训练目标函数的一些思想idea:最大化true window的sore,最小化correct window的score,也就是最小化下面的函数(因为是连续的,所以可以采用SGD,下面的函数针对单个window):
就例子s而言,对于一个中心词是一个location的window,会比中心词不是location的window得到的分数高score+1
整体的,针对整个数据集的目标方程就是讲每个单独window对应的目标方程相加。
Training with Backpropagation
带下标c的一般表示负样本
假设J>0,求s和sc关于U,W,b,x的导数。示例:
先考虑s对单个权重Wij的导数,参考下面的函数变形,所以Wij只影响ai:
以W23为例,W23只能用来计算a2:
所以将s对Wij 求导:
求出了对Wij单个元素的导数,那么如何求s对整个W矩阵的导数呢?答案($\delta$ 表示的是每个activation的错误信息,其维数与相对应的hidden layer的维数相等):
而对于偏置b:
接下来我们对word vector(x)进行求导:
对U进行求导:
Two layer neural nets and full backprop
x,score function的定义与前面一样
求导过程请参考原讲义 lecture,这里给出结论:一般来讲,对于所有的普通的多层神经网络,在该神经网络内的hidden层权重矩阵W(l) 和regularization后的错误流ER(就是目标函数J),可以总结为以下两个式子(对于多层神经网络的顶层和底层,有更加简单的$\delta$ 表达式):
注意$\delta$ 中有个element-‐wise product
而对于神经网络的输出层的$\delta$ (就是对输出层的,非线性变化之前的Wa+b进行求导)
: