逻辑回归是用来解决二值分类问题的。
比如我们有一张图片作为输入,算法需要做出判断这幅图片中是否有一个人。这时我们就可以使用逻辑回归算法。
对于这个问题,假如我们的输入是一个100 X 100的像素点。每个像素点只能是0或者1。 0代表白色,1代表黑色。我们已经收集了20000张已经标记过的这样的照片,其中有一部分是人的照片,其他的照片不包含人像。包含人像的照片我们标记为Y,不包含人像的部分标记为N.
然后我们需要找一个算法,这个算法可以从我们标记的20000张照片里根据每个照片中的10000个像素点的值来推断出是否这个照片是一个人像。这时我们可以选择逻辑回归来帮助我们。

你可能之前已经了解过了逻辑回归,但是我们还是来统一一下我们的说法。
特征/feature 我们的训练集里每个图片有10000个特征。就是每个输入到我们训练模型的输入。
标签/lable 我们的训练图片里,已经人工识别出了照片是否包含人像。我们人工表示的Y/N就是标签。这个过程也叫作给训练数据打lable。
还有,我们一般把训练数据用x来表示,lable值用y来表示,算法模型预测值用\hat{y}来表示。
对于逻辑回归来说,每个图片都可以用一个10000个元素的lable向量来表示输入。每个feature都有一个系数来表明它对最终判断结果的重要性。所以我们也有一个10000个元素的参数向量用w表示。我们希望参数向量的转置乘以lable向量来表示预测值:
\hat{y}=\mathbf{w}^\mathrm{T}x+b
其中b是一个常数。我们期望\hat{y}的值是0到1之间的。这个值表示我们推断的这个照片包含人像的概率。
如果你学过线性回归,你会知道,上边那个假设函数其实是线性回归的。\hat{y}值域实际上是从负无穷到正无穷的。这时我们就需要引入sigmoid函数。通过这个函数可以将负无穷到正无穷的值转化到0到1之间。

所以我们的假设函数是:
\hat{y}=sigmoid(\mathbf{w}^\mathrm{T}x+b)
有了假设函数,我们希望我们的训练集带入这个假设函数后让\hat{y}尽可能的等于y。
这时我们就要定义对于每一个训练样本的Loss方程,或者叫做error方程。
凭借直觉你可能想这样定义:
L(\hat{y},y)=\frac{1}{2}(\hat{y}-y)^{2}
这样定义会带来将来做优化时,可能有多个局部最优解。所以我们换一种定义,看起来没有那么直觉,但是可以保证在做梯度下降时只有一个最优解:
L(\hat{y},y)=-(y\log{\hat{y}}+(1-y)\log(1-\hat{y}))
可以这么理解:
当y=1的时候,L(\hat{y},y)=-log{\hat{y}}
这时只有当\hat{y}接近1的时候,这个loss方程才能变小,相反,如果\hat{y}接近0时,值会趋近无穷大。因为\hat{y}是通过sigmoid产生的,所以它的值域只能在0和1之间。
对于y=0是也是同理。
Loss function是对于单个训练样本来说的。
Cost funciton是对所有训练样本来说的。
J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L({\hat{y}}^{(i)},{y}^{(i)})
m表示训练的样本数。
现在我们有了假设函数和代价函数。假设函数里我们假设了参数w和b。用我们假设的w和b我们就会得到一个假设的模型。如果这个模型能让我们的代价函数最小,也就是让预测值尽可能的等于实际标记的值。这是一个优化问题。优化的目标是让这个代价函数最小。结果是得到参数w和b。当求得w和b之后。我们也就得到了这个逻辑回归模型。

下一篇文章我们就来看一下怎么来计算w和b。

3 对 “Deep Learning之二:从逻辑回归开始”的想法;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

%d 博主赞过: