精讲CS231N斯坦福计算机视觉公开课笔记

本课程涵盖计算机视觉的基础知识,从Hubel和Wiesel的早期研究到AlexNet在ILSVRC比赛中的胜利。讲解了KNN、线性分类器、卷积神经网络、反向传播等核心概念,并探讨了神经网络训练中的常见问题及其解决方案。
摘要由CSDN通过智能技术生成

【子豪兄】精讲CS231N斯坦福计算机视觉公开课

计算机视觉发展历史与课程概述

大概讲了一些计算机视觉的运用范围(机器学习、生物、无人机、光学等)。Hubel和Wiesel在1959年发现猫对图像的边缘信息产生反映,每个神经元针对固定区域进行处理。

视觉是分层的。2012年,在ILSVRC比赛中AlexNet获得冠军。挑战:人体姿态估计、三维重建。

李飞飞,女,1976年出生于中国北京,美国国家工程院院士,美国国家医学院院士,美国斯坦福大学首位红杉讲席教授 [9] ,以人为本人工智能研究院(HAI)院长,AI4ALL联合创始人及主席,Twitter公司董事会独立董事 [17] 。

KNN:通俗来说就是判断一个人是不是好人就看他周围的5个人是不是好人。线性分类:用线性边界进行分类。

KNN与线性分类器

手工构建特征(效率低),希望用数据驱动的方法从中学习特征。

KNN(惰性算法):训练的时候用到数据和标签,预测时用到最相似的图片。

CIFAR-10:图像结构32*32*3,训练集5万张图,测试集1万张图,共十类。

曼哈顿距离(L1):将两张图同一个像素点进行相减,最后求和。

KNN过程:先记录下训练数据,求L1距离。改变K值能提高精确度,但K不是越大越好。

L1距离适用于明确的含义,L2距离适用于不明确的含义。

KNN中超参数要调整K值和最好的距离评估指标。

如何设置最好的超参数:最好的是有训练集验证集和测试集;交叉验证,分成几份就是几折交叉验证。

KNN存在的问题:1.无法给出数据的内在含义;2.计算复杂度高,空间复杂性高;3.无法处理样本不平衡问题。算法比较糟糕。

协同过滤问题:采用KNN,给相似客户推荐产品或者用一个电影的打分来预判另一个电影的评分,可达到一定利润效果。

线性分类器:在一维平面是一个点,在二维平面在一根线,在三维平面是一个平面,更高平面中是超平面进行分类。对非线性模型无法进行拟合。

代数解释:分数为对应像素乘以权重再加一个常数。还有可视化解释和几何解释。

线性分类、损失函数与梯度下降


绞验损失函数:错误的值减去正确的值后+1再与0进行比较输出大值。惩罚与正确值相差1以上的值。绞验损失函数取平均就是数据集的损失函数。

同一个损失函数可以对应很多不同的权重。

奥卡姆剃刀原理:越简单越好。

正则化(Regularization):在原来损失函数的基础上加一个正则项。来防止过拟化,使模型更简单。

softmax classifier(Multinomial Logistic Regression):将分数变成了概率,和为1,保留大小。

交叉熵损失函数:来衡量模型,得出损失函数的公式。

优化(Optimization):让损失函数往下滚,即减少损失函数。

神经网络是端到端的,不同与以前的网络,它不需要人工的构建特征。

神经网络与反向传播

激活函数:将线性分类器变成非线性。

Relu:修正线性单元。

非线性激活函数为神经网络带来非线性,否则堆多少层神经元都与单个线性层无异。

多少输出神经元就能分多少个类别。

正则化强度越大,边界越平滑。

反向传播方法:从输出开始每一块求梯度得到局部梯度,局部梯度相乘得到全局梯度,全局梯度表示每计算一次输入值的变化。

sigmoid函数的梯度为本身乘以1-本身。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近。

卷积神经网络

卷积神经网络:卷积、下采样(池化)和全连接。

感知器:能对线性分类,不能对非线性分类。

本地计算即为边缘计算。

全连接拉平图像会丢失图像的位置信息,所以要用卷积神经网络,十个分类器输出为十个。

卷积层可以认为是特征的提取,池化层对特征进行后处理一般是使其变小,重复多次,全连接是把不同特征进行融合汇总。

边缘像素进行的卷积次数少于中间像素,可以在边缘进行补0的操作。

输入有多少个通道,卷积核就应该有多少个通道。

卷积:符合卷积核定义的区域经过卷积后得到的值很高。

池化:平移不变性、减少参数量和防止过拟合。

1998年,Yann LeCun发现LeNet,进行手写数字识别。

输出尺寸公式:(N-F)/stride+1,N为输入长宽,F为卷积核尺寸,stride为步长

若使输出和输入保持相同的尺寸要满足:(N+2P-F)/stride +1。

步长为1时:P=(F-1)/2,P为补0的圈数。

一层的参数看卷积核:若卷积核为553,则参数为553+1(bias),然后乘以卷积核个数。

1*1卷积核可以进行降维和升维。

多少个卷积核就能生成多少个feature map。

训练神经网络(1)

Mini-batch:每次喂一小批数据进去,比不上全部数据,会震荡绕弯,但道路是曲折的,前途是光明的。Batch:每次喂全部数据进去,求全局梯度,不震荡。Stochastic:每次喂一个数据进去,求一个数据上的梯度,很振荡。

包括:激活函数的选择、数据预处理、权重初始化、批归一化、密切关注训练过程和超参数优化。

激活函数。sigmoid:挤压函数,可解释性好,可类比神经细胞是否激活。问题:饱和性导致梯度消失、输出都是正值没有零点对称(zigzag path),权重同号、指数运算较消耗运算资源。tanh:与sigmoid函数相似但不存在zigzag path 问题。ReLU:不会饱和,容易计算,收敛较快。问题:初始化不良、学习率太大,存在死激活函数,需要加一个正偏置激活。Leaky ReLU和ELU:改善ReLU存在的问题。

数据预处理(比较耗费时间):需要先进行标准化处理(处理后符合标准正太分布)。白化分为PCA白化、ZCA白化。白化的目的是去除输入数据的冗余信息。假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的;白化的目的就是降低输入的冗余性。

权重初始化:所有权重全部初始化为同一个常数会发生同一层的所有神经元前向推断和反向传播完全相同。(use Xavier/He init)→使输入输出方差接近。

批归一化:强行将输出变为标准正态分布。Batch Norm:Mini-batch中N个图片用同样卷积核卷积得到的第C个feature map。Layer Norm:Mini-batch中第一个图片的全部C通道feature map。Instance Norm:Mini-batch中第一张图片的第C个feature map。Group Norm:Mini-batch中第一张图片的某些通道的feature map。

训练神经网络(2)

内容:梯度下降优化器、学习率调整、梯度校准、正则化(dropout)、监控学习过程、最优超参数搜索、模型评估与集成、迁移学习/微调。

一阶优化算法(只有一阶导数)

传统随机梯度下降在梯度较大的方向上发生振荡,不能通过单纯减小学习率解决;陷入局部最优点、鞍点(在高维空间中更普遍)。

SGD+Momentun:在来回晃荡中能摆脱局部最优点或鞍点,会影响收敛时间。

Nesterov Momentun:比前两种方法更快。

AdaGrad:在梯度较大的方向上加一个惩罚项,避免在这个方向上发生振荡。

RMSProp:在AdaGrad的基础上加一个衰减项。

Adam:综合了第一动量(momentum)和第二动量(AdaGrad/RMSProp)。初始化为0,在训练起始阶段难以预热进行工作状态,应加偏置量使得刚开始训练时两个动量有较高初始值。

学习率代表下山路上迈步子的大小,步子过大就难以下山,步子过小下山很慢。训练初始采用大学习率,后期采用小学习率。


early stopping(早停):到一定点上训练集表现良好而测试集表现很差应及时停掉训练,发生过拟合。

Dropout(防止过拟合):阻断某些神经元。打破特征之间的联合适应性,每个特征都得能独当一面。起到了模型集成得效果。在测试阶段不使用Dropout需要补偿回来。

DropConnect:随机阻断输入值。

超参数选择:校验初始损失函数值。

卷积神经网络工程实践技巧

两个33卷积层的感受野为55,3个33卷积层的感受野77,感受野=卷积核。

用多个小卷积核意味着相同的感受野,更少的参数量和计算量,更多的层数意味着更多的非线性变换。

迁移学习和fine tuning

借助预训练模型,泛化我们自己的数据集。

冻结模型前面层的结构和权重,然后重新初始化分类输出层,我们的数据集有C类就输出化C个神经元,在我们数据集上训练输出层。

循环神经网络

CNN为沿空间维度权值共享,RNN为时间维度权值共享,每个时刻的函数值都相同。

多对一为编码器,一对多为解码器。

LSTM(长短期记忆网络):遗忘门、输入门、输出门和更新门。长期记忆一般只有忘记和增加记忆。第一步选择忘记记忆,第二步选择更新记忆,第三步更新cell中记忆,第四步决定输出。

GRU(门控制单元)

深度学习-面向视觉识别的卷积神经网络,2016斯坦福大学公开课。课程介绍: 计算机视觉在社会中已经逐渐普及,并广泛运用于搜索检索、图像理解、手机应用、地图导航、医疗制药、无人机和无人驾驶汽车等领域。而这些应用的核心技术就是图像分类、图像定位和图像探测等视觉识别任务。近期神经网络(也就是“深度学习”)方法上的进展极大地提升了这些代表当前发展水平的视觉识别系统的性能。 本课程将深入讲解深度学习框架的细节问题,聚焦面向视觉识别任务(尤其是图像分类任务)的端到端学习模型。在10周的课程中,学生们将会学习如何实现、训练和调试他们自己的神经网络,并建立起对计算机视觉领域的前沿研究方向的细节理解。最终的作业将包括训练一个有几百万参数的卷积神经网络,并将其应用到最大的图像分类数据库(ImageNet)上。我们将会聚焦于教授如何确定图像识别问题,学习算法(比如反向传播算法),对网络的训练和精细调整(fine-tuning)中的工程实践技巧,指导学生动手完成课程作业和最终的课程项目。本课程的大部分背景知识和素材都来源于ImageNet Challenge竞赛。 主讲人: 李飞飞,斯坦福大学计算机科学系副教授。担任斯坦福大学人工智能实验室和视觉实验室主任,主要研究方向为机器学习计算机视觉、认知计算神经学。她在TED上的演讲,如何教计算机理解图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值