cs231n assignment1

   cs231n的assignment1主要是通过使用numpy库,来构造三个:KNNMulticlass SVM以及Softmaximage classification pipeline;而且在构造pipeline的同时,尽可能编写出vectorvized的代码。最后还要求实现一个两层神经网络的图像分类器,同样也会涉及如何从图像中提取更高层次的图像特征,来提高分类器的效果。
   在assignment1中使用的是CIFAR-10数据集;CIFAR-10数据集里一共有10类,包含60000张图片,50000张用了训练,10000张作为测试;每张图片的大小为3 x 32 x 32。而assignment1已经提供了数据读取以及预处理的函数(主要读取数据,然后做reshape与transpose处理)。在这次作业中,需要将图片做为向量输入,所以会看到对数据的预处理,是将其flatten()展开成向量。


KNN(K-NearestNeighbour)

   KNN是机器学习算法中的一种,主要流程:

  1. 将测试集(N_{test}个向量)的数据输入
  2. 计算测试集中各个数据与训练集(N_{train}个向量)中各个数据的距离,得到结果为dist,其大小(N_{test}, N_{train})
  3. dist按行进行从小到大的排序,然后选择排序后的前K列做为候选
  4. 统计K个候选所对应的类别,数量最多的,则为该测试数据所对应的类别
       KNN分类器比较特别的一个地方在于,并不需要对分类器进行训练,只需加载训练数据集合;而在测试阶段,需要计算测试数据与训练数据的距离,因此训练数据必须保存在模型,不能丢弃。而KNN分类器的hyperparameter也仅有“K”,因此在调参方面来看,相对方便。
       在assignment1中,计算dist矩阵时的实现方式,会影响模型的性能;在assignment1中,分别渐进地实现两个循环到一个循环到无需循环来计算dist矩阵。前两种实现方式较为简单,而对于compute_distances_no_loops的实现,只需利用(a-b)^2 = a^2 - 2ab + b^2numpybroadcast机制即可完成(由于作业中的距离要求为欧氏距离)。

SVM

   assignment1的第二部分是实现线性SVM分类器,SVM的整个流程如下:

  1. 先计算scores = xW + b,得到数据关于C个类别的分数,其中x \in R^{N \times M}, W \in R^{M \times C},b \in R^{C}
  2. 选择得分最高的作为该数据的所属类别

在模型训练的阶段,其loss functionhinge loss具体是:
L_i = \sum_{j \neq y_i} {max(0, s_j - s_{y_i} + \Delta ) }
那么关于整个训练集的loss function就是:L = { {1} \over {N} } \sum L_i + regularize term

   关于L_i = \sum_{j \neq y_i} {max(0, s_j - s_{y_i} + \Delta ) }的梯度推导ds的情况如下:
ds = \begin{cases} -1 \times {num \, about \, nonezero} & j = y_i\\ 0 & s_j - s_{y_i} + \Delta \leq 0, j \neq y_i \\ 0.5 & s_j - s_{y_i} + \Delta > 0, j \neq y_i \end{cases}
那么可以推导出dW = x.T \times ds


softmax

   assignment1的第三部分,构造softmax分类器。整个流程与SVM的一样,先计算数据关于10个类别的分数,然后选择分数最高的作为其归类;而不同的地方在于,loss function改为:
L_i = - log( { {e^{s_{y_i} }} \over {\sum _{j} { e^{s_j} } } } )
关于softmax的梯度推导,可以参考一下博主蜗牛一步一步往上爬的推导讲解,写得很详细清晰,剩余的步骤与上述的SVM一样。
   从上面两部分可以看到,主要都是先通过线性模型scores = xW + b算出关于10个类别的得分,然后得分高者则将其归于其中一类;分类器的训练就是是希望使正确类的得分可以上升,错误类的得分降低;上述的softmax functionSVM function其实就是分类器的训练目标、优化目标,而定义不同的loss function则会训练成不同的分类器。其实线性分类器,主要是指其决策边界是线性的,而其决策边界为:xW + b = 0。当分数大于0则为边界的一侧,由于所有边界会将整个空间分成很多部分,因此在哪一侧的分数较高,则被划分为其中归属。


Two Layer Network

   assignment1的第四部分,构造两层神经网络的分类器,网络结构:

  1. FC (3 * 32 * 32, 50)
  2. ReLU
  3. FC (50, 10)

而使用的loss functionsoftmax loss funtion,使用的训练方法是SGD。这部分需要调整的hyperparameter不仅仅是learning rate,还有模型结构、训练方法等等;开始有炼丹的味道。


Img Feature Extraction

   在前面的部分,分类器都是直接将图片每个像素展开成一个向量,然后将改向量作为输入。而这部分,会首先从每张图像中,提取出Histogram of Oriented Gradients (HOG)HSV两种特征,然后拼接成向量,作为分类器的输入。HOG可以认为是标准图像的texture,而HSV可以表征图像的颜色。从assignment1中可以感受到,若使用这两个feature来代替原生像素作为输入,是用两层神经网络的分类器,分类效果最终可以到达约55%,效果有较大的提高。


小结

   assignment1主要是完成KNN、两个线性分类器SVMsoftmax以及一个两层神经网络。这一部分主要是练手与熟悉两个loss function,这些loss function以及其梯度推导在后续会较为常用;并且也简略地实现了一个两层神经网络,也是为后续部分做一个简单地了解。
   在assignment1中两个线性分类器的项目结构,是先定义一个类linear classifier,里面定义好train()predict()以及loss();然后对于两类分类器再继承linear classifier,重写loss();而具体loss()的实现,则类似定义静态函数那样来实现。

类图.png

   在该作业中,实现的gradietn check,主要是通过随机抽取相应的权重,计算来计算numerical_gradient然后与analysis_gradient的差距来进行gradietn check

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354