神经网络向量化与矩阵维度 [Andrew Ng 深度学习笔记]

成本函数:

单样本时,假设成本函数为:

Cost\, \, function=L(\hat{y}, y),  \hat{y} 为预测值,y 为标签值

那么多样本时,假设样本数为 m, 成本函数为:

Cost\, \, function=\sum_{i= 1}^{m}L(\hat{y}^{(i)}, y^{(i)})

就是把每个样本分别算出成本函数再相加。大概的思路是把m个样本的每次实验当作独立同分布的,所以总共m次实验在概率上应该全部乘起来。对累乘的结果取对数,增减性不变。把对数符号里的累乘符号提出,就变成累加的了。

为了方便后续计算,使 m 不同时,成本函数依然在一个数量级(保持和单样本时一样的尺度),故要对成本函数进行缩放

在前面加一个尺度因子(scale factor),公式变为:

Cost\, \, function=\frac{1}{m}\sum_{i= 1}^{m}L(\hat{y}^{(i)}, y^{(i)})

其实全局的成本函数,就是对局部的成本函数求平均值

然后在反向传播的求偏导时,\frac{1}{m}\sum_{i= 1}^{m} 这一项是一直存在的,所以后续的梯度就都变成了 m 个样本梯度的平均值

向量化

因为要求均值,所以要计算每个样本的各种值。

拿这个网络举例子:

非向量化,用循环实现是: 

其中,x 是 x1, x2, x3组成的列向量,上标 i 表示其是第 i 个训练样本,[] 里表示的是位于哪一层

这里用的是显式的循环,依次求出每个样本的各种值,这样效率很低

向量化的方法实现:

就是把 m 个训练样本的值并起来,形成矩阵

横向表示的是不同的样本,纵向表示的是同一层中不同的神经元

公式变成了:

可以得出,只需进行一次矩阵乘法,就可以得到 m 个样本各自的值了

刚刚列举的是前向传播,现在这幅图表示的是反向传播的向量化对比:

为什么向量化比显式的循环快

因为numpy里用于计算矩阵的方法,是一种并行化指令,又名SIMD指令(单指令流多数据流),并行化的计算方式让它比逐条执行的显式循环要快许多。吴恩达老师在课上做过演示,在CPU上运行,向量化会快上“几百倍”,在GPU上性能还会更加优秀

核对矩阵的维度

n^{[l\, ]} 表示 l 层神经元的个数

w^{[l\, ]} :(n^{[l\,] }, n^{[l-1\,] })

dw^{[l\, ]} :(n^{[l\,] }, n^{[l-1\,] })

b^{[l\, ]} :(n^{[l\,] }, 1)

db^{[l\, ]} :(n^{[l\,] }, 1)

其中 w 与 dw,b 与 db 的维度是相同的,这很显而易见,更新方式是

w^{[l\, ]} =w^{[l\, ]} - \alpha dw^{[l\, ]}

若维度不匹配,无法相减

 

 

这是目前阶段的理解,日后发现错误或新的感悟再订正

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习是一种机器学习的方法,通过多层神经网络来学习数据的特征表示。神经网络是由许多神经元(或节点)组成的网络,每个神经元可以通过权重和激活函数来对输入进行加权和非线性变换。 在深度学习中,数据通常表示为张量(tensor),它是一个多维数组。张量由一个或多个轴组成,每个轴表示数据的一个维度。常见的张量有标量(0维)、向量(1维)、矩阵(2维)等。 了解张量和神经网络后,我们可以开始实现深度学习模型。其中一个常用的深度学习框架是TensorFlow。TensorFlow是一个开源的Python库,可以用于构建和训练神经网络模型。 在TensorFlow中,我们可以通过定义网络的架构,包括层和节点的连接方式来构建神经网络模型。可以使用各种各样的层,如全连接层、卷积层和池化层等来构建模型。在每个层中,可以使用不同的激活函数来引入非线性。 一旦模型被构建,我们需要进行训练。在训练过程中,我们将数据输入模型中,并根据定义的损失函数来计算模型的预测误差。通过反向传播算法,我们可以根据这些误差来调整网络中的权重和偏差,以使模型的性能不断改进。 TensorFlow还提供了一些优化器,如随机梯度下降(SGD)等,用于自动计算和调整权重和偏差。此外,TensorFlow还支持分布式计算和GPU加速,可以加快计算速度。 通过图解深度学习神经网络,我们可以更好地理解深度学习的原理和实现。通过学习如何使用TensorFlow构建和训练神经网络模型,我们可以更好地应用深度学习来解决各种各样的问题,如图像分类、语音识别和自然语言处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值