1. cs231n k近邻和线性分类器 Image Classification

第一节课大部分都是废话。第二节课的前面也都是废话。算法

First classifier: Nearest Neighbor Classifier

在必定时间,我记住了输入的全部的图片。在再次输入一个图片以后,我和以前的图片进行比较,而后输出分类。网络

近邻分类器用50000张32*32 10labels的训练集来训练。咱们定义距离为曼哈顿距离d1(I1,I2)=sigma(abs(I1-I2)),咱们相互之间算出每一个像素的差值,而后加起来就是距离。函数

而后咱们获得距离最小的一个图片,而后看这图片的label是什么。测试

tip1:这个傻逼算法会随着训练集合增长,速度变得很慢。。spa

tip2:这个傻逼算法在训练的时候,咱们不计算,只会在最后测试的时候才计算。rest


加速方法:加速近邻距离的计算,加速匹配。图片

改变方法:咱们亦可使用不一样的距离计算方法,好比欧氏距离。ip


升级版:KNN,咱们找k个最近的list,而后让里面的实例进行vote,票数最多的就是这个分类。k越大分界线越平滑。k的选择是一个超参数。it

tip1:假设训练集就是测试集,那么nn的准确率就是100%(由于总能找到本身)io

tip2:假设是knn,acc就不必定是100%

tip3:咱们怎么去设置超参数?这是一个独立问题,咱们不知道,你只能不断的去尝试这个超参数的取值(这不是等于没说吗。。。


拟合程度的选择会影响你的泛化能力,你可使用k-fold来提升你的泛化能力。cross-validation也能够

实际生活中,没人使用这个傻逼算法,由于这个傻逼算法很慢。若是若是图片稍微变了一下(好比往左边平移,好比亮度不同),距离就会差不少,但实际上这个图片只是小小的改变了一下,knn就会很难识别。(实际上我以为这应该是你选择的距离计算方法不对)

Linear Classification

神经网络如今很是屌,哪儿都有神经网络。neural networks practitioner,咱们就像搭积木同样搭建神经网络。

考虑32323的一个数据集,一个图一共3072个数,咱们想知道这个图属于哪一类。

f(x,W)来表示,x是image,W是parameters。输入图片,输出分类。

最简单的线性分类器\(fx,W,b) = Wx+b\),W是10*3072的矩阵,x是3072*1的矩阵,b是10*1的bias。咱们经过不断的调整W和b来到最佳的结果。

tips1:线性分类器作了什么?W就像一个模版匹配,它其实是用一些分数的加权和,与本身想要的颜色匹配。咱们能够把图片想成高伟空间的点,而后线性分类器就是每一条线,描绘这个取样空间中负点指向正点方向的梯度。沿着这条直线,你会获得0分,若是在正方向,距离越远分数越高。

tip2:什么东西线性分类系很难去分类?你的图片若是在3072高维空间是一个圆,那么一条直线很难去很好的分割(自行脑补画面)。灰度图片很难用线性分类器去作,由于特征不够。

定义损失函数,可以quantifying what it means to have a good W.

相关文章
相关标签/搜索