Softmax回归

From Ufldl

Jump to: navigation, search
(代价函数 Cost Function)
(softmax回归模型参数化的特点)
Line 113: Line 113:
== softmax回归模型参数化的特点==
== softmax回归模型参数化的特点==
-
Softmax回归有一个不寻常的特点:它有一个“冗余”的参数集。为了便于阐述这一特点,假设我们从参数向量<math>\theta_j</math>中减去了向量<math>\psi</math>,这时,每一个<math>\theta_j</math>都变成了<math>\theta_j - \psi</math>(<math>j=1, \ldots, k</math>)。此时假设函数变成了以下的式子:
+
Softmax回归有一个不寻常的特点:它有一个“冗余”的参数集。为了便于阐述这一特点,假设我们从参数向量<math>\textstyle \theta_j</math>中减去了向量<math>\textstyle \psi</math>,这时,每一个<math>\textstyle \theta_j</math>都变成了<math>\textstyle \theta_j - \psi</math>(<math>\textstyle j=1, \ldots, k</math>)。此时假设函数变成了以下的式子:
<math>
<math>
Line 125: Line 125:
-
换句话说,从<math>\theta_j</math>中减去<math>\psi</math>完全不影响假设函数的预测结果!这表明前面的softmax回归模型中存在冗余的参数。更正式一点来说, Softmax模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数<math>h_\theta</math>。
+
换句话说,从<math>\textstyle \theta_j</math>中减去<math>\textstyle \psi</math>完全不影响假设函数的预测结果!这表明前面的softmax回归模型中存在冗余的参数。更正式一点来说, Softmax模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数<math>\textstyle h_\theta</math>。
-
进一步而言,如果参数<math>(\theta_1, \theta_2,\ldots, \theta_k)</math>是代价函数<math>J(\theta)</math>的极小值点,那么<math>(\theta_1 - \psi, \theta_2 - \psi,\ldots,
+
进一步而言,如果参数<math>\textstyle (\theta_1, \theta_2,\ldots, \theta_k)</math>是代价函数<math>\textstyle J(\theta)</math>的极小值点,那么<math>\textstyle (\theta_1 - \psi, \theta_2 - \psi,\ldots,
-
\theta_k - \psi)</math>同样也是它的极小值点,其中<math>\psi</math>可以为任意向量。因此使<math>J(\theta)</math>最小化的解不是唯一的。(有趣的是,由于<math>J(\theta)</math>仍然是一个凸函数,因此梯度下降时不会遇到局部最优解的问题。但是Hessian 矩阵是奇异的/不可逆的,这会直接导致采用牛顿法优化就遇到数值计算的问题)
+
\theta_k - \psi)</math>同样也是它的极小值点,其中<math>\textstyle \psi</math>可以为任意向量。因此使<math>\textstyle J(\theta)</math>最小化的解不是唯一的。(有趣的是,由于<math>\textstyle J(\theta)</math>仍然是一个凸函数,因此梯度下降时不会遇到局部最优解的问题。但是Hessian 矩阵是奇异的/不可逆的,这会直接导致采用牛顿法优化就遇到数值计算的问题)
-
注意,当<math>\psi = \theta_1</math>时,我们总是可以将<math>\theta_1</math>替换为<math>\theta_1 - \psi = \vec{0}</math>(即替换为全零向量),并且这种变换不会影响假设函数。因此我们可以去掉参数向量<math>\theta_1</math>(或者其他<math>\theta_j</math>中的任意一个)而不影响假设函数的表达能力。实际上,与其优化全部的<math>k(n+1)</math>个参数<math>(\theta_1, \theta_2,\ldots, \theta_k)</math>(其中<math>\theta_j \in \Re^{n+1}</math>),我们可以令<math>\theta_1 =
+
注意,当<math>\textstyle \psi = \theta_1</math>时,我们总是可以将<math>\textstyle \theta_1</math>替换为<math>\textstyle \theta_1 - \psi = \vec{0}</math>(即替换为全零向量),并且这种变换不会影响假设函数。因此我们可以去掉参数向量<math>\textstyle \theta_1</math>(或者其他<math>\textstyle \theta_j</math>中的任意一个)而不影响假设函数的表达能力。实际上,与其优化全部的<math>\textstyle k\times(n+1)</math>个参数<math>\textstyle (\theta_1, \theta_2,\ldots, \theta_k)</math>(其中<math>\textstyle \theta_j \in \Re^{n+1}</math>),我们可以令<math>\textstyle \theta_1 =
-
\vec{0}</math>,只优化剩余的<math>(k-1)(n+1)</math>个参数,这样算法依然能够正常工作。
+
\vec{0}</math>,只优化剩余的<math>\textstyle (k-1)\times(n+1)</math>个参数,这样算法依然能够正常工作。
-
 
+
在实际应用中,为了使算法实现更简单清楚,往往保留所有参数<math>\textstyle (\theta_1, \theta_2,\ldots, \theta_n)</math>,而不任意地将某一参数设置为0。但此时我们需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决 softmax 回归的参数冗余所带来的数值问题。
-
在实际应用中,为了使算法实现更简单清楚,往往保留所有参数<math>(\theta_1, \theta_2,\ldots, \theta_n)</math>,而不任意地将某一参数设置为0。但此时我们需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决 softmax 回归的参数冗余所带来的数值问题。
+
==权重衰减  Weight Decay ==
==权重衰减  Weight Decay ==

Revision as of 06:08, 16 March 2013

Personal tools