F1 score | why softmax | loglikehood & cross-entropy

F1 score | why softmax | loglikehood & cross-entropy

最近找工作面试涉及到了很多研一时候学习的基础知识,很多都忘记了,重新整理一下相关的问题,更侧重和NLP相关的一些知识。

F1 score

  • accuracy
  • precision
  • recall
  • f1 score

一位同学面试的时候设计被问到,机器翻译中的BLEU的计算,是以上中的哪一个?
首先,我们了解一下BLEU的计算方法(有一些改进,这里只说大概的思路):
BLEU 会统计译文中n-gram在reference中出现的次数,作为分子;
译文中N-gram的个数作为分母;
其实我们来了解以上四个东西的含义:

1 0
1(ground true) TP TN
0(ground false) FP FN

so, we define this:
a c c u r a c y = T P + F N T P + T N + F P + F N 表示模型对整个样本分类正确的能力
p r e c i s i o n = T P T P + F P 表示模型认为正确的当中,有多少是真正正确的
r e c a l l = T P T P + F P 表示样本中正确的有多少被模型认为是正确的

那么,根据以上的定义,首先BLEU的分母,是模型认为正确的项(解码每次出来V个词,选择概率最大的,认为是正确的,但其实未必选择的是正确的!)
分子项表示的是reference和模型都认为是正确的项;
故,BLEU是precision;

why softmax

这个问题,感觉困扰了我很久。
其实模型输出的就是一个分布,最开始以为softmax就是做一个归一化,后来想想,其作用远不止于此(感慨数学的美妙啊)。
根据名字来看,soft max,就是说可以不是最大的哪一个…
比如翻译里面,其实不一定非得选择最大的哪一个,其次大的,说明语义可能相似。
那么为啥softmax可以做到这一点,其实大家自己手动推一下就会发现,如果softmax之前是0-1之间的小数,那么softmax之后,分布概率差会减少…
另外,还有一些优点:
1。 softmax做分类任务,其损失函数可以直接定义为交叉熵;
2。计算梯度比较方便,因为softmax导数是概率-1;

loglikehood & cross-entropy

关于loglikehood和cross-entropy到底是什么关系,感觉大家一直对此是模模糊糊的。先放出目前自己的结论:
在分类问题上,两者形式上是等价的,负的似然跟交叉熵一致,但是考虑的角度不同。

根据定义来看,cross-entropy公式定义的是真实概率分布( p ( x ) )和模型预测的概率分布( q ( x ) )之间的关系, H ( p , q ) = p l o g q
直观上来看,其实表示了预测结果和真实结果的差异度;如果是0,说明百分百是正确的,所以交叉熵是越小越好。
而最大似然的出发点是从样本,如果模型的参数能拟合样本,那么predict label应该和true label的一致,也就是说predict 隐含着模型参数拟合样本的能力;
loglikehood希望能获取所有样本特征,所以是每个样本正确分类的乘积形式,取对数之后就是log累加;
对每个样本的正确分类概率,假设是独立同分布的话,那么其实就是伯努利分布;
相关推导也不难,就不再写了..

从结构化预测,或者是从机器翻译(生成任务)的角度来剖析:
我们每次产生token的时候,其实做了一个假设,就是真实分布是一个词表大小的one-hot的分布,模型预测的其实是一个softmax的分布,然后交叉熵计算的其实是这两个分布的差距。
这里其实就有点…嗯就是损失定义有些无法解释。

猜你喜欢

转载自blog.csdn.net/u011415481/article/details/79673374
今日推荐