HMM-Viterbi Algorithm

简单来说,通过给定的观测状态序列,推算另一状态[隐藏状态]最可能出现的序列情况,这些状态的可能变化又称Viterbi Path Viterbi算法基于如下3个假设: 1.无论是观测到的事件还是隐藏的事件都必须在一个序列中[一般对应时间] 2.这两个序列需要重新校正排列,观测状态需要和一个隐藏状态进行对应 3.每一个状态只依赖于它之前的那一个状态,而与其它的无关 注:以上假设同样满足隐马模型。 说了这么多,还是看个简单的例子吧。 简单来说,通过给定的观测状态序列,推算出可能性最大的隐藏序列,这些序列的可能变化又称Viterbi Path 说到viterbi算法,不得不提隐马模型(HMM),viterbi是HMM里面一个比较重要的算法。 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。 在正常的马尔可夫模型中,状态对于观察者来说是直接可见的。这样状态的转换概率便是全部的参数。而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的某些变量则是可见的。每一个状态在可能输出的符号上都有一概率分布。因此输出符号的序列能够透露出状态序列的一些信息。 HMM[隐马尔可夫模型]里有三个经典的问题: 已知模型参数,计算某一特定输出序列的概率.通常使用forward算法解决. 已知模型参数,寻找最可能的能产生某一特定输出序列的隐含状态的序列.通常使用Viterbi算法解决. 已知输出序列,寻找最可能的状态转移以及输出概率.通常使用Baum-Welch算法以及Reversed Viterbi算法解决. 另外,最近的一些方法使用Junction tree算法来解决这三个问题。 Viterbi算法基于如下3个假设: 1.无论是观测到的事件还是隐藏的事件都必须在一个序列中[一般对应时间] 2.这两个序列需要重新校正排列,观测状态需要和一个隐藏状态进行对应 3.每一个状态只依赖于它之前的那一个状态,而与其它的无关 注:以上假设同样满足隐马模型。 说了这么多,还是看个简单的例子吧。

MSIL指令速查

蔡學鏞的大內高手專欄里的这篇:.NET中間語言(IL)是非常好的入门资料,推荐啊。 MSIL指令速查(from:http://www.cnblogs.com/longgel/archive/2010/05/19/1739231.html) Add 将两个值相加并将结果推送到计算堆栈上。 Add_Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上。 Add_Ovf_Un 将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算堆栈上。 And 计算两个值的按位“与”并将结果推送到计算堆栈上。 Arglist 返回指向当前方法的参数列表的非托管指针。 Beq 如果两个值相等,则将控制转移到目标指令。 Beq_S 如果两个值相等,则将控制转移到目标指令(短格式)。 Bge 如果第一个值大于或等于第二个值,则将控制转移到目标指令。 Bge_S 如果第一个值大于或等于第二个值,则将控制转移到目标指令(短格式)。 Bge_Un 当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令。 Bge_Un_S 当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。 Bgt 如果第一个值大于第二个值,则将控制转移到目标指令。 Bgt_S 如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。 Bgt_Un 当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令。 Bgt_Un_S 当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。 Ble 如果第一个值小于或等于第二个值,则将控制转移到目标指令。 Ble_S 如果第一个值小于或等于第二个值,则将控制转移到目标指令(短格式)。 Ble_Un 当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于或等于第二个值,则将控制转移到目标指令。 Ble_Un_S 当比较无符号整数值或不可排序的浮点值时,如果第一个值小于或等于第二个值,则将控制权转移到目标指令(短格式)。 […]

ElasticSeach.Client Updated!

ElasticSeach.Client客户端更新了,支持索引模板了,cool~,下载地址:http://github.com/medcl/ElasticSearch.Net ElasticSearch IndexTemplate帮助文档。 创建一个索引模板:

基于索引模板的创建索引(以后不需要做重复的索引Mapping操作了,yeah):

获取索引模板的信息:

更多详细的操作,参照我写的测试用例,https://github.com/medcl/ElasticSearch.Net/tree/master/ElasticSearchTests。