文章目录

1 神经网络的编程基础1.1 二分分类1.2 Logistic回归1.3 梯度下降法1.4 导数运算1.5 logistic回归中的梯度下降法1.6 向量化1.7 广播机制

2 浅层神经网络2.1 神经网络的输出2.2 多个样本的向量化2.3 激活函数2.4 激活函数的导数2.5 神经网络的梯度下降法<反向传播>

3 深层神经网络3.1 核对矩阵的维数3.2 搭建深层神经网络块3.3 参数与超参数

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等。 超参数:就是用来确定模型的一些参数,超参数不同,模型是不同的,超参数一般就是根据经验确定的变量。在深度学习中,超参数有:学习速率α,梯度下降的迭代次数,隐藏层数量,隐藏层单元数量以及激活函数选择等等。即这些超参数可以决定参数的取值。 正反向传播:

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: