我一直在阅读一些有关CRF的论文,并对功能功能有些困惑。一元(节点)和二元(边缘)特征f通常采用以下形式
f(yc,xc)= 1 {yc = y ̃c} fg(xc)。
其中{。}是指示符函数,如果包含的条件为true,则计算为1,否则为0。 fg是数据xc的函数,该函数从数据中提取有用的属性(特征)。
现在看来,要创建CRF功能,必须知道真实的标签(yc)。对于训练而言,这是正确的,但在测试阶段,真实的类标签是未知的(因为我们正在尝试确定它们最可能的值)。
我想念什么吗?如何正确实施?
最佳答案
CRF的想法是,它为标签的每个设置分配一个分数。因此,从概念上讲,您要做的是计算所有可能的标签分配的分数,然后哪个标签获得的最高分数就是CRF的预测/输出。仅当CRF为不同的标签分配提供不同的分数时,这才有意义。以这种方式考虑时,很明显标签必须包含在功能中才能起作用。
因此,可以说您的CRF的对数概率函数为F(x,y)。因此,它为数据样本x和标签y的每种组合分配一个数字。因此,当您获得新的数据样本时,测试期间的预测标签仅为argmax_y F(new_x,y)。也就是说,您找到使F(new_x,y)最大的y值,这就是预测的标签。