一 前置的基础知识
1 单层感知机
单层感知机:只有一个神经元,它没有隐藏层
,这里的
就是神经网络中的sigmoid激活函数,如果没有激活函数那么
与多元线性函数一摸一样。
中的{
,
, .....
,
} 是线性回归中每个样本对应x轴上的值,在向量数据库中是embedding嵌入后的样本向量数据,
是回归函数中的回归系数,
是回归函数中的截距
2 BP神经网络
BP神经网络:用反向传播算法训练的多层前馈神经网络,它包含输入层、若干隐藏层、层与层之间全连结。
x ---> 隐藏层 ---> ....... --->输出层 --->
反向传播指的是算法训练的一种方法,它根据损失函数,从输出层向输入层逐层计算每个参数对损失的梯度,然后用梯度下降等优化器更新参数。
=
+
二 RNN
RNN是BP神经网络的一种,RNN引入隐状态作为"记忆",在时间步之间循环传递,且所有的时间步共享同一组参数,把RNN按时间轴展开,它等价于一个权重共享的深层前向网络(深度=序列长度),因此可以直接用反向传播训练,这个算法叫做BPTT.
bash
x_0 → h_0 → h_1 → h_2 → ... → h_T
↓ ↓ ↓ ↓
y_0 y_1 y_2 ... y_T
把t = 1, 2, 3展开看就会很清楚:
在t不同的时间点下,权重、
、
的值都是一致的,但下一个时间点t的h是基于t - 1时刻
的值计算出的,因此RNN包含了过去时间点的一些数据,但又因为它是反向传播的,在训练时计算损失函数时,会有梯度消失的问题,因此它虽然有记忆的一些能力,但也是很近的几个时间点的记忆,时间较长时它有记忆丢失的问题。