1.12 Regression-Logistic Regression and Softmax regression

1. Logistic Regression

概率解释:

解决的是二分类问题(类标记y\in \begin{Bmatrix} 0,1 \end{Bmatrix})在线性回归的基础上,引入一个logistic function(sigmoid function)g(z)=\frac{1}{1+e^{-z}},使得输出\large h_{\theta}(x)=\frac{1}{1+e^{-\theta^Tx}}(以下简称\large h(x))为正类的概率。对于这个函数,一个很好的性质是:{g}'(z)=g(z)(1-g(z))

P\begin{Bmatrix} y = 1|x;\theta \end{Bmatrix}=h_\theta(x); \\ P\begin{Bmatrix} y = 0|x;\theta \end{Bmatrix}=1-h_\theta(x);  即y\sim B(1,h_\theta(x)),由此得到y的概率分布函数p(y|x;\theta)=(h_\theta(x))^{y}(1-h_\theta(x))^{1-y}

记似然函数为:\large L(\theta)=p(y|X;\theta)=\prod_{i=1}^{m}p(y_{i}|x_{i};\theta)

对数似然函数为:\large l(\theta)=\sum_{i=1}^{m}y^ilog(h(x^i))+(1-y^i)log(1-h(x^i))

求导,得到梯度:\large \frac{\partial l(\theta)}{\partial \theta_j}=\sum_{i=1}^{m}(y^{i}-h(x^i))x_j^i。标量形式太冗长,记成向量形式,如下:

同时考虑\large y_{m \times 1},X_{m \times n},\theta_{n \times 1}

如果\large \mathbf{a,b \in R^n}那么有:\large \mathbf{\sum_{i=1}^{n} a\odot b=1^T(a\odot b)=a^Tb} 其中\large \odot为哈达玛积,就是对应元素相乘。

记成向量形式:\large l(\theta)=\mathbf{y^Tlog(g(X\theta))+(1^T-y^T)log(1-g(X\theta))},\large \mathbf{g(X\theta)=(1+e^{X\theta})^{-1}}

通过求梯度,得到:\large \mathbf{\triangledown _{\theta}l= X^T(y-g(X\theta))}。(这里要梯度上升,因为是极大化似然函数)

加入正则项的理论公式这里不记录。求导的过程见1.13 矩阵微分与求导相关中的例6,链接在

2.编程实现(源代码来自coursera上作业的代码,这里进行了综合)

代码在

logistic_regression_reg和logistic_regression文件是组装在一起的源代码 对应的数据集是ex2data1和ex2data2

3.Softmax Regression

Softmax Regression是Logistic Regression的拓展版本,解决的分类问题是多分类问题,详细的来源推导是广义线性模型(Genralized Linear Models),这里不记录怎么推导出来这个模型的,只记录结论以及如何使用。

对于一个样本\mathbf{x} \in R^n,\mathbf{y} \in R^k是其类别标记,y =\begin{bmatrix} 1\\0 \\ ... \\ 0 \end{bmatrix}_{k \times 1},or \begin{bmatrix} 0\\1 \\ ... \\ 0 \end{bmatrix}_{k \times 1},or \begin{bmatrix} 0\\0 \\ ... \\ 1\end{bmatrix}_{k \times 1}

p(y=i|\mathbf{x};\Theta)=\frac{e^{\mathbf{\theta_i^Tx}}}{\sum_{j=1}^{k}e^{\mathbf{\theta_j^Tx}}},\Theta_{k \times n}=\begin{bmatrix} \theta_1^T\\\theta_2^T \\ ... \\ \theta^T_k \end{bmatrix}, 输出的是概率。

向量形式记为:\mathbf{y}=\mathbf{S(\Theta x)}=\frac{\mathbf{exp(\Theta x)}}{\mathbf{1^Texp(\Theta x)}},输出的向量y中每一个元素是对应该类的概率,y的所有元素之和相加为1。

(1)对于1个样本来说,l(\mathbf{\Theta})=\mathbf{-y^Tlog \ S(\Theta x)},\bigtriangledown _{\Theta}l=\mathbf{(S(\Theta x)-y)x^T},求导过程见1.13 矩阵微分与求导相关中的例7.

(2)拓展到m个样本,没有完全搞明白,等完全搞懂后再详细记录吧。

(疑问:给出的类别标记向量是怎么给出的?y=\begin{bmatrix} 1\\1 \\ 2 \end{bmatrix}还是y=\begin{bmatrix} 1 &1 &0 \\ 0 & 0 & 1\\ 0& 0& 0 \end{bmatrix}这样给出的?)

4.更深入的应用:

由Logistic Regression引出的\large h_{\theta}(x)=\frac{1}{1+e^{-\theta^Tx}}以及Softmax regression引出的p(\mathbf{x})=\frac{e^{\mathbf{x}}}{\sum_{j=1}^{k}e^{\mathbf{x}}_j}两个函数,

第一个作为输出为某正类的概率,在神经网络中用作某一神经元的的激活函数,

或者在输出层同样作为判定是否为正类的概率(二分类)。

在多分类(k个类别)的任务中,输出层也可以这样做:输出k个神经元,每一个神经元都是由\large h_{\theta}(x)=\frac{1}{1+e^{-\theta^Tx}}

构成,这样的话,所有类别的概率相加不为1,取最大的概率作为所属类别。

也可以使用p(\mathbf{x})=\frac{e^{\mathbf{x}}}{\sum_{j=1}^{k}e^{\mathbf{x}}_j}函数做一个概率分布,只不过此时概率之和为1而已。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值