第一门课:神经网络与深度学习

1 神经网络的编程基础

1.1 二分分类

Logistic回归是一个用于二分分类的算法
计算机保存一张图片,要保存三个独立的矩阵,分别对应图片中的红绿黄三种像素的亮度。要把这些像素亮度值放入一个特征向量中,就要把这些像素值都提出来放入一个特征向量x。
如果图片是64×64的,那么向量x的总维度是64×64×3,因为这是三个矩阵的元素数量。即用其来表示输入特征向量的维度。
二分分类的目标是为了训练出一个分类器,它以图片的特征向量x作为输入,预测输出的结果标签y是1还是0,表示这张图片上是否存在目标物体。
训练样本作为行向量堆叠,而不是列向量堆叠。
在这里插入图片描述

1.2 Logistic回归

在这里插入图片描述
相当于sigmoid,如果z趋于无穷大,那么z的sigmoid函数得到的结果是1,如果z趋于负无穷大,那么z的sigmoid函数得到的结果是0.
在这里插入图片描述
当y=1时,则L(y冒,y)=-log(y帽),则此时y帽要尽可能得大,那么损失函数才能尽可能的小,因此y帽趋近于1
当y=0时,L(y帽,y)=log(1-y帽),则此时y帽要尽可能得小,那么损失函数才能尽可能的小,因此y帽趋近于0。
所有样本的损失函数的平均值:在这里插入图片描述

1.3 梯度下降法

在这里插入图片描述

1.4 导数运算

在这里插入图片描述
a3:由于a=2,则其导数为12,即其斜率为12,则当a=2.001时,f(a)约等于8.012。
函数的导数就是函数的斜率。
函数的斜率在不同的点是不同的。
计算的流程图:
在这里插入图片描述在这里插入图片描述
正向为正向传播。反向为反向传播。

1.5 logistic回归中的梯度下降法

单个样本实例的一次梯度更新步骤:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
应用到m个样本,需要编写两个for循环,第一个for循环是遍历m个训练样本的小循环,第二个for循环是遍历所有特征的循环。由于这个例子中只有两个特征,因此只有dw1及dw2,如果还有更多特征则继续写下去。
在这里插入图片描述

J=0; dw1=0; dw2=0; db=0;
for i = 1 to m
    z(i) = wx(i)+b;
    a(i) = sigmoid(z(i));
    J += -[y(i)log(a(i))+(1-y(i))log(1-a(i))];
    dz(i) = a(i)-y(i);
    dw1 += x1(i)dz(i); // 全部样本的梯度累加
    dw2 += x2(i)dz(i);
    db += dz(i);
// 求平均值
J /= m;
dw1 /= m;
dw2 /= m;
db /= m;
// 更新参数 w, b
w = w - alpha*dw
b = b - alpha*db

1.6 向量化

向量化可以加快计算的速度。
在这里插入图片描述

将两个循环简化为一个循环:dw += x(i)dz(i) 表示向量化,全部样本的梯度相加。
在这里插入图片描述
在这里插入图片描述
完成逻辑回归的一次迭代,那么则可以将两个循环都省略掉。
在这里插入图片描述
在这里插入图片描述

1.7 广播机制

axis指明运算沿着哪个轴执行,在numpy中,0轴是垂直的,也就是列,而1轴是水平的,也就是行。
在这里插入图片描述
在这里插入图片描述
注:广播机制与执行的运算种类无关
在这里插入图片描述

关于python_numpy向量的说明
在这里插入图片描述
总是使用n1维矩阵(列向量),或者1n维矩阵(行向量),要经常使用reshape操作来确保所需要的维数。

2 浅层神经网络

2.1 神经网络的输出

上标括号内表示层数,下标表示层中的第几个节点
在这里插入图片描述

看的是第一隐层中的第一个节点
在这里插入图片描述

2.2 多个样本的向量化

圆括号里的i指的是训练样本i
方括号指的是第二层

在这里插入图片描述

2.3 激活函数

Sigmoid函数除非用在二元分类的输出层,不然绝对不要用。
Tanh函数在所有情况几乎都很优越
最常用的默认激活函数是ReLU
带泄露的ReLu函数中可以把0.01设成学习函数的另一个参数。
在这里插入图片描述

2.4 激活函数的导数

在这里插入图片描述
在这里插入图片描述
对g(Z)求导,当z=正无穷大时,导数为0,为负无穷大导数也为0。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
但在实际中,在0处的导数可以取0或者取1.

2.5 神经网络的梯度下降法<反向传播>

在这里插入图片描述在这里插入图片描述在这里插入图片描述
左边是梯度下降,右边是向量化

3 深层神经网络

3.1 核对矩阵的维数

在这里插入图片描述在这里插入图片描述

3.2 搭建深层神经网络块

正向传播的过程中缓存了所有的z值
在这里插入图片描述
反向传播过程中也可以计算出输出值即da[0]其实就是输入特征的导数,并不重要
神经网络的一步训练包含了也就是x经过了一系列正向传播得到了y帽,之后再用输出值计算da[l],再实现反向传播。这就是神经网络一个下降梯度循环。

3.3 参数与超参数

参数:模型可以根据数据可以自动学习出的变量,应该就是参数。比如,深度学习的权重w,偏差b等。
超参数:就是用来确定模型的一些参数,超参数不同,模型是不同的,超参数一般就是根据经验确定的变量。在深度学习中,超参数有:学习速率α,梯度下降的迭代次数,隐藏层数量,隐藏层单元数量以及激活函数选择等等。即这些超参数可以决定参数的取值。
正反向传播:
在这里插入图片描述

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 09:58:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 09:58:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 09:58:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 09:58:02       20 阅读

热门阅读

  1. 【RHCSA问答题】第十章 配置和保护SSH

    2024-03-11 09:58:02       19 阅读
  2. Day41| 416 分割等和子集

    2024-03-11 09:58:02       20 阅读
  3. 【FreeRTOS任务调度机制学习】

    2024-03-11 09:58:02       21 阅读
  4. 归并排序

    2024-03-11 09:58:02       18 阅读
  5. 微信小程序-wxml语法

    2024-03-11 09:58:02       22 阅读
  6. Keepalived工具的基本介绍(原理:VRRP协议)

    2024-03-11 09:58:02       21 阅读
  7. MongoDB聚合运算符:$dayOfYear

    2024-03-11 09:58:02       23 阅读