CS224D学习笔记

第二次看了,理解深了一些
2017.7.24
传统方法 通过统计一个单词周围的单词的频率,获得每个单词的wordvec,然后通过SVD降维,去除较大奇异值的矩阵,把vec长度在25-1000内。
缺点是1.单词很多的时候SVD复杂度很高
2.要添加新单词时很困难,扩展性差
深度学习可以部分解决。

wordvector和具体任务一起训练有可能有更好的训练效果,但是可能会把wordvector变得主要是为了训练任务了,如果训练量很少,可能有些单词变化了,有些还没有变化,不太好。
训练量大的时候带着wordvector一起训练比较好

2017.7.25
监督学习:
希望得到一个输入到输出的函数
函数的形式已经给定,若干参数未知,
需要定义loss function,用梯度不断改进参数,逼近想要得到的参数值。
loss function 加上一个参数平方和的均值防止过拟合(防止一个参数太大)
尽量少用FOR循环,多用矩阵乘法

普通的softmax(logistics regression)只能提供线性的边界(因为乘以一个矩阵之后看大于0还是小于0,就等于是一条线(或者一个平面)的方程,只有线性边界)

神经网络隐层有多个节点,每个节点的触发函数都是非线性的,结合起来可以提供非线性的边界。

不同任务一起训练底层网络和wordvector,只有上层的softmax层分开训练
BP算法的过程是先自下而上再自上而下,自上而下的时候,softmax层分开训练,其它层的loss用两个加在一起。
因为在BP的时候一个神经元连接到的weights都会有同样的loss,然后再乘以连接的下层神经元,构成一个weight的loss,所以可以叠加
特别是训练wordvector的时候,需要很多的数据,所以可以不同任务同时训练。

花式调参:
1.学习率:在平稳之后减少学习率
2.初始化:不能梯度消失

2017.7.27
昨天学的一课TensorFlow,还行
然后看了一课GRU和LSTM,GRU的用处,一个是像动量一样,当前状态要继承部分上一状态;第二个是计算当前状态的新值的时候,利用上一状态的多少也要学习。
LSTM类似,但是Cell存储的state和为下一个状态提供的h不是一个值,利用h来产生输出,利用c来传递前面的信息,每次依然要考虑取多少前面的信息。
Recursive NN,用来分词,递归地每次合并两个单词/句子/词组,问题在于每次要选择两个得分最高的。

你可能感兴趣的:(深度学习,深度学习)