• Softmax


    原文地址:http://blog.csdn.net/hungryof/article/details/50395062

    简介

    其实吧,一般在神经网络中用的最多的是sigmoid和tanh,当然也有用relu的。这是针对“是”和“否”的分类,但当进行多分类时,就要用到softmax 。

    在logistic回归中,训练样本是:{(x(1),y(1)),...,(x(m),y(m))} ,值得注意是,每个样本x(i)R(n+1) ,当然了,其中x0=1 是对应的截距项。也就是说,每个样本都是具有n+1维的向量,并且第1维都是为1(方便与参数θ 的第0维偏置b相乘)。

    在logistic回归中,激活函数是:

    hθ(x)=11+exp(θTx)


    训练θ 的最小化代价函数是:

    J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(x)))]


    其中,hθ(x)=11+exp(θTx) 对应的图形是:
    这里写图片描述
    ,那么对应的对数图像是:
    这里写图片描述

     

    我们要做的是分类,因此当然是想知道,当输入x是,x分别属于每一个类的概率,概率最大的那个就是我们认为的属于的类
    让输出为一个向量,并且有k 维,分别代表属于i 类的概率。当然还要进行归一化,让输出的向量元素的值和为1.

    hθ(x(i))=⎡⎣⎢⎢⎢⎢⎢p(y(i)=1x(i);θ)p(y(i)=2x(i);θ)p(y(i)=kx(i);θ)⎤⎦⎥⎥⎥⎥⎥=1kj=1eθTjx(i)⎡⎣⎢⎢⎢⎢⎢⎢eθT1x(i)eθT2x(i)eθTkx(i)⎤⎦⎥⎥⎥⎥⎥⎥

     

    这里的eθTix(i) 就是yi ,因此就是对输出进行归一化。

    上面的公式真难打。。
    可以看出,我们将hθ(x(i)) 进行了变换,现在对于输入x(i) ,输出的是一个向量了,并不是像sigmoid的一个0~1的数。值得注意的是:θiRn+1 是模型的参数。

    softmax模型参数
    softmax模型的参数是k个n+1维的θ 组成的矩阵,输出的是向量。

    θ=⎡⎣⎢⎢⎢⎢⎢θT1θT2θTk⎤⎦⎥⎥⎥⎥⎥

     

    代价函数

    1{} 是indicator function,表示{}内的表达式正确为1,否则为0.
    代价函数是:

    J(θ)=1m⎡⎣i=1mj=1k1{y(i)=j}logeθTjx(i)kl=1eθTlx(i)⎤⎦


    可以这样理解,就是求另每个输入属于属于每一类的概率,再求平均。
    对比logistic的J(θ)

    J(θ)=1m[i=1m(1y(i))log(1hθ(x(i)))+y(i)loghθ(x(i))]=1m⎡⎣i=1mj=011{y(i)=j}logp(y(i)=j|x(i);θ)⎤⎦


    可以看出,形式非常相似,只是在累的标记的k个可能值进行了累加。
    将x分类到类别 j 的概率为:

    p(y(i)=j|x(i);θ)=eθTjx(i)kl=1eθTlx(i)


    经过求导,得到梯度公式:

    θjJ(θ)=1mi=1m[x(i)(1{y(i)=j}p(y(i)=j|x(i);θ))]


    θjJ(θ) 是一个向量,它的第l 个元素J(θ)θjlJ(θ)θj 的第l 个分量的偏导。
    每次更新:
    θj:=θjαθjJ(θ) ,其中j[1,...,k]

     

    权重衰减

    虽然代价函数是上面形式,但是一般是添加一个权重衰减项λ2ki=1nj=0θ2ij ,衰减项主要是惩罚过大的参数。
    此时:

    J(θ)=1m⎡⎣i=1mj=1k1{y(i)=j}logeθTjx(i)kl=1eθTlx(i)⎤⎦+λ2i=1kj=0nθ2ij


    ,求导变成:

    θjJ(θ)=1mi=1m[x(i)(1{y(i)=j}p(y(i)=j|x(i);θ))]+λθj
  • 相关阅读:
    手机APP漏洞
    测试用例的优先级的概念
    测试出现BUG的理论逻辑
    django-redis 中文文档
    DRF单表序列化和反序列化
    事件
    QT文件操作
    一道字符串题目
    明日方舟六星出货率
    简易图片查看器
  • 原文地址:https://www.cnblogs.com/lzhu/p/8331259.html
Copyright © 2020-2023  润新知