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


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

    First classifier: Nearest Neighbor Classifier

    在一定时间,我记住了输入的所有的图片。在再次输入一个图片之后,我和之前的图片进行比较,然后输出分类。

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

    然后我们得到距离最小的一个图片,然后看这图片的label是什么。

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

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


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

    改变方法:我们亦可以使用不同的距离计算方法,比如欧氏距离。


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

    tip1:假设训练集就是测试集,那么nn的准确率就是100%(因为总能找到自己)

    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.

  • 相关阅读:
    第40次全国计算机等级考试监考
    [再寄小读者之数学篇](2014-07-27 打印错误吧)
    日积月累的名典[2014-10-7]
    2014年全球“高被引科学家”数学类名单
    年轻尼姑的19句话
    PostgreSQL的 initdb 源代码分析之十六
    PostgreSQL的 initdb 源代码分析之十五
    PostgreSQL的 initdb 源代码分析之十四
    PostgreSQL的 initdb 源代码分析之十三
    PostgreSQL的 initdb 源代码分析之十二
  • 原文地址:https://www.cnblogs.com/qscqesze/p/7875962.html
Copyright © 2020-2023  润新知