训练神经网络解决二分类问题的原理

昨日训练一个二分类的神经网络,最后一层忘记加sigmoid,发现自己一直做回归的任务,对分类这块还真不太熟练,因此写下这篇博文作为回顾。

KL散度是机器学习中常用的一个指标,用于衡量两个概率分布之间的距离,其必须拥有相同的支集,定义为K L ( P ∣ ∣ Q ) = E x ∼ P [ l o g P ( x ) Q ( x ) ] KL(P||Q)=\mathbb{E}_{x\sim P}[log \frac{P(x)}{Q(x)}]K L (P ∣∣Q )=E x ∼P ​[l o g Q (x )P (x )​]。

交叉熵定义为:H [ P , Q ] = H [ P ] + K L ( P ∣ ∣ Q ) = − E x ∼ P l o g Q ( x ) H[P,Q]=H[P]+KL(P||Q)=-\mathbb{E}_{x \sim P}logQ(x)H [P ,Q ]=H [P ]+K L (P ∣∣Q )=−E x ∼P ​l o g Q (x )

最大似然估计

学习的基本原则就是最大似然估计,学习的其实是概率分布p m o d e l ( x ; θ ) p_{model}(x;\theta)p m o d e l ​(x ;θ),记数据为X = { x 1 , x 2 , ⋯ , x n } X={x_1, x_2, \cdots, x_n}X ={x 1 ​,x 2 ​,⋯,x n ​},则最大似然估计表示为:
θ = arg max ⁡ p m o d e l ( X ; θ ) \theta = \argmax p_{model}(X;\theta)θ=arg max p m o d e l ​(X ;θ)
从贝叶斯的角度考虑,这等价于均匀先验下的最大后验估计。将上式改写为对数似然的形式,是:
θ = arg max ⁡ ∑ i = 1 n l o g p m o d e l ( x i ; θ ) \theta = \argmax \sum_{i=1}^{n}logp_{model}(x_i;\theta)θ=arg max i =1 ∑n ​l o g p m o d e l ​(x i ​;θ)
在等式前乘以常数的行为并不影响最大化过程,因此:

θ = arg max ⁡ 1 n ∑ i = 1 n l o g p m o d e l ( x i ; θ ) \theta = \argmax \frac{1}{n}\sum_{i=1}^{n}logp_{model}(x_i;\theta)θ=arg max n 1 ​i =1 ∑n ​l o g p m o d e l ​(x i ​;θ)
这等价于:
θ = arg max ⁡ E x ∼ p ^ d a t a l o g p m o d e l ( x i ; θ ) \theta = \argmax \mathbb{E}{x\sim \hat{p}{data}}logp_{model}(x_i;\theta)θ=arg max E x ∼p ^​d a t a ​​l o g p m o d e l ​(x i ​;θ)
与交叉熵的公式对比,会发现最大似然估计实际上在最小化交叉熵。进一步的,最小化了KL散度,也就是:

θ = arg min ⁡ E x ∼ p ^ d a t a [ − l o g p m o d e l ( x i ; θ ) d a t a + p ^ d a t a ( x ; θ ) ] \theta = \argmin \mathbb{E}{x\sim \hat{p}{data}}[-logp_{model}(x_i;\theta)data+\hat{p}_{data}(x;\theta)]θ=arg min E x ∼p ^​d a t a ​​[−l o g p m o d e l ​(x i ​;θ)d a t a +p ^​d a t a ​(x ;θ)]
这是由于第二项与θ \theta θ无关,在最小化的过程中可以忽略。

二分类问题

对于二分类问题,我们实际上在最小化数据经验分布和伯努利分布之间的交叉熵,也就是
p m o d e l ( x ; θ ) = θ x ( 1 − θ ) 1 − x , x ∈ { 0 , 1 } , θ ∈ [ 0 , 1 ] p_{model}(x;\theta)=\theta^x(1-\theta)^{1-x}, x\in{0,1}, \theta \in [0,1]p m o d e l ​(x ;θ)=θx (1 −θ)1 −x ,x ∈{0 ,1 },θ∈[0 ,1 ]
则最小化交叉熵表示为:
θ = arg max ⁡ E x ∼ p ^ d a t a [ x l o g θ + ( 1 − x ) l o g ( 1 − θ ) ] = a r g m a x 1 n ∑ i = 1 n [ x i l o g θ + ( 1 − x i ) l o g ( 1 − θ ) ] \theta = \argmax \mathbb{E}{x\sim \hat{p}{data}}[xlog\theta+(1-x)log(1-\theta)]\ =argmax \frac{1}{n}\sum_{i=1}^{n}[x_ilog\theta+(1-x_i)log(1-\theta)]θ=arg max E x ∼p ^​d a t a ​​[x l o g θ+(1 −x )l o g (1 −θ)]=a r g ma x n 1 ​i =1 ∑n ​[x i ​l o g θ+(1 −x i ​)l o g (1 −θ)]

神经网络在这里起到的作用实际上是提供参数θ \theta θ,也就是θ = f ( x ; w ) \theta = f(x;w)θ=f (x ;w )
因此,我们对于二分类问题,实际的优化是:
θ = arg max ⁡ 1 n ∑ i = 1 n [ x i l o g f ( x ; w ) + ( 1 − x i ) l o g ( 1 − f ( x ; w ) ) ] \theta = \argmax \frac{1}{n}\sum_{i=1}^{n}[x_ilogf(x;w)+(1-x_i)log(1-f(x;w))]θ=arg max n 1 ​i =1 ∑n ​[x i ​l o g f (x ;w )+(1 −x i ​)l o g (1 −f (x ;w ))]

伯努利分布中的参数θ \theta θ代表的含义是x = 1 x=1 x =1的概率,因此是一个介于( 0 , 1 ) (0,1)(0 ,1 )之间的数字。因此,在设计神经网络结构的时候,需要在最后加上一个sigmoid激活函数,使神经网络的输出值归一化。而在损失函数的选择上,我们选择所谓的交叉熵。实际上,回归问题的损失函数也是交叉熵,只不过可以推导出均方损失。

Original: https://blog.csdn.net/RSstudent/article/details/126015264
Author: Remote Sensing
Title: 训练神经网络解决二分类问题的原理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/665707/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球