softmax回归

softmax回归 | XXFS

softmax 回归

softmax 回归实际上是分类问题。

预备知识

sigmoid函数,softmax函数,极大似然估计,交叉熵函数,one-hot编码。


1 sigmoid函数

1.1定义

sigmoid函数是一个在生物学中常见的函数,也称为S型生长曲线。Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间。

1.2公式

$$
S(x) = \frac{1}{1+e^{-x}} = \frac{e^x}{e^x + 1}
$$

其对x的导数可以用自身表示:

$$
S^{'}(x) = \frac{e^{-x}}{{(1+e^{-x})}^2} = S(x)(1 - S(x))
$$


2 softmax函数

2.1 定义

在数学,尤其是概率论和相关领域中,Softmax 函数,或称归一化函数,是逻辑函数的一种推广。它能将一个含任意实数的K维向量z的"压缩"到另一个K维实向量\sigma(z)中,使得每一个元素的范围都在(0,1)之间,并且所有的元素和为1。

2.2 公式

$$
\sigma(z)_j = \frac{e^{z_j}}{\sum^K_{k=1}} \quad for j=1,...,k
$$

在多项逻辑回归和线性分析中,函数的输入是从K个不同的线性函数得到的结果,而样本向量x属于第j个分类的概率为:

$$
P(y=j|x) = \frac{e^{x^1w_j}}{\sum^K_{k=1}}e^{x^Tw_k}
$$

这可以被视作K个线性函数x->x^T w_1,..., x^T w_k Softmax函数的复合。


3. 极大似然估计

3.1 似然函数

相信大家已经掌握条件概率函数。那么我们假设一个条件概率函数为P(\theta_k|x),其中,\theta_k已知,我们希望通过已知的\theta_k求出未知的变量x。

那么应该如何理解似然函数呢?

我们先给出似然函数的定义式:

$$
L(\theta|x) = P(x|\theta)
$$

这时x是已知的,而\theta作为模型参数是未知的。

3.2 最大似然函数

最大似然函数的思想在于,对于给定的观测数据x,我们希望从所有\theta_1,\theta_2,...,\theta_n中找出能最大化概率函数的参数\theta_x即可:

$$
L(\theta_x|x)=P(x|\theta_x) >= L(\theta|x)=P(x|\theta) \quad \theta=\theta_1,...\theta_n
$$

那么在实际运算中,我们将代估计的参数\theta看成是变量,通过\theta变量计算出概率函数P(x|\theta),并找到能使得概率函数取得最大化的参数(\theta)即可。

$$
\theta_x = arg \mathop{max}_{\theta} p(x|\theta)
$$

这一步骤通过求导数得到导数为0来解。

3. 3 离散随机变量的最大似然估计

离散型随机变量X的分布律为P\{A=x\}=p(x;\theta),A_1,A_2,...,A_n为来自A的样本,x_1,x_2,...,x_n为样本对应的观测值,\theta为待估计参数。

在参数\theta下,分布函数随机取到x_1,...,x_n的概率是

$$
P(x|\theta) = \prod \limits_{i=1}^N P(x_i;\theta)
$$

我们的目标是找到使P(x|\theta)最大化的参数\theta。

求解最大值,通常是求导等于0:

$$
\frac{d}{d\theta} L(\theta|x) = 0
$$

由于L(\theta|x)通常是由累乘的形式,我们借助对数函数来简化问题:

$$
\frac{d}{d \theta} L(\theta|x) = 0
$$

上式也通常被称作对数似然方程。如果\theta包含多个\theta_1,...\theta_k可以对每个\theta求偏导来连立方程组。

3.4 连续型随机变量的最大似然估计

连续型随机变量X的概率密度为f(x;\theta),设X_1,...,X_n为样本,相应的观察值为x_1,x_2,...,x_n。

与离散型随机变量类似,构造似然函数为:

$$
L(x|\theta) = p(x;\theta) = \prod \limits_{i=1}^n f(x_i;\theta)dx
$$

由于\prod limits_{i=1}^n dx不随参数变化,故我们选择忽略,似然函数变为:

$$
L(x|\theta) = \prod \limits_{i=1}^N P(x_i;\theta)
$$

$$

$$


4 交叉熵函数

4.1 熵

信息论中熵的概念首次被香农提出,目的是寻找一种高效/无损地编码信息的方法:以编码后数据的平均长度来衡量高效性,平均长度越小越高效;同时还需满足“无损”的条件,即编码后不能有原始信息的丢失。这样,香农提出了熵的定义:无损编码事件信息的最小平均编码长度。

直接计算熵

假设一个事件有八中可能性,且各个状态等可能性,即可能性都是12.5%,也就是1/8,那么我们需要多少为来编码这八个值呢?答案是2^3,也就是三位。我们不能减少任何1位,因为那样会造成歧义,同样我们也不要多于3位来编码8个可能的值。用归纳法来看假设有N种状态,每种状态是等可能的,那么每种状态的可能性为P=\frac{1}{N},那么我们用以下公式计算编码位数:

$$
log_2 N = - log_2 \frac{1}{N} = -log_2P
$$

那么计算平均最小长度

$$
Entropy =- \sum_i P(i) log_2 P(i)
$$

其中P(i)是第i个信息状态的可能性。相当于,熵=编码长度*可能性。

如果熵比较大(即平均编码长度较长),意味着这一信息有较多的可能状态,相应的每个状态的可能性比较低;因此每当来了一个新的信息,我们很难对其作出准确预测,即有着比较大的混乱程度/不确定性/不可预测性。

4.2 交叉熵

对于离散型随机变量,熵的公式可以表示为

$$
-\sum_i P(i)log_2P(i)
$$

对于连续型随机变量,熵的公式可以表示为:

$$
- \int P(x) log_2 P(x) dx
$$

那么我们现在有真实的概率分布P,以及预测的概率分布Q。

j假设计算离散型变量的交叉熵,在计算交叉熵时,我们可以采用以下公式,即使用P计算平均编码长度,使用Q计算实际编码长度:

$$
CrossEntropy = - \sum_i P(x_i) logQ(x_i)
$$

假设计算连续型变量的交叉熵,在计算交叉熵时,我们可以采用以下公式,即使用P计算平均编码长度,使用Q计算实际编码长度:

$$
CrossEntorpy = - \int P(x)logQ(x)dx
$$


5 softmax 回归

使用热独编码,分量和类别一样多。类别对应的分量设置为1,其他所有分量设置为0。假设标签y是一个三维向量其中(1,0,0)对应猫,(0,1,0)对应鸡,(0,0,1)对应于狗。我们需要和输出一样多的仿射函数。

$$
\begin{array}{1} o_1 = x_1 \omega_11 + x_2 \omega_12 + x_3 \omega_13 + x_4 \omega_14 + b_1 \\ o_2 = x_1 \omega_21 + x_2 \omega_22 + x_3 \omega_23 + x_4 \omega_24 + b_2 \\ o_3 = x_3 \omega_31 + x_2 \omega_32 + x_3 \omega_33 + x_4 \omega_34 + b_3 \\ \end{array} \tag{1}
$$

为了更简洁表述,我们用向量形式来描述o = Wx + b。

现在我们将优化参数以最大化观测数据的概率。我们希望模型的输出y_j可以视为属于j类的概率,然后选择具有最大输出值的类别argmax_j y_j作为我们的预测。例如,y_1,y_2,y_3分别是0.1,0.8,0.1那么我们可以判断其类别为”鸡“。

要将输出视为概率,我们必须保证在任何数据上的输出都是非负的且总和为1。此外我们需要训练一个目标函数来激励模型精准的估计概率。

由于softmax函数能够将为规范化的预测变为非负数且总和为1,同时让模型保持可导的性质。我们可以将输出o输入进softmax函数:

$$
\hat{y} = softmax(o) \quad 其中 \quad \hat{y_j} = \frac{e^{o_j}}{\sum_k e^{k}} = \frac{e^{o_j}}{e^1 + e^2 + ... + e^k} \tag{2}
$$

在预测过程中,我们仍然可以用下式来选择最有可能的类别。

$$
\mathop{argmax}\limits_j \quad \hat{y_j} = \mathop{argmax} \limits_j \quad o_j \tag{3}
$$

损失函数

假设给出数据集{X,Y}有n个样本,其中索引i的样本有特征向量x^{(i)}和独热标签向量y^{(i)}组成。我们可以将估计值和真实值进行比较:

$$
P(Y|X) = \prod \limits_{i=1}^n P(y_i|x_i) \tag{4}
$$

根据最大似然估计,我们最大化P(Y|X),相当于最小化负对数似然:

$$
- logP(Y|X) = \sum \limits_{i=1}^n - log P(y^{(i)}|x^{(i)}) = \sum \limits_{i=1}^{n} l(y^{(i)},\hat{y^{(i)}}) \tag{5}
$$

对于任何标签y和预测模型\hat{y},损失函数为:

$$
l(y,\hat{y}) = -\sum \limits_{i=1}^q y_i log \hat{y_i} \tag{6}
$$

我们可以将(2)带入(6)中去,利用softmax定义我们得到:

$$
\begin{array} {1} l(y,\hat{y}) = - \sum \limits^q_{j = 1} y_i log\frac{exp(o_j)}{\sum_{k=1}^q exp(o_k)} \\ =\sum_{j=1}^q y_i log \sum_{k=1}^q exp(o_k) - \sum \limits^q_{j=1}y_i o_j \\ =log \sum \limits_{k=1}^q exp(o_k) - \sum_{j=1}^q y_j o_j \end{array}
$$

对o_j求偏导,我们得到:

$$
\partial_{o_j} l(y,\hat{y}) = \frac{exp(o_j)}{\sum\limits_{k=1}^q exp(o_k)} -y_i = softmax(o)_j - y_i \tag{7}
$$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值