1-2 深度学习基础

Posted on 2018-04-03 10:58  ypscut  阅读(235)  评论(0)    收藏  举报

1.2.1 二分分类

\quad 在二分类问题中,输出是一个非连续的值,课件中给出了一个NotationNotation:

  •  给定mm个样本(x,y)(x,y),其中x\in \mathbb R^{n_x}xRnx,表示样本包含n_xnx个特征
  •  y \in0,1y0,1,目标值属于0,1分类
  •  X.shape=(n_x ,m)X.shape=(nx,m)

image

  • 在图片分类中 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}xRnx

  •  输出: \hat y=\sigma(W^T x+b)y^=σ(WTx+b),其中 \delta(z)=\frac1{1+e^{-z}}δ(z)=1+ez1

  • 其中 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))+(1y(i)log(1y^(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)=m1i=0m[(y(i)logy^(i))+(1y(i)log(1y^(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)+(1y)log(1a)),其中a=\sigma(z)a=σ(z) , 对da\space dzda dz求导:

image

  •  da=\frac{\partial L}{\partial a}=-\frac{y}{a}+\frac{1-y}{1-a}da=aL=ay+1a1y
  •  dz=\frac{\partial L}{\partial z}=a-ydz=zL=ay

\quad再对w_1w1w_2w2求导:

  •  dw_1=x_1dz=x_1(a-y)dw1=x1dz=x1(ay)
  •  dw_2=x_2dz=x_2(a-y)dw2=x2dz=x2(ay)
  •  db=dz=(a-y)db=dz=(ay)

\quad更新参数:

w_1:=w_1-\alpha dw_1w1:=w1αdw1w_2:=w_2-\alpha dw_2w2:=w2αdw2b:=b-\alpha dbb:=bαdb

\space 对于m个样本,跟新参数取平均:

  •  dw_1=\frac1{m}\sum_{i=1}^m x_1^{(i)}(a^{(i)}-y^{(i)})dw1=m1i=1mx1(i)(a(i)y(i))
  •  db=\frac1{m}\sum_{i=1}^m(a^{(i)}-y^{(i)})db=m1i=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=AY
  •  db=\frac1{m}\sum_{i=1}^mdz^{(i)}db=m1i=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) = \hat y^y(1-\hat y)^{(1-y)} ,P(yx)=y^y(1y^)(1y),

P(y|x)P(yx)概率越大越好,损失函数我们可以取 loglog 后加负号定义为损失函数,越小越好:

L(\hat y,y)=-(ylog\hat y+(1-y)log(1-\hat y))\space ,L(y^,y)=(ylogy^+(1y)log(1y^)) ,

假设mm个样本是独立同分布的,则有:

max \prod_{i=1}^{m} P(y^{(i)},y^{((i)}) \space ,maxi=1mP(y(i),y((i)) ,

对上式去符号和loglog后,得:

J(w,b)=-1/m\sum_{i=1}^{m}[y^{(i)}log\hat y^{(i)}+(1-y^{(i)})log(1-\hat y^{(i)})]J(w,b)=1/mi=1m[y(i)logy^(i)+(1y(i))log(1y^(i))]

Done: 2018/04/02

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3