• UFLDL之softmax回归


    UFLDL之softmax回归

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

    主成份分析与白化

    softmax回归算法简介

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

    softmax回归的数学表达

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

    softamx的假设形式为:

    [h_ heta(x^{(i)}) = left[ egin{matrix} p(y^{(i)} = 1 | x^{(i)}; heta) \ p(y^{(i)} = 2 | x^{(i)}; heta) \ vdots \ p(y^{(i)} = k | x^{(i)}; heta) end{matrix} ight] = frac{1}{ sum_{j=1}^{k}{e^{ heta_j^T x^{(i)} }} } left[ egin{matrix} e^{ heta_1^T x^{(i)} } \ e^{ heta_2^T x^{(i)} } \ vdots \ e^{ heta_k^T x^{(i)} } \ end{matrix} ight] ]

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

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

    [J( heta) = - frac{1}{m} left[ sum_{i=1}^{m} sum_{j=1}^{k} 1left{y^{(i)} = j ight} log frac{e^{ heta_j^T x^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)} }} ight] + frac{lambda}{2} sum_{i=1}^k sum_{j=0}^n heta_{ij}^2 ]

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

    [ abla_{ heta_j} J( heta) = - frac{1}{m} sum_{i=1}^{m}{ left[ x^{(i)} left( 1{ y^{(i)} = j} - p(y^{(i)} = j | x^{(i)}; heta) ight) ight]} + lambda* heta_j ]

    参数冗余问题

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

    [p(y^{(i)} = j | x^{(i)} ; heta) = frac{e^{( heta_j-psi)^T x^{(i)}}}{sum_{l=1}^k e^{ ( heta_l-psi)^T x^{(i)}}} = frac{e^{ heta_j^T x^{(i)}} e^{-psi^Tx^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)}} e^{-psi^Tx^{(i)}}} = frac{e^{ heta_j^T x^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)}}} ]

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

    softmax和logistic对比

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

  • 相关阅读:
    HDU-1160_FatMouse's Speed
    通过设置线程池的最小线程数来提高task的效率,SetMinThreads。
    使用publisher模式控制频繁的UI输出,避免Winform界面假死
    使用C# HttpWebRequest进行多线程网页提交。Async httpclient/HttpWebRequest实现批量任务的发布及异步提交和超时取消
    使用fiddlercore修改网页的返回内容
    培训班课程课时及费用管理系统V3.0,适合钢琴培训班、艺术培训班等
    关于新版税控数据库密码的获取
    WinForm 进度条
    C#对摄像头的操作示例,采用Aforge库
    用C# BigInteger实现的BigDecimal类,终于可以直接做四则运算了。
  • 原文地址:https://www.cnblogs.com/lity/p/6037723.html
Copyright © 2020-2023  润新知