RNN与LSTM
本文来源于视频https://www.bilibili.com/video/BV1e5411K7oW?p=2
1、RNN(循环神经网络)
-
带时间序列的任务场景
- 例子:语音识别,生成一段音乐,情感分析
- 特点:前后关联强,“前因后果”
-
标准神经网络建模弊端
- 传统神经网络:
x
1
,
x
2
.
.
.
.
x_1,x_2....
x1,x2....为输入特征,
y
1
,
y
2
.
.
.
y_1,y_2...
y1,y2...为输出
- - 缺点:
- 单纯的神经网络结构,不共享文本从不同位置上学到的特征
- 参数量巨大
- 输入特征一般是one-hot,维度大
- 输入特征是一段序列,输入向量巨大
- 没有办法体现出时序上的“前因后果”
- 传统神经网络:
x
1
,
x
2
.
.
.
.
x_1,x_2....
x1,x2....为输入特征,
y
1
,
y
2
.
.
.
y_1,y_2...
y1,y2...为输出
-
RNN循环神经网络
-
网络结构:多输入多输出
单元:
单元可以用人脑比喻, a ( t ) a^{(t)} a(t)表示为状态, x ( t ) x^{(t)} x(t)为输入, y ( t ) y^{(t)} y(t)为输出
例:假设你和人吵架, a ( t ) a^{(t)} a(t)表示为你愤怒的状态, x ( t ) x^{(t)} x(t)表示为朋友对你的劝解, y ( t ) y^{(t)} y(t)有两种结果:1-仍然很生气,2-不生气了
-
特点:
- 串联结构,体现出“前因后果”,后面结果的生成参考前面的结果
- 所有特征共享同一套参数
- 不同的输入,学到不同的相应的结果
-
前向传播
-
损失函数
-
单个时间步的损失函数
自定:比如上边的是分类所以他的损失函数一般是交叉熵损失函数
其中, p ( x i ) p(x_i) p(xi):真实概率; q ( x i ) q(x_i) q(xi):预测概率
如果是回归问题:他的损失函数一般是均方误差(L2损失)等等
其中: y i y_i yi为真实值, y i p y_i^p yip为预测值
-
整个序列的损失函数:将每一步的损失函数求和
L(y`,y)= ∑ t = 1 T H ( p t , q t ) \sum_{t=1}^{T}{H(p_t,q_t)} ∑t=1TH(pt,qt)
-
-
反向传播
-
-
缺点:梯度消失
2、(LSTM)长短期记忆网络