相关课件:https://download.csdn.net/download/haoyutiangang/10369622
本周课程主要讲的是逻辑回归,因为之后的神经网络模型和逻辑回归类似。
二分分类
比如用多张图片训练来预测图片中是否有猫。
符号表示:
- 单个样本: (x, y)
- 样本数量: m
- 第 i 个样本: x(i) x ( i )
- 训练集: m = mtrain m t r a i n
- 测试集: m = mtest m t e s t
- 输入输出: 每个样本的 x 为输入,y 为输出
- 输入矩阵X: 输入 x x 的多个维度构成一个 n维列向量,m 个 x x 构成 m 个列向量,组合成为一个 (n*m) 的输入矩阵
- 输出矩阵Y: 输出 y y 非0即1,是一个1维 的向量(一个数),m 个 y y 构成 m 个列向量,组合成为一个 (1*m) 的矩阵
logistic 回归
逻辑回归预测结果是1还是0
在线性回归中我们通常使用 Ŷ Y ^ = WX+b 来预测 Y 的预测值,但是这样 Ŷ Y ^ 的取值范围特别大,为了让 Ŷ Y ^ 收敛到 Y 也就是1或者0,需要对结果再进行一次 sigmoid 运算。
下图中红色部分是另一种表示方式,将 W 和 b 统一表示了,本课程中还是使用 W 和 b 来表示参数。
logistic 回归损失函数
- 样本上标(i): 表示第 i 个样本
- 损失函数(loss function): 评估 ŷ y ^ 和 y 之间的差距
- 成本函数(cost function): 评估损失函数的均值,即 m 个损失函数的均值
损失函数通常使用
L(ŷ ,y)=12(ŷ −y)2 L ( y ^ , y ) = 1 2 ( y ^ − y ) 2
但是逻辑回归中,上述损失函数不是凸函数,不好计算最小值。
逻辑回归的损失函数(Loss Function):
L(ŷ ,y)=−(ylogŷ +(1−y)log(1−ŷ )) L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) )
逻辑回归的成本函数(Cost Function):
J(w,b)=1m∑i=1mL(ŷ (i),y(i))=−1m∑i=1m[(y(i)logŷ (i)+(1−y(i))log(1−ŷ (i)))] J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = − 1 m ∑ i = 1 m [ ( y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) ) ) ]
成本函数是 W 和 b 的函数,我们的目的是求最佳的 W 和 b, 使得成本函数尽可能的接近于0
梯度下降法
梯度下降法每次都沿着导数下降的方向走一小段距离,通过多次迭代逐步接近于函数最小值。(函数需是凸函数)
w:=w−α∂J(w,b)∂wb:=b−α∂J(w,b)∂b w := w − α ∂ J ( w , b ) ∂ w b := b − α ∂ J ( w , b ) ∂ b
α α 为学习率,学习率和导数的乘积决定了步长值,在学习率一定的情况下,导数越大,步长越大;导数越小,步长越小。
导数
导数求导 和 链式法则
logistic 回归中的梯度下降法
前向传播
反向传播
补充
sigmoid=s=11+e−tsigmoid′=s′=s(1−s) s i g m o i d = s = 1 1 + e − t s i g m o i d ′ = s ′ = s ( 1 − s )
链式求导
da=∂L∂a=−ya+1−y1−adz=∂L∂z=∂L∂a∂a∂z=(−ya+1−y1−a)⋅a(1−a)=a−ydw1=∂L∂w1=∂L∂z∂z∂w1=x1⋅dz=x1(a−y)db=∂L∂b=∂L∂z∂z∂b=1⋅dz=a−yw1:=w1−αdw1w2:=w2−αdw2b:=b−αdb(8)(9)(10)(11)(12)(13)(14) (8) d a = ∂ L ∂ a = − y a + 1 − y 1 − a (9) d z = ∂ L ∂ z = ∂ L ∂ a ∂ a ∂ z = ( − y a + 1 − y 1 − a ) ⋅ a ( 1 − a ) = a − y (10) d w 1 = ∂ L ∂ w 1 = ∂ L ∂ z ∂ z ∂ w 1 = x 1 ⋅ d z = x 1 ( a − y ) (11) d b = ∂ L ∂ b = ∂ L ∂ z ∂ z ∂ b = 1 ⋅ d z = a − y (12) w 1 := w 1 − α d w 1 (13) w 2 := w 2 − α d w 2 (14) b := b − α d b
m 个样本的梯度下降
- 在 for 循环中计算每个样本的前向传播和反向传播,共 m 次
- 每个计算时输入可能是 n 维向量,所以需要计算 w1,w2,...,wn w 1 , w 2 , . . . , w n 共 n 个
- 为了减少 for 循环的时间,可以考虑使用向量化运算,也就是并行运算向量中的每一个值
向量化 logistic 回归
w: n*1
X: n*m
b: 1*m
y: 1*m
Z = np.dot(w.T,X) + b
A = sigmoid(Z)
dZ = A-Y
dw = 1/m*np.dot(X,dZ.T)
db = 1/m*np.sum(dZ)
w = w - alpha*dw
b = b - alpha*db