在实验中通常会自己设计损失函数、优化函数等,通常会用到对数、分数、梯度等,不明白函数的实际意义在设计的时候就一脸懵,因此本文就几种常见的函数进行实际意义的解释,方便后期自身学习和使用。
1 对数
1.1 对数的基本属性
- 在定义域范围内单调递增
- X 必须大于0
- X 值越小越敏感
- log图如图所示
1.2 对数的各个属性意义
- 对数的单调递增属性,X越大对数值越大。对数的单调递增属性保证了原始数据的差异性,比如原始数据a = 500,b = 200,a > b ,取对数之后ln a = 6.2146,ln b = 5.2983,ln a > ln b ,原数据大的在取对数后仍然大,保持了原始数据的差异性。
- 扩大了倍数但是差距没有变化。例如ln 50 - ln 20 = 0.917, 而ln 5000- ln 2000 = 0.917, 差距几乎一致。所以在实验中如果遇到数据较大的情况可以不用缩小相同倍数,直接取对数值也不影响,这也说明了第一个中保证了数据之间的差异性。
- 值越小越敏感。举个例子,a=50,b=20,a-b=30; ln a -ln b= 0.917,而ln1000 - ln 700 = 0.42, 反而ln 50 - ln 20 > ln 1000 -ln 700,所以值越小越敏感。在实际例子中当你消费买了10块的东西,多收了你2,3块你会在意,但是在几十百万的东西就不会在意一两千的差额了,就是这个意思。
- 取对数后会让数据更加平稳,保证数据差异的同时减小了数据的倍数,减小了模型的计算量,在深度学习模型中使用较多。
1.3 总结
实验中需要取对数的情况很多,一般什么情况下取呢?这要取决于数据的属性,如果数据都是大于0的,数值较大,用到后期计算量大,影响模型效率的情况,可以考虑采用取对数。
2 梯度
2.1 梯度的属性
(蛮佩服发明出梯度这个概念的人,是怎么想到的)
梯度这部分用的比较多,实际意义就是:
- 沿着梯度方向能找到函数的极值点
- 梯度方向找到极值的速度最快
在机器学习中通常用梯度来优化权重,因为权重都是f(x,seta)的公式,对每个seta求偏导后,再将梯度值反馈,优化seta,x是input不变的,从而可以得到seta向量值的方向,从这个方向可以得到loss函数的极小值,完成模型的训练。
3 entropy 熵
熵在实际意义中就是预测事物的不准确性,不可靠性。
熵越大,说明不确定性越强。
比如在预测中,假设分类器1预测分类,1,2,3,预测类1 的概率是0.56,2的概率是0.34,3的概率是0.1,分类器2预测分类的类1概率是0.98,2的概率是0.01,3的概率是0.01,那么分类器2的效果更好,因为2的不确定性小,0.9的概率比0.56的概率更值得信任,所以2的熵更小,值更稳定。
(其他意义慢慢更新中。。。