1. Logistic Regression
概率解释:
解决的是二分类问题(类标记)在线性回归的基础上,引入一个logistic function(sigmoid function)
,使得输出
(以下简称
)为正类的概率。对于这个函数,一个很好的性质是:
。
令 即
,由此得到y的概率分布函数
。
记似然函数为:
对数似然函数为:
求导,得到梯度:。标量形式太冗长,记成向量形式,如下:
同时考虑
如果
那么有:
其中
为哈达玛积,就是对应元素相乘。
记成向量形式:,
通过求梯度,得到:。(这里要梯度上升,因为是极大化似然函数)
加入正则项的理论公式这里不记录。求导的过程见1.13 矩阵微分与求导相关中的例6,链接在此
2.编程实现(源代码来自coursera上作业的代码,这里进行了综合)
代码在此
logistic_regression_reg和logistic_regression文件是组装在一起的源代码 对应的数据集是ex2data1和ex2data2
3.Softmax Regression
Softmax Regression是Logistic Regression的拓展版本,解决的分类问题是多分类问题,详细的来源推导是广义线性模型(Genralized Linear Models),这里不记录怎么推导出来这个模型的,只记录结论以及如何使用。
对于一个样本,
是其类别标记,
则, 输出的是概率。
向量形式记为:,输出的向量y中每一个元素是对应该类的概率,y的所有元素之和相加为1。
(1)对于1个样本来说,,
,求导过程见1.13 矩阵微分与求导相关中的例7.
(2)拓展到m个样本,没有完全搞明白,等完全搞懂后再详细记录吧。
(疑问:给出的类别标记向量是怎么给出的?还是
这样给出的?)
4.更深入的应用:
由Logistic Regression引出的以及Softmax regression引出的
两个函数,
第一个作为输出为某正类的概率,在神经网络中用作某一神经元的的激活函数,
或者在输出层同样作为判定是否为正类的概率(二分类)。
在多分类(k个类别)的任务中,输出层也可以这样做:输出k个神经元,每一个神经元都是由
构成,这样的话,所有类别的概率相加不为1,取最大的概率作为所属类别。
也可以使用函数做一个概率分布,只不过此时概率之和为1而已。