目录
1.解决分类的三步骤
2.最优化
3.梯度计算
一、分类问题三步骤
1. 评分函数(score function) :将原始图像数据映射为各个类别的得分,得分高低代表图像属于该类别的可能性高低。
线性分类评分函数的线性映射:
2. 损失函数(loss function) :量化分类标签的得分与真实标签之间一致性。也就是量化某个具体权重集W的质量 。
3.最优化(Optimization) :找到能够最小化损失函数值的W。
二、最优化 Optimization
1.随机搜索
尝试了若干随机生成的权重矩阵W,其中某些的损失值较小,而另一些的损失值大些。我们可以把这次随机搜索中找到的最好的权重W取出,然后去跑测试集
2.随机本地搜索
从一个随机开始,然后生成一个随机的扰动 ,只有当的损失值变低,才更新。
3.梯度下降
前两个方法中,我们是尝试在权重空间中找到一个方向,沿着该方向能降低损失函数的损失值。其实不需要随机寻找方向,可以直接计算出最陡峭的方向,这个方向就是损失函数的梯度(gradient)。
方向导数:某个方向上的导数
梯度:是一个矢量,是方向导数中取到最大值的方向,梯度的值是方向导数的最大值。
三、计算梯度
计算梯度有两种方法,一个是缓慢的近似方法(数值梯度法),但实现相对简单。另一个方法(分析梯度法)计算迅速,结果精确,但是实现时容易出错,且需要使用微分。
1.数值计算梯度法
使用有限差值近似计算梯度
对所有维度进行迭代,在每个维度上产生一个很小的变化h,计算函数在该维度上的偏导数。
注意在数学公式中,h的取值是趋近于0的,然而在实际中,用一个很小的数值(比如1e-5)。还有,实际中用中心差值公式(centered difference formula)效果较好。
缺点是效率低:计算数值梯度的复杂性和参数的量线性相关。如果有30730个参数,损失函数每走一步就需要计算30731次损失函数的梯度。现代神经网络很容易就有上千万的参数,显然这个策略不适合大规模数据。
2.微分分析计算梯度
利用微分来分析,能得到计算梯度的公式(不是近似),用公式计算梯度速度很快,唯一不好的就是实现的时候容易出错。
3.梯度检查
由于微分分析计算梯度容易出错 ,实际操作时常常将分析梯度法的结果和数值梯度法的结果作比较,以此来检查其实现的正确性,这个步骤叫做梯度检查。