Skip to content

啥是损失函数

image-20260415161240029

image-20260415161254305

损失函数就是模型预测值和实际值相差多少的定量化表达,通过不断调整模型参数让损失值变小来优化模型参数

吴恩达大佬的损失函数写成了上面的两种形式,第一个是最小二乘法,第二个是(极大似然函数)

最小二乘法的设计思路

image-20260415162327807

如果想评估模型好坏,最快的方法是将模型预测结果和真实结果的差值进行比较,当这个差值最小的时候,可以认为模型达到了近似最优的情况

也就是上面的公式

但是,绝对值求差值有一个问题,它在0处不可导,使得后续无法求梯度

因此可以使用平方的方式来表达差异,即可解决绝对值在0处不可导的问题,即下图

image-20260415162713341

而参数更新是要对损失函数求导来求梯度值的,上式求导会变成2倍,为了在求导时抵消平方产生的 2,让梯度表达更简洁,在上面的式子里人为✖️1/2,因此就变成了最小二乘法的损失函数

因此看看极大似然法

极大似然估计法的设计思路

一看名字就知道传统统计学的玩法,简单说极大似然估计就是从已经发生的数据去反推模型,算出每一个可能的模型的似然值,然后似然值最大的那个模型意味着现实世界里最可能发生,因此选择它

似然值:在某个模型假设下,你现在看到的数据有多“合理”

image-20260415164521095

比如投硬币,三个反的七个正的

假设了上面三种不同的模型,分别计算似然值,模型二的似然值最大,因此现实世界中最可能投硬币正面向上的概率为0.7,反面向上的概率为0.3

image-20260415165545307

image-20260415171339053

然后这是一个连乘的式子,求导费劲,因此用log把它变成连加,由于求导后一般习惯求最小值而不是最大值,因此加个负号,变成上面样子的损失函数。

通过不断更新模型参数,使对数似然最大(等价于最小化负对数似然),最终得到最优的模型参数。

交叉熵(!!!)

高中学过,熵就是代表一个系统的混乱程度,它既是热力学的概念,也是信息论的概念,搞模型肯定是信息论的概念

就是把两个模型换算成熵这个数值,然后比较数值差异来判断俩模型的差异有多大

但为啥要用熵这个数值绕这么一圈?

信息量

要搞信息论的熵得先知道信息论对于信息量的定义

image-20260416094528859

比如如下图所示,阿根廷夺冠的概率是八分之一,但有个先知🥚告诉我阿根廷未来夺冠了,那此时,阿根廷夺冠的概率从八分之一变成了百分之百,带来了百分之百的确定性,因此信息量超高

但如果说阿根廷进了决赛,那也带来了信息量,但没上面的信息量高

但是如何定量的计算信息量?

image-20260416094929566

:=:定义符,比如牛顿第二定律F:=ma,说白了就是人为规定的经验定律的,不是严格的定义。(这我印象超深刻,初中问这个,被物理老师夸了,吹刘海)

image-20260416095635259

image-20260416095736152

image-20260416100103777

熵的定义

image-20260416101325488

因此熵就是:对于系统P,随机结果带来的的平均信息量,即上面的式子

相对熵(KL散度 )

image-20260416102719428

交叉熵运用到神经网络中

image-20260416103639612

交叉熵在神经网络中的应用,比如一个模型判断是不是猫的问题,本质上是一个二分类问题。模型会输出一个概率 p,表示“是猫”的概率,同时 1−p表示“不是猫”的概率。

然后用真实标签(猫=1,不是猫=0)和模型预测概率之间计算交叉熵损失:[ylogp+(1y)log(1p)]

这个损失函数用来衡量预测分布和真实分布的差异。训练的目标是通过调整模型参数,使整个数据集上的交叉熵损失最小。

和极大似然估计的区别

式子虽然长得一样

但是设计思路不一样,但都可以定义一个模型的损失函数

Released under the MIT License.