16 Mar 2017

cs224d-neuro network

目录

欢迎在文章下方评论,建议用电脑看

cs224d-neuro network

因为神经网络基础已经讲过了,在这里就不重复细讲,在这里主要讲的是结合nlp中的一些trick和tip,顺带讲下对交叉熵的进一步理解

训练神经网络

下面讲述的是怎么才能训练出比较好的神经网络,一些tip&trick

header1

  1. 选择适当的网络结构
    1. 结构:单个词,固定窗口,词袋,递归 vs 循环,CNN,基于句子 vs 基于文档
    2. 非线性函数选择
  2. 用梯度检查来校验是否有实现bug
  3. 参数初始化
  4. 优化技巧
  5. 检查模型是否能够在数据集上过拟合
    1. 如果不能,那么需要改变模型结果或者让模型参数规模更大(例如增加隐藏层)
    2. 如果可以,那么增加正则化项

还有就是在检查神经网络的时候的梯度检查:

header1

header1

header1

rnn

文中简单介绍了一下rnn和他为什么难以训练,下面给出课件:

header1

header1

header1

文中也给出,因为我们知道训练rnn很容易梯度消失或者梯度爆炸,下面是一种切割梯度的方式,来阻止梯度爆炸:

header1

header1

需要注意的是,在后面讲到的lstm中,它是可以防止梯度消失,但不能防止梯度爆炸,具体原因请查看这篇博文

交叉熵

header1

header1

这里很明白的说明了最小化交叉熵就是在最小化kl散度,好的,一开始并不知道它是什么,下面摘自网上,对于kl散度和交叉熵的解释:

header1

比如TD-IDF算法就可以理解为相对熵的应用:词频在整个语料库的分布与词频在具体文档中分布之间的差异性。交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。

PS:

通常“相对熵”也可称为“交叉熵”,因为真实分布p是固定的,D(p||q)H(p,q)决定。当然也有特殊情况,彼时2者须区别对待。

尽管KL散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,D(p||q)!=D(q||p)

维基百科-Cross_entropy


Tags:
Stats:
comments


Share: