2.2 这里有一份logistic回归教程,请查收
欢迎分享本文,转载请保留出处
点击关注,获取最新AI干货
本节课,我们讲讲logistic回归。这是一个学习算法,用在监督学习问题中。
输出y标签是0或1时,这是一个二元分类问题。
已知的输入特征向量x可能是一张图。你希望把识别出,这是不是猫图。你需要一个算法,可以给出一个预测值。我们说预测值y帽,就是你对y的预测。更正式的说,你希望y帽是一个概率。
当输入特征x满足条件时,y就是1。所以换句话说,如果x是图片你希望y帽能告诉你,这是一张猫图的概率,所以x是一个n_x维向量。
已知logistic回归的参数是w,也是一个n_x维向量。而b就是一个实数。
所以已知输入x和参数w和b,我们如何计算输出预测y帽?
你可以这么试试,但其实不靠谱,就是y^=w^Tx+b,输入x的线性函数。
事实上,如果你做线性回归,就是这么计算的。
但这不是一个非常好的二元分类算法。
因为你希望y^是y=1的概率,所以y^应该介于0和1之间。
但实际上这很难实现。因为w^Tx+b可能比1大很多,或者甚至是负值。这样的概率是没有意义的。
你希望概率介于0和1之间,所以在logistic回归中,我们输出变成,y^等于sigmoid函数作用到这个量上,这就是sigmoid函数的图像。横轴是z,那么sigmoid(z)就是从0到1的光滑函数。
如下图所示:
我们用z来表示w^Tx+b,sigmoid(z)其中z是实数。如果z非常大,那么e^-z就很接近0,那么sigmoid(z)就是大约等于1/(1+某个很接近0的量)。因为e^-z在z很大时就很接近0。
事实上,z很大时,sigmoid(z)就很接近1。
相反,如果z很小,或者是非常大的负数,那么sigmoid(z)就变成1/(1+e^-2),就会变成很大的数字。
当你看到z变成非常大的负值时。sigmoid(z)就很接近0。
所以,当你实现logistic回归时,你要做的是学习参数w和b,所以y^就变成了比较好的估计,对y=1概率的比较好的估计。
当我们对神经网络编程时,我们通常会把w和参数b分开。这里b对应一个拦截器。
在一些符号约定中,你定义一个额外的特征向量,叫x_0=0
在这另一种符号约定中,你有一个向量参数θ_0、θ_1还有θ_2,一直到θ_nx
所以,θ_0扮演的b的角色,是一个实数。而θ_1直到θ_nx的作用和w一样。
事实上,当你实现你的神经网络时,将b和w看做独立的参数可能更好