CNN学习笔记(李宏毅机器学习)

不得不说,李老师的课质量真的很高,不光课程本身好,课后作业也布置的很棒,写代码苦手如我都能跟着一起学习baseline的code。如果想要提升的话,也可以自己补充To Do的部分,很nice。
我跟着学习的是2021 Spring这一届,b站和油管都能看。课程主页
台大李宏毅机器学习
今天的部分是从理论来理解CNN,实践部分,pytorch部分的库函数如何使用,我会在以后补充。

Image Classification

假设目前我们要做一个图像识别系统,给一张猫的图片确定这个猫确实是猫,而不会识别成dog。整个过程抽象出来如图。
CNN学习笔记(李宏毅机器学习)_第1张图片

Input

CNN学习笔记(李宏毅机器学习)_第2张图片
对于图像,一般会把图像按照RGB的形式组织成length × width × channel,channel就是图像的颜色数,或者我个人觉得可以叫图层。如果是一个灰度图片,那么channel =1

Output

对于分类问题,比如有两个类,cat和dog,可以采用独热码(one-hot)的形式。

CNN学习笔记(李宏毅机器学习)_第3张图片

model

如果只是简单的用全连接层做模型的话,那么它的参数会巨大
CNN学习笔记(李宏毅机器学习)_第4张图片
识别图片大小为100 ×100 的图片,1000个neuron,那么weight会算3×10^7之多

但实际上,做图像识别是不需要这么多参数的,所以从两个方面考虑简化:

Receptive field

如同人类识别鸟是通过鸟的特征,而不是整张图片一样,一个neuron也并不需要观察整个图片,而只用观察到鸟的pattern。patten在的地方,就是receptive filed。
CNN学习笔记(李宏毅机器学习)_第5张图片
Receptive field存在的意义是抓pattern,所以,对于不同的目标,可以自己设计receptive field 的size,3×3,5×5都可以。size的形状也可以自己设定。
虽然receptive field size可以设置的比较小,但是它能学习到比较大的pattern

Typical Setting

CNN学习笔记(李宏毅机器学习)_第6张图片

Weight Sharing

特征不会说固定出现在一个地方,比如鸟嘴不会总在左上方出现,而是有可能出现在图片的中央、右上方等,但位置的改变没有改变本质,鸟嘴还是鸟嘴。如何利用这个特性简化模型呢?
CNN学习笔记(李宏毅机器学习)_第7张图片
不同的neuron计算时共享相同的参数,但是由于input不同,所以output也会不同。负责同一个receptive field 的neuron不会共享参数。

Typical Setting

CNN学习笔记(李宏毅机器学习)_第8张图片
假设一共有64组不同的参数,(实际上,一个filter就是其中的一组参数),对于同一个 receptive field,64个filter都会参与计算。而到了下一个receptive field, 还是这64组参数作为w ,与作为x 的input计算产生output。
这时,一个CNN初步成型了。

CNN layer与全连接层的关系

CNN学习笔记(李宏毅机器学习)_第9张图片

Filter

另一种理解CNN的方式是直接从filter的角度看
CNN学习笔记(李宏毅机器学习)_第10张图片
每个filter都想抓住一个pattern

计算方式

CNN学习笔记(李宏毅机器学习)_第11张图片
CNN学习笔记(李宏毅机器学习)_第12张图片

feature map : filter 计算后的集合。
CNN学习笔记(李宏毅机器学习)_第13张图片
CNN学习笔记(李宏毅机器学习)_第14张图片
多层卷积后,filter是可以抓住大的pattern的。network越深,图像看到的pattern越大。

两种理解的对比

CNN学习笔记(李宏毅机器学习)_第15张图片

Max Pooling

max pooling 不会学习任何参数,只是减少计算量的手段
CNN学习笔记(李宏毅机器学习)_第16张图片
CNN学习笔记(李宏毅机器学习)_第17张图片
max _pooling 选了最大的那个值

CNN的整体架构

CNN学习笔记(李宏毅机器学习)_第18张图片
可以看出,convolution和pooling交替使用,最后用flatten拉平tensor,再过全连接网络,最后用softmax得到分类结果

事实上,CNN可以不经过Pooling,因为它只是减少计算量的手段,所以有些比较高精度的任务就不适合用它。比如Alpha Go用了CNN,但没有池化层。

CNN 用处

  1. 图像识别
  2. 语音辨识
  3. 自然语言处理

CNN的局限性

它不能识别放大、缩小和旋转的图片
有专门处理这种问题的网络,例如Spatial Transformer Layer

你可能感兴趣的:(机器学习,机器学习,cnn,人工智能)