啥是损失函数


损失函数就是模型预测值和实际值相差多少的定量化表达,通过不断调整模型参数让损失值变小来优化模型参数
吴恩达大佬的损失函数写成了上面的两种形式,第一个是最小二乘法,第二个是(极大似然函数)
最小二乘法的设计思路

如果想评估模型好坏,最快的方法是将模型预测结果和真实结果的差值进行比较,当这个差值最小的时候,可以认为模型达到了近似最优的情况
也就是上面的公式
但是,绝对值求差值有一个问题,它在0处不可导,使得后续无法求梯度
因此可以使用平方的方式来表达差异,即可解决绝对值在0处不可导的问题,即下图

而参数更新是要对损失函数求导来求梯度值的,上式求导会变成2倍,为了在求导时抵消平方产生的 2,让梯度表达更简洁,在上面的式子里人为✖️
因此看看极大似然法
极大似然估计法的设计思路
一看名字就知道传统统计学的玩法,简单说极大似然估计就是从已经发生的数据去反推模型,算出每一个可能的模型的似然值,然后似然值最大的那个模型意味着现实世界里最可能发生,因此选择它
似然值:在某个模型假设下,你现在看到的数据有多“合理”

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


然后这是一个连乘的式子,求导费劲,因此用log把它变成连加,由于求导后一般习惯求最小值而不是最大值,因此加个负号,变成上面样子的损失函数。
通过不断更新模型参数,使对数似然最大(等价于最小化负对数似然),最终得到最优的模型参数。
交叉熵(!!!)
高中学过,熵就是代表一个系统的混乱程度,它既是热力学的概念,也是信息论的概念,搞模型肯定是信息论的概念
就是把两个模型换算成熵这个数值,然后比较数值差异来判断俩模型的差异有多大
但为啥要用熵这个数值绕这么一圈?
信息量
要搞信息论的熵得先知道信息论对于信息量的定义

比如如下图所示,阿根廷夺冠的概率是八分之一,但有个先知🥚告诉我阿根廷未来夺冠了,那此时,阿根廷夺冠的概率从八分之一变成了百分之百,带来了百分之百的确定性,因此信息量超高
但如果说阿根廷进了决赛,那也带来了信息量,但没上面的信息量高
但是如何定量的计算信息量?




熵的定义

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

交叉熵运用到神经网络中

交叉熵在神经网络中的应用,比如一个模型判断是不是猫的问题,本质上是一个二分类问题。模型会输出一个概率 p,表示“是猫”的概率,同时 1−p表示“不是猫”的概率。
然后用真实标签(猫=1,不是猫=0)和模型预测概率之间计算交叉熵损失:
这个损失函数用来衡量预测分布和真实分布的差异。训练的目标是通过调整模型参数,使整个数据集上的交叉熵损失最小。
和极大似然估计的区别
式子虽然长得一样
但是设计思路不一样,但都可以定义一个模型的损失函数