神经网络基础——Sigmoid函数参数推导原理

3 阅读3分钟

前置知识

由于人工智能方向涉及较多数学知识,限于篇幅原因,作者无法将其列举完全,这里挑选几个较为重要的知识点作简要介绍。有些基础数学知识已经单独在其他文档中描述,这里不再赘述。如有疑问,欢迎评论或私信留言。

极大似然法

总体XX有分布率P(X=x;θ)P(X=x;\theta)或密度函数f(x;θ)f(x;\theta),已知θΘ\theta\in\ThetaΘ\Theta是参数空间。(xi)i=1n(x_i)_{i=1}^n为取自总体XX的一个样本(Xi)i=1n(X_i)_{i=1}^n的观测值,将样本的联合分布率或联合密度函数看成是θ\theta的函数,用L(θ)L(\theta)表示,又称为θ\theta的似然函数,即

L(θ)=i=1nP(Xi=xi;θ)L(θ)=i=1nf(xi;θ)\begin{aligned} L(\theta)&=\prod_{i=1}^nP(X_i=x_i;\theta)或\\ L(\theta)&=\prod_{i=1}^nf(x_i;\theta) \end{aligned}

称满足关系式

L(θ^)=maxθΘL(θ)L(\hat\theta)=\max_{\theta\in\Theta}L(\theta)

的解

θ^=argmaxθΘL(θ)\hat\theta=\arg\max_{\theta\in\Theta}L(\theta)

θ\theta的极大似然估计量。 当L(θ)L(\theta)是可微函数时,求导是求极大似然估计最常用的方法。此时又因L(θ)L(\theta)lnL(θ)\ln L(\theta)在同一个θ\theta处取得极值,且对对数似然函数lnL(θ)\ln L(\theta)求导更简单,故我们常用如下对数似然方程

dlnL(θ)dθ=0\frac{d\ln L(\theta)}{d\theta}=0

θ\theta为几个未知参数组成的向量θ=(θi)i=1k\mathbf\theta=(\theta_i)_{i=1}^k时,用如下对数似然方程组

