Softmax回归

From Ufldl

Jump to: navigation, search
(简介)
(代价函数 Cost Function)
Line 67: Line 67:
== 代价函数 Cost Function ==
== 代价函数 Cost Function ==
-
'''原文''':
+
现在我们来介绍softmax回归算法的代价函数。在下面的公式中,<math>1\{\cdot\}</math>是示性函数,其取值规则为:
-
 
+
<math>1\{</math> 值为真的表达式<math>\}=1</math>
-
We now describe the cost function that we'll use for softmax regression.  In the equation below, <math>1\{\cdot\}</math> is
+
<math>1\{</math> 值为假的表达式<math>\}=0</math>。举例来说,表达式<math>1\{2+2=4\}</math>的值为1 ,<math>1\{1+1=5\}</math>的值为 0。我们的代价函数为:
-
the '''indicator function,''' so that <math>1\{\hbox{a true statement}\}=1</math>, and <math>1\{\hbox{a false statement}\}=0</math>.
+
-
For example, <math>1\{2+2=4\}</math> evaluates to 1; whereas <math>1\{1+1=5\}</math> evaluates to 0. Our cost function will be:
+
<math>
<math>
Line 79: Line 77:
</math>
</math>
-
'''译文''':
 
-
在本节中,我们定义 softmax回归的损失函数。在下面的公式中,<math>1\{\cdot\}</math>是一个标识函数,1{值为真的表达式}=1,1{值为假的表达式}=0。例如,表达式 1{2+2=4}的值为1 ,1{1+1=5}的值为 0。我们的损失函数为:
 
-
<math>
 
-
\begin{align}
 
-
J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k}  1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}\right]
 
-
\end{align}
 
-
</math>
 
-
'''一审''':
+
值得注意的是,上述公式是logistic回归代价函数的推广。 logistic回归代价函数可以改为:
-
现在我们来介绍用于softmax回归算法的代价函数。在下面的公式中,<math>1\{\cdot\}</math>是示性函数,其取值规则为:1{值为真的表达式}=1,1{值为假的表达式}=0。举例来说,表达式1{2+2=4}的值为1 ,1{1+1=5}的值为 0。我们的代价函数为:
+
-
<math>
+
-
\begin{align}
+
-
J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k}  1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}\right]
+
-
\end{align}
+
-
</math>
+
-
 
+
-
 
+
-
'''原文''':
+
-
 
+
-
Notice that this generalizes the logistic regression cost function, which could also have been written:
+
<math>
<math>
Line 107: Line 87:
</math>
</math>
-
'''译文''':
 
-
值得注意的是,上述公式是logistic回归损失函数的一个泛化版。 logistic回归损失函数可以改写如下:
+
可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的<math>k</math>个可能值进行了累加。注意在Softmax回归中将<math>x</math>分类为类别<math>j</math>的概率为:
-
+
-
<math>
+
-
\begin{align}
+
-
J(\theta) &= -\frac{1}{m} \left[ \sum_{i=1}^m  (1-y^{(i)}) \log (1-h_\theta(x^{(i)})) + y^{(i)} \log h_\theta(x^{(i)}) \right] \\
+
-
&= - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=0}^{1} 1\left\{y^{(i)} = j\right\} \log p(y^{(i)} = j | x^{(i)} ; \theta) \right]
+
-
\end{align}
+
-
</math>
+
-
 
+
-
'''一审''':
+
-
值得注意的是,上述公式是logistic回归代价函数的一个泛化版。 logistic回归代价函数 可以改写如下:
+
-
<math>
 
-
\begin{align}
 
-
J(\theta) &= -\frac{1}{m} \left[ \sum_{i=1}^m  (1-y^{(i)}) \log (1-h_\theta(x^{(i)})) + y^{(i)} \log h_\theta(x^{(i)}) \right] \\
 
-
&= - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=0}^{1} 1\left\{y^{(i)} = j\right\} \log p(y^{(i)} = j | x^{(i)} ; \theta) \right]
 
-
\end{align}
 
-
</math>
 
-
 
-
'''原文''':
 
-
 
-
The softmax cost function is similar, except that we now sum over the <math>k</math> different possible values
 
-
of the class label.  Note also that in softmax regression, we have that
 
<math>
<math>
p(y^{(i)} = j | x^{(i)} ; \theta) = \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)}} }
p(y^{(i)} = j | x^{(i)} ; \theta) = \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)}} }
</math>.
</math>.
-
'''译文''':
 
-
可以看到,Softmax损失函数与logistic 损失函数在形式上非常类似,只是在Softmax损失函数将类标的开 k个可能值进行了累加,另外,
 
-
'''一审''':
+
对于<math>J(\theta)</math>的最小化问题,目前还没有闭式解法。因此,我们使用迭代的优化算法(例如梯度下降法,或 L-BFGS)。经过求导,我们得到梯度公式如下:
-
 
+
-
除了我们是对 k 个分类标记的概率值求和之外,Softmax回归的代价函数和上式是十分相似的。我们可以注意到在Softmax回归中概率值为:
+
-
 
+
-
'''原文''':
+
-
 
+
-
There is no known closed-form way to solve for the minimum of <math>J(\theta)</math>, and thus as usual we'll resort to an iterative
+
-
optimization algorithm such as gradient descent or L-BFGS.  Taking derivatives, one can show that the gradient is:
+
<math>
<math>
Line 154: Line 103:
</math>
</math>
-
'''译文''':
 
