本文讲述如何用深度学习的角度来对机器学习里的Logistic Regression进行实现。
1. 我们对数据样本的样式进行定义。
假设我们有一系列训练样本,,...,,对应的类别为,,...,.其中,,(因为Logistic是适用于两类问题的,所以这里的target是两值)
,
则,.
从上述可以得知,我们需要求的模型是给定x,求出其对应的类别概率
用线性模型来拟合我们的数据的基础上,为了使y的范围可以限定在{0,1}之内,我们引入一个函数:
当(很大)的时候,很小,
当(很小)的时候,很大,
我们可以把拟合模型改写为
**其中可以通过对样本x添加一项x0=1在程序中改写为其中.
2. 对模型的损失函数求梯度。
给定,希望
损失函数(Loss(error)function):原线性模型的损失函数公式为
,但是在当前公式下使用这个公式得到的损失函数,无法拟合,所以,我们根据Logistic模型的特性,对判错进行误差(loss)统计,可以得到
如下公式:
我们可以分成两种情况来看这公式。
此时,
此时,
反之则loss的值变大。
Cost Function:
梯度下降:
我们希望找到w,b的值,使cost function值最小。
我们以如下这个简单的模型来做例子。
其中 Vectorization.png
4. 神经网络编程准则
只要可能,避免显式的for循环。
使用numpy的系统函数来进行矩阵或者向量的批量模式运算。
matrixexp.png
把之前的编程伪代码用上述规则进行如下修改:vectCaculation.png
VectorizationCa.png VectorizationProgramm.png
未完待续。。。
网友评论