《速通深度学习数学基础》第6章 概率在深度学习中的应用

目录

6.1 概率分布之间的距离

6.2 最大似然估计

6.3 logit和softmax

6.3.1 二分类的logit

6.3.2 多分类的softmax

6.4 语言模型

6.5 概率悖论

6.5.1 辛普森悖论

6.5.2 基本比率谬误

6.5.3 罗杰斯现象

6.5.4 伯克森悖论

6.6 统计学基础

6.6.1 卡方分布和学生分布

6.6.2 假设检验

6.6.3 AB测试

6.7 各类hash变换

6.7.1 特征hash

6.7.2 MD5

6.7.3 特征空间的投影

6.7.4 simhash

6.7.5 minhash

6.8 分类器性能的极限

6.8.1 最大AUC

6.8.2 贝叶斯错误率


(由于平台稿件格式问题,公式格式不能正确写上;如若读写困难可後台私信我要完整电子版)

6.1 概率分布之间的距离

两个人投篮,x=1 表示投中,x=0 表示没投中。第一个人投中的概率是 P(x=1)=0.8,P(x=0)=0.2。第二个人投中的概率是 Q(x=1)=0.7,Q(x=0)=0.3。我们想比较这两个人投篮水平的差异,应该怎么做呢?

一般来说,可以使用KL距离来度量相同事件空间的概率分布 P(x) 和 Q(x) 的差异,公式如下

D(P||Q)=∑_(x∈X)▒〖P(x)log (P(x))/(Q(x))〗

在上例中,我们可以计算

D(P||Q)=P(x=0)log P(x=0)/Q(x=0) +P(x=1)log P(x=1)/Q(x=1)

=0.2∙log 0.2/0.3+0.8∙log 0.8/0.7=0.026

特别的,当两个概率分布相等时,即 P(x)=Q(x),log (P(x))/(Q(x))=log1=0,D(P||Q)=0。

不过,需要注意的是,和其他距离不同的是,KL距离不具备对称性,即

D(P||Q)≠D(Q||P)

我们在进行二分类的时候,两类分别为P类和N类。y 表示样本 x 属于P类的概率,1-y 表示样本 x 属于N类的概率。y 为 x 的真实类别,是一个确定事件,即 y=1 或者 y=0。y^' 为模型预测出来的 x 为P类的概率,1-y^' 表示模型预测样本为N类的概率。模型预测的 y^' 是一个概率,因此 y^'∈(0,1)。

真实情况和模型结果的差异可以由KL距离来度量,公式如下。

D(真实结果||模型结果)=ylog y/y^' +(1-y)log (1-y)/(1-y^' )

例如,有训练样本 〖{x_((i) ),y_((i))}〗_(i=1)^N,我们可以用它们对应的平均KL距离来度量模型结果和真实结果的差异,公式如下。

Loss=1/N ∑_(i=1)^N▒〖(y_((i)) log y_((i))/(y_((i))^' )+(1-y_((i)))log (1-y_((i)))/(1-y_((i))^' )〗)

Loss 越大,说明模型输出结果 y_((i))^' 离真实情况越远。

模型学习的目标就是不断地通过改变参数来改变 y_((i))^',以缩短KL距离。我们可以对上式进行一些简化:

Loss=∑_(i=1)^N▒(y_((i) ) log y_((i) )/(y_((i))^' )+(1-y_((i) ))log (1-y_((i) ))/(1-y_((i))^' ))

=∑_(i=1)^N▒〖y_((i)) log(y_((i)) )-y_((i)) logy_((i))^'+(1-y_((i)) )log(1-y_((i)) )-(1-y_((i)))log⁡(1-y_((i))^')〗

因为我们的最终目标是改变 y_((i))^' 以缩短KL距离,所以只需要保留和 y_((i))^' 有关的项,其他略去,具体如下。

Loss=∑_(i=1)^N▒(-y_((i)) logy_((i))^'-(1-y_((i)))log⁡(1-y_((i))^'))

可以发现,这正是二分类模型常用的损失函数。

6.2 最大似然估计

6.1节说到分类模型所使用的损失函数其实就是KL距离,但是距离有很多种,为什么一定要使用KL距离呢?原因在于KL距离等价于最大似然估计,而最大似然估计是目前数学界最常用、理论基础最扎实的参数估计方法。下面我们具体详细讲解最大似然估计在二分类中的应用。

