本视频中,我们讲讲logistic回归,这是一个学习算法,用在监督学习问题中,输出y标签是0或1时,这是一个二元分类问题。已知的输入特征向量x可能是一张图,你希望识别出这是不是猫图。你需要一个算法,可以给出一个预测值,我们说它是预测值y_hat,就是你对y的预测。
更正式的说 你希望y_hat是一个概率,当输入特征x满足条件时,y就是1。所以换句话说,如果x是图片,正如我们在上一个视频中看到的,你希望y_hat能告诉你,这是一张猫图的概率。所以x正如我们之前的视频里说过的,是一个n_x维向量。
已知 Logistic 回归的参数是w,也是一个n_x维向量,而b就是一个实数。所以已知输入x和参数w和b,我们如何计算输出y_hat?好,你可以这么试,但其实不靠谱,就是y_hat = w^T·x + b,输入x的线性函数。事实上,如果你做线性回归,就是这么算的,但这不是一个非常好的二元分类算法。因为你希望y_hat是y=1的概率,所以y_hat应该介于0和1之间。但实际上这很难实现,因为w^Tx+b可能比1大得多,或者甚至是负值,这样的概率是没意义的。
你希望概率介于0和1之间,所以在 Logisitc 回归中,我们的输出变成y_hat等于 sigmoid 函数,作用到这个量上。这就是 sigmoid 函数的图形。横轴是z,那么sigmoid(z)就是这样的,从0到1的光滑函数。我标记一下这里的轴,这是0然后和垂直轴相交在0.5处。这就是sigmoid(z)的图形,我们用z来表示这个量,w^Tx+b。
这是 Sigmoid 函数的公式,sigmoid(z)就是1/(1+e^-z),其中z是实数。要注意一些事情,如果z非常大 那么e^-z就很接近0。那么sigmoid(z)就是,大约等于1/(1+某个很接近0的量。因为e^-z在z很大时就很接近0,所以这接近1。事实上,如果你看看左边的图,z很大时sigmoid(z)就很接近1。相反如果z很小,或者是非常大的负数,那么sigmoid(z),1/(1+e^-z),就变成很大的数字。这就变成...想一下,1除以1加上很大的数字,那是非常大的数字,所以接近0。确实,当你看到z变成非常大的负值时,sigmoid(z)就很接近0。
所以当你实现 logistic 回归时,你要做的是学习参数w和b,所以y_hat变成了对y=1概率的比较好的估计。
在继续之前,我们再讲讲符号约定。当我们对神经网络编程时,我们通常会把w和参数b分开,这里b对应一个拦截器。在其他一些课程中,你们可能看过不同的表示。在一些符号约定中,你定义一个额外的特征,叫x_0,它等于1。所以x就是R^(n_x+1)维向量,然后你将y_hat定义为σ(θ^Tx)。
在这另一种符号约定中,你有一个向量参数θ,等于θ_0、θ_1还有θ_2,一直到θ_nx。所以θ_0扮演的是b的角色,这是一个实数。而θ_1直到θ_nx的作用和w一样。事实上,当你实现你的神经网络时,将b和w看作独立的参数可能更好。所以对于这门课,我们不会用那种符号约定,就是红色写的那些,我不会用。如果你们没有在其他课程里见过这个符号约定,不要担心太多。我讲这个是为了服务那些,见过这种符号约定的学生。我们在本课中不会使用那种符号约定。如果你以前没见过,这不重要,所以不用担心。
现在你看到了 logistic 回归模型长什么样,接下来我们看参数w和b,你需要定义一个成本函数,我们下一个视频中讨论。