1、CNN:就是把每个字转换成向量,再拼接成图像的样式,再用卷积核处理,再池化和拼接,再softmax得到分类结果,卷积核的作用能够整合一些上下文信息。

3、CNN、RNN、LSTM

2、RNN:前向网络中加入了前一个字的信息,隐含层嘛;能够整合更多的上下文信息,效果更好,但是会出现梯度消失和爆炸。产生的原因是什么呢?在bp过程中(这里就不推导了),当前层参数的导数是后面所有层导数跌成的结果,主要包含**函数的导数和权值矩阵两个方面;梯度爆炸是因为初始化权重矩阵太大,导致每一层的权重矩阵和**函数导数的乘积都大于1,;所以初始化权重矩阵不易太大;梯度消失是因为**函数的导数明显小于1,导致跌成之后远小于1,如sigmoid函数的导数永远小于0.25,tan函数的导数值分布也比较小,不能使用**函数relu,因为这个还是会导致梯度爆炸。hinton的论文中说了替换成relu会导致很大的输出值,举个例子:

a(i) = Wf(i-1) +Ux(i) +b(i)   **函数的输入,x(i)是每个阶段的输入,

f(i) = f[a(i)]  **函数的输出

rnn中每一层的W相同,所以在求当前层的变化时,叠乘由于**函数导数都是1,那么就是W的n次方,如果把W初始化单位矩阵还ok,如果不是的话,就很容易梯度爆炸。而cnn不同的是各个W是不同的,这样的话就会避免梯度爆炸。

或者使用batch normalization,使传入**函数的数值分布趋于正态分布,这样的话sigmoid函数的导数值永远在最大值附近。再或者就是做梯度截断解决梯度爆炸,最后一种方法就是LSTM。

3、CNN、RNN、LSTM

3、LSTM:加入了四个门,忘记门+输入门+状态门+输出门;门的作用是有选择性地保留信息。在更新权值的过程中,是**函数的值和权重矩阵的叠乘,而不是**函数的导数值,**函数的值通过偏置可以在1附近,这样就解决了梯度消失的问题。

LSTM中上一层的状态c并不向RNN中那样全部信息输入到当前层,而是受输入们和遗忘门的共同控制。

如下图所示,状态门使用了tan函数,其余三个门使用了sigmoid函数。

3、CNN、RNN、LSTM

上面说的一般的**函数有sigmoid、tan、relu及变形

损失函数有交叉熵、0-1损失、平方损失等

相关文章: