你真的了解Softmax吗?

2. 逻辑回归

Logistic回归主要用于二分类任务,其本质是假设数据服从某个分布,然后使用极大似然估计做参数估计。

2.1 对比线性回归

逻辑回归和线性回归都是一种广义线性模型。看下面这个例子:

对于Tumor的良性和恶性这个二分类问题,0表示负类为良性,1表示正类为恶性。下图展示了在这8个训练样本下,使用线性回归模型hθ(x)=ΘTxh_\theta(x)=\Theta^Tx可能拟合出下图中的红线。

此时我们可以正确判别肿瘤是良性还是恶性的:根据这条直线可以找到一个阈值,比如 hθ(x)=0.5h_\theta(x)=0.5,当hθ(x)0.5h_\theta(x)\geq0.5时预测y=1y=1为恶性,当hθ(x)<0.5h_\theta(x)<0.5时预测y=0y=0为良性。

现在如果我们添加一个训练样本,线性回归可能拟合出下面的蓝线:

此时如果我们任然选取hθ(x)=0.5h_\theta(x)=0.5作为阈值,此时线性回归模型表现十分差劲,它会把正类样本错误分类成负类。这是因为:对于分类任务y=0 or 1y=0\ or\ 1,但是线性回归的假设函数hθ(x)h_\theta(x)可能远远大于1或者小于0,这回导致线性回归模型在分类任务中表现很差。

2.2 假设函数

在逻辑回归中,我们选取的假设函数满足0hθ(x)10\leq h_\theta(x)\leq 1。我们对线性回归模型做如下改变:

\begin{equation} h_\theta(x)=g(\theta^Tx)\\ g(z)=\frac{1}{1+e^{-z}} \end{equation}

其中g(z)g(z)就是我们常说的Sigmoid函数或者称之为Logistic函数。Sigmoid函数如下如下图所示,可以保证假设函数0hθ(x)10\leq h_\theta(x)\leq 1

对于Logistic回归模型,给定输入x和拟合的参数θ\theta,模型会输出该样本为正例的概率hθ(1x;θ)h_\theta(1|x;\theta)。以肿瘤分类问题为例,x=[x0,x1]T=[1,tumorSize]Tx=[x_0,x_1]^T=[1,tumorSize]^Thθ(x)=0.7h_\theta(x)=0.7,表示该肿瘤有70%的概率为恶性肿瘤。

2.3 决策边界

上面介绍了逻辑回归的假设函数,那么这个假设函数到底在计算什么呢?模型是如何完成分类任务的呢?下面就介绍一下逻辑回归的分类原理——决策边界。

在逻辑回归中hθ(x)=g(θTx)h_\theta(x)=g(\theta^Tx)g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}。假设hθ(x)0.5h_\theta(x)\ge0.5时预测y=1y=1hθ(x)<0.5h_\theta(x)<0.5时预测y=0y=0,也就是:

  • z0z\ge0时,g(z)0.5g(z)\ge0.5hθ(x)0.5h_\theta(x)\ge0.5,预测y=1y=1
  • z<0z<0时,g(z)<0.5g(z)<0.5hθ(x)<0.5h_\theta(x)<0.5,预测y=0y=0

可以发现:决策边界只取决于我们拟合出的参数和特征维度,和训练集无关。换句话说,一旦我们拟合出了模型参数,我们就唯一确定了模型的决策边界,模型也就训练成功了。那么我们如何拟合模型参数θ\theta呢?

2.4 如何拟合参数θ\theta

首先我们重新梳理下逻辑回归模型的主体:

  • 训练集:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}m个训练样本
  • 特征:x[x0,x1,...,xn]Tx\in[x_0,x_1,...,x_n]^Tx0=1,y{0,1}x_0=1,y\in\{0,1\}
  • 假设函数:hθ(x)=11+eθTxh_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}
  • **学习目标:**拟合出最优的模型参数θ\theta

2.4.1 代价函数

首先回顾下线性回归中的代价函数:J(\theta)=\frac{1}{m}\sum_\limits{i+1}^m\frac{1}{2}(h_\theta(x^{i})-y^{(i)})^2。我们令Cost(hθ(x),y)=12(hθ(x)y)2Cost(h_\theta(x),y)=\frac{1}{2}(h_\theta(x)-y)^2,则J(θ)=1mi+1mCost(hθ(x(i)),y(i))J(\theta)=\frac{1}{m}\sum\limits_{i+1}^mCost(h_\theta(x^{(i)}),y^{(i)}),这个代价函数在线性回归中很好用。但是在逻辑回归中,hθ(x)h_\theta(x)是非线性的Sigmoid函数,这会如下图所示,导致代价函数是非凸的,使用梯度下降优化模型时无法保证收敛到全局最优点:

所以,在我们需要改进代价函数,设计如下代价函数:

f(x)={log(hθ(x))if y=1log(1hθ(x))if y=0f(x)=\left\{ \begin{aligned} -log(h_\theta(x))\quad if\ y=1\\ -log(1-h_\theta(x))\quad if\ y=0 \end{aligned} \right.

我们可以绘制出y=log(z)y=-log(z)y=log(1hθ(x))y=-log(1-h_\theta(x))的函数图像:

此时我们可以发现这样的代价函数具有很好地性质,以y=1为例:

  • z=hθ(x)=1z=h_\theta(x)=1时,表明我们的预测完全正确,代价函数值为0
  • z=hθ(x)z=h_\theta(x)趋向于0时,表明我们的预测完全错误,代价函数值趋向于无穷大

这和我们的逻辑是相符合的。

2.4.2 梯度下降

为了求代价函数的导数,我们可以将上面的代价函数变形为:Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))Cost(h_\theta(x),y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x)),不难验证这和上面的分段函数是等价的。所以我们的整体代价函数为:

J(θ)=1mi=1mCost(hθ(x(i),y(i))=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]\begin{aligned} J(\theta)&=\frac{1}{m}\sum\limits_{i=1}^mCost(h_\theta(x^{(i)},y^{(i)})\\ &=-\frac{1}{m}[\sum\limits_{i=1}^my^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)}))] \end{aligned}

为了拟合最优的参数θ\theta,我们需要最小化代价函数,即minθJ(θ)\mathop{min}\limits_\theta J(\theta)。最小化代价函数的方法就是梯度下降,不断执行下面的操作,直到收敛:

\begin{equation} \theta_j:=\theta_j-\alpha\frac{\partial J(\theta)}{\partial \theta_j}\\ \frac{\partial J(\theta)}{\partial \theta_j}=\sum\limits_{i=1}^m(h_\theta(x^{i})-y^{(i)})x_j^{i} \end{equation}

3. Softmax

上面的逻辑回归通常用于二分类问题,对于多分类问题,比如将动物分成猫、狗、其他三个类别,此时要想完成该分类任务需要两个逻辑回归分类器,首先使用一个分类器将其分成猫和其他两个类别,如果分类结果为其他,再使用另外一个分类器将“其他”分类成狗和其他两个类别。如果分类的类别很多,这样分类会非常麻烦,所以大家就提出了Softmax用于多分类任务。

3.1 计算方法

Softmax用于多分类过程,通常是神经网络的最后一层,它将前一层神经元的输出映射到(0,1)区间内,将其看成属于某个类别的概率来进行多分类。因此,Softmax层的神经元个数就等于类别数,其计算方法如下:

Si=ezijezjS_i=\frac{e^{z^i}}{\sum_je^{z^j}}

其中ziz^i表示第i个元素的值,SiS_i表示该元素计算出的Softmax值,更形象的如下图所示:

不难验证计算出的所有的Softmax值得和为1,我么可以将这些softmax值视为概率,我们选取其中值最大的(也就是概率最大)的节点作为我们的预测类别。

Softmax具有一些比较好的性质:

  • 单调性,如果ziz_i增大,那么yiy_i增大,yj,ijy_j,i\neq j减小(可以通过导数进行验证)
  • 非局部性,任何输出的yiy_i都依赖所有带权输入,因为计算公式的分母为kezk\sum_ke^{z_k}
  • 归一化,所有输出之和为1,可以将输出看做概率

3.2 在神经网络中的应用

用于分类任务的深度神经网络最后一层往往都是Softmax层,其通常由全连接层+Softmax组成,如下图所示:

其计算过程y^=softmax(z)=softmax(WTx+b)\hat y=softmax(z)=softmax(W^Tx+b)包含两步,其中softmax(zj)=ezjKezjsoftmax(z_j)=\frac{e^{z_j}}{\sum_Ke^{z_j}}

  • 第一步:全连接层将权重矩阵与输入向量想乘再加上偏置,即z=wx+bz=w·x+b,将n个(,+)(-\infty,+\infty)的实数映射为K个(,+)(-\infty,+\infty)的实数
  • 第二步:Softmax将K个(,+)(-\infty,+\infty)的实数映射为K个(0,1)(0,1)的实数,且K个数之和为1

3.3 理解Softmax

3.3.1 加权角度

通常把网络最后一个全连接层(Softmax层)的输入x看作网络提取到的特征:

zj=wjx+bj=wj1x1+wj2x2+...+wjnxn+bjz_j=w_j·x+b_j=w_{j1}x_1+w_{j2}x_2+...+w_{jn}x_n+b_j

其中zjz_j可以看做该样本属于类别jj的得分,然后通过softmax(zj)softmax(z_j)对分数进行归一化,将其映射为属于类别jj的概率。从这个角度可以这样理解上式:特征x的每一个维度xix_i都对该样本是否属于j类别有一定的影响,我们对所有维度进行加权求和就能够得到该样本属于j类的总分,而其中wjiw_{ji}表示加权求和时特征第i个维度的值的权重。

3.3.2 模板匹配角度

如下图所示,我们可以将wjw_j视为第j类的特征模板,Softmax层的计算可以看做是特征与每个模板进行模板匹配,计算样本特征和每个类别特征模板之间的相似度,最后再通过softmax计算将其映射成概率。

如果只有一个全连接层的神经网络(等价于线性分类器),我们可以将每个类别的特征模板直接可视化如下:

如果是多层神经网络,最后一个全连接层的模板是特征空间的模板,可视化需要映射回输入空间。

3.3.3 几何角度

将最后一个全连接层的输入x看做特征,一个特征对应多维空间中的一个点。

对于二分类问题,使用线性分类器y^=wx+b\hat y=w·x+b,若y^0\hat y\ge0即位于超平面上方为正类,若y^<0\hat y<0位于超平面下方为负类。

对于多分类问题,我们就需要为每个类别都设置一个超平面,通过空间中特征点到各个超平面的距离判断样本所属类别。wjw_j为每个超平面的法向量,指向正值方向,特征点到各个超平面的距离为:

dj=wjx+bjwjd_j=\frac{w_j·x+b_j}{||w_j||}

softmax层计算的得分zj=wjdjz_j=||w_j||d_j,再通过softmax将zjz_j映射为概率。如下图所示:

3.4 Softmax的反向传播

3.4.1 损失函数

多分类问题中通常采用交叉熵作为损失函数:

L=i=1myilogaiLL = -\sum\limits_{i=1}^{m}y_iloga_i^L

其中a=[a1L,a2L,...,amL]Ta=[a_1^L,a_2^L,...,a_m^L]^Ty=[y1,y2,...,ym]my=[y_1,y_2,...,y_m]^m

在分类任务中y通常为one-hot向量,所以损失函数可以简化为:

L=logaoLL=-loga_o^L

其中oo为目标类赌赢的维度,即one-hot向量中1对应的维度。

3.4.2 反向传播

要进行反向传播,我们首先需要计算下面这个偏导向量(梯度):

δL=CzL\delta^L=\frac{\partial C}{\partial z^L}

然后根据这个梯度δL\delta^L更新相应的参数。下面我们来计算上面公式具体等于什么:

  1. 首先根据链式法则,有δL=CzL=CaLaLzL\delta^L=\frac{\partial C}{\partial z^L}=\frac{\partial C}{\partial a^L}\frac{\partial a^L}{\partial z^L}

  2. C为交叉熵损失函数C=logaoLC=-loga_o^L,下面计算CaL\frac{\partial C}{\partial a^L}

    • 如果i=oi=o,那么CaiL=1aiL\frac{\partial C}{\partial a_i^L}=-\frac{1}{a_i^L}

      注:这里的log的底数默认是e,信息论理交叉熵使用的底数是2。这里使用什么底数并不重要,只是导致最终的损失相差一个常数倍而已。

    • 如果ioi\neq o,那么CaiL=0\frac{\partial C}{\partial a_i^L}=0

    所以CaL=[0,0,...,1aoL,...,0]\frac{\partial C}{\partial a^L}=[0,0,...,\frac{1}{a_o^L},...,0],其中o是目标类对应的维度。

  3. aLzL\frac{\partial a^L}{\partial z^L}对应全连接层,aLa^L是一个向量,zLz^L也是一个向量,aLzL\frac{\partial a^L}{\partial z^L}得到的是一个雅克比矩阵:

    aLzL=[a1Lz1La1Lz2L...a1LzmLa2Lz1La2Lz2L...a2LzmL............amLz1LamLz2L...amLzmL]\frac{\partial a^L}{\partial z^L}=\left[ \begin{matrix} \frac{\partial a_1^L}{\partial z_1^L} & \frac{\partial a_1^L}{\partial z_2^L} & ... &\frac{\partial a_1^L}{\partial z_m^L} \\ \frac{\partial a_2^L}{\partial z_1^L} & \frac{\partial a_2^L}{\partial z_2^L} & ... &\frac{\partial a_2^L}{\partial z_m^L} \\ ... & ...& ...& ...&\\ \frac{\partial a_m^L}{\partial z_1^L} & \frac{\partial a_m^L}{\partial z_2^L} & ... &\frac{\partial a_m^L}{\partial z_m^L} \end{matrix} \right]

    softmax公式为:aiL=eziLj=1mezjLa_i^L=\frac{e^{z_i^L}}{\sum_{j=1}^me^{z_j^L}},根据求导公式有:

    aiLzjL=eziLzjLk=1mezkLeziLk=1mezkLzjL(k=1mezkL)2=eziLzjLk=1mezkLeziLezjL(k=1mezkL)2\frac{\partial a_i^L}{\partial z_j^L}=\frac{\frac{\partial e^{z_i^L}}{\partial z_j^L}\sum_{k=1}^me^{z_k^L}-e^{z_i^L}\frac{\partial \sum_{k=1}^me^{z_k^L}}{\partial z_j^L}}{(\sum_{k=1}^me^{z_k^L})^2}=\frac{\frac{\partial e^{z_i^L}}{\partial z_j^L}\sum_{k=1}^me^{z_k^L}-e^{z_i^L}e^{z_j^L}}{(\sum_{k=1}^me^{z_k^L})^2}

    其中eziLzjL\frac{\partial e^{z_i^L}}{\partial z_j^L}需要讨论i和j的关系:

    • i=ji=j时,eziLzjL=eziL=ezjL\frac{\partial e^{z_i^L}}{\partial z_j^L}=e^{z_i^L}=e^{z_j^L}

      aiLzjL=eziLzjLk=1mezkLeziLezjL(k=1mezkL)2=eziLk=1mezkLeziLezjL(k=1mezkL)2=eziLk=1mezkLeziLezjL(k=1mezkL)2eziLk=1mezkLezjLk=1mezkL=aiLaiLajL=aiL(1aiL)\begin{aligned} \frac{\partial a_i^L}{\partial z_j^L}&=\frac{\frac{\partial e^{z_i^L}}{\partial z_j^L}\sum_{k=1}^me^{z_k^L}-e^{z_i^L}e^{z_j^L}}{(\sum_{k=1}^me^{z_k^L})^2}\\ &=\frac{e^{z_i^L}\sum_{k=1}^me^{z_k^L}-e^{z_i^L}e^{z_j^L}}{(\sum_{k=1}^me^{z_k^L})^2}\\ &=\frac{e^{z_i^L}\sum_{k=1}^me^{z_k^L}-e^{z_i^L}e^{z_j^L}}{(\sum_{k=1}^me^{z_k^L})^2}-\frac{e^{z_i^L}}{\sum_{k=1}^me^{z_k^L}}\frac{e^{z_j^L}}{\sum_{k=1}^me^{z_k^L}}\\ &=a_i^L-a_i^La_j^L\\ &=a_i^L(1-a_i^L) \end{aligned}

    • iji\neq j时,eziLzjL=0\frac{\partial e^{z_i^L}}{\partial z_j^L}=0

      aiLzjL=eziLzjLk=1mezkLeziLezjL(k=1mezkL)2=0k=1mezkLeziLezjL(k=1mezkL)2=eziLk=1mezkLezjLk=1mezkL=aiLajL\begin{aligned} \frac{\partial a_i^L}{\partial z_j^L}&=\frac{\frac{\partial e^{z_i^L}}{\partial z_j^L}\sum_{k=1}^me^{z_k^L}-e^{z_i^L}e^{z_j^L}}{(\sum_{k=1}^me^{z_k^L})^2}\\ &=\frac{0\sum_{k=1}^me^{z_k^L}-e^{z_i^L}e^{z_j^L}}{(\sum_{k=1}^me^{z_k^L})^2}\\ &=-\frac{e^{z_i^L}}{\sum_{k=1}^me^{z_k^L}}\frac{e^{z_j^L}}{\sum_{k=1}^me^{z_k^L}}\\ &=-a_i^La_j^L \end{aligned}

    最终我们可以得到:

    aLzL=[a1L(1a1L)a2La1L...amLa1La1La2La2L(1a2L)...amLa2L............a1LamLa2LamL...amL(1amL)]\frac{\partial a^L}{\partial z^L}=\left[ \begin{matrix} a_1^L(1-a_1^L) & -a_2^La_1^L & ... &-a_m^La_1^L \\ -a_1^La_2^L & a_2^L(1-a_2^L) & ... &-a_m^La_2^L \\ ... & ...& ...& ...&\\ -a_1^La_m^L & -a_2^La_m^L & ... &a_m^L(1-a_m^L) \end{matrix} \right]

  4. 我们对上面2、3步的推导结果合并后可得:

    δL=CzL=CaLaLzL=[a1L(1a1L)a2La1L...amLa1La1La2La2L(1a2L)...amLa2L............a1LamLa2LamL...amL(1amL)][0001ao00]=[a1L,a2L,...,aoL1,...,amL]T=[a1L0,a2L0,...,aoL1,...,amL0]T=aLy\begin{aligned} \delta^L&=\frac{\partial C}{\partial z^L}=\frac{\partial C}{\partial a^L}\frac{\partial a^L}{\partial z^L}\\ &=\left[ \begin{matrix} a_1^L(1-a_1^L) & -a_2^La_1^L & ... &-a_m^La_1^L \\ -a_1^La_2^L & a_2^L(1-a_2^L) & ... &-a_m^La_2^L \\ ... & ...& ...& ...&\\ -a_1^La_m^L & -a_2^La_m^L & ... &a_m^L(1-a_m^L) \end{matrix} \right]\left[\begin{matrix}0\\0\\0\\·\\-\frac{1}{a_o}\\0\\·\\0\end{matrix}\right]\\ &=[a_1^L,a_2^L,...,a_o^L-1,...,a_m^L]^T\\ &=[a_1^L-0,a_2^L-0,...,a_o^L-1,...,a_m^L-0]^T\\ &=a^L-y \end{aligned}

    我们可以发现softmax的梯度十分简洁,就是预测概率aLa^L和目标类别y的onehot向量之间的差,实现起来十分简单。

3.5 参考资料

https://zhuanlan.zhihu.com/p/40135042

https://zhuanlan.zhihu.com/p/25723112

https://www.cnblogs.com/shine-lee/p/10077961.html

4. 层次Softmax

4.1 简介

层次Softmax方法最先在word2vector模型中提出。word2vector模型有两种:一种是基于上下文预测某个单词的词袋模型CBOW,另一种是基于单词预测其可能的上下文的skip-gram模型。这两种方法在优化过程中都存在一个问题:

  • 问题:从隐藏层到输出 的Softmax层计算量很大,因为词汇表中的每个单词都可以看成一个类别,类别总数等于词汇表大小。
  • 解决方案:一种是负采样技术,另一种就是本文介绍的Hierachical Softmax

层次Softmax根据类别及其出现频率构建霍夫曼树(类别出现频率越高,树的路径越短),树的叶子节点代表类别标签,非叶子节点代表神经元,这样具有以下好处:

  • 假设有N个类别,使用softmax计算类别标签计算量为V,使用层次softmax计算量为logVlogV(N个类别相当于有N个叶子节点,树高度为logVlogV
  • 使用Huffman树,出现频率高的类别在树上端,这样高频类别标签计算的时间会更短

4.2 计算原理

假设有$C1\sim C88个类别的数据构成了上图所示的一棵Huffman树,每个叶子节点表示一个类别标签,非叶子节点类似神经元。新来一个节点8个类别的数据构成了上图所示的一棵Huffman树,每个叶子节点表示一个类别标签,非叶子节点类似神经元。新来一个节点X_i$后,从根节点开始,每个非叶子节点处都要执行一次二分类,计算走左边的概率(负类)和走右边的概率(正类),直到叶子节点:

P()=σ(Xiθ)=11+exiθP()=1σ(Xiθ)\begin{aligned} P(右)&=\sigma(X_i\theta)=\frac{1}{1+e^{x_i\theta}}\\ P(左)&=1-\sigma(X_i\theta) \end{aligned}

新节点XiX_i所走路径的最后一个叶子节点代表的类别即模型的预测结果YiY_i,预测XiX_i的标签为YiY_i的概率为:

P(YiXi)=j=2lP(djXi,θj1)P(Y_i|X_i)=\prod_{j=2}^lP(d_j|X_i,\theta_{j-1})

其中:

P(djXi,θj1)={σ(Xiθj1)if dj=11σ(Xiθj1)if dj=0P(d_j|X_i,\theta_{j-1})=\left\{ \begin{aligned} &\sigma(X_i\theta_{j-1})\quad &if\ d_j=1\\ &1-\sigma(X_i\theta_{j-1})\quad &if\ d_j=0 \end{aligned} \right.

主要我们可以得到:

P(YiXi)=j=2lP(djXi,θj1)=j=2l[σ(Xiθj1)]dj[1σ(Xiθj1)]1djP(Y_i|X_i)=\prod_{j=2}^lP(d_j|X_i,\theta_{j-1})=\prod_{j=2}^l[\sigma(X_i\theta_{j-1})]^{d_j}[1-\sigma(X_i\theta_{j-1})]^{1-d_j}

假设pp为预测XiX_i类别的路径,路径pp包含ll个节点{p1,p2,...,pl}\{p_1,p_2,...,p_l\},路径中每个非叶子节点执行二分类对应的参数为{θ1,θ2,...,θl1}\{\theta_1,\theta_2,...,\theta_{l-1}\}(因为最后节点为叶子节点,不需要执行二分类)。

4.3 梯度

如果我们和逻辑回归一样,采用交叉熵作为损失函数,则模型损失函数定义如下:

L=1ni=1nlog(P(YiXi))L=-\frac{1}{n}\sum_{i=1}^nlog(P(Y_i|X_i))

注:word2vector中采用的是对数似然函数作为损失函数,即L=1ni=1nlog(P(YiXi))L=\frac{1}{n}\sum_{i=1}^nlog(P(Y_i|X_i)),使用梯度上升法进行优化。

假设我们每次只采用一个样本进行梯度更新,则有:

L=log(P(YiXi))=log(j=2l[σ(Xiθj1)]dj[1σ(Xiθj1)]1dj)=j=2llog([σ(Xiθj1)]dj[1σ(Xiθj1)]1dj)=j=2l(djlog[σ(Xiθj1)]+(1dj)log[1σ(Xiθj1)])\begin{aligned} L &= -log(P(Y_i|X_i))\\ &=-log\Big(\prod_{j=2}^l[\sigma(X_i\theta_{j-1})]^{d_j}[1-\sigma(X_i\theta_{j-1})]^{1-d_j}\Big)\\ &=-\sum_{j=2}^llog\Big([\sigma(X_i\theta_{j-1})]^{d_j}[1-\sigma(X_i\theta_{j-1})]^{1-d_j}\Big)\\ &=-\sum_{j=2}^l(d_jlog[\sigma(X_i\theta_{j-1})]+(1-d_j)log[1-\sigma(X_i\theta_{j-1})]) \end{aligned}

这样我们可以求解L对X和θ\theta的梯度:

Lθj1=(djlog[σ(Xiθj1)]+(1dj)log[1σ(Xiθj1)])θj1=(1djσ(Xiθj1))Xi\begin{aligned} \frac{\partial L}{\partial\theta_{j-1}}&=-\frac{\partial({d_jlog[\sigma(X_i\theta_{j-1})]+(1-d_j)log[1-\sigma(X_i\theta_{j-1})])}}{\theta_{j-1}}\\ &=-(1-d_j-\sigma(X_i\theta_{j-1}))X_i \end{aligned}

LXi=j=2l(1djσ(Xiθj1))θj1\frac{\partial L}{\partial X_i}=-\sum_{j=2}^{l}(1-d_j-\sigma(X_i\theta_{j-1}))\theta_{j-1}

这样我们可以采用梯度下降法更新θ\thetaXX

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信