1.2.1 二分分类
\quad 在二分类问题中,输出是一个非连续的值,课件中给出了一个NotationNotation:
- 给定mm个样本(x,y)(x,y),其中x\in \mathbb R^{n_x}x∈Rnx,表示样本包含n_xnx个特征
- y \in0,1y∈0,1,目标值属于0,1分类
- X.shape=(n_x ,m)X.shape=(nx,m)
- 在图片分类中 cat\space vs \space Noncatcat vs Noncat中,将图片装换为 红黄蓝像素矩阵拼接,特征维度为: n_x =64\times 64\times 3=12288nx=64×64×3=12288
1.2.2 Logistic 回归
\space 逻辑回归中:
-
给定xx,想得出\hat y=p(y=1,x)y^=p(y=1,x),其中x\in \mathbb R^{n_x}x∈Rnx
-
输出: \hat y=\sigma(W^T x+b)y^=σ(WTx+b),其中 \delta(z)=\frac1{1+e^{-z}}δ(z)=1+e−z1
-
其中 sigmoidsigmoid的一阶导数可以用自身来表示:\sigma'(z)=\sigma(z)(1-\sigma(z))σ′(z)=σ(z)(1−σ(z)) ,由于导数 max(\sigma'(z))=0.25max(σ′(z))=0.25 ,随着梯度下降公式的不断跟新,梯度容易消失 \space (??所以神经网络中间层中一般不用sigmoidsigmoid激活函数)
1.2.3 Logistic 损失函数
\quad为了训练得到参数,我们需要定义损失函数: 给定{(x^{(1)},y^{(1)}),...(x^{(m)},y^{(m)})(x(1),y(1)),...(x(m),y(m))},我们希望\hat y^{(i)}\approx y^{(i)}y^(i)≈y(i)
Loss(error) function:
\space 损失函数衡量了预测输出与实际输出之间的误差,对与单个样本来说:
-
平方误差: \mathbf L(y^{(i)},\hat y^{(i)})=(y^{(i)}-\hat y^{(i)})^2L(y(i),y^(i))=(y(i)−y^(i))2
-
Logistic 损失函数 \mathbf L(y^{(i)},\hat y^{(i)})=-(y^{(i)}log\hat y^{(i)})+(1-y^{(i)}log(1-\hat y^{(i)}))L(y(i),y^(i))=−(y(i)logy^(i))+(1−y(i)log(1−y^(i)))
-
对于逻辑回归来说,平方误差损失函数是非凸函数,使用梯度下降的时候容易得到局部最优解
Cost function:
\quad代价函数是在整个训练样本上的平均损失函数,通过优化损失函数,找到参数w,bw,b,使得损失函数最小化:
\qquad J(w,b)=-\frac 1{m}\sum_{i=0}^m [(y^{(i)}log\hat y^{(i)})+(1-y^{(i)}log(1-\hat y^{(i)}))]J(w,b)=−m1∑i=0m[(y(i)logy^(i))+(1−y(i)log(1−y^(i)))]
1.2.4 梯度下降法
\space 通过梯度下降更新参数:
- 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)
1.2.9 Logistic 回归中的梯度下降法
\space 对于单个样本,损失函数:
L(a,y)=-(ylog(a)+(1-y)log(1-a))L(a,y)=−(ylog(a)+(1−y)log(1−a)),其中a=\sigma(z)a=σ(z) , 对da\space dzda dz求导:
- da=\frac{\partial L}{\partial a}=-\frac{y}{a}+\frac{1-y}{1-a}da=∂a∂L=−ay+1−a1−y
- dz=\frac{\partial L}{\partial z}=a-ydz=∂z∂L=a−y
\quad再对w_1w1、w_2w2求导:
- dw_1=x_1dz=x_1(a-y)dw1=x1dz=x1(a−y)
- dw_2=x_2dz=x_2(a-y)dw2=x2dz=x2(a−y)
- db=dz=(a-y)db=dz=(a−y)
\quad更新参数:
\space 对于m个样本,跟新参数取平均:
- dw_1=\frac1{m}\sum_{i=1}^m x_1^{(i)}(a^{(i)}-y^{(i)})dw1=m1∑i=1mx1(i)(a(i)−y(i))
- db=\frac1{m}\sum_{i=1}^m(a^{(i)}-y^{(i)})db=m1∑i=1m(a(i)−y(i))
1.2.10 向量化Logistic
- 输入矩阵X:(n_x,m)X:(nx,m)
- 权重矩阵W:(n_x,1)W:(nx,1)
- 偏置 b :为常数
- 输出矩阵Y:(1,m)Y:(1,m)
\space 逻辑回归梯度下降输出向量化:
- dz:(1,m)dz:(1,m) ,dz=A-Ydz=A−Y
- db=\frac1{m}\sum_{i=1}^mdz^{(i)}db=m1∑i=1mdz(i)
- dW =\frac1{m}X.dZ^TdW=m1X.dZT
python 的一些细节处理
- 为了及时检查矩阵的维度使用 assert reshape 等
assert(a.shape==(5,1))
a.reshape(5,1)
1.2.11 Logistic 代价函数的解释
\space 给定xx , yy的概率,其中我们用\hat yy^看作输出正类的概率:
P(y|x)P(y∣x)概率越大越好,损失函数我们可以取 loglog 后加负号定义为损失函数,越小越好:
假设mm个样本是独立同分布的,则有:
对上式去符号和loglog后,得:
Done: 2018/04/02
浙公网安备 33010602011771号