损失函数、大数定律 and 中心极限定理
-
损失函数
-
期望损失
为了度量平均意义下模型预测性能的好坏,可以使用损失函数。
对于一个模型被构建完成起,它的性能其实已经注定,如果用损失函数衡量,那么从它诞生之时,就已经有了能达到的最优的损失函数值,这个天生的最优(最小)的损失函数值叫做期望损失,可以此表示:R e x p ( h ) = E p [ L ( y , h ( x ) ) ] = ∫ x , y L ( y , h ( x ) ) p ( x , y ) d x d y R_{exp}(h)=E_p[L(y,h(x))]=\int_{x,y}L(y,h(x))p(x,y)dxdy Rexp(h)=Ep[L(y,h(x))]=∫x,yL(y,h(x))p(x,y)dxdy,其中 h ( x ) h(x) h(x) 为决策函数。
而我们不知道最优的 R e x p ( h ) R_{exp}(h) Rexp(h) 是多少,所以必须通过数据的训练。训练的目标是选择出能使 R e x p ( h ) R_{exp}(h) Rexp(h) 最小的模型,但是对于真实世界, p ( x , y ) p(x,y) p(x,y) 是未知的,所以 R e x p ( h ) R_{exp}(h) Rexp(h) 也是未知的。
那该怎样求得呢?不急,先介绍一下大数定律与中心极限定理。
-
大数定律
简单来说,即:某试验 X ,其对应的某随机事件为 A ,在条件不变的情况下重复 X 试验 N 次,当 N → ∞ N→\infty N→∞ 时,随机事件 A 发生的频率近似于它发生的真实概率 P。
-
中心极限定理
中心极限定理指的是给定一个任意分布的总体,每次从这些总体中随机抽取 m 个抽样,一共抽 n 次。 然后把这 n 组抽样分别求出平均值,这些平均值的分布接近正态分布。
举例来讲:
为求北京市全体小学生的平均身高,设计随机抽样,从全体小学生中抽取 1000 个学生作为一个样本集,根据这 1000 个小学生身高可以求得一个平均值。
此时,我们进行 5 次随机抽样,共得到 5 个样本集,每个样本集都包含 1000 个学生,这样可以对每个样本集都计算一个均值,共可以得到 5 个均值。
若我们总共进行了 n 次抽样,则可得到 n 个均值,当 n→∞ 时,这 n 个均值服从正态分布。这个例子清楚解释了什么是中心极限定理。
-
经验损失
接着第一小节说,由于p(x,y)未知,所以变换思路,对数据 Xi ∈ X,标签 Y,可得:
R e m p ( h ) = 1 n ∑ i = 1 n L ( y i , h ( x i ) ) R_{emp}(h)=\frac{1}{n}\sum_{i=1}^{n}L(y_i,h(x_i)) Remp(h)=n1∑i=1nL(yi,h(xi))
R e m p ( h ) R_{emp}(h) Remp(h) 称为经验损失。
而根据大数定律,当 n → ∞ n→\infty n→∞时, R e m p ( h ) → R e x p ( h ) R_{emp}(h)→R_{exp}(h) Remp(h)→Rexp(h)
所以我们可以使用 R e m p ( h ) R_{emp}(h) Remp(h) 代替 R e x p ( h ) R_{exp}(h) Rexp(h)
∙ \bullet ∙ 当经验损失使用对数损失时,经验损失最小化等价于极大似然估计。
-
结构损失
在现实中,训练数据的数目有限,有时还很少,所以用经验损失估计期望损失常常并不理想,要对经验损失进行一定的修正,由此产生结构损失。
结构损失是在经验损失函数的基础上,添加正则项。经验损失函数可表示为:
R s r m h = 1 n ∑ i = 1 n L ( y i , h ( x i ) ) + λ J ( h ) R_{srm}{h}=\frac{1}{n}\sum_{i=1}^{n}L(y_i,h(x_i)) + λJ(h) Rsrmh=n1∑i=1nL(yi,h(xi))+λJ(h)
其中 λ J ( h ) λJ(h) λJ(h) 为正则项, J ( h ) J(h) J(h) 表示函数 h ( x ) h(x) h(x) 的复杂度, λ λ λ 为调节系数。
优化的目标是:使经验损失、模型复杂度都小的模型。
∙ \bullet ∙ 从 稀疏的角度 看:复杂度越低,表明某特征无用,其对应参数为 0,即稀疏;
∙ \bullet ∙ 从 搜索空间角度 看:可以控制参数的搜索空间,若函数 h ( x ) h(x) h(x) 中的参数越大,则损失值越大;
∙ \bullet ∙ 从 贝叶斯的角度 看:正则项对应于模型的先验概率,可假设复杂模型有较小的先验概率,可假设简单模型有较大的先验概率;
∙ \bullet ∙ 奥卡姆剃刀原则:“如无必要,勿增实体”,模型应尽量减少冗余,尽量简单。常用的正则项有:
∙ \bullet ∙ L1: λ ∑ j = 1 n ∣ θ j ∣ λ\sum_{j=1}^{n}|θ_j| λ∑j=1n∣θj∣
(线性回归中使用此正则项,则变成 LASSO 回归)∙ \bullet ∙ L2: λ ∑ j = 1 n θ j 2 λ\sum_{j=1}^{n}θ_j^2 λ∑j=1nθj2
(线性回归中使用此正则项,则变成 Ridge 回归)∙ \bullet ∙ L1 - L2: λ ( p ∑ j = 1 n ∣ θ j ∣ + ( 1 − p ) ∑ j = 1 n θ j 2 ) λ(p\sum_{j=1}^{n}|θ_j|+(1-p)\sum_{j=1}^{n}θ_j^2) λ(p∑j=1n∣θj∣+(1−p)∑j=1nθj2)
-
-
损失函数种类
设 L ( y i , h ( x ) ) L(y_i,h(x)) L(yi,h(x)) 为损失函数, h ( x i ) h(x_i) h(xi) 为模型预测函数 h ( x ) h(x) h(x) 对数据 x i x_i xi 的预测值, y i y_i yi 为真实标签。
-
回归中的损失函数
平方损失
主要在最小二乘法(OLS,Ordinary Least Square)中。
L ( y i , h ( x i ) ) = ( y i − h ( x i ) ) 2 L(y_i,h(x_i))=(y_i-h(x_i))^2 L(yi,h(xi))=(yi−h(xi))2
∙ \bullet ∙ 对整个数据集有:均方误差 MSE(Mean Squared Error)为:
M S E = 1 n ∑ i = 1 n ( y i − h ( x i ) ) 2 MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i−h(x_i))^2 MSE=n1∑i=1n(yi−h(xi))2
均方误差是指预测值值与真实标记之差的平方的期望值。
∙ \bullet ∙ 对整个数据集还有:均方根误差 RMSE(Root Mean Squared Error)
R M S E = 1 n ∑ i = 1 n ( y i − h ( x i ) ) 2 RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i−h(x_i))^2} RMSE=n1∑i=1n(yi−h(xi))2
★ \bigstar ★ 平方损失函数是对均值的估计;
★ \bigstar ★ 优点:各处可导;
★ \bigstar ★ 缺点:对噪声与异常值敏感。(方差指对数据微小改变的敏感程度;稍有差异,则改变程度变化就会较大;方差越高,越容易过拟合;对噪声敏感。)
绝对损失
L ( y i , h ( x i ) ) = ∣ y i − h ( x i ) ∣ L(y_i,h(x_i))=| y_i-h(x_i) | L(yi,h(xi))=∣yi−h(xi)∣
∙ \bullet ∙ 对整个数据集有:平均绝对误差 MAE(Mean Absolute Error)
M A E = 1 n ∑ i = 1 n ∣ y i − h ( x i ) ∣ MAE=\frac{1}{n}\sum_{i=1}^{n}| y_i-h(x_i) | MAE=n1∑i=1n∣yi−h(xi)∣
★ \bigstar ★ 是对中位数的估计;
★ \bigstar ★ 优点:相比平方损失,对噪声不敏感;
★ \bigstar ★ 缺点:在 0 处不可导。(偏差是指模型预测值与真实值之间的差异;偏差越高,代表越欠拟合,不能充分利用数据的有效信息。)
Huber 损失
L ( y i , h ( x i ) ) = { 1 2 ( y i − h ( x i ) ) 2 , ∣ y i − h ( x i ) ∣ < δ δ ∣ y i − h ( x i ) ∣ − 1 2 δ 2 , o t h e r w i s e L(y_i,h(x_i))=\begin{cases} \frac{1}{2} (y_i-h(x_i))^2,| y_i-h(x_i) | < δ\\ δ| y_i-h(x_i) |-\frac{1}{2}δ^2,otherwise\\ \end{cases} L(yi,h(xi))={21(yi−h(xi))2,∣yi−h(xi)∣<δδ∣yi−h(xi)∣−21δ2,otherwise
★ \bigstar ★ 当损失值很小时,等价于平方损失;
★ \bigstar ★ 当损失值较大时,等价于绝对损失;
★ \bigstar ★ 缺点:只一阶可导。Log-Cosh 损失
L ( y i , h ( x i ) ) = l o g [ c o s h ( y i − h ( x i ) ) ] L(y_i,h(x_i))=log[cosh(y_i-h(x_i))] L(yi,h(xi))=log[cosh(yi−h(xi))],其中 c o s h ( x ) = e x + e − x 2 cosh(x) = \frac{e^{x}+e^{-x}}{2} cosh(x)=2ex+e−x
∙ \bullet ∙ 对整个数据集有: L [ y i , h ( x i ) ] = ∑ i = 1 n l o g [ c o s h ( y i − h ( x i ) ) ] L[y_i,h(x_i)]=\sum_{i=1}^{n}log[cosh(y_i-h(x_i))] L[yi,h(xi)]=∑i=1nlog[cosh(yi−h(xi))]
★ \bigstar ★ 优点:与 Huber 损失相似,但二阶可导。
-
分类中的损失函数
0-1 损失
L ( y i , h ( x i ) ) = { 1 , y i ≠ h ( x i ) 0 , y i = h ( x i ) L(y_i,h(x_i)) =\begin{cases} 1,y_i\neq h(x_i)\\ 0,y_i = h(x_i) \end{cases} L(yi,h(xi))={1,yi̸=h(xi)0,yi=h(xi)
★ \bigstar ★ 缺点:不连续,无法实际优化
Hinge 损失
主要应用在 SVM 中。
L ( y i , h ( x i ) ) = m a x ( 0 , 1 − y i h ( x i ) ) L(y_i,h(x_i)) = max(0,1−y_ih(x_i)) L(yi,h(xi))=max(0,1−yih(xi))
∙ \bullet ∙ 对整个数据集有:
L ( y i , h ( x i ) ) = ∑ i = 1 n m a x ( 0 , 1 − y i h ( x i ) ) L(y_i,h(x_i)) = \sum_{i=1}^{n}max(0,1−y_ih(x_i)) L(yi,h(xi))=∑i=1nmax(0,1−yih(xi))
对数损失
L ( y i , h ( x i ) ) = − l o g ( p ( y i ∣ x i ) ) L(y_i,h(x_i)) = -log(p(y_i|x_i)) L(yi,h(xi))=−log(p(yi∣xi))
∙ \bullet ∙对整个数据集有:
L ( y i , h ( x i ) ) = ∏ i = 1 n − l o g ( p ( y i ∣ x i ) ) L(y_i,h(x_i)) = \prod_{i=1}^{n}-log(p(y_i|x_i)) L(yi,h(xi))=∏i=1n−log(p(yi∣xi))
假设全独立,则:
L ( y i , h ( x i ) ) = ∏ i = 1 n − l o g ( p ( y i ∣ x i ) ) ⇒ 似 然 函 数 ∏ i = 1 n [ h ( x i ) y i ] [ 1 − h ( x i ) ] 1 − y i L(y_i,h(x_i)) = \prod_{i=1}^{n}-log(p(y_i|x_i))\Rightarrow似然函数\prod_{i=1}^{n}[h(x_i)^{y_i}][1-h(x_i)]^{1-y_i} L(yi,h(xi))=∏i=1n−log(p(yi∣xi))⇒似然函数∏i=1n[h(xi)yi][1−h(xi)]1−yi
而后可取对数似然,使用极大似然估计或梯度下降求解最优值。
变换成对数似然函数后就是我们常用的:binary_crossentropy、categorical_crossentropy
★ \bigstar ★ 优点:输出被调整的结果;
-