李宏毅机器学习 9

线性回归代价函数

线性回归中代价函数如下:
J(\theta)=\frac{1}{2} \sum_{i=1}^{m}\left(y^{i}-h_{\theta}\left(x^{i}\right)\right)^{2}
如果逻辑回归中也是用上述Square Error作为代价函数,那么 J(\theta) 是一个非凸函数,即存在很多局部最优解

PS:上述Square Error利用极大似然估计求解而得

最大似然法和最小二乘损失函数的异同

损失函数J的由来-似然-likelihood

Logistic Regression + Square Error

  • f_{w, b}(x)=\sigma\left(\sum_{i} w_{i} x_{i}+b\right)

  • 训练数据 \left(x^{n}, \hat{y}^{n}\right)\hat{y}^{n}:1 for class 1, 0 for class 2

L(f)=\frac{1}{2} \sum_{n}\left(f_{w, b}\left(x^{n}\right)-\hat{y}^{n}\right)^{2}

\begin{aligned} \frac{\partial\left(f_{w, b}(x)-\hat{y}\right)^{2}}{\partial w_{i}} &= 2\left(f_{w, b}(x)-\hat{y}\right) \frac{\partial f_{w, b}(x)}{\partial z} \frac{\partial z}{\partial w_{i}} \\ &= \left(f_{w, b}(x)-\hat{y}\right) f_{w, b}(x)\left(1-f_{w, b}(x)\right) x_{i} \end{aligned}

可以看出对代价函数求导之后存在多个极值点

逻辑回归代价函数

推导过程

线性回归属于回归问题,输出是连续型变量。而逻辑回归属于分类问题,输出是离散型变量

逻辑回归的模型:
h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+\exp ^{\left(-\theta^{T} x\right)}}
假定上述表达式是属于类 1 的概率,那么属于类 2的概率就等于 1减属于类1的概率(为了与上面一致,假设属样本属于class 1,则标签为1;、样本属于class 2,则标签为0),如下所述:
\left\{\begin{array}{l}{P(c=1 | x ; \theta)=h_{\theta}(x)} \\ {P(c=0 | x ; \theta)=1-h_{\theta}(x)}\end{array}\right.
将上面两个式子整合为一个式子,即:
P(c=y | x ; \theta)=\left(h_{\theta}(x)\right)^{y}\left(1-h_{\theta}(x)\right)^{1-y}
利用极大似然估计得:
L(\theta)=\prod_{i=1}^{m}\left(h_{\theta}(x)\right)^{y}\left(1-h_{\theta}(x)\right)^{1-y}
为了方便计算,对上式取对数
\log (L(\theta))=\sum_{i=1}^{m}\left[y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]
求上式的极大值,引入因子 -1/m,转化为求下式的极小值:
J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]
疑问:为什么要除以样本数m?

梯度下降过程
  • 求偏导

\frac{\partial J(\theta)}{\partial \theta_{J}}=-\frac{1}{m} \sum_{i=1}^{m}\left(y^{(i)} \frac{1}{h_{\theta}\left(x^{(i)}\right)} \frac{\partial h_{\theta}\left(x^{i}\right)}{\partial \theta_{j}}-\left(1-y^{(i)}\right) \frac{1}{1-h_{\theta}\left(x^{(i)}\right)} \frac{\partial h_{\theta}\left(x^{i}\right)}{\partial \theta_{j}}\right)

=-\frac{1}{m} \sum_{i=1}^{m}\left(y^{(i)} \frac{1}{g\left(\theta^{T} x^{(i)}\right)}-\left(1-y^{(i)}\right) \frac{1}{1-g\left(\theta^{T} x^{(i)}\right)}\right) \cdot \frac{\partial g\left(\theta^{T} x^{(i)}\right)}{\partial \theta_{j}}

=-\frac{1}{m} \sum_{i=1}^{m}\left(y^{(i)} \frac{1}{g\left(\theta^{T} x^{(i)}\right)}-\left(1-y^{(i)}\right) \frac{1}{1-g\left(\theta^{T} x^{(i)}\right)}\right) \cdot g\left(\theta^{T} x^{(i)}\right)\left(1-g\left(\theta^{T} x^{(i)}\right) x_{j}^{(i)}\right.

=-\frac{1}{m} \sum_{i=1}^{m}\left(y^{(i)}\left(1-g\left(\theta^{T} x^{(i)}\right)-\left(1-y^{(i)}\right) g\left(\theta^{T} x^{(i)}\right)\right) \cdot x_{j}^{(i)}\right.

=-\frac{1}{m} \sum_{i=1}^{m}\left(y^{(i)}-g\left(\theta^{T} x^{(i)}\right)\right) \cdot x_{j}^{(i)}

=\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \cdot x_{j}^{(i)}

  • 更新过程

\theta_{j} :=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)-y_{i}\right) ) x_{i}^{j}

逻辑回归代价函数及其梯度下降公式推导

逻辑回归的代价函数及其求导

逻辑回归处理多分类问题——Softmax 回归

普通的逻辑回归只能针对二分类问题,要想实现多个类别的分类,需要进一步改进逻辑回顾,主要包括两种方法:

  • 假如我们有 k 个类别,则建立 k 个普通的 Logistic 分类器。例如,属于类别1的样本标记为1,其他样本都标记为0,以此类推
  • 修改逻辑回归的损失函数。修改后的损失函数不再笼统的只考虑二分类非1即0的损失,而是具体考虑每个样本表示的损失。这种方法叫做 softmax 回归,即逻辑回归的多分类版本