{lnL(θ)θ1=0lnL(θ)θ2=0lnL(θ)θk=0\begin{cases} \frac{\partial\ln L(\theta)}{\partial\theta_1}=0 \\ \frac{\partial\ln L(\theta)}{\partial\theta_2}=0 \\ \vdots \\ \frac{\partial\ln L(\theta)}{\partial\theta_k}=0 \end{cases}

求得θ\theta的极大似然估计值。 当似然函数不可微时,也可以直接寻求使得L(θ)L(\theta)达到最大的解来求的极大似然估计值。

泰勒公式

如果给定了在点x0x_0具有所有前nn阶导数的函数f(x)f(x),则称f(x)f(x)x0x_0nn阶可导。则有

f(x)=f(x0)+f(x0)(xx0)+12f(x0)(xx0)2+13!f(x0)(xx0)3++1n!f(n)(x0)(xx0)n+Rn(x)=i=0nf(i)(x0)i!(xx0)i+Rn(x)\begin{aligned} f(x)&=f(x_0)+f'(x_0)(x-x_0)+\frac12f''(x_0)(x-x_0)^2+\frac1{3!}f'''(x_0)(x-x_0)^3+\cdots+\frac1{n!}f^{(n)}(x_0)(x-x_0)^n+R_n(x)\\ &=\sum_{i=0}^n\frac{f^{(i)}(x_0)}{i!}(x-x_0)^i+R_n(x) \end{aligned}

其中Rn(x)R_n(x)称为泰勒公式的余项,当nn充分大时,Rn(x)R_n(x)趋于0。 对泰勒公式求n阶导,其在x0x_0处的值为f(n)(x0)f^{(n)}(x_0)

Logistic分布

XX是连续随机变量,XX服从Logistic分布是指XX具有下列分布函数和密度函数:

F(x)=P(Xx)=11+exμγf(x)=F(x)=exμγγ(1+exμγ)2\begin{aligned} F(x)&=P(X\le x)=\frac1{1+e^{-\frac{x-\mu}\gamma}}\\ f(x)&=F'(x)=\frac{e^{-\frac{x-\mu}\gamma}}{\gamma(1+e^{-\frac{x-\mu}\gamma})^2} \end{aligned}

式中,μ\mu为位置参数,γ>0\gamma>0为形状参数。Logistic函数是一条以点(μ,12)(\mu,\frac12)为中心对称的S型曲线

Logistic分布函数.png

Logistic密度函数.png

Sigmoid函数

Sigmoid函数是激励函数的一种,在神经网络中具有重要作用。其中的重要代表就是Logistic函数,为当位置参数μ=0\mu=0,形状参数γ=1\gamma=1时的Logistic分布函数,表达式为

y=11+ezy=\frac{1}{1+e^{-z}}

每一次进入神经网络节点的过程,都是先进行线性变换,再使用激励函数运算的过程。因此可有下式

{z=wTx+by=11+ez\begin{cases} z=\mathbf{w^T x}+b \\ y=\frac{1}{1+e^{-z}} \end{cases}

联合得到

y=11+e(wTx+b)y=\frac1{1+e^{-(\mathbf{w^T x}+b)}}

上式可变化为

lny1y=wTx+b\ln\frac{y}{1-y}=\mathbf{w^T x}+b

Logistic回归

若将yy视为样本x\mathbf x作为正例的可能性P(y=1x)P(y=1|\mathbf x),则1y1-y是其反例可能性P(y=0x)P(y=0|\mathbf x),则有

P(y=1x)=11+e(wTx+b)=ewTx+b1+ewTx+bP(y=0x)=11+ewTx+blnP(y=1x)P(y=0x)=wTx+b\begin{aligned} P(y=1|\mathbf x)&=\frac1{1+e^{-(\mathbf{w^T x}+b)}}=\frac{e^{\mathbf{w^T x}+b}}{1+e^{\mathbf{w^T x}+b}}\\ P(y=0|\mathbf x)&=\frac1{1+e^{\mathbf{w^T x}+b}}\\ \ln\frac{P(y=1|\mathbf x)}{P(y=0|\mathbf x)}&=\mathbf{w^T x}+b \end{aligned}

参数估计

给定数据集(xi,yi)i=1m{(\mathbf x_i,y_i)}_{i=1}^m,Logistic回归模型最大化对数似然

LL(w,b)=lni=1mP(yixi;w,b)=i=1mlnP(yixi;w,b)\begin{aligned} LL(\mathbf w,b)&=\ln\prod_{i=1}^mP(y_i|\mathbf x_i;\mathbf w,b)\\ &=\sum_{i=1}^m\ln P(y_i|\mathbf x_i;\mathbf w,b) \end{aligned}

w^=[wb],x^=[x1]\mathbf{\hat w}=\begin{bmatrix} \mathbf w \\ b \end{bmatrix},\hat{\mathbf x}=\begin{bmatrix}\mathbf x & 1\end{bmatrix},则wTx+b\mathbf{w^T x}+b可简写为w^Tx^\mathbf{\hat w^T\hat x}。根据事件的独立性,

P(yixi;w,b)=P(y=1xi^;w^)yiP(y=0xi^;w^)1yi=(11+ew^Tx^i)yi(11+ew^Tx^i)1yi\begin{aligned} P(y_i|\mathbf x_i;\mathbf w,b)&=P(y=1|\hat{\mathbf x_i};\mathbf{\hat w})^{y_i}P(y=0|\hat{\mathbf x_i};\mathbf{\hat w})^{1-y_i}\\ &=\left(\frac1{1+e^{-\mathbf{\mathbf{\hat w}^T\hat x_i}}}\right)^{y_i}\left(\frac1{1+e^{\mathbf{\mathbf{\hat w}^T\hat x_i}}}\right)^{1-y_i} \end{aligned}

经写者多方排查,上式在不同的书中结果是不一致的,主要代表为周志华的《机器学习》和李航的《统计学习方法》。周志华的《机器学习》可能是采用了全概率公式,推导过程有误,这里以李航《统计学习方法》的为准。 代入对数似然得

LL(w^)=i=1mln(11+ew^Tx^i)yi(11+ew^Tx^i)1yi=i=1m[w^Tx^iyiln(1+ew^Tx^i)]\begin{aligned} LL(\mathbf{\hat w})&=\sum_{i=1}^m\ln\left(\frac1{1+e^{-\mathbf{\mathbf{\hat w}^T\hat x_i}}}\right)^{y_i}\left(\frac1{1+e^{\mathbf{\mathbf{\hat w}^T\hat x_i}}}\right)^{1-y_i}\\ &=\sum_{i=1}^m[\mathbf{\hat w^T\hat x_i}y_i-\ln(1+e^{\mathbf{\mathbf{\hat w}^T\hat x_i}})] \end{aligned}

LL(w^)LL(\mathbf{\hat w})求在极大值时的w^\mathbf{\hat w}等价于求LL(w^)-LL(\mathbf{\hat w})在极小值时的w^\mathbf{\hat w},即

w^=argmaxw^LL(w^)=argmaxw^i=1m[w^Tx^iyiln(1+ew^Tx^i)]=argminw^(LL(w^))=argminw^i=1m[ln(1+ew^Tx^i)w^Tx^iyi]\begin{aligned} \mathbf{\hat w}&=\arg\max_{\mathbf{\hat w}}LL(\mathbf{\hat w}) =\arg\max_{\mathbf{\hat w}}\sum_{i=1}^m[\mathbf{\hat w^T\hat x_i}y_i-\ln(1+e^{\mathbf{\mathbf{\hat w}^T\hat x_i}})]\\ &=\arg\min_{\mathbf{\hat w}}(-LL(\mathbf{\hat w})) =\arg\min_{\mathbf{\hat w}}\sum_{i=1}^m[\ln(1+e^{\mathbf{\mathbf{\hat w}^T\hat x_i}})-\mathbf{\hat w^T\hat x_i}y_i] \end{aligned}

梯度下降法

梯度下降法又称最速下降法,是求解无约束最优化问题的一种最常用的方法,具有实现简单的优点,梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量。 针对Sigmoid函数,要求解的无约束最优化问题是

min(f(w^))=min(LL(w^))\min(f(\mathbf{\hat w}))=\min(-LL(\mathbf{\hat w}))

w^\mathbf{\hat w}^*表示目标函数f(w^)f(\mathbf{\hat w})的极小点。 梯度下降法是一种迭代算法。选取适当的初值w^0\mathbf{\hat w}_0,不断迭代,更新w^\mathbf{\hat w}的值,进行目标函数的极小化,直到收敛。由于负梯度方向是使函数值下降最快的方向,在迭代的每一步,以负梯度方向更新w^\mathbf{\hat w}的值,从而达到减少函数值的目的。 由于f(w^)f(\mathbf{\hat w})具有一阶连续偏导数,若第kk次迭代值为w^k\mathbf{\hat w}_k,可求得f(w^)f(\mathbf{\hat w})w^k\mathbf{\hat w}_k的梯度为:

G(w^k)=f(w^k))=f(w^k)w^k=i=1m(11+ew^kTx^iyi)x^iG(\mathbf{\hat w}_k)=\nabla f(\mathbf{\hat w}_k))=\frac{\partial f(\mathbf{\hat w}_k)}{\partial\mathbf{\hat w}_k}=\sum_{i=1}^m\left(\frac{1}{1+e^{-\mathbf{\mathbf{\hat w}_k^T\hat x_i}}}-y_i\right)\mathbf{\hat x_i}