当我们知道一个事件的概率分布后,就可以通过这个概率分布计算对应的概率。例如,已知后验概率 P(y|x) 的计算方法,x 为身高,y 为性别,我们可以通过一个人的身高预测他的性别概率。机器学习就是通过大量已知的身高和性别数据去找到最适合的 P(y|x)。那么,什么样的 P(y|x) 才算是最合适的呢?

因为已知数据是已经发生的,在没有任何其他信息时,已知事情对应的概率就应该是最大的。例如,我们认为“太阳从东方升起”对应的概率为1,是因为这件事情每天都在发生。

在使用模型预测样本 x_((i) ) 的类别时,模型的输出为 y_((i))^',也就是说,预测结果为P类的概率为 y_((i))^',预测结果为N类的概率为 〖1-y〗_((i))^'。

如果 x_((i) ) 的真实类别为P类,也就是 y_((i) )=1,那么模型预测结果为P类的概率为 P(y=y_((i) ) |x_((i) ) )=y_((i))^'。

如果 x_((i)) 的真实类别为N类,也就是 y_((i))=0,那么模型预测结果为N类的概率为 P(y=y_((i)) |x_((i)) )=1-y_((i))^'。

这是一个典型的0-1分布,可以统一写成

P(y=y_((i)) |x_((i)) )=〖y_((i))^'〗^(y_((i)) ) (1-y_((i))^' )^((1-y_((i))))

N 个训练样本 {〖x_((i) ),y_((i) )〗_(i=1)^N} 之间可能会存在相互矛盾的情况,例如身高170cm的人既有男性也有女性,即 x_((i) )=170、y_((i) )=1 和 x_((j) )=170、y_((j) )=0 同时存在于训练样本中。因此我们不必使所有样本对应的概率都为1,只需要整体最大即可,即最大化

likelihood=∏_(i=1)^N▒P(y=y_((i)) |x_((i)) )

一般称 likelihood 为似然函数。

为了方便计算,我们对似然函数取对数,似然函数变为

likelihood=log∏_(i=1)^N▒P(y=y_((i) ) |x_((i) ) ) =∑_(i=1)^N▒logP(y=y_((i) ) |x_((i) ) )

=∑_(i=1)^N▒〖log⁡[〖y_((i))^'〗^(y_((i) ) )∙(1-y_((i))^' )^((1-y_((i) ) ) ) ]=∑_(i=1)^N▒〖y_((i)) log⁡〖y_((i))^' 〗+(1-y_((i)) ) log⁡(1-y_((i))^' ) 〗〗

因为训练样本是已经发生的事件,所以“好模型”的标准就是能够使似然函数最大化(最大似然估计)。优化目标为最大化似然函数,即 max⁡(likelihood),它等价于 min(-likelihood),故优化目标为

min(-likelihood)〖=min〗⁡[∑_(i=1)^N▒〖-y_((i)) log⁡〖y_((i))^' 〗-(1-y_((i)) ) log⁡(1-y_((i))^' ) 〗]

可以看出,-y_((i)) log⁡〖y_((i))^' 〗-(1-y_((i)) ) log⁡(1-y_((i))^' ) 就是 y_((i))^' 和 y_((i)) 的KL距离,优化目标就是最小化各样本的KL距离之和。

通过以上分析可以发现,使用KL距离的原因就是它等价于最大似然估计。

除了分类问题,回归问题也是机器学习常见的任务。

在回归问题中,模型预测的不再是类别概率,而是一个连续的数值,例如房价、人口

数等。例如,在训练样本 〖{x_((i)),y_((i))}〗_(i=1)^N 中,我们认为因变量(房价)y_((i)) 和自变量(面积、与城区的距离等)x_((i)) 的关系是

y_((i))=w^T x_((i))+w_0

这种模型称为线性回归。y_((i)) 和 x_((i)) 之间的关系可以是更复杂的形式,例如是一个多层神经网络。模型的学习过程,就是利用已知的数据 〖{x_((i)),y_((i))}〗_(i=1)^N 找到合适的 w。

但是,在我们拿到的训练数据中,也会有偏差 ε,例如两座一模一样的房子也有可能卖出不同的价格。这类偏差具有随机性,其影响因素无法在特征中体现,例如购房者自身的偏好、议价能力、单纯的运气等。

为了方便建模,我们把这些因素的影响用一个正态分布表示,对应的概率密度为

f(ε=e)=1/(σ√2π) exp^(-e^2/(2σ^2 ))