下面主要介绍上面介绍的第二种方法:

对于给定的测试输入 x,我们想用假设函数针对每一个类别j估算出概率值 p(y=j | x)。也就是说,我们想估计 x 的每一种分类结果出现的概率。因此,我们的假设函数将要输出一个 k 维的向量(向量元素的和为1)来表示这 k) 个估计的概率值。 具体地说,我们的假设函数 h_{\theta}(x) 形式如下:
h_{\theta}\left(x^{(i)}\right)=\left[ \begin{array}{c}{p\left(y^{(i)}=1 | x^{(i)} ; \theta\right)} \\ {p\left(y^{(i)}=2 | x^{(i)} ; \theta\right)} \\ {\vdots} \\ {p\left(y^{(i)}=k | x^{(i)} ; \theta\right)}\end{array}\right]=\frac{1}{\sum_{j=1}^{k} e^{\theta_{j}^{T} x^{(i)}}} \left[ \begin{array}{c}{e^{\theta_{1}^{T} x^{(i)}}} \\ {e^{\theta_{2}^{T} x^{(i)}}} \\ {\vdots} \\ {e^{\theta_{k}^{T} x^{(i)}}}\end{array}\right]
其中\frac{1}{\sum_{j=1}^{k} e^{\theta_{j}^{T} x^{(i)}}}对概率分布进行归一化,使得所有概率之和为1。上述函数也被称作 Softmax 函数

Softmax回归代价函数

在下面的公式中,1\{*\} 是示性函数,其取值规则为:1\{值为真的表达式\} = 11\{值为假的表达式\} = 0.

softmax的代价函数为:
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]
可以看出上述公式是 logistic 回归代价函数的推广。logistic 回归代价函数可以改为:
\begin{aligned} J(\theta) &=-\frac{1}{m}\left[\sum_{i=1}^{m}\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)+y^{(i)} \log h_{\theta}\left(x^{(i)}\right)\right] \\ &=-\frac{1}{m}\left[\sum_{i=1}^{m} \sum_{j=0}^{1} 1\left\{y^{(i)}=j\right\} \log p\left(y^{(i)}=j | x^{(i)} ; \theta\right)\right] \end{aligned}

梯度下降过程

J(\theta) 分成两部分(容易计算):
\sum_{j=1}^{k} 1\left\{y^{i}=j\right\} \log \frac{e^{\theta_{j}^{T} x^{i}}}{\sum_{l=1}^{k} e_{l}^{T_{l}^{T}} x^{i}}=A-B
其中:
A=\sum_{j=1}^{k} 1\left\{y^{i}=j\right\} \log \left(e^{\theta_{j}^{T} x^{i}}\right)=\sum_{j=1}^{k} 1\left\{y^{i}=j\right\} \theta_{j}^{T} x^{i}
and
B=\sum_{j=1}^{k} 1\left\{y^{i}=j\right\} \log \left(\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{i}}\right)=\log \left(\sum_{l=1}^{k} e^{\theta_{i}^{T} x^{i}}\right) \sum_{j=1}^{k} 1\left\{y^{i}=j\right\}=\log \left(\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{i}}\right)
因为 \log \left(\sum_{l=1}^{k} e^{\theta_{i}^{T} x^{i}}\right)j 没有关系,所以可以提出来,并且 \sum_{j=1}^{k} 1\left\{y^{i}=j\right\}y^{i} 肯定等于某一个 j

然后分别对 AB\theta_{j} 求偏导,即可得到:
\nabla_{\theta_{j}} J=-\frac{1}{m} \sum_{i=1}^{m}\left[x^{(i)}\left(1\left\{y_{i}=j\right\}-\frac{e^{\theta_{j}^{T} x^{i}}}{\sum e^{\theta_{l}^{T} x^{i}}}\right)\right]

  • 更新过程

\theta_{j} :=\theta_{j}-\alpha \nabla_{\theta_{j}} J(\theta)_{(j}=1, \ldots, k )

当实现softmax回归算法时,通常会使用上述代价函数的改进版本,具体来说,就是和权重衰减一起使用。

Softmax回归模型参数化的特点

待补充,了解 Hessian矩阵

权重衰减

待补充

后两部分在最后一个链接中有讲到

Softmax Regeression Derivative

《转》Logistic回归 多分类问题的推广算法--Softmax回归

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 机器学习术语表 本术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义。 A A/B 测试 (...
    yalesaleng阅读 6,141评论 0 11
  • 待处理统计学习方法:罗杰斯特回归及Tensorflow入门 参考阅读深度学习笔记(一):logistic分类Log...
    jiandanjinxin阅读 12,614评论 0 3
  • 本文编译自谷歌开发者机器学习术语表项目,介绍了该项目所有的术语与基本解释。 A 准确率(accuracy) 分类模...
    630d0109dd74阅读 6,177评论 0 1
  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 10,170评论 0 5
  • inav源码可以使用本机编译也可以使用Docker编译 本地编译 下载源码: mkdir inav &&cd in...
    vincent519阅读 10,188评论 1 1