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 :曼哈顿距离
给出了一个比较两个图片相像性的方法。
落后的方法: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)的形式?
回顾:
猫的图片——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 是这个样本的正确的分类标签
最小值为 0,最大值无穷
问题:发现一个 W 使 L = 0,W 唯一吗?
不唯一
通常在 L(w)后面+一个 lanmudaR(W),正则项,防止过度拟合
Softmax Classifier
more common
最小值:0,最大化:inf
L_i = 0 代表真实,可以理解为损失程度,L_i 越大,代表损失越多
W 最开始如何选?
1,最笨办法:random
2,梯度:通常是选一个之后进行优化,往往用到梯度,告诉我们向那个方向移动一个步长,损失变化会是多少
在每一个维度修改一小部分,进行有限差分逼近
问题:W 维度可能很多,或者 CNN 很大,导致计算很慢
可以用来 debug
怎么计算梯度? :反向传播算法
就是求导的链式法则
之前讲的是线性分类
现在讲 2 层神经网络
W2 对 W1 得到的分数 h 再进行一个加权
卷积神经网络
历史:
2012 年神经网络爆发,最早是声音识别
CNN 在 ImageNet 取得很好的效果,之后被广泛使用
人脸识别,姿势识别,alphago,医学图像识别
卷积核:用一个更小的矩阵滑过原矩阵