损失函数:

最小二乘法

就是说

Min12i=1n(xiyi)2Min \frac{1}{2}\sum_{i=1}^{n}{(x_i-y_i)^2}

最大似然

最大似然估计的意思是啥类,就是说

Maxi=1n(xiyi)Max\prod_{i=1}^{n}(x_i|y_i)

我们在这里假设 xi{x_i} 的取值为0或1,y_i表示的是概率

Maxi=1nyixi(1yi)1xiMax\prod_{i=1}^{n}y_i^{x_i}(1-y_i)^{1-x_i}

我们想办法把连乘改为连加,采用对数的方法

Maxi=1n(xilogyi + (1xi)log(1yi))Max\sum_{i=1}^{n}(x_i\log y_i\space+\space (1-x_i)\log (1-y_i) )

然后我们一把求最小,所以加一个负号就好了

Min i=1n(xilogyi + (1xi)log(1yi))Min\space-\sum_{i=1}^{n}(x_i\log y_i\space+\space (1-x_i)\log (1-y_i) )

信息量

信息量可以反应出什么呢,我的理解是一个事情从不确定到确定,他的一个难度有多大。就比如8支队伍参加比赛,那么每支队伍的夺冠的概率为1/8,这也可以描述为队伍A进总决赛的概率为1/4,总决赛获胜的概率为1/2

从这个里面我们概括一下,我们用f函数来表示信息量

f(18) = f(14) + f(12)f(\frac{1}{8}) \space = \space f(\frac{1}{4})\space+\space f(\frac{1}{2})

f(队伍A夺冠) = f(队伍A进总决赛) + f(队伍A总决赛获胜)f(\text{队伍A夺冠})\space = \space f(\text{队伍A进总决赛})\space + \space f(\text{队伍A总决赛获胜})

我们在继续考虑概率的思维,将其转换为:f(x1x2) = f(x1)+f(x2)\text{我们在继续考虑概率的思维,将其转换为:} f(x_1 x_2)\space =\space f(x_1)+f(x_2)

由公式八 我们想到对数函数的一个计算法则:

logx1x2 = logx1 + logx2logx_1x_2 \space = \space logx_1 \space +\space logx_2

所以我们定义信息量函数的方向也就有了:f(x):=k logbx\text{所以我们定义信息量函数的方向也就有了:} f(x):=k\space log_b{x}

我们先来考虑一下这个b的取值(我们默认是大于1的),其实b的一个取值我们知道他只会影响f(x)随 x 的一个变化速率,总体的倾向的话,他是不会影响。在考虑到使用计算机二进制,我把b 在这里取值为2。

我们再来考虑这个k的取值,首先来说,我们是在给信息量下一个定义,所以我们可以将k简单的描述为1或者-1,我们可以在这个体系里面逐渐完善。 在考虑我们的x 跟f(x)之间的关系,是正比还是反比。 回顾我们的公式(6),我们可以看到其实 x 越小, f(x)的值越大。

所以我们可以最终给出一个完整的信息量的定义:

f(x) = log2 xf(x)\space = \space -log_2\space x

熵是反应一个系统整体从不确定到确定的难度。我们再看一个例子:现在有四只队伍 AB对抗 CD对抗,然后的话,我们假设AB胜率均为1/2,C的胜率我们假设为1/100 ,D的胜率我们假设为99/100

那么,我们把AB对抗,CD对抗作为两个系统,然后的话,思考怎么计算两个系统的熵,我们知道了信息量是衡量一件事从不确定到确定,那么一个我们综合考虑一个系统内事的信息量,我们是不是就可以得到熵的表达式:

思考1:我们把熵当作把一个系统内事的信息量的简单相加

HAB:=log212log212=2H_{AB}:= -log_2\frac{1}{2} -log_2\frac{1}{2} =2

HCD:=log21100log2991006.65H_{CD}:=-log_2\frac{1}{100}-log_2\frac{99}{100} \approx 6.65

我们看到这种情况应该是不正确的,就是说,我们在判断 AB 跟CD 两组胜出情况的时候,应该是AB组更难判断,因为他们势均力敌,各有一半胜率。所以我们在考虑上他们的一个胜利的概率:

改良:考虑一个均值

HAB:=12log21212log212=1H_{AB}:= -\frac{1}{2}log_2\frac{1}{2} -\frac{1}{2}log_2\frac{1}{2} =1

HCD:=1100log2110099100log2991000.07H_{CD}:=-\frac{1}{100}log_2\frac{1}{100}-\frac{99}{100}log_2\frac{99}{100} \approx 0.07

这样看上去的话,更符合熵的一个定义。

经过上面例子的思考,我们给出一个熵的定义:

H(P):=E(Pf).......f是信息量H(P):=E(P_f) .......f是信息量

H(P):=i=1mPif(Pi)=i=1mPi(log2Pi)=i=1mPilog2PiH(P):=\sum_{i=1}^{m}P_if(P_i)=\sum_{i=1}^mP_i(-log_2P_i) = -\sum_{i=1}^mP_i{log_2P_i}

相对熵/KL散度 - 交叉熵

这个是衡量两个模型的差异度的。

我们直接上定义:这个是基于P的相对熵

DKL(PQ):=xϵXPx[ fQq(x)fPP(x) ]=xϵXPx[log2q(x)log2p(x)]=xϵXPx(fQq(x))  xϵXPx(fPp(x))D_{KL} (P||Q) :=\sum _{x\epsilon X}P_x[\space f_Qq(x)-f_PP(x)\space] \\= \sum_{x\epsilon X}P_x[-log_2q(x)-log_2p(x)] \\= \sum_{x \epsilon X}P_x(-f_Qq(x))\space-\space\sum_{x \epsilon X}P_x(-f_Pp(x))

所以我们知道Q相对于P的相对熵是 H(P,Q)-H§,这就是 交叉熵-P的熵
所以我们为了使两个模型更为相近,我们要尽量让 H(P,Q)-H§ 趋紧0,根据吉布斯不等式,我们知道H(P,Q)是大于H§的,所以我们让H(P,Q)尽量的小就可以了。

然后比如我们在做机器学习的时候,我们就可以把交叉熵作为我们的一个损失函数。

H(P,Q)=xϵXPx(fQq(x))=i=1nxi(log2yi)=xϵXn(xilog2yi+(1xi) log2(1yi))H(P,Q) = \sum_{x \epsilon X}P_x(-f_Qq(x))\\=\sum_{i=1}^{n}x_i(-log_2y_i)\\=-\sum_{x \epsilon X}^n(x_ilog_2y_i+(1-x_i)\space log_2({1-y_i}))

这就跟最大似然的结果一样了。