Lecture 4 最优化
课程内容记录:
(上)https://zhuanlan.zhihu.com/p/21360434?refer=intelligentunit
(下)https://zhuanlan.zhihu.com/p/21387326?refer=intelligentunit
1.代码注释:
numpy.random.randn():
numpy.random.randn(d0,d1,…,dn):rand函数返回一个或一组样本,具有标准正态分布。。dn对应每个维度,函数返回值为指定维度的array。
具体用法参见:https://blog.csdn.net/u012149181/article/details/78913167
float("inf"): 正无穷。
2.关于梯度:
数值梯度是利用有限差分法代入一个具体的较小值,利用公式求得对应的梯度,这个梯度值是近似的,近似程度取决于你的较小值的大小。它的优点是代码容易实现。解析梯度是利用微分直接求解梯度,优点是精确求解,解析速度快,但是有时候会出错。在debug的时候,为了检验公式的正确性,数值梯度往往是一个很好的工具,由于计算速度很慢,你可能需要适当减少参数的数量,这是一个非常好的调试策略。
注:学习率是一个很重要的超参数,在训练网络时往往是第一个需要检查的超参数,关于模型大小和正则化强度的检查往往在其之后进行。
注:交互网页项目网址(很好用,就不加以说明了):
http://vision.stanford.edu/teaching/cs231n-demos/linear-classify/
3.深度神经网络之前:
将像素直接输入线性分类器不是一个明智的选择,因为这样的模型无法分辨多模态等图片的特征,且总由背景等像素占比多的区域决定分类结果。在深度神经网络大规模运用之前,常用的方式是计算图片各种特征代表(feature representation),例如一些与图片形象特征有关的数值构成特征向量,然后将不同的特征向量合在一起,得到图像的特征表述,再将这些特征表述传入线性分类器。这种模型可以得到图片的转换特征(比如得到颜色频数直方图,或者边缘方向直方图),将某些原本线性不可分的图片特征变为线性可分的,从而可以有线性分类器进行分类。如今的深度学习网络主要的区别就是网络可以利用卷积层等结构自行学习特征,不再需要人工提取输入特征。