循环神经网络
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、序列模型
统计工具
- 在时间 t t t观察到 x t x_t xt,那么得到 T T T个不独立的随机变量 ( x 1 , x 2 , . . . , x T ) ∽ p ( X ) (x_1,x_2,...,x_T) \backsim p(\bf{X}) (x1,x2,...,xT)∽p(X)
- 使用条件概率展开 p ( a , b ) = p ( a ) p ( b ∣ a ) = p ( b ) p ( a ∣ b ) p(a,b)=p(a)p(b|a)=p(b)p(a|b) p(a,b)=p(a)p(b∣a)=p(b)p(a∣b)
推广到 T T T个随机变量有
p ( X ) = p(\bf{X})= p(X)= p ( x 1 ) ⋅ p ( x 2 ∣ x 1 ) ⋅ p ( x 3 ∣ x 1 , x 2 ) ⋅ . . . p ( x T ∣ x 1 , . . . x T − 1 ) p(x_1)\cdot p(x_2|x_1)\cdot p(x_3|x_1,x_2)\cdot ...p(x_T|x_1,...x_{T-1}) p(x1)⋅p(x2∣x1)⋅p(x3∣x1,x2)⋅...p(xT∣x1,...xT−1)
或者反过来
p ( X ) = p(\bf{X})= p(X)= p ( x T ) ⋅ p ( x T − 1 ∣ x T ) ⋅ p ( x T − 2 ∣ x T , x T − 1 ) ⋅ . . . p ( x T ∣ x 2 , . . . x T ) p(x_T)\cdot p(x_{T-1}|x_T)\cdot p(x_{T-2}|x_T,x_{T-1})\cdot ...p(x_T|x_2,...x_T) p(xT)⋅p(xT−1∣xT)⋅p(xT−2∣xT,xT−1)⋅...p(xT∣x2,...xT)
反序的意义,例如知道未来的事情退过去的事情,物理上不一定可行是指如果未来的事情依赖于过去的事情而产生,那么就没法反推(这一点我还没有理解,既然未来的事情是作为已知条件,过去有和未来有联系,怎么就无法反推出过去的事情呢?) - 对条件概率建模
p ( x T ∣ x 1 , . . . x t − 1 ) = p ( x t ∣ h ( x 1 , . . . , x t − 1 ) ) p(x_T|x_1,...x_{t-1}) = p(x_t|h(x_1,...,x_{t-1})) p(xT∣x1,...xt−1)=p(xt∣h(x1,...,xt−1))
给定 t − 1 t-1 t−1个数据,求第 t t t个数据,假设用前 t − 1 t-1 t−1个数据建立一个函数 h h h, h h h就是一个模型,通过 h t − 1 h_{t-1} ht−1求 h t h_t ht。通过对前面的数据建模,预测后一个数据,称为自回归模型,核心是求 h h h - 如何求解 f f f
方案A-马尔科夫假设
假设当前数据只跟 τ \tau τ个过去数据点相关
P ( x T ∣ x 1 , . . . x t − 1 ) = P ( x T ∣ x t − τ , . . . x t − 1 ) = P ( x t ∣ h ( x t − τ , . . . , x t − 1 ) ) P(x_T|x_1,...x_{t-1}) =P(x_T|x_{t-\tau},...x_{t-1})= P(x_t|h(x_{t-\tau},...,x_{t-1})) P(xT∣x1,...xt−1)=P(xT∣xt−τ,...xt−1)=P(xt∣h(xt−τ,...,xt−1))
方案B-潜变量模型
引入潜变量 h t h_t ht来表示过去的信息 h t = g ( h t − 1 , x t − 1 ) h_t=g(h_{t-1},x_{t-1}) ht=g(ht−1,xt−1)
这样 x t ^ = P ( x t ∣ h t , x t − 1 ) \hat{x_t}=P(x_t|h_t,x_{t-1}) xt^=P(xt∣ht,xt−1)
二、语言模型
1.语言模型简介
- 给定文本序列 x 1 , . . . , x T x_1,...,x_T x1,...,xT, 语言模型的目标是估计联合概率 p ( x 1 , . . . x T ) p(x_1,...x_T) p(x1,...xT)
- 它的作用包括:做预训练模型(egBERT,GPT-3);生成文本,给定前面几个词,不断的使用 x t ∽ p ( x t ∣ x 1 , . . . , x t − 1 ) x_t \backsim p(x_t|x_1,...,x_{t-1}) xt∽p(xt∣x1,...,xt−1) ; 判断多个序列中那个更常见,e.g “to recognize speech” vs “to wreck a nice beach”
2.使用计数来建模
- 假设序列长度为2,我们预测 p ( x , x ′ ) = p ( x ) p ( x ′ ∣ x ) = n ( x ) n n ( x , x ′ ) n ( x ) p(x, x^\prime) = p(x)p(x^\prime|x) = \frac{n(x)}{n}\frac{n(x,x^\prime)}{n(x)} p(x,x′)=p(x