Processing math: 5%

UFLDL之softmax回归

UFLDL之softmax回归

参考资料:UFLDL教程tornadomeet的博客
个人代码:github地址

主成份分析与白化

softmax回归算法简介

softmax回归是一种监督学习算法,该模型是logistic回归模型在多分类问题上的推广。多分类问题中,类标签 y 可以取两个以上的值(如手写数字识别0~9共10个种类的数字)。
假设共有 k 个类,对于给定的测试输入x,softmax回归输出一个k 维的向量(向量元素和为1),向量每个元素对应了每个类别的概率。

softmax回归的数学表达

softmax的假设、代价函数与导数

softamx的假设形式为:

h_\theta(x^{(i)}) = \left[ \begin{matrix} p(y^{(i)} = 1 | x^{(i)}; \theta) \\ p(y^{(i)} = 2 | x^{(i)}; \theta) \\ \vdots \\ p(y^{(i)} = k | x^{(i)}; \theta) \end{matrix} \right] = \frac{1}{ \sum_{j=1}^{k}{e^{ \theta_j^T x^{(i)} }} } \left[ \begin{matrix} e^{ \theta_1^T x^{(i)} } \\ e^{ \theta_2^T x^{(i)} } \\ \vdots \\ e^{ \theta_k^T x^{(i)} } \\ \end{matrix} \right]

其中,\theta_1, \theta_2, \ldots, \theta_k \in \Re^{n+1}是模型的参数。矩阵前的公共项是为了对概率分布进行归一化,使得所有概率之和为1。

规定1\{\cdot\}为示性函数,满足:1\{值为真的表达式\} = 1,考虑正则项,则其代价函数为:

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] + \frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^n \theta_{ij}^2

其中第一项可以认为是logistic回归代价函数的推广。由上述公式,可以得到利用梯度下降算法时候,导数表达式为:

\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]} + \lambda*\theta_j

参数冗余问题

由于指数函数的存在,softmax回归有一个冗余数据集,查看下式:

p(y^{(i)} = j | x^{(i)} ; \theta) = \frac{e^{(\theta_j-\psi)^T x^{(i)}}}{\sum_{l=1}^k e^{ (\theta_l-\psi)^T x^{(i)}}} = \frac{e^{\theta_j^T x^{(i)}} e^{-\psi^Tx^{(i)}}}{\sum_{l=1}^k e^{\theta_l^T x^{(i)}} e^{-\psi^Tx^{(i)}}} = \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)}}}

可见,从\theta_j中减去\psi不会影响函数的预测结果,这说明softmax回归模型存在冗余参数集。正则项可以帮助解决这一问题,另外,可以使\theta_j的每个元素减去\theta_j值当中的最大元素,从而限定最大项必须为零。

softmax和logistic对比

在Coursera公开课笔记中,提到logistic回归可以通过建立 k 个独立的二元分类器来解决多分类问题。softmax回归的特点在于:一是模型更加简化,二是 k 维向量的和为1,这说明了softmax各个类别是互斥的。
因此对于多分类问题,若问题的各个类别之间有交叉关系,则要使用logistic建立多个二元分类器而不是使用softmax。

posted @   lity99  阅读(613)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示