1. 本章目标
- 介绍一下深度学习常用的损失函数:均方根误差(MSE)、熵(CrossEntropy)、散度(KLdivergence)等。
- 基于信息论,推导损失函数的由来。
2. 什么是均方根误差(MSE)?(两点之间,线段最短)
- 均方根误差就是欧式距离,计算神经网络输出与真实的label之间的误差;原理类似于“两点之间线段最短”,两点之间为什么线段最短,因为两点之间最短距离就是欧式距离。
d ( z ) = ( y o u t p u t − y l a b e l ) 2 d(z) = (y_{output}-y_{label})^2\ d(z)=(youtput−ylabel)2
3. 什么是“绝对值距离”?(种瓜得瓜,种豆得豆)
- 常见的另一种损失函数(loss)如下:
d ( z ) = ∣ l o g ( y o u t p u t / y l a b e l ) ∣ d(z) = |log(y_{output}/y_{label})|\ d(z)=∣log(youtput/ylabel)∣ - 可能的疑问?1)为什么要有绝对值?2)log代表什么意思?
- 针对第二点,解答如下:
d ( z ) = ∣ l o g ( y o u t p u t / y l a b e l ) ∣ = ∣ l o g ( y o u t p u t ) − l o g ( y l a b e l ) ∣ d(z) = |log(y_{output}/y_{label})|= |log(y_{output})-log(y_{label})|\ d(z)=∣log(youtput/ylabel)∣=∣log(youtput)−log(ylabel)∣
d ( z ) = s q r t [ l o g ( y o u t p u t ) − l o g ( y l a b e l ) ] 2 d(z) =sqrt[log(y_{output})-log(y_{label})]^2\ d(z)=sqrt[log(youtput)−log(ylabel)]2
(1)从上述推导可以看出,因为sqrt的存在,所以需要带绝对值符号。
(2)同理可以看出,对比第二章的MSE,这里只是多了开方,相比于欧式距离,它只是多了开方操作,因此可以称为“绝对值距离”。
(3)原理同样是两点之间,线段最短;你扔一块骨头,狗都知道两点之间线段最短,因此狗都知道的就无需证明了。
(4)“绝对值距离”的优势:解决了MSE在收敛后期,梯度消失的问题。
4. 什么是信息量?(一切过往,皆为序章)
- 信息量:表明信息的不确定程度,在概率学中,一件事情的发生概率越低,包含的信息越多。(在公式中,p(x)越低,I(x)越大)
- 类比:字越少事越大。
- 其实信息量没啥用,有用的是由信息量推导出来的熵。(热力学第二定律叼炸天)
5. 什么是熵?(心有猛虎,细嗅蔷薇)
-
说人话就是,熵=所有事件的数学期望。(这也不是人话呀?)信息原本是没法度量的,为了度量,你必须给他们编码,比如0,1编码;0和1这两个码只有1bit信息,但是只能分给两人,倘若来了第三个人,怎么区分第三个人?可以增加编码长度,比如10=第三个人,11=第四个人,101=第五个人…;码元越长,占用的bit就多,为了减少bit数,你期望把出现概率最大的人标记为0,这样每次他来了只占用一个bit。
-
熵=博弈论,熵=信息量和概率的乘积;为了降低熵,必须降低信息量,信息量降低,概率就必须增大(参考信息量公式),概率大了,乘积项第二项变大,熵反而增大了。(所以说,熵等于概率与信息量的博弈;熊掌与鱼安能兼得?)
-
数据证明如下:
5. 什么是相对熵?(相对熵公式就等于散度)
6. 什么是交叉熵?(一种特殊的KLDivgence)
- H(x)是标签(label)的熵,标签本身是已知的(训练数据本身已知,都是确定值),所以,它就是一个常数,增加一个常数项,会改变方程嘛?反正最后求梯度,常数项的梯度等于0。
- 吊炸天,原来AI 也有数学之美,准确的说,热力学之美。