在机器学习中应用数学方法

我们从初中就开始学习指数和对数,但即使是程序员平时也很少用到这些方法。本篇就来看看如何使用它们解决具体问题。

指数

在多分类问题中,一般在最后一步使用 Softmax,将数值转换成属于各个类别的概率,比如根据输入物品图片,通过一系列处理,判别它是衣服、鞋子、帽子各类别的概率。具体公式如下:

[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLTE4NTdlMDI0ZDEyOTU5MDAucG5n?x-oss-

process=image/format,png)

其中 i 为某一类别,j 用于遍历所有可能的类别,Si 计算的是某一类别的概率,即某一类别在所有类别中的占比。其中用到了自然指数 e。e 的图型如下:

[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWZkNzExMGU4ZjlmMjkwMDcucG5n?x-oss-

process=image/format,png)

首先,e 指数是单调上升的,也就是说 x 越大 y 越大,变换之后的大小关系不会改变;且当 x 为负数时,y 也是正数,这点非常重要。仍以物品分类为例,假设深度网络输出的最后一层是 [1,-1,2],其中包含负数,而概率在 [0,1] 之间,又不可能是负数。通过 Softmax 公式计算出每一分类的概率为:[0.25949646

0.03511903 0.70538451],完美地解决了这一问题。

对数

条件概率常被用于序列预测问题,比如使用模型写作时,使用前 N 个字预测第 N+1 字,实际也是概率问题,比如给出前两个字“白日”预测第三个字,第三个字备选项是包含 10000 个字的字库,计算其中每一字的概率。假设其中“依”字概率最大为 0.3,再使用“日依”预测下一个字,其中概率最大的是“山”概率为 0.15,以此类推,预测最后一个字为“尽”的概率为 0.2。

能预测出“白日依山尽”的概率,即给定条件“白日”,“依山尽”三个字同时出现的概率为 0.3 0.15

0.2=0.009。如果预测一个很长的序列,小数连乘的结果很可能趋近于 0,这里常使用对数方法。自然对数做图如下:

[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWU0YTYyZWY3MDk3MjJjNTEucG5n?x-oss-

process=image/format,png)

由于负数没有对数,图像中只有 x >0 的部分。自然对数也是单调上升的;使用 log 后连乘变为连加,上例变成:

log(0.3 0.15 0.2)=log(0.3)+log(0.15)+log(0.2)=-4.71

如果使用 log 计算概率,概率取值在 [0,1] 之间,那么只需要关注图中红色线条部分。对概率 x 取对数,y 最大值为 0,最小值为负无穷,在前面加一个负号,将值转换到 0 到正无穷,并将其作为误差函数 Loss=-log(p),当 p 值较小时(可能性小)Loss 为一个较大的误差;当 p 值接近 1 时误差 Loss 趋近于 0,这就是用负对数似然计算误差。

cosine 距离

cosine 距离常用于计算两个向量的距离,如用于图片搜索,对比文字描述的相似度,计算距离等等。设想二维情况下,两个向量的夹角,如下图所示:

[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLTFlMzQ2ZmU0NWU1NzQ4NmEucG5n?x-oss-

process=image/format,png)

当夹角θ接近 0 时,cos(θ)=1,向量距离很近,当夹角接近 90 度时,两向量正交二者无关 cos(θ)=0;当夹角为 180 度时,方向相反 cos(θ)=-1。

cosine 距离公式如下:

[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWNmZDEzMzQwY2I5NzMwYmQucG5n?x-oss-

process=image/format,png)

其中 u 和 v 都是 n 维向量,分子为点积操作,分母可看作对各个维度的归一化。从直觉上看,它们每一维度上的值越接近,整体距离越近。因此也说:向量之间夹角的余弦也是单位向量均之间的点积。程序中很多向量相似度都通过点积计算,速度也非常快。

在选择距离计算方法时,cosine 距离可看作是计算向量间的相似程度,而欧式距离计算的是两向量间的差异程度。