最优化问题

最优化(Optimization)是寻找能使得损失函数值最小化的参数 W 的过程。在cs231n中循序渐进的讲解了3种方法。

1:随机搜索
2:随机局部搜索
3:跟随梯度

下面来简单的分别介绍:

1.随机搜索
1)首先,随机初始化矩阵权重W,令当前的权重为最佳权重Wbest
2)其次,设置搜索次数,每次迭代中随机产生一个权重矩阵W,将当前W产生的损失值与 Wbest 产生的损失值比较,若更小,则将 Wbest 替代为当前W
3)所有迭代计算完毕后,得到的 Wbest 即所求权重

2.随机局部搜索
随机局部搜索的大体步骤与随机搜索类似,具体步骤如下:
1)首先,随机初始化矩阵权重W
2)其次,设置搜索次数,每次迭代中随机产生一个扰动矩阵 δW ,若 W+δW 产生的损失值比 W 产生的损失值更小,则用W+δW 替代当前W
3)所有迭代计算完毕后,得到的 W 即所求权重

3.跟随梯度
梯度表示最快的下降方向,那么就可以不用随机局部搜索而直接利用梯度来寻找下降方向。

梯度计算又可分为两种方法:
数值梯度法和分析梯度法

首先来看数值梯度法
数值梯度法是令W中每个Wi 依次变化h(h为很小的数,如0.0001),通过计算变化前和变化后的loss,得到每个方向的梯度值。这种方法毫无疑问计算量巨大,如果 Wi 过多,则时间复杂度过高。

分析梯度法
通过loss function对w求导得到梯度,该方法计算快,但是缺点是如果公式过于复杂,求导困难。

梯度下降法
最后简单介绍如何用梯度下降法得到最优的W矩阵。
1)首先利用loss function计算W的梯度
2)设置步长(step_size),令weights += - step_size * weights_grad
这里,step_size也称为学习率,是一个超参,如果步长过小,则收敛速度过慢,如果步长过大可能会进入局部最优解,严重时无法收敛。所以通常情况下,刚开始学习时,步长可以设置的大一些,随着迭代次数的增加,减小步长。

另一个值得一提的问题是,在计算W的梯度时,我们不会将所有数据都用来计算,而是选择一个batch,而这个batch也是一个超参,例如32,64,256等。因为没有选取所有数据,所以计算得到的W的梯度可能不够准确,有时候可以认为是噪声,所以loss在学习过程中上下波动,但是总体上一定是呈下降趋势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值