-
对于<math>J(\theta)</math>,现在还没有一个闭合形式的方法来求解,因此,我们使用一个迭代的优化算法(例如梯度下降法,或 L-BFGS)来求解<math>J(\theta)</math>。经过求导,我们得到梯度公式如下:
 
-
 
-
<math>
 
-
\begin{align}
 
-
\nabla_{\theta_j} J(\theta) = - \frac{1}{m} \sum_{i=1}^{m}{ \left[ x^{(i)} \left( 1\{ y^{(i)} = j\}  - p(y^{(i)} = j | x^{(i)}; \theta) \right) \right]  }
 
-
\end{align}
 
-
</math>
 
-
 
-
'''一审''':
 
-
对于<math>J(\theta)</math>,现在还没有一个闭合形式的方法来求解,因此,我们使用一个迭代的优化算法(例如梯度下降法,或 L-BFGS)来求解<math>J(\theta)</math>。经过求导,我们得到梯度公式如下:
 
-
 
-
<math>
 
-
\begin{align}
 
-
\nabla_{\theta_j} J(\theta) = - \frac{1}{m} \sum_{i=1}^{m}{ \left[ x^{(i)} \left( 1\{ y^{(i)} = j\}  - p(y^{(i)} = j | x^{(i)}; \theta) \right) \right]  }
 
-
\end{align}
 
-
</math>
 
-
 
-
 
-
'''原文''':
 
-
 
-
Recall the meaning of the "<math>\nabla_{\theta_j}</math>" notation.  In particular, <math>\nabla_{\theta_j} J(\theta)</math>
 
-
is itself a vector, so that its <math>l</math>-th element is <math>\frac{\partial J(\theta)}{\partial \theta_{jl}}</math>
 
-
the partial derivative of <math>J(\theta)</math> with respect to the <math>l</math>-th element of <math>\theta_j</math>.
 
-
 
-
 
-
'''译文''':
 
-
让我们来回顾一下 "<math>\nabla_{\theta_j}</math>" 的含义, <math>\nabla_{\theta_j} J(\theta)</math>是一个向量,因此,它的第 l个元素<math>\frac{\partial J(\theta)}{\partial \theta_{jl}}</math>是<math>J(\theta)</math>对<math>\theta_j</math>的第l个元素求偏导后的值。
 
-
 
-
'''一审''':
 
-
让我们来回顾一下 符号 "<math>\nabla_{\theta_j}</math>" 的含义。特别地, <math>\nabla_{\theta_j} J(\theta)</math>本身是一个向量,因此它的第 l个元素<math>\frac{\partial J(\theta)}{\partial \theta_{jl}}</math>是<math>J(\theta)</math>对<math>\theta_j</math>的第l个分量的偏导数。
 
-
 
-
'''原文''':
 
-
 
-
Armed with this formula for the derivative, one can then plug it into an algorithm such as gradient descent, and have it
 
-
minimize <math>J(\theta)</math>.  For example, with the standard implementation of gradient descent, on each iteration
 
-
we would perform the update <math>\theta_j := \theta_j - \alpha \nabla_{\theta_j} J(\theta)</math> (for each <math>j=1,\ldots,k</math>).
 
-
When implementing softmax regression, we will typically use a modified version of the cost function described above;
+
让我们来回顾一下符号"<math>\nabla_{\theta_j}</math>"的含义。<math>\nabla_{\theta_j} J(\theta)</math>本身是一个向量,它的第<math>l</math>个元素<math>\frac{\partial J(\theta)}{\partial \theta_{jl}}</math>是<math>J(\theta)</math>对<math>\theta_j</math>的第<math>l</math>个分量的偏导数。
-
specifically, one that incorporates weight decay.  We describe the motivation and details below.
+
-
'''译文''':
 
-
有了上面的偏导公式以后,我们可以将它带入到算法中来最小化 <math>J(\theta)</math>。例如,使用标准的梯度下降法,在每一次迭代过程中,我们更新 <math>\theta_j := \theta_j - \alpha \nabla_{\theta_j} J(\theta)</math>。
 
-
在实际的 softmax 实现过程中,我们通常使用一个改进版的损失函数(一个加入了权重 decay 的函数),在下面会详细讲到。
 
-
'''一审''':
+
有了上面的偏导数公式以后,我们就可以将它代入到梯度下降法等算法中,来最小化<math>J(\theta)</math>。 例如,在梯度下降法的标准实现中,每一次迭代需要进行如下更新:<math>\theta_j := \theta_j - \alpha \nabla_{\theta_j} J(\theta)</math>(<math>j=1,\ldots,k</math>)。
-
有了上面的偏导数公式以后,我们就可以将它带入到梯度下降法等算法中,来使<math>J(\theta)</math>最小化。 例如,在梯度下降法标准实现的每一次迭代中,我们需要进行如下更新 :<math>\theta_j := \theta_j - \alpha \nabla_{\theta_j} J(\theta)</math>(对于每一个 <math>j=1,\ldots,k</math>
+
-
当实现 softmax 回归算法时, 我们通常会使用 上述代价函数的一个改进版本。具体来说,就是和 权重衰减 一起使用。我们接下来会描述使用它的动机和细节。
+
 +
当实现 softmax 回归算法时, 我们通常会使用上述代价函数的一个改进版本。具体来说,就是和权重衰减(weight decay)一起使用。我们接下来介绍使用它的动机和细节。
== softmax回归参数化的特性 Properties of softmax regression parameterization ==
== softmax回归参数化的特性 Properties of softmax regression parameterization ==

Revision as of 05:42, 16 March 2013

Personal tools