第三周:逻辑回归代价函数求导过程

第三周课程中,逻辑回归代价函数的求导过程没有具体展开,在此推导并记录:

逻辑回归的代价函数可以统一写成如下一个等式:

$J( heta ) = -frac{1}{m}left[sum_{i=1}^{m}y^{(i)}log(h_ heta (x^{(i)}))+(1-y^{(i)})log(1-h_ heta (x^{(i)})) ight]$

其中:$h_ heta (x^{(i)}) = frac{1}{1+e^{- heta^mathrm {T} x}}$

为了避免求导过程太冗长复杂,我们做一些显示的简化:

$J( heta ) = -frac{1}{m}left[sum_{i=1}^{m}K( heta) ight]$

其中:$K( heta) = y^{(i)}log(h_ heta (x^{(i)}))+(1-y^{(i)})log(1-h_ heta (x^{(i)}))$

$h_ heta (x^{(i)}) = frac{1}{1+e^{- heta^mathrm {T} x}}$

OK,下面开始我们的推导过程:如果要求$J( heta)$对某一个参数$ heta$的偏导数,则:

(1)根据求导公式,可以先把常数项$-frac{1}{m}sum_{i=1}^{m}$提取出来,这样就只需要对求和符号内部的表达式求导,即:

$J( heta ){}' = -frac{1}{m}left[sum_{i=1}^{m}K( heta){}' ight]$

$K( heta){}' = left(ylog(h_ heta (x))+(1-y)log(1-h_ heta (x)) ight ){}'$(为方便显示,先把右上角表示第i个样本的上标去掉) 

(2)根据对数复合求导公式,$log(x){}' = frac{1}{x}x{}'$,对$K( heta)$继续求导可得:

$K( heta){}' = yfrac{1}{h_ heta (x)}h_ heta (x){}'+(1-y)frac{1}{1-h_ heta (x)}(1-h_ heta (x)){}'$

(3)根据幂函数复合求导公式,$(y^{x}){}' = xy^{x-1}x{}'$,及以e为底的指数求导公式,对$h_ heta(x)$继续求导可得:

$h_ heta (x){}' = left( frac{1}{1+e^{- heta^mathrm {T} x}} ight){}'=-frac{(1+e^{- heta^mathrm {T} x}){}'}{(1+e^{- heta^mathrm {T} x})^{2}} = frac{e^{- heta^mathrm {T}x}( heta^mathrm {T} x){}'}{(1+e^{- heta^mathrm {T} x})^{2}} = left(frac{1}{1+e^{- heta^mathrm{T}x}}(1-frac{1}{1+e^{- heta^mathrm{T}x}}) ight)( heta^mathrm{T}x){}' = h_ heta(x)(1-h_ heta(x))( heta^mathrm{T}x){}'$

同理,$(1-h_ heta (x)){}'= -frac{e^{- heta^mathrm {T}x}( heta^mathrm {T} x){}'}{(1+e^{- heta^mathrm {T} x})^{2}} = -h_ heta(x)(1-h_ heta(x))( heta^mathrm{T}x){}'$

(4)把步骤3的结果带入步骤2,化简后可得:

 $K( heta){}' = (y-h_ heta(x))( heta^mathrm{T}x){}'$

再把上面结果带入步骤1,化简后可得:

 $J( heta){}' = frac{1}{m}left[sum_{i=1}^{m}(h_ heta(x)-y)( heta^mathrm{T}x){}' ight]$

最后$( heta^mathrm{T}x){}'$,对第j个$ heta$求偏导,结果即$X_{j}$(j表示样本中第几项),得到最终结果:

 $frac{partial J( heta)}{partial heta_{j}} = frac{1}{m}left[sum_{i=1}^{m}(h_ heta(x^{(i)})-y^{(i)})x_{j}^{(i)} ight]$

原文地址:https://www.cnblogs.com/zhongmiaozhimen/p/6155093.html