逻辑回归向量化和梯度下降

符号解释

(x,y):其中x表示一个nx维度的数据,为输入数据,维度为(nx,1),也是一个nx维的特征向量,y表示标签

用大写X表示训练集矩阵,X是一个规模为nx乘以m的矩阵,X.shape()会返回(nx,m),由m个样例组成的训练集矩阵,第一个样例放在第一列……。而训练集的输入标签Y也可以用一个(1,m)的矩阵表示。

上标圆括号(i)表示第i个训练样本。

原理

逻辑回归定义的损失函数不再是差的平方的一半,原因是当学习权重参数的时候,会发现如果用差的平方和,优化目标不是凸优化(代价函数不是凸函数),只能找到多个局部最小,GD算法可能找不到全局最优。

所以,这里我们定义的损失函数是:

损失函数是对单个训练样本定义的,它衡量的是单个训练样本在算法中表现如何,为了衡量在训练集算法效果,引入代价函数,是对m个样本的损失函数求和除以m。

训练的时候对代价函数GD算法即可。

梯度下降

3.1 单个样本损失函数:

3.2 m个样本的梯度下降

使用一个for循环遍历训练集。同时,计算相应的每个训练样本的微分,然后将他们加起来。让i从1取到m,m正好是训练样本的个数。

上述方法:有两个for循环,第一个是循环遍历m个样本,第二个是循环遍历所有特征(上面例子只有两个特征w1,w2,nx=2)。可以采用向量化加速运算。

向量化

内层j的循环去掉,向量化实现,对第i个训练样本(一个nx的向量),与维度同为nx的dz向量相乘。

向量化的逻辑回归

非向量化实现

向量化实现:

在这里w是一个向量,x是一个向量,b是一个数