03 2011 档案
摘要:n元ngram模型本质上就是trie树的结构 ,逐层状态转移。在sun拼音中是采用的是逐层按照顺序用vector表示,查找的时候逐层二分查找。sun拼音的建立ngram模型的方法也是以按照字典序排好序的<ngram元组,次数>序列作为输入建立起来的。 利用顺序存储+二分查找应该是最节省空间的了。但是效率要受一定影响。其余的trie树实现包括可以利用map(hash_map更耗费空间一点),sun拼音也有一个基于map的trie树实现,sirlm是利用自己的一个LHash实现的类似。另外利用double array trie对于这种预先已经排好序不需要动态添加删除的情况也比较适合但是
阅读全文
摘要:由于语料不可能覆盖掉所有的情况,比如语料中有“小明读了一本书”, 那么“小李读了一本书”没有在语料中出现按照MLE最大似然估计其概率就是0,这显然是不合常理的。所以我们需要对模型进行光滑处理,就是要分一部分概率给语料中没有出现的部分。 问题是如何分配,应该分配多少呢。(下面的课件来自nhu的NLP课程) 这种情况看上去我们分给未知部分的概率太多了24/29 更多的观察更好的数据更小的光滑,分给未知部分23/326 一个极端的情况,这样add one广顺 其实会认为未知事物概率更大,看到我们训练中的数据的可能性很小。 可以看到对于大的词典,我们分配给未知事物的概率太大了。为了减少未知事物分配的概
阅读全文
摘要:1. 伯努利分布 现在问题是假如我们考虑抛硬币,如果3次都是head,那么根据伯努利,MLE推断 参数 那么我们会认为每次投掷都会是head,这显然与常识不符, 这里我们如果有一个先验知识就能纠正这个问题(考虑贝叶斯分类器中的0概率事件处理其实也是加一个先验知识而已来进行平滑),那么怎么加入先验知识呢? 这里我们利用贝叶斯法则,我们从原来的 来估算参数,改为后验 也即等价 估算参数。 这里我们希望 有类似的形式。从而引出了beta 分布,注意与(先验)的形式类似,只不过(a,b)变成(m+a, l+b),即我们的先验知识由于实际看到的情况做出来相应调整。 2. Beta分布 注意这里的Bin是
阅读全文
摘要:1. 线性拟合问题的迭代解法 batch gradient descent 梯度下降法,每次沿着梯度方向对于参数移动小的距离。 有两种具体实现,一种是每次移动的时候考虑所有的实验点,这种在训练集合较大的时候开销比较大。(如下,每次扫描所有m个试验点) 另外一种是stochastic gradient deseent 扫描每个点的时候就决定了参数的按照该点的梯度进行参数调整。即 每次参数调整只考虑当前一个试验点。这个收敛速度会更快,但是不保证能收敛到最佳,但是如果逐步调小的值可以收敛到最佳。 我个人觉得gradient descent的方法都是依赖起始位置吧,最终都是一个局部最优结果。 2. 矩
阅读全文