吴恩达Deeplearning.ai专项课程笔记(一)-- 神经网络基础

来源:互联网 发布:4g网络优化工程师课程 编辑:程序博客网 时间:2024/06/05 00:21

  吴恩达深度学习专项课程Deeplearning.ai共开设五门课,目前已经学了大半,想起来忘了整理课程笔记,这几天抽空补上。

1.基础概念

  • 神经网络 :输入一些数据,经过隐藏层,最终得到输出,圆形节点为神经元。
     这里写图片描述

  • 神经网络样例 :(标准神经网络/卷积神经网络/循环神经网络)
      这里写图片描述 

  • 结构化数据与非结构化数据 :结构化数据通常指数据库数据(每个特征都有清晰定义),非结构化数据如音频、原始音频、图像、文本等。

2.Logistic回归(二分类)

  • 特征向量构建
    exm.图像特征向量的提取,把每个像素上的RGB数值(假设共nx个)提取出来排列入一个向量中,就得到一个nx维的特征向量;
      这里写图片描述
      
  • 深度学习符号约束
    1.样本:
      对(x,y)表示一个单独样本,其中xnx维特征向量,y{ 01} (二分分类)。
      
    2.训练集:
      对于训练集中的单个样本,用圆括号加上标进行标注,如:(x(1),y(1)),(x(2),y(2)),…(x(m),y(m)) 其中m表示训练集样本个数,即:m=Mtrain
      
    3.矩阵符号约束:
      训练集矩阵X的约定形式,将样本横向排列,写成矩阵X的列,因此矩阵维度为(nx,m),输出矩阵Y的约定形式,将样本对应标签依旧横向排列,写成矩阵Y的列,因此输出矩阵维度为(1,m)
    这里写图片描述
     
  • logistic回归
      对于单个样本x,其正确标签值为y,通过logistic回归得到的预测值记为y^=P(y=1|x)(读作y hat或y帽),对应参数分别为ωb。其中ω维数同x,为一个nx维向量,b为实数。
      给定样本x(i)logistic回归公式为:       
              y^(i)=σ(ωTx(i)+b)z(i)=ωTx(i)+b
      激发函数sigmoid函数控制y^的值在0与1之间,函数公式为σ(x)=11+ex,函数图像如下图所示。
        这里写图片描述
      损失函数(也叫误差函数),用于衡量预测值与实际值间的接近程度,其定义方法有多种,如L2范数平方均值等,在Logistic回归中,定义损失函数L为:
              L(y^,y)=(ylog(y^)+(1y)log(1y^))
      损失函数L基于单个样本定义,衡量模型在单个训练样本上的表现,针对整个训练集,采用成本函数J(cost function)衡量基于参数的总成本。  
        1mmi=1L(y^(i),y(i))=1mmi=1[y(i)log(y^(i))+(1y(i))log(1y^(i))]
      目标:找到合适的参数ω,b,使成本函数值降到最低。
      
  • 梯度下降
      目标:学习使成本函数尽可能小的参数ω,b
      方法:首先初始化ω,b,然后进行沿最陡的下坡方向下降,直至抵达最低点(收敛到全局最优解或接近全局最优解)
      公式:ωωαdJ(ω)dω, α为学习率,也称为每次下降的步长,而梯度可以理解为函数曲线/曲面的方向。

     1.单个样本的梯度下降
      由于单个样本而言,损失函数为:
          l(y^(i),y(i))=y(i)log(y^(i))+(1y(i))log(1y^(i))
      其中:z(i)=ωTx(i)+by^(i)=σ(z(i))
      dldz=(y(i)1σ(z)σ(z)(1σ(z))+(1y)11y^(i)σ(z)(σ(z)1))  
      化简结果为:σ(z)y(i)
      →dldω=dldzdzdω=(σ(z)y(i))x(i)
      →dldb=dldzdzdb=σ(z)y(i)=dldz
     2.m个样本的梯度下降
      对成本函数L(ω,b)=1mmi=1l(y^(i),y(i))
      →dLdω=1mmi=1(σ(z)y(i))x(i)
      →dLdb=1mmi=1(σ(z)y(i))
      

3.向量化

  在实际编程过程中,由于在训练大数据集时,采用显式for循环导致程序运行时间复杂度过高。采用向量化的方法将消除显式for循环,加快代码运行速度。
  
  1、举例
  调用numpy包,实现逻辑回归的乘法部分:z=np.dot(ω.T,x)
  对向量v中每个元素做指数运算:np.exp(v)
  对向量v中每个元素做对数运算:np.log(v)]
  将向量v中每个元素变为绝对值:np.abs(v)
  求v中每个元素和0相比的最大值:np.maximum(v,0)
  对向量v中所有元素求和:np.sum(v)
  
  2、logistic回归中向量化的实现
  初始化:
    参数ω初始化:ω=np.random.rand((nx,1)),维度为(nx,1)
    参数b初始化,b=0,numpy的广播机制将在计算时扩充b的维度为(nx,1)
    训练集矩阵:X,大小为(nx,m) 
    训练集样本标签: Y,大小为(1,m)
  预测:
    定义矩阵Z,大小为(1,m)z=np.dot(ω.T,x)+b
        Z=[ωTx(1)+b,...,ωTx(m)+b]=[z(1),z(2),...,z(m)]
    预测值: A ,大小同Y,为(1,m)A=np.sigmoid(Z)
       =[σ(zx(1)),σ(z(2)),...,σ(z(m))]=[a(1),a(2),...,a(m)]
  梯度下降:
   由单样本梯度下降推导结果dldz=σ(z)y(i),及m个样本推导结果

{dLdω=1mmi=1(σ(z)y(i))x(i)$  dLdb=1mmi=1(σ(z)y(i))

   有:
      
dz=AYdw=1mnp.dot(dz.T,X)db=1mnp.sum(dz)

   则→
{ω=ωαdω   b=bαdb


阅读全文
0 0