2021-2-1

课程链接: https://www.bilibili.com/video/BV1nJ411z7fe?p=2&spm_id_from=pageDriver

课程重点:convolutional neural network (CNN) 卷积神经网络

focus on

  • image classification problems. 图像分类问题

    ImageNet 大赛推动了图像识别的发展,最近几年 GPU 性能提高较快,所以才允许该领域快速发展,另一个方面:数据量

    机器深刻地理解图像还早

python ,jupyter notebook tutorial

对计算机来说,图片就是一个像素值矩阵

challenges:光线,形变,遮挡 Occlusion,背景,类内差异(cats' color….)

Data-Driven Approach:从网上找一堆猫的照片,作为训练

简易模型:

train:

​ def train(images, labels):

​ return models

Predict:

​ def predict(model, test_images):

​ return test_labels


Lecture1

最近临近算法

L1 :曼哈顿距离

IMG_0116

给出了一个比较两个图片相像性的方法。

落后的方法:train:O(1)

Predict: O(n),n 个比较

K-最临近算法:KNN

找到最近的 k 个点,更复杂,k 越大,结果越好

L2 = L1 取根号 , 欧式距离

L1 基于我们对坐标轴的选择,L2 不会


K 的选择,距离的算法选择:超参数,不能从数据集里面获得,依赖于具体问题

比如选 L1 还是 L2,依赖你到底要不要注重坐标轴的选择,best answer:depend on question


Lecture2.   线性分类

图片像素值 x———-f(x,W)————参数————-分类

W 为权重(自己提出的) f(x,W) = Wx +b


Lecture3.   如何选择:W 和 f(x, W)的形式?

IMG_0118

回顾:

猫的图片——2*2 矩阵——4*1 矩阵——输入到 f(x,W)

W 为自己探索的得出的 3*4 矩阵,f(x,W)为自己提出的函数,b 为修正

在这里 f(x,W) = Wx + b 可以得到一个 3*1 的矩阵,对应 3 类,某一类的得分越高,则为该类的概率越高

如何选择 W?

​ 如果想让机器来进行评估,需要一个函数把 W 当输入,告诉我们这个 W 好不好,这个函数称作

损失函数(loss function),可以定量地衡量 W 的好坏


SVM loss

Support Vector Machine 支持向量机

Sj 是通过分类器,预测出来的类的分数,S-Yi 是这个样本的正确的分类标签

IMG_0120

最小值为 0,最大值无穷


问题:发现一个 W 使 L = 0,W 唯一吗?

不唯一


通常在 L(w)后面+一个 lanmudaR(W),正则项,防止过度拟合


Softmax Classifier

more commonIMG_0121

最小值:0,最大化:inf

L_i = 0 代表真实,可以理解为损失程度,L_i 越大,代表损失越多

IMG_0122


W 最开始如何选?

1,最笨办法:random

2,梯度:通常是选一个之后进行优化,往往用到梯度,告诉我们向那个方向移动一个步长,损失变化会是多少

在每一个维度修改一小部分,进行有限差分逼近

问题:W 维度可能很多,或者 CNN 很大,导致计算很慢

可以用来 debug


怎么计算梯度? :反向传播算法

就是求导的链式法则


之前讲的是线性分类

现在讲 2 层神经网络

W2 对 W1 得到的分数 h 再进行一个加权IMG_0126

IMG_0127


卷积神经网络

历史:

2012 年神经网络爆发,最早是声音识别

CNN 在 ImageNet 取得很好的效果,之后被广泛使用

人脸识别,姿势识别,alphago,医学图像识别


卷积核:用一个更小的矩阵滑过原矩阵