CS231n学习记录Lec4 Optimization优化

Lec4 Optimization优化


1. 梯度下降算法Gradient Decent
这里写图片描述
梯度是指向函数的最大 增长 方向,而我们的目标是沿着损失函数最小的方向调整参数 w ,所以梯度为正时要沿梯度的反方向调整一小步,然后不断重复进行参数更新。
这里写图片描述
这里的step_size即为学习率,是一个超参数。
实践考量:注意在数学公式中,h的取值是趋近于0的,然而在实际中,用一个很小的数值(比如例子中的1e-5)就足够了。在不产生数值计算出错的理想前提下,你会使用尽可能小的h。还有,实际中用中心差值公式(centered difference formula) [ f ( x + h ) f ( x h ) ] / 2 h 效果较好。细节可查看wiki。

2. 小批量数据梯度下降Mini-batch gradient descent
在大规模的应用中(比如ILSVRC挑战赛),训练数据可以达到百万级量级。如果像这样计算整个训练集,来获得仅仅一个参数的更新就太浪费了。一个常用的方法是计算训练集中的小批量(batches)数据。例如,在目前最高水平的卷积神经网络中,一个典型的小批量包含256个例子,而整个训练集是多少呢?一百二十万个。小批量数据的梯度就是对整个数据集梯度的一个近似。因此,在实践中通过计算小批量数据的梯度可以实现更快速地收敛,并以此来进行更频繁的参数更新。
小批量数据的大小是一个超参数,但是一般并不需要通过交叉验证来调参。它一般由存储器的限制来决定的,或者干脆设置为同样大小,比如32,64,128等。之所以使用2的指数,是因为在实际中许多向量化操作实现的时候,如果输入数据量是2的倍数,那么运算更快。 所以batch_size一般取2的整数次幂。

3. 图像特征转换Feature Transform
有时候将原始图像数据做一定的变换,将变换后的数据代替原始数据输入神经网络可能会比原始数据输入更有效。
这里写图片描述 如上图中想要把红蓝点分离开,对左边进行极坐标转换后得到右边分离的两列点;对原图数据进行K聚类,按聚类中心进行统计,得到一个visual words 的words_bag, 然后对这些类似于码元的小块进行输入等。