神经网络基础篇:逻辑回归
逻辑回归(Logistic Regression)
对于二元分类问题来讲,给定一个输入特征向量,它可能对应一张图片,想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,想要一个算法能够输出预测,只能称之为,也就是对实际值 的估计。更正式地来说,想让 表示 等于1的一种可能性或者是机会,前提条件是给定了输入特征。换句话来说,如果是上篇博客的图片,想让 来告诉这是一只猫的图片的机率有多大。在之前博客中所说的,是一个维的向量(相当于有个特征的特征向量)。用来表示逻辑回归的参数,这也是一个维向量(因为实际上是特征权重,维度与特征向量相同),参数里面还有,这是一个实数(表示偏差)。所以给出输入以及参数和之后,怎样产生输出预测值,一件可以尝试却不可行的事是让。
这时候得到的是一个关于输入的线性函数,实际上这是在做线性回归时所用到的,但是这对于二元分类问题来讲不是一个非常好的算法,因为想让表示实际值等于1的机率的话, 应该在0到1之间。这是一个需要解决的问题,因为可能比1要大得多,或者甚至为一个负值。对于想要的在0和1之间的概率来说它是没有意义的,因此在逻辑回归中,输出应该是等于由上面得到的线性函数式子作为自变量的sigmoid函数中,公式如上图最下面所示,将线性函数转换为非线性函数。
下图是sigmoid函数的图像,如果我把水平轴作为轴,那么关于的sigmoid函数是这样的,它是平滑地从0走向1,让我在这里标记纵轴,这是0,曲线与纵轴相交的截距是0.5,这就是关于的sigmoid函数的图像。通常都使用来表示的值。
关于sigmoid函数的公式是这样的,,在这里是一个实数,这里要说明一些要注意的事情,如果非常大那么将会接近于0,关于的sigmoid函数将会近似等于1除以1加上某个非常接近于0的项,因为 的指数如果是个绝对值很大的负数的话,这项将会接近于0,所以如果很大的话那么关于的sigmoid函数会非常接近1。相反地,如果非常小或者说是一个绝对值很大的负数,那么关于这项会变成一个很大的数,可以认为这是1除以1加上一个非常非常大的数,所以这个就接近于0。实际上看到当变成一个绝对值很大的负数,关于的sigmoid函数就会非常接近于0,因此当实现逻辑回归时,的工作就是去让机器学习参数以及这样才使得成为对这一情况的概率的一个很好的估计。
在继续进行下一步之前,介绍一种符号惯例,可以让参数和参数分开。在符号上要注意的一点是当对神经网络进行编程时经常会让参数和参数分开,在这里参数对应的是一种偏置。在机器学习里也有处理这个问题时的其他符号表示。比如在某些例子里,定义一个额外的特征称之为,并且使它等于1,那么现在就是一个加1维的变量,然后定义的sigmoid函数。在这个备选的符号惯例里,有一个参数向量,这样就充当了,这是一个实数,而剩下的 直到充当了,结果就是当实现的神经网络时,有一个比较简单的方法是保持和分开。但是在我写的博客中不会使用任何这类符号惯例,所以不用担心。
现在已经知道逻辑回归模型是什么样子了,下一步要做的是训练参数和参数,需要定义一个代价函数。
逻辑回归的代价函数(Logistic Regression Cost Function)
为什么需要代价函数:
为了训练逻辑回归模型的参数参数和参数,需要一个代价函数,通过训练代价函数来得到参数和参数。先看一下逻辑回归的输出函数:
为了让模型通过学习调整参数,需要给予一个样本的训练集,这会让在训练集上找到参数和参数,,来得到的输出。
对训练集的预测值,将它写成,更希望它会接近于训练集中的值,为了对上面的公式更详细的介绍,需要说明上面的定义是对一个训练样本来说的,这种形式也使用于每个训练样本,使用这些带有圆括号的上标来区分索引和样本,训练样本所对应的预测值是,是用训练样本的然后通过sigmoid函数来得到,也可以把定义为,将使用这个符号注解,上标来指明数据表示或者或者或者其他数据的第个训练样本,这就是上标的含义。
损失函数:
损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:.
通过这个称为的损失函数,来衡量预测输出值和实际值有多接近。一般用预测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中不这么做,因为当在学习逻辑回归参数的时候,会发现的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值,虽然平方差是一个不错的损失函数,但是在逻辑回归模型中会定义另外一个损失函数。
在逻辑回归中用到的损失函数是:
为什么要用这个函数作为逻辑损失函数?当使用平方误差作为损失函数的时候,会想要让这个误差尽可能地小,对于这个逻辑回归损失函数,也想让它尽可能地小,为了更好地理解这个损失函数怎么起作用,举两个例子:
当时损失函数,如果想要损失函数尽可能得小,那么就要尽可能大,因为sigmoid函数取值,所以会无限接近于1。
当时损失函数,如果想要损失函数尽可能得小,那么就要尽可能小,因为sigmoid函数取值,所以会无限接近于0。
有很多的函数效果和现在这个类似,就是如果等于1,就尽可能让变大,如果等于0,就尽可能让 变小。
损失函数是在单个训练样本中定义的,它衡量的是算法在单个训练样本中表现如何,为了衡量算法在全部训练样本上的表现如何,需要定义一个算法的代价函数,算法的代价函数是对个样本的损失函数求和然后除以:
损失函数只适用于像这样的单个训练样本,而代价函数是参数的总代价,所以在训练逻辑回归模型时候,需要找到合适的和,来让代价函数 的总代价降到最低。
根据对逻辑回归算法的推导及对单个样本的损失函数的推导和针对算法所选用参数的总代价函数的推导,结果表明逻辑回归可以看做是一个非常小的神经网络。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix