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:
表示模型对整个样本分类正确的能力
表示模型认为正确的当中,有多少是真正正确的
表示样本中正确的有多少被模型认为是正确的
那么,根据以上的定义,首先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公式定义的是真实概率分布(
)和模型预测的概率分布(
)之间的关系,
直观上来看,其实表示了预测结果和真实结果的差异度;如果是0,说明百分百是正确的,所以交叉熵是越小越好。
而最大似然的出发点是从样本,如果模型的参数能拟合样本,那么predict label应该和true label的一致,也就是说predict 隐含着模型参数拟合样本的能力;
loglikehood希望能获取所有样本特征,所以是每个样本正确分类的乘积形式,取对数之后就是log累加;
对每个样本的正确分类概率,假设是独立同分布的话,那么其实就是伯努利分布;
相关推导也不难,就不再写了..
从结构化预测,或者是从机器翻译(生成任务)的角度来剖析:
我们每次产生token的时候,其实做了一个假设,就是真实分布是一个词表大小的one-hot的分布,模型预测的其实是一个softmax的分布,然后交叉熵计算的其实是这两个分布的差距。
这里其实就有点…嗯就是损失定义有些无法解释。