完成了吴恩达的机器学习课程及相关作业后,接下来便学习了斯坦福cs231n系列的课程来进行深度学习方面的相关内容。这部分内容也是在上学期完成的,但这是DeepLearning良好的入门课,所以时不时地应该去看看里面的章节内容,最近他们又公开了2017春季新的ppt,也准备再看看了,结合想要研究的内容,来提升这方面的知识储备量。
学习这条路,需要的是能静心孤独地走好自己脚下的路,任凭外界风云变幻,唯有踏实前行才是王道!送给现在有些困顿的自己。
好了,下面就把自己的笔记记录于此吧~
正如在Machine Learning中相似,对于问题的讨论总是从分类开始,至于为什么立脚点是这样,我想一是和思维习惯有关,另外一个是与实际应用有关,但究竟为何,我也不太清楚了~并且该课程的主要讲解的问题便是classification。在这进行分析时,还是采用之前在MachineLearning中提及过的pipeline:【假设建模-目标函数-迭代优化】
一、分类方法
1、最近邻
2、K-NN
最近邻,和K-NN算法的idea比较直接,即对于待检样本,对已有数据集的样例进行遍历,寻找得到与该样本特征距离最近的样例(最近邻)或者K个样例(K-NN,然后去k中类别占多数的类别)来作为待检样本的类别归属。这种方法在搜索的样例规模较小的情况下比较可行,但当数据集空间较大时则不可取,并且没有训练过程可言,因为每次都需要遍历整个数据集。
注:在最近邻的方式中,需要确定的有两个超参数,一个是选用何种距离计算方式,另一种是K值的确定。所谓超参数指的是需要人为设定而非通过训练可得的参数。为方便超参数的选择,习惯的一种方式是将整个数据集划分成训练集,验证集和测试集,通过验证集来选择合适的超参数,利用测试集来判断是否可行。
将之前的手写笔记贴于此,方便温习
3、线性分类器
此处说到的线性分类器指两类分类器,多分类SVM和softmax。之所以说是线性分类器,原因在于计算各类得分时,使用的线性函数。在多分类SVM和softmax中,其不同点在于计算损失函数的不同。这两类分类器各有其用途,根据具体问题可进行相关分析得到所选模型。
step1:假设建模
线性模型,f=wx+b
step2:目标函数
a、多分类svm:
b、softmax:
step3:迭代优化
在迭代优化中,其目标是找到合适的参数来减小损失函数的值。在此便设计到梯度计算的相关问题。主要设计数值梯度计算以及微分梯度计算。因微分梯度计算在实际应用中更高效,在实践中采用的便是此方式,但这种计算有时容易出错,便会使用数值计算梯度来辅助检验梯度计算是否正确。
数值计算梯度:
微分计算梯度:
********************在这儿提及了一个trick,即对于激活函数是sigmoid的函数,在定损失函数时一般不采用最小二乘的方式,而采用交叉熵的方式,具体见下,这和逻辑回归中确定损失函数是一致的。
最后,来比较一下多分类svm和softmax~