那么,y_((i)) 和 x_((i)) 的关系变为

y_((i))=w^T x_((i))+w_0+ε

根据正态分布的性质,此时 y_((i)) 也是一个连续型随机变量,符合正态分布,期望为 w^T x_((i))+w_0,方差为 σ^2。x_((i)) 已知时,y_((i)) 对应的概率密度函数为

f(y=y_((i)) |x_((i)) )=1/(σ√2π) exp^(-〖(y_((i) )-w^T x_((i) )-w_0)〗^2/(2σ^2 ))

机器学习的目标是从数据中找到最优的 w 和 w_0。

从统计学的角度,通过调整参数使训练样本 〖{x_((i)),y_((i))}〗_(i=1)^N 出现的概率最大。因此,考虑所有训练样本,需要最大化的似然函数为

likelihood=∏_(i=1)^N▒〖f(y=y_((i) ) |x_((i) ) )=∏_(i=1)^N▒〖1/(σ√2π) exp^(-〖(y_((i) )-f(x_((i))))〗^2/(2σ^2 )) 〗〗

为了运算方便,我们对似然函数取对数,使似然函数变为

likelihood=log⁡[∏_(i=1)^N▒〖1/(σ√2π) e^(-〖(y_((i) )-f(x_((i))))〗^2/(2σ^2 )) 〗]=∑_(i=1)^N▒[-〖(y_((i) )-f(x_((i))))〗^2/(2σ^2 )-logσ√2π]

模型学习的目标就是最大化似然函数 likelihood,即已经发生的事实,因此,其对应的概率应该最大。

max⁡(likelihood) 即最小化 min⁡(-likelihood),因此,优化目标为最小化下式。

∑_(i=1)^N▒[〖(y_((i) )-f(x_((i))))〗^2/(2σ^2 )+logσ√2π]

由于在似然函数中,只有 w 和 w_0 为变量是我们希望求解的,其他无关项均可去除,所以,优化目标变为最小化下式。

