在讲RNN之前,来了一位新老师讲了语言模型和Word Embedding,经过笔者思考决定将其放到自然语言处理系列笔记中(挖坑doge)
- 对于一些特定的任务,如机器翻译、情感分类、语音识别等,因为数据具有时序性,所以需要神经网络具备“记忆”功能。
- 而前馈神经网络与卷积神经网络都无法处理序列数据,于是催生出循环神经网络。
循环神经网络(RNN)
- 循环神经网络架构的建立可追溯至1982年的霍普菲尔德网络(Hopfield Network)。
- 1986年,Jordan Network被提出,建立了早期的循环网络;
- 1990年,Elman Network被提出,建立了真正意义上全连接的简单循环网络。
- 循环神经网络可以处理的任务包括:
- 一对一:固定输入到固定输出,如图像分类
- 一对多:固定输入到序列输出,如图像文字描述
- 多对一:序列输入到固定输出,如情感分类
- 多对多:序列输入到序列输出,如机器翻译
- 同步多对多:如视频帧动作分类
- RNN的架构图(基于Elman Network):
- 在序列的每一步中都使用相同的权重W、U和B,因此称为循环(recurrent)。
- 隐藏状态更新与输出公式为:
AlOl=φ(UAl−1+WXl+b)=g(BAl+c)
即隐藏状态随着处理每个输入不断更新,且包含所有历史信息。
- 损失函数(基于时间反向传播BPTT):
i=1∑n(yi−oiL)2=i=1∑n⎩⎨⎧yi−β0+k=1∑Kβkgbiaswk+inputj=1∑pwkjxiLj+hidden states=1∑Kuksai,L−1,s⎭⎬⎫2
其中n为样本总量,L为时间步长,K为隐藏层神经元数量,p为输入向量维度。
LSTM
- RNN模型存在的问题:
- 模型需要长期记忆,而RNN每一步都要更新隐藏状态,把过去的信息压缩进去,导致每一步都在“覆盖”之前的信息,因而容易忘记长期信息。【梯度消失/爆炸】
- 1997年,由Hochreiter和Schmidhuber提出的长短时记忆(LSTM)架构有效解决了这一问题。
- 其核心在于在隐藏状态之外加入了记忆单元Ct和四个“门”:
- 遗忘门Ft:决定删去多少旧记忆;
- 输入门It:决定写入多少新信息;
- 候选记忆门Ct~:生成候选的新信息内容;
- 输出门Ot:决定输出多少信息。
- 公式:
FtItOtCt~CtHt=σ(XtWXf+Ht−1Whf+bf)=σ(XtWXi+Ht−1Whi+bi)=σ(XtWXo+Ht−1Who+bo)=tanh(XtWXc+Ht−1Whc+bc)=Ft⊙Ct−1+It⊙Ct~=Ot⊙tanh(Ct)
- 应用:在2014~2017年之间,图像文本描述/视频分析领域使用CNN + LSTM的方法非常成功,因而成为主流方法。
- 然而,2017年一篇论文的出现打破了这一范式——
呃,笔者又看了下课程的PPT,写的也太简略了,还不如之前人工智能导论的详细。所以这里就直接放上之前笔记的链接,之后有机会再补……
Transformer与大语言模型