逻辑回归是一个用于二分类(binary classification)的算法。
符号定义 :
逻辑回归的Hypothesis Function(假设函数)
[参考:https://blog.csdn.net/weixin_36815313/article/details/105309095(非常详细)]
Logistic 回归损失函数 (Logistic Regression Cost Function)
为了训练逻辑回归模型的参数 w和参数 b,需要一个代价函数,通过训练代价函数来得到参数 w 和参数 b 。先看一下逻辑回归的输出函数:
区分:损失函数或误差函数(在单个训练样本中定义,衡量了在单个训练样本上的表现),代价函数或成本函数(衡量在全体训练样本上的表现)。
梯度下降法 (Gradient Descent)
由于逻辑回归的代价函数(成本函数) J ( w , b ) 特性,我们必须定义代价函数(成本函数) J ( w , b ) 为凸函数。 对于逻辑回归几乎所有的初始化方法都有效,因为函数是凸函数,无论在哪里初始化,应该达到同一点或大致相同的点。
计算图 (Computation Graph)
一个神经网络的计算,都是按照前向或反向传播过程组织的。
计算图的导数计算 (Derivatives with a Computation Graph)
这是一个计算流程图,就是正向或者说从左到右的计算来计算成本函数 J ,你可能需要优化的函数,然后反向从右到左计算导数。
Logistic 回归的梯度下降法 (Logistic Regression Gradient Descent)
我们初始化 J=0, dw1=0, dw2=0,db=0
以上只应用了一步梯度下降。因此需要重复以上内容很多次,以应用多次梯度下降。
当应用深度学习算法,会发现在代码中显式地使用for循环使算法很低效,同时在深度学习领域会有越来越大的数据集.
向量化 (Vectorization)
向量化是非常基础的去除代码中for循环的艺术。
下面看一个例子
向量化 Logistic 回归的梯度输出
之前实现的逻辑回归,可以发现,没有向量化是非常低效的。
向量化表示为
现在,利用前五个公式完成了前向和后向传播,也实现了对所有训练样本进行预测和求导,再利用后两个公式,梯度下降更新参数。所以就通过一次迭代实现一次梯度下降,但如果希望多次迭代进行梯度下降,那么仍然需要for循环,放在最外层。不过还是觉得一次迭代就进行一次梯度下降,避免使用任何循环比较舒服一些。
关于 Python Numpy 的说明
assert语句以及 reshape 操作的使用。