机器学习-模型优化

机器学习模型通过朝正确分类的方向更新其参数(权重和偏差)来学习。学习模型的基本结构,在下面的图片中,我们将展示机器学习模型的基本模块:
在这里插入图片描述

在这张照片上,我们可以检测到以下组件
1.训练数据集:基本上是包含训练数据的高速磁盘
2.一批样品:成对的列表(X,Y),由输入,预期输出组成,例如X可以是图像,Y可以是标签“ cat”
3.参数:模型图层用于将X映射到Y的一组参数
4.模型:将输入X和权重W转换为得分(可能为Y)的一组计算层
5.损失函数:负责说我们的得分与理想响应Y相差多远,损失函数的输出是一个标量。 另一种方法是考虑损失函数说您当前的参数集合W有多糟糕。

基本上,我们需要一种算法来改变我们的权重和偏差,以最小化我们的损失函数。

损失函数:
你可以将损失函数想象为一个有多山的地方,而你的目标是找到它的最低(最低)地方。 你唯一的仪器是可以返回您的海拔(损失)的小工具。 你需要找出要采取的方向。
在这里插入图片描述
在这里,我们还可以观察到两件事:
1、有多个淡谷(当地极小值)
2、根据着陆的位置,你可能会找到一个而不是另一个(权重初始化的重要性)

朝哪个方向走(梯度下降):
我们可以使用演算来发现应该采取的方向,例如,如果我们遵循损失函数的导数,则可以保证我们始终处于下降状态。 只需通过在该点评估的损失函数的导数减去当前的权重集即可。
在这里插入图片描述

在多个维度上,我们有一个偏导数向量,我们称其为梯度。观察到我们将梯度乘以一个因子(步长,学习率),该因子通常是一个小值,例如:0.001。
为了说明梯度下降法,让我们以一维中的简单情况为例。 考虑初始重量(-1.5):
在这里插入图片描述
在这里插入图片描述
在matlab上的实现:
在这里插入图片描述

我们可以观察到,在使用微积分找到损失函数的导数之后,我们只需要使用当前权重对其进行评估。 之后,我们仅从当前权重中获取评估值。
使用较高的学习率可以加快收敛速度,但也可以使梯度下降振荡甚至发散:

在这里插入图片描述

数值梯度:
评估梯度的慢方法,但是我们可以使用它来验证我们的代码是否正确,以下为迷你批次梯度下降:
在这里插入图片描述
无需遍历所有训练集来计算损失,而是进行梯度下降,我们可以分小批进行。 这将导致相似的结果,同时计算速度更快。 通常,最小批处理大小取决于GPU内存的大小。
如果你分析随时间的损耗衰减,则全批次版本的噪声较小(因为每次更新权重时我们都选择最佳的下降方向),但它的长度更长且难以计算。在另一个极端,如果你的小批量大小为1,则意味着要计算每个样本的梯度下降。 在这种情况下,我们称为随机梯度下降。
这在实践中相对较不常见,因为在实践中,由于矢量化代码优化,计算100个示例的梯度比计算一个示例的梯度100倍的计算效率更高。 同样,使用更大的批量时,我们更有可能估计真实的梯度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值