zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    [uiautomator篇][7] 剥离用例层和源代码层 --很好的博客
    Uiautomator学习笔记(2) 封装代码 报错误(NllPointerException)
    Uiautomator ---(1) 封装代码
    [uiautomator篇] [6]脚本更健壮
    uiautomator 一个简单脚本创建流程
    [uiautomator篇][1] 官网译文
    [Uiautomator篇][2] UiDeviceAPI介绍
    [uiautomator篇] [4] 运行成功的日志打印---最后写一个脚本来实现
    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to
    关于The APR based Apache Tomcat Native library警告
  • 原文地址:https://www.cnblogs.com/lity/p/6037723.html
Copyright © 2011-2022 走看看