给定一个精度ϵ\epsilon,一般取较小值,当G(w^k)<ϵ||G(\mathbf{\hat w}_k)||<\epsilon时,停止迭代。此时找到了符合精度要求的极小值解w^=w^k\mathbf{\hat w}^*=\mathbf{\hat w}_k;否则,令新的点w^k+1=w^kϵG(w^k)\mathbf{\hat w}_{k+1}=\mathbf{\hat w}_k-\epsilon G(\mathbf{\hat w}_k),继续迭代。

牛顿法

牛顿法基于一个二阶泰勒展开来近似w^0\mathbf{\hat w}_0附近的f(w^)f(\mathbf{\hat w})

f(w^)f(w^0)+(w^w^0)Tf(w^0)+12(w^w^0)T2f(w^0)(w^w^0)f(w^0)+(w^w^0)Ti=1m(11+ew^kTx^iyi)x^i+12(w^w^0)T[i=1mew^kTx^i(1+ew^kTx^i)2x^ix^iT](w^w^0)\begin{aligned} f(\mathbf{\hat w})&\approx f(\mathbf{\hat w}_0)+(\mathbf{\hat w}-\mathbf{\hat w}_0)^T\nabla f(\mathbf{\hat w}_0)+\frac12(\mathbf{\hat w}-\mathbf{\hat w}_0)^T\nabla^2f(\mathbf{\hat w}_0)(\mathbf{\hat w}-\mathbf{\hat w}_0)\\ &\approx f(\mathbf{\hat w}_0)+(\mathbf{\hat w}-\mathbf{\hat w}_0)^T\sum_{i=1}^m\left(\frac{1}{1+e^{-\mathbf{\mathbf{\hat w}_k^T\hat x_i}}}-y_i\right)\mathbf{\hat x_i}+\frac12(\mathbf{\hat w}-\mathbf{\hat w}_0)^T\left[\sum_{i=1}^m\frac{e^{\mathbf{\mathbf{\hat w}_k^T\hat x_i}}}{(1+e^{\mathbf{\mathbf{\hat w}_k^T\hat x_i}})^2}\mathbf{\hat x}_i\mathbf{\hat x}_i^T\right](\mathbf{\hat w}-\mathbf{\hat w}_0) \end{aligned}