∑_(i=1)^N▒〖〖(y_((i) )-f(x_((i))))〗^2=∑_(i=1)^N▒〖(y_((i) )-y_((i))^')〗^2 〗=∑_(i=1)^N▒〖(y_((i) )-w^T x_((i) )-w_0)〗^2

可以发现,上式就是MSE。可见,当数据符合正态分布时,使用MSE优化线性回归模型等价于最大似然估计。

6.3 logit和softmax

6.3.1 二分类的logit

通过前面的学习,我们知道概率 P 用来描述事件发生的可能性。但有的时候,我们需要知道事件发生和事件不发生之间的比例,因此定义Odds,具体如下。

Odds=P/(1-P)

假设中国队和巴西队踢足球,中国队的胜率为 1/10000,那么对应的Odds为 1/9999。也就是说,在制定赔率时,巴西队胜利赢1元,需要设定中国队胜利赢9999元,这个盘口才公平,才会有人下注。

我们知道,概率 P 的值域为 [0,1],如果直接用模型对概率 P 进行学习,模型的输出范围将会受限,Odds的值域为 [0,+∞]。再进一步,我们定义logit,它为Odds的对数,即

logit=log⁡Odds=log⁡〖P/(1-P)〗

容易看出,logit的值域为 (-∞,+∞)。使用模型来逼近logit,有一个好处就是模型的输出不再有值域的限制,因此模型的选取范围将显著增大。

例如,在二分类中,可以使用模型 f(x)(值域为 (-∞,+∞))对 logit(P(y=1|x)) 建模,即

logit(P(y=1│x))=log⁡〖(P(y=1│x))/(1-P(y=1│x) )〗=f(x)

化简可得

P(y=1│x)=1/(1+e^(-f(x)) )

当 f(x)〖=w〗^T x+w_0,即 f(x) 为线性回归时,可得

P(y=1│x)=1/(1+e^(-(w^T x+w_0)) )

又导出了逻辑回归。

通过上面的例子其实可以发现,逻辑回归和线性回归没有本质上的不同。在逻辑回归中,其实就是用线性回归去拟合logit。

6.3.2 多分类的softmax

在实际项目中,除了二分类,多分类也是常见的任务。这里要说明一下,同样是多类别的分类,多分类和多标签是两种不同的任务。

在多分类中,要求类别之间互斥,且考虑部情况,即 ∑_(i=1)^N▒〖P(y=i│x)=1〗,N 为类别

个数。例如,通过模型预测一个人的学历,即“高中”“本科”“大学”“硕士”“博士”“其他”,那么这必然是一个N选1任务。但有时候类别之间并不互斥,例如预测一首歌属于“摇滚”“流行”“古典”“嘻哈”,一首歌往往会属于多种类型,我们称这类任务为多标签任务。本节仅讨论多分类的相关知识。

在N分类中,模型一般会有 N 个输出 f_1 (x)~f_N (x),但 f_1 (x)~f_N (x) 不宜直接输出概率 P(y=i|x),主要原因如下。

如果直接输出概率,那么 f_1 (x)~f_N (x) 的值域就会被限制为 [0,1],这对模型的选取有极大的限制。

在多分类中,∑_(i=1)^N▒〖P(y=i│x)=1〗 是一个硬性要求,f_1 (x)~f_N (x) 之间互相耦合,这给模型的选取带来了极大的挑战。

我们可以对 f_1 (x)~f_N (x) 进行概率归一化,具体如下。

P(y=i|x)=(f_i (x))/(∑_(i=1)^N▒〖f_i (x) 〗)

虽然解决了 ∑_(i=1)^N▒〖P(y=i│x)=1〗 的问题,但仍然存在其他问题,列举如下。

必须要求 f_i (x)≥0,否则 P(y=i│x)<0,这不符合概率本身的定义。因此,f_i (x) 的值域范围变小了。

概率只反映了 f_1 (x)~f_n (x) 之间的比例差,忽略了绝对差。

例如,当 N=2 时,第一种情况是

f_1 (x)=3

f_2 (x)=6

按上述归一化方法,可以得到

P(y=1|x)=1/3

P(y=2|x)=2/3

第二种情况是

f_1 (x)=300

f_2 (x)=600

按上述归一化方法,可以得到

P(y=1|x)=1/3

P(y=2|x)=2/3

显然,在这两种情况下归一化的概率是相等的,这是因为 f_1 (x):f_2 (x) 的比例并没有发生变化。但是,很明显,在第二种情况下 f_2 (x)-f_1 (x)=300 差值远大于第一种情况(差值为 6-3=3)。按正常思路,在第二种情况下,P(y=2|x) 应该更大。

为了解决上述问题,我们在多分类问题中,一般使用softmax函数进行概率归一化。softmax函数的输入和输出均为向量,具体形式如下。

softmax([■(x_1@⋮@x_N )])=[■(e^(x_1 )/(∑_(i=1)^N▒e^(x_i ) )@⋮@e^(x_N )/(∑_(i=1)^N▒e^(x_i ) ))]=1/(∑_(i=1)^N▒e^(x_i ) ) [■(e^(x_1 )@⋮@e^(x_N ) )]

归一化的结果如下。

[■(P(y=1|x)@⋮@P(y=N|x))]=softmax([■(f_i (x)@⋮@f_N (x) )])=1/(∑_(i=1)^N▒e^(f_i (x) ) ) [■(e^(f_i (x) )@⋮@e^(f_N (x) ) )]

softmax函数有如下优点。

能够满足 ∑_(i=1)^N▒〖P(y=i│x)=1〗。

f_i (x) 的值域可以为 (-∞,+∞),这极大拓宽了模型 f_i (x) 的选择范围。

P(y=i|x) 随 e^(f_i (x) ) 指数级增长,使模型输出对 f_i (x) 的绝对值敏感。

为什么这个函数叫作softmax呢?我们从hardmax函数说起。hardmax函数的输入为一个向量,输出为一个与输入同维度的向量,原向量中最大值对应的位置取1,其他位置都为0。例如:

x=[■(10@20@21)],y=hardmax⁡(x)=[■(0@0@1)]

但是,这样做太“硬”了,会造成如下问题。

20仅比21小了1,但函数输出天差地别。hardmax函数对输入过于敏感,输入轻微变化,输出会有过大震荡。

函数不是一个连续函数,因此会造成求导困难,从而影响梯度下降法的使用。

softmax函数可以克服hardmax函数的上述问题。但是softmax函数在计算时,e^(x_i ) 很容易过大而导致溢出。我们可以做如下转换,以解决这个问题。

d=max⁡(x_1,⋯,x_N )

softmax([■(x_1-d@⋮@x_N-d)])=1/(∑_(i=1)^N▒e^(x_i-d) ) [■(e^(x_1-d)@⋮@e^(x_N-d) )]=1/(∑_(i=1)^N▒e^(x_i ) ) [■(e^(x_1 )@⋮@e^(x_N ) )]=softmax([■(x_1@⋮@x_N )])

softmax([■(x_1@⋮@x_N )])=softmax([■(x_1-d@⋮@x_N-d)])

因此,在计算softmax函数时,先对各个元素计算 x_i-max⁡(x_1,⋯,x_N),再进行其他计算,可以有效防止数值溢出。

6.4 语言模型

在自然语言处理中,语言模型是一个非常重要的模型,它用于计算“一句话是合理的”的概率。

例如,P(我喜欢吃饭)>P(我你哦)。“我喜欢吃饭”是常见句。而“我你哦”作为病句,几乎不会出现,其概率应该如何计算呢?“我喜欢吃饭”对应于4个词,w_1=“我”,w_2=“喜欢”,w_3=“吃”,w_4=“饭”,概率记为 P(w_1 w_2 w_3 w_4),即顺序排列的一系列词所对应的联合概率密度分布。需要注意的是,概率和词的顺序有关,即“饭喜欢吃我”对应于概率 P(w_4 w_2 w_3 w_1) 且 P(w_1 w_2 w_3 w_4)≠P(w_4 w_2 w_3 w_1)。P(w_1 w_2 w_3 w_4) 可用贝叶斯定理化简,如下式所示。

P(w_1 w_2 w_3 w_4 )=P(w_1 )×P(w_2│w_1 )×P(〖w_3 |w〗_1 w_2 )×P(w_4│w_1 w_2 w_3

### 腾讯iOA私有化部署成本分析 腾讯iOA作为国内领先的零信任安全解决方案之一,支持SaaS、私有化及混合部署模式。在企业对数据安全性要求较高的场景下,私有化部署成为首选方案。以下从硬件投入、软件授权、运维服务等方面进行综合成本分析。 #### 硬件投入成本 私有化部署需要本地服务器资源来承载控制中心、网关和终端管理模块。根据典型中型企业需求,建议采用双节点高可用架构,每台服务器配置不低于8核CPU、32GB内存、1TB SSD存储空间,以保障策略计算、身份认证与访问控制的稳定运行[^2]。若采用物理服务器采购方式,两台设备成本约在10~15万元区间;若已有虚拟化平台,则可通过分配资源池降低硬件支[^1]。 #### 软件授权与服务费用 腾讯iOA私有化版本按用户数或终端数量进行授权计费,具体价格因功能模块组合而异。基础版包含零信任SDP(软件定义边界)与CWPP(云工作负载保护平台)能力,适用于远程办公与应用访问控制场景,年费约为每位用户300元起[^2]。对于500人规模的企业,年度授权成本约15万元。此外,首次部署需支付一次性实施服务费,涵盖系统集成、策略配置与接口对接等,通常为5~8万元[^3]。 #### 运维与扩展成本 私有化部署后需配备专业IT团队负责日常维护、日志审计与策略优化。若企业内部缺乏相应技术储备,可选择厂商提供的年度运维服务包,费用约为软件授权金额的20%~30%。随着业务增长,新增用户或功能模块扩展将产生额外成本,例如增加DLP(数据防泄漏)模块后,整体预算需上浮10%~15%。 #### 总体预算估算 综合上述因素,一个中型企业在完成腾讯iOA私有化部署后的首年总成本包括: - 硬件投入:10~15万元 - 软件授权:15万元(500用户规模) - 实施服务费:5~8万元 - 年度运维服务费:3~5万元 总计约33~41万元,略超30万元预算上限。若希望压缩至30万元以内,可通过精简功能模块(如仅启用SDP与基础身份认证)、复用现有服务器资源或延长付款周期等方式实现初步部署[^3]。 ```python # 成本估算示例代码 def estimate_cost(users=500, license_per_user=300, setup_fee=60000, maintenance_rate=0.25): hardware_cost = 120000 # 假设复用部分资源,取中间值 license_cost = users * license_per_user total_initial_cost = hardware_cost + license_cost + setup_fee annual_maintenance = (license_cost + setup_fee) * maintenance_rate total_first_year = total_initial_cost + annual_maintenance return { "Initial Hardware Cost": hardware_cost, "License Cost": license_cost, "Setup Service Fee": setup_fee, "Annual Maintenance": annual_maintenance, "Total First Year": total_first_year } estimate_cost() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值