我是靠谱客的博主 爱笑彩虹,最近开发中收集的这篇文章主要介绍自然网络语言模型(NNLM),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在一语料库中, 假设有长度为 T 的文本序列 S : = w 1 , w 2 , ⋯   , w T S:=w_{1},w_{2}, cdots, w_{T} S:=w1w2,,wT. 如果选子序列 S : = w t − 1 , w t − 2 , ⋯   , w t − n + 1 S:=w_{t-1},w_{t-2}, cdots, w_{t-n+1} S:=wt1wt2,,wtn+1, 想预估 词汇 w t w_t wt 出现的概率, 即计算条件概率
P ( w t ∣ w t − 1 , w t − 2 , ⋯   , w t − n + 1 ) . P(w_t| w_{t-1},w_{t-2}, cdots, w_{t-n+1}). P(wtwt1wt2,,wtn+1).
可以使用 NNLM 的方法, 其工作流程见下图在这里插入图片描述
我们先假定语料库生成的 词汇共有 v 个, 则 每个词汇的 1-hot 为 v-维行向量.
第一步, 将 词向量 w i w_i wi, i = t − 1 , ⋯   , t − n + 1 i=t-1,cdots,t-n+1 i=t1,,tn+1, 投放到 d-维向量空间, d由个人选定. 此处使用的是 v × d v times d v×d 矩阵C. 输出为 w i C w_i C wiC, 将 n-1 个输出按顺序拼接成 ( n − 1 ) d (n-1)d (n1)d-维 行向量 x.

第二步, 将 x 输入到 tanh层中, 这是一个隐含层, 神经元个数可以自己选定设为 h. 于是有一 h × ( n − 1 ) d h times (n-1)d h×(n1)d 的转移 矩阵, 设为 H. 这个层的输出为 h-维 向量 y’=tanh(xH+ b’).

第三步, 将 x , y ′ x,y' x,y 输入sigmoid 层, 输出为 一个行向量 y_t, 输出的维度是 v. 这里 两个转移矩阵 W ( n − 1 ) d × v W_{(n-1)d times v} W(n1)d×v, U h × v U_{h times v} Uh×v.
y t = s i g m o i d ( b + x W + y ′ U ) . y_t=sigmoid(b +xW + y'U). yt=sigmoid(b+xW+yU).

使用最大似然估计计算 参数的值.
假定 w t w_t wt 的索引是 i t i_t it, 令 y t ( i t ) y_t(i_t) yt(it) 表示 y t y_t yt 的第 i t i_t it个分量, 也即预测为 w t w_t wt 的概率. 希望 ∏ t = 1 T y t ( i t ) prod_{t=1}^T y_t(i_t) t=1Tyt(it) 取最大值,
使用 log 后, 取均值, 变成希望
L ( H , b ′ , W , b , C ) : = 1 T ∑ l o g   y t ( i t ) L(H,b',W,b,C):=frac{1}{T} sum log , y_t(i_t) L(H,b,W,b,C):=T1logyt(it)

取最值.

最后

以上就是爱笑彩虹为你收集整理的自然网络语言模型(NNLM)的全部内容,希望文章能够帮你解决自然网络语言模型(NNLM)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部