其中H(f(w^0))=2f(x0)H(f(\mathbf{\hat w}_0))=\nabla^2 f(\mathbf{x_0})是Hessian矩阵,详见神经网络基础——矩阵求导运算 给定精度ϵ\epsilon,假设w^k+1\mathbf{\hat w}_{k+1}满足精度条件

0G(w^k+1)=f(w^k+1)<ϵ0\approx G(\mathbf{\hat w}_{k+1})=\nabla f(\mathbf{\hat w}_{k+1})<\epsilon

则有

G(w^k)((w^k+1w^k)T)1(f(w^k+1)f(w^k))f(w^k)+122f(w^k)(w^k+1w^k)0G(\mathbf{\hat w}_k)\approx((\mathbf{\hat w}_{k+1}-\mathbf{\hat w}_k)^T)^{-1}(f(\mathbf{\hat w}_{k+1})-f(\mathbf{\hat w}_k))\approx\nabla f(\mathbf{\hat w}_k)+\frac12\nabla^2f(\mathbf{\hat w}_k)(\mathbf{\hat w}_{k+1}-\mathbf{\hat w}_k)\approx0

由上式可得迭代公式

w^k+1=w^k2H(f(w^0))1G(w^k)\mathbf{\hat w}_{k+1}=\mathbf{\hat w}_k-2H(f(\mathbf{\hat w}_0))^{-1}G(\mathbf{\hat w}_k)

拟牛顿法

牛顿法由于每次迭代都需要计算一次黑塞矩阵的逆矩阵,这一过程比较复杂。拟牛顿法的思想是构造一个近似矩阵NN来替代黑塞矩阵的逆H1H^{-1}。常用的算法有DFP算法(Davidon-Fletcher-Powell, DFP algorithm)、BFGS(Broyden-Fletcher-Goldfarb-Shanno, BFGS algorithm)、Broyden类算法(Broyden's algorithm)等。由于篇幅原因,这里不再赘述。后续另开篇幅单独介绍。