在了解RNN做NLP时候的原理,发现这个模型是由HMM启发而来。以下罗列一下需要用到的数学知识和计算机技能。发现这个算法,不!简!单!
![](https://img.haomeiwen.com/i9737934/e0e1629259b27039.png)
这个事情的链路大概是这个样子的:
NLP <- RNN <- algo(HMM) <- statistic(parameter inference) <- algo(dynamic programming) <- statistics(EM, marginalization) <- CS(programming)
![](https://img.haomeiwen.com/i9737934/a917f47369a6bb26.png)
要搞懂HMM,又要理解透EM算法 和 概率边缘化(以及一些前序概念,链接中有)。到此为止,概率(数学工具)起到了对问题建立数学模型的作用。其实是估计了三组参数 - 状态转换概率矩阵,产生矩阵 - 隐参数生成观测实例的概率 和Pi 概率向量 - 各个状态发正在第一个位置的概率。
这三组参数已知的越少,估计的难度越大,计算量越大。我突然联想到大数定理 - 抽样越多,越逼近事实真相。在这个场景中,颇有点哲学上指导意义 - 知道的参数越少,估计起来需要的样本越多;虽然难猜,多抽样,也能猜个八九不离十,大概也是一个道理。
接下来是怎么算。牵涉到一个找到最优路径的动态规划(算法复习)问题,这才仅仅是确定了计算思路。具体的算法,又要通过概率边缘化技巧来化简。再接下来才是具体计算步骤,是个算法实现问题。
真的是环环相扣,步步惊心。一晚上能画出这个地图,着实不易啊(水并没有喝多)。
![](https://img.haomeiwen.com/i9737934/d54cb891d0f7752b.png)
已经习得的小伙伴,请随意评论。
那最后说一下,搞这个算法,到底有啥用处或者乐趣?这篇文章也给了一种答案:计算机如何理解我们的语言?NLP is fun!
网友评论