学习目标
- 目标
- 知道逻辑回归的算法计算输出、损失函数
- 知道导数的计算图
- 知道逻辑回归的梯度下降算法
- 知道多样本的向量计算
- 应用
- 应用完成向量化运算
- 应用完成一个单神经元神经网络的结构
1.2.1 Logistic回归
1.2.1.1 Logistic回归
逻辑回归是一个主要用于二分分类类的算法。那么逻辑回归是给定一个xx , 输出一个该样本属于1对应类别的预测概率\hat{y}=P(y=1|x)y^=P(y=1∣x)。
Logistic 回归中使用的参数如下:
- 输入的特征向量:x \in R^{n_x} , xx∈Rnx,x是一个 n_xnx维的特征数量,用于训练的标签:y \in 0,1y∈0,1
- 参数:权重:w \in R^{n_x}w∈Rnx, 偏置:b \in Rb∈R
- 输出预测结果:\hat{y} = \sigma(w^Tx+b)=\sigma(w_1x_1+w_2x_2+...+b)=\sigma(\theta^Tx)y^=σ(wTx+b)=σ(w1x1+w2x2+...+b)=σ(θTx)
- Sigmoid 函数: s = \sigma(w^Tx+b) = \sigma(z) = \frac{1}{1+e^{-z}}s=σ(wTx+b)=σ(z)=1+e−z1
- 如果zz的结果非常大,那么S的结果接近于1
- 如果zz的结果较小或者是非常大的负数,那么S的结果接近于0
e^{-z}e−z的函数如下
例如:
1.2.1.2 逻辑回归损失函数
损失函数(loss function)用于衡量预测结果与真实值之间的误差。最简单的损失函数定义方式为平方差损失:
L(\hat{y},y) = \frac{1}{2}(\hat{y}-y)^2L(y^,y)=21(y^−y)2
逻辑回归一般使用L(\hat{y},y) = -(y\log\hat{y})-(1-y)\log(1-\hat{y})L(y^,y)=−(ylogy^)−(1−y)log(1−y^)
该式子的理解:
- 如果y=1,损失为- \log\hat{y}−logy^,那么要想损失越小,\hat{y}y^的值必须越大,即越趋近于或者等于1
- 如果y=0,损失为1\log(1-\hat{y})1log(1−y^),那么要想损失越小,那么\hat{y}y^的值越小,即趋近于或者等于0
损失函数是在单个训练样本中定义的,它衡量了在单个训练样本上的表现。代价函数(cost function)衡量的是在全体训练样本上的表现,即衡量参数 w 和 b 的效果,所有训练样本的损失平均值
J(w,b) = \frac{1}{m}\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)})J(w,b)=m1∑i=1mL(y^(i),y(i))
1.2.2 梯度下降算法
目的:使损失函数的值找到最小值
方式:梯度下降
函数的梯度(gradient)指出了函数的最陡增长方向。梯度的方向走,函数增长得就越快。那么按梯度的负方向走,函数值自然就降低得最快了。模型的训练目标即是寻找合适的 w 与 b 以最小化代价函数值。假设 w 与 b 都是一维实数,那么可以得到如下的 J 关于 w 与 b 的图:
可以看到,成本函数 J 是一个凸函数,与非凸函数的区别在于其不含有多个局部最低。
参数w和b的更新公式为:
w := w - \alpha\frac{dJ(w, b)}{dw}w:=w−αdwdJ(w,b),b := b - \alpha\frac{dJ(w, b)}{db}b:=b−αdbdJ(w,b)
注:其中 α 表示学习速率,即每次更新的 w 的步伐长度。当 w 大于最优解 w′ 时,导数大于 0,那么 w 就会向更小的方向更新。反之当 w 小于最优解 w′ 时,导数小于 0,那么 w 就会向更大的方向更新。迭代直到收敛。
通过平面来理解梯度下降过程