吴恩达Coursera深度学习课程 deeplearning.ai (1-2) 神经网络基础--课程笔记

相关课件: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) 的矩阵

吴恩达Coursera深度学习课程 deeplearning.ai (1-2) 神经网络基础--课程笔记_第1张图片

logistic 回归

逻辑回归预测结果是1还是0

在线性回归中我们通常使用 Ŷ  Y ^ = WX+b 来预测 Y 的预测值,但是这样 Ŷ  Y ^ 的取值范围特别大,为了让 Ŷ  Y ^ 收敛到 Y 也就是1或者0,需要对结果再进行一次 sigmoid 运算。

下图中红色部分是另一种表示方式,将 W 和 b 统一表示了,本课程中还是使用 W 和 b 来表示参数。

吴恩达Coursera深度学习课程 deeplearning.ai (1-2) 神经网络基础--课程笔记_第2张图片

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ŷ +(1y)log(1ŷ )) L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) )

逻辑回归的成本函数(Cost Function):

J(w,b)=1mi=1mL(ŷ (i),y(i))=1mi=1m[(y(i)logŷ (i)+(1y(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

吴恩达Coursera深度学习课程 deeplearning.ai (1-2) 神经网络基础--课程笔记_第3张图片

梯度下降法

梯度下降法每次都沿着导数下降的方向走一小段距离,通过多次迭代逐步接近于函数最小值。(函数需是凸函数)

w:=wαJ(w,b)wb:=bαJ(w,b)b w := w − α ∂ J ( w , b ) ∂ w b := b − α ∂ J ( w , b ) ∂ b

α α 为学习率,学习率和导数的乘积决定了步长值,在学习率一定的情况下,导数越大,步长越大;导数越小,步长越小。

导数

导数求导 和 链式法则

logistic 回归中的梯度下降法

前向传播

吴恩达Coursera深度学习课程 deeplearning.ai (1-2) 神经网络基础--课程笔记_第4张图片

反向传播

补充

sigmoid=s=11+etsigmoid=s=s(1s) s i g m o i d = s = 1 1 + e − t s i g m o i d ′ = s ′ = s ( 1 − s )

链式求导
da=La=ya+1y1adz=Lz=Laaz=(ya+1y1a)a(1a)=aydw1=Lw1=Lzzw1=x1dz=x1(ay)db=Lb=Lzzb=1dz=ayw1:=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

你可能感兴趣的:(机器学习,深度学习,吴恩达)