nlp基础-机器学习的博客及其提炼
语言模型的评价--困惑度
$PPL(W)=P(w_1w_2...w_n)^{-\frac{1}{n}}=\sqrt[n]{\frac{1}{P(w_1w_2...w_n)}} $
一个正确的句子出现概率越大,模型越不困惑,模型越好
n-gram
例如2-gram,基于马尔可夫性
\(P(w_1w_2...w_n)=P(w_1)* P(w_2|w_1)* ... P(w_{n}|w_{n-1})\)
GPT 为什么 $PPL=e^{loss} $?
\(label_i\)为one-hot
\(softmax(h)\)是各个词的概率
\(softmax(hi)[wi]=P(w_i|w_1w_2...w_{i-1})\)
各种生成任务评价指标
CIDEr (image caption)
基于TF-IDF去给不同的n-gram赋予不同的权重,将句子表示为向量
计算pred与refs向量表示的余弦相似度
\(\text{CIDEr}_n (c_i, s_i) = \frac{1}{m} \sum_j \frac{g^n(c_i) \cdot g^n(s_i)}{||g^n(c_i)|| \cdot ||g^n(s_i)||}\)
CIDEr-D (image caption)
加上了长度惩罚
\(\text{CIDEr-D}_n (c_i, s_i) = \frac{10}{m} \sum_j e^{\frac{-|c_j - s_j|^2}{2\sigma^2}} \frac{\min(g^n(c_i) \cdot g^n(s_i), g^n(s_i)) \cdot g^n(s_i)}{||g^n(c_i)|| \cdot ||g^n(s_i)||} \)
SPICE (image caption)
算caption中 objects, attributes 和 relationships 元组的F1
缺点
由于在评估的时候主要考察名词的相似度,因此不适合用于机器翻译等任务。
Rouge-N (Machine translation)
Rouge系列的指标更侧重召回率(refs里有多少被匹配上了)
\(\text{Rouge-N} = \frac{\sum_{s \in \text{Refs}} \sum_{\text{gram} \in s} \text{Count}_{\text{match}}(gram_n)}{\sum_{s \in \text{Refs}} \sum_{\text{gram} \in s} \text{Count}(gram_n)}\)
Rouge-L (Machine translation)
核心思想:公共最长子序列,\(m\)是ref的长度,
\(R_{lcs} = \frac{LCS(ref,pred)}{m}\)
\(P_{lcs} = \frac{LCS(ref,pred)}{n}\)
\(F_{lcs} = \frac{(1 + \beta^2) R_{lcs} P_{lcs}}{R_{lcs} + \beta^2 P_{lcs}}\)
通过\(\beta\)决定数值更倾向于ref还是pred
缺点
ROUGE-L是基于字的对应而非基于语义的对应,不过可以通过增加参考摘要的数量来缓解这一问题
Bleu (Machine translation)
指标更侧重准确率
分子:给定的candidate中有多少个n-gram词语出现在reference中
分母:所有的candidate中n-gram的个数
\(\text{bleu}_n = \frac{\sum_{c \in \text{candidates}} \sum_{n-\text{gram} \in c} \text{Count}_{\text{clip}}(n-\text{gram})}{\sum_{c' \in \text{candidates}} \sum_{n-\text{gram'} \in c'} \text{Count}(n-\text{gram'})}\)
\(Count_{\text{clip}}(n-gram)\)表示这个n-gram在refs中出现的个数
数据标准化,归一化
为什么要对特征进行归一化?
一句话描述:1)归一化后加快了梯度下降求最优解的速度
2)归一化有可能提高精度
1)归一化后加快了梯度下降求最优解的速度
当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;
2)归一化有可能提高精度
一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。
哪些模型需要归一化
包含w x + b的模型,一般需要归一化:
- 线性回归
- 逻辑回归
- svm
- 神经网络
不需要做归一化的:
- 决策树等树模型。其节点在分裂的时候往往看的是信息增益(比)
逻辑回归与标准化
逻辑回归必须要进行标准化吗?
真正的答案是,这取决于我们的逻辑回归有没有用正则。
因为不用正则时,我们的损失函数只是仅仅在度量预测与真实的差距,加上正则后,我们的损失函数除了要度量上面的差距外,还要度量参数值是否足够小。
假如不同的特征的数值范围不一样,有的是0到0.1,有的是100到10000,那么,每个特征对应的参数大小级别也会不一样,在L1正则时,我们是简单将参数的绝对值相加,因为它们的大小级别不一样,就会导致L1最后只会对那些级别比较大的参数有作用,那些小的参数都被忽略了。
如果不用正则,那么标准化对逻辑回归有什么好处吗?
有好处,进行标准化后,我们得出的参数值的大小可以反应出不同特征对样本label的贡献度,方便我们进行特征筛选。如果不做标准化,是不能这样来筛选特征的。
做标准化有什么注意事项吗?
最大的注意事项就是先拆分出test集,不要在整个数据集上做标准化,因为那样会将test集的信息引入到训练集中,这是一个非常容易犯的错误!