经过一个半月的学习,我对Machine Learning和Convolutional Neural Network有了一些粗浅的认识。这篇报告将会简单谈谈我对CS231n中所涉及技术的一些理解和看法,以及在学习过程中所遇到的一些困难。
Supervised Learning
监督学习是我目前所接触到的最多的一种学习方法。其形式通常是给定一些带label的数据集,然后建立一个model,通过不断的train,使得预测值与label的差距越来越小。
从更数学的角度来看,其本质是建立了一个Object: Loss function (L),而我们的目标是 min (L)。实现这一目标的方法有很多,最常见的方法之一是梯度下降算法。在梯度下降算法中,我们计算model中weights对Loss的梯度,跟随其梯度下降的方向对weights进行更新,从而使得Loss减小。不过梯度下降算法的缺点很明显,就是容易卡在局部最优点;除此之外不当的hyperparameter选择会导致其无法收敛。而缓解以上问题的一个方法就是选取合适的hyperparameter使其尽可能的接近全局最优点,除此之外还引入了一些梯度更新算法如Adam、Momentum等来加速其收敛。
除了梯度下降算法外,还有一系列诸如BFGS, L-BFGS等算法,但这些算法涉及到大规模的矩阵运算,运算量过大,不适用于大型的model。
在min (L)的过程中可能会遭遇到过拟合的情况,因此引入了正则项,用来抑制weights的大小,从而缓解过拟合。
Neural Network
目前我所接触到的NN基本上都是属于监督学习的范畴,其本质也很上述一致,前向传播求loss,后向传播求梯度。NN一般是多层结构,一般