机器学习与计算机视觉深度学习

2020机器学习线性模型(5)

2020-01-22  本文已影响0人  zidea
machine_learning.jpg

我们依旧回归一下上一次内容,上一次我们介绍一下对数几率模型,其实本质是线性模型,但是他是一个泛化的线性模型,他是一个 sigmoid 函数,这是一个指数函数
f(z) = \frac{1}{1 + e^{-z}}
我们将线性组合带入 sigmoid 函数替换 z,就可以将一个线性模型值域压缩到 0 到 1 之前,这样我们就可以线性模型来做分类问题。这也就是我们构建的线性模型。

f(x) = \frac{1}{1 + e^{-\theta^Tx}}

今天我们先讨论一下对数几率模型的损失函数
L = \frac{1}{2N} \sum_i (h_{\theta}(x^{(i)}) - y^{(i)})^2
这是之前我们通过最小二乘法来计算线性模型损失函数。那么对数几率函数的损失函数是什么样子呢?

p(y=1|x,\theta) = \frac{1}{1 + e^{-\theta^Tx}}
计算在给定样本 x 和参数 \theta 条件下,计算 x 样本属于 y=1 类别的概率。如果大于 0.5 分为 1 类而小于 0.5 分为 0 类。

J(\theta) = - \frac{1}{N}\left( \sum_{i=1}^N \sum_{j=0}^1 I(y^{(i)} = j) \log p(y^{(i)} = j|x^{(i)},\theta) \right)

这就是对数几率函数损失函数样子,我们来一起看一看这个公式是如何描述对数几率函数好坏的。首先从左向右来看,第一个我们对所有样本数据从 1 到 N 然后在将遍历类别这里是而分类为只有 0 和 1 。然后用 I 函数进行计数,I 函数内内容为 true 则计数为 1 否则为 0。这样一来也就是函数模型也好
I(y^{(i)} = j) \log p(y^{(i)} = j|x^{(i)},\theta)
这部分内容值越大,因为我们在损失函数都是求最小值来评估模型为好模型,所以在前面加了负号。现在还是停留在 2 分类问题,随后会扩展到多分类问题。还有一点我们这里使用是log 大家可能已经很清楚,也就是解决概率小数越乘越小的问题,把乘积变成连加来解决这个问题。

J(\theta) = -\frac{1}{N} \left( \sum_i^N y^{(i)} \log h_{\theta}(x^{i}) + (1 - y^{(i)}) \log (1 - h_{\theta}(x^{i})) \right)

\theta - \alpha \frac{\partial J}{\partial \theta}

p(y=1|x,\theta) = \frac{1}{1 + e^{-\theta^{T}x}}

我们对方程两边同时乘以e^{\theta^Tx} 可以得到下面的式子。

\frac{1}{1 + e^{-\theta^{T}x}} = \frac{e^{\theta^Tx}}{ (1 + e^{-\theta^T x})e^{\theta^Tx} } = \frac{e^{\theta^Tx}}{e^{\theta^Tx} + 1}
这个公式是为了之后做多分类做好前期准备
p(y=1|x,\theta) = 1 - \frac{1}{1 + e^{-\theta^{T}x}}
1 - \frac{1}{1 + e^{-\theta^{T}x}} = \frac{1}{e^{\theta^Tx}+1}

然后我们对于超过2分类可以使用 softmax 来解决,我们可以类似上面形式来表示

p(y^{(i)}=k|x_i \theta) = \frac{e^{\theta_k^T x^{(i)}}}{\sum_{j=1}^k e^{\theta_j^T x^{(i)}}}

上面就是有 k 个类别线性模型。
最后希望大家关注我们微信公众号


wechat.jpeg
上一篇 下一篇

猜你喜欢

热点阅读