Machine Learning 02 学习笔记 卷积、感知机、神经网络

卷积

理解卷积公式(狭隘)

\[\int_{-\infty}^{\infty} f(\tau) g(x-\tau) \mathrm{d} \tau \]

一个人24小时不间断进食,且一直在消化,消化的速率和他吃的东西没有关系。问下午两点这个人胃里还剩多少食物。

image-20220405090745467 image-20220405090817479

用f函数表示进食,用\(g\)函数表示消化,就能把下午两点这个人胃里还剩多少食物求解出来。


假设我们不考虑消化问题,那么就是对f函数的简单积分。但是引入消化,只看f函数就不够了。

比如中午12点吃了一碗米饭。那么到下午两点米饭在胃里还剩余 \(f(12) \cdot g(14-12)\),其他食物同理。

image-20220405091607686


这是考虑特殊情况(单独食物),现在我们考虑一般情况(所有食物)。

image-20220405091910672

关注 \(x 、t-x\) 两个变量,两个变量相加后会消掉其中一个。


image-20220405092131637

\(x、t-x\) 对应的是f函数到g函数的一条连线。每一对连线都是 \(f(x)\)\(g(t-x)\),我们把它相加起来。

image-20220405092344359

我们这里引入了时间,是具有物理意义的。所以不能负无穷,像距离就可以负无穷了。


卷积的物理意义

  • 一个系统
  • 输入不稳定
  • 输出稳定
  • 用卷积求系统存量

为什么叫卷积(狭隘)

把g函数翻转一下,所以叫卷积

image-20220405092603517


图像的卷积操作

从前面的例子,卷积操作无非就是 f、g两个函数。所以我们要去找图像卷积操作两个f、g的函数。

f函数就是不稳定输入,g函数就是稳定输出。


电脑里的图片可以看做是一个个像素点组成的,具有灰度值,rgb值等信息。

卷积操作就是用 3*3 的点阵(卷积核)和图像进行一个操作,将卷积核扣在图像的点阵上。对应的两个格子相乘。将相乘的九个结果相加保存对应到一个新像素值。用卷积核把整个图像都扫一遍,图像外围加一层0像素边使边缘像素点也能被计算。

image-20220405093139259


图像的卷积操作就是拿图片和卷积核先相乘再相加。直觉上看。图像和卷积核一个应该是f,一个应该是g。

图像里的像素点总在变化对应系统不稳定的输入,而卷积核不变对应的是稳定的输出。

这里的问题跟之前的吃饭问题不一样,这里是一个二维问题,f函数应该是一个平面波。

image-20220405093508944


卷积核和g函数有什么关系呢?我们需要改变对卷积的理解。一个图像不是系统,没有稳定输入也没有稳定输出。

再回到原来吃饭的例子,我们把吃东西看成系统的输入,消化看成系统的输出,胃里的存量是系统的存量,仅靠这个例子很难跳出去对他有一个更广泛的理解。所以我们换一个例子。

image-20220405093913184

假如在t时刻发生飓风,原因是很多蝴蝶煽动翅膀。在x时刻对飓风产生影响,产生的影响力会随时间变化逐渐衰减。


我们可以这样理解卷积,在某一个时刻发生一件事,而这件事会受到之前很多事的影响,比如x时刻发生的一件事,会对t时刻产生影响,具体怎么影响要看x到t时刻经历的时间,规定随时间影响力变化的函数是g函数。我们也可以把视野放宽一点,不仅仅是时间,而是发生事件的位置等等。


平滑卷积操作

image-20220405094431046

平滑就是让周围的像素点和自己相差不要太大。

卷积核就是周围像素点对当前像素点产生的影响。卷积核理论上可以无限大,由于我们这是计算机问题,要考虑性价比,所以就用 3*3 的点阵。


image-20220405094710193

红色公式是进行卷积操作,后面参数相加消掉其中一项可以拿来判断是不是卷积的典型标志。

前面的求和符号因为考虑的是像素点,所以不是连续的,需要连加表示。

image-20220405094944174

求一个像素点对另一个像素点产生了什么影响,我们使用类比法,可以把两个像素点看成不同时刻的事件。我们要考虑的就是t时刻之前所有的时间对t时刻发生的事情产生的影响。现在我们就是相当于在考虑周围像素点对中心像素点产生的影响。那么g函数里的参数是 \(t-x\),同样可以类比计算 \(x-(x-1) = 1\)\(y-(y-1) = 1\)

image-20220405095447509

将右侧g函数图像旋转180度,就可以清晰对应。

image-20220405095702597

卷积核是可以直接扣在图像上进行卷积相加。

把卷积当做是周围像素点对当前像素点的影响,而g函数规定了如何影响的关键。


考虑图像的卷积操作不只能看平滑卷积核,卷积操作不只有平滑卷积核。

image-20220405100223261

使用特定的卷积核可以挑出图片里的特征。

卷积神经网络

image-20220405095928081

卷积神经网络识别图像的第一步就是把图像的局部特征挑出来(图像进行卷积操作),把局部特征交给神经网络去做判断。

如果挑选的卷积核合适,可以把图像里的某些特征挑出来,其他特征就被过滤掉了。如垂直边界过滤器、水平边界过滤器。

相乘相加是自己对周围像素点的试探,而卷积核则是试探的模板。是对周围像素点的主动试探和选择。


image-20220405100759475

image-20220405100810751

image-20220405100842413


卷积的三层含义

  • 一个系统有不稳定输入、稳定输出,就可以通过卷积求系统存量
  • 一个卷积核规定周围像素点对当前像素点会产生怎么样的影响
  • 一个过滤器的卷积核就是规定一个像素点会如何试探周围的像素点,如何筛选图像特征

感知机

是什么

由罗森布拉特提出。神经网络的基本单元叫感知机。多个输入,一个输出 0、1。是一个分类的工具。

image-20220405103859259

一个感知机至少有两部分,一个分界线,一个数据到底在自己的上面还是下面(二维情况),三维情况就是平面了。只能处理二分问题。

image-20220405104001298

找直接分类的函数的话要去找那个函数能分成几段,分几段呢,每个表达式是什么样子,要不停的去尝试。面对分类问题需要中找到一个统一的模板,所以感知机就是线性二分的模板。体现分而治之的思想。


数学表达式一定有两部分,线性函数、激活函数(判断)。

\[t=f\left(\sum_{i=1}^{n} w_{i} x_{i}+b\right)=f\left(\mathbf{w}^{T} \mathbf{x}\right) \]

\[f(n)=\left\{\begin{array}{ll} +1 & \text { if } n \geq 0 \\ -1 & \text { otherwise } \end{array}\right. \]

分界线的具体表示

\[w_{1} \cdot x_{1}+w_{2} \cdot x_{2}+w_{3} \cdot x_{3}+w_{4} \cdot x_{4}+w_{5} \cdot x_{5}+\cdots \cdots+b=0 \]

image-20220405105111203

通过判断函数大于0还是小于0就能知道在分界线上面还是下面。


\(w^Tx\) 表达的是两个矩阵的点积关系。\(T\) 符号是矩阵转置。这里只是形式上。\(b\) 也被写到矩阵里了。

image-20220405105248959

image-20220405105601640


感知机的缺陷

image-20220405105905478

异或没有办法被线性可分。

image-20220405110016236 image-20220405110130452

image-20220405110216718

解决方法是输入两个感知机,再把结果给第三个感知机。

通过叠加感知机,实现线性可分。

image-20220405110627214

还可以使用升维的方法(盖尔定理),具体升维的方式叫核方法。

image-20220405110734054

image-20220405110801094


总结

感知机就是分类的模板,一个线性函数加一个激活函数,这个模板能力有限,只能解决线性二分问题,如果是异或非线性问题就有问题,需要用升维或者变形,那么会变成三部分,多一个升维或变形的函数。用多个感知机解决问题会更加简单。


神经网络

是什么

神经网络的基本单元就是感知机。

image-20220405111319475

image-20220405111718516

这种可以被称作全神经网络(每个节点都跟下一层节点全部相连)、前馈神经网络(单向)。也有不一样的神经网络。

image-20220405111848843

卷积神经网络,不是全连接网络,经过卷积、池化,把数据降维了。

image-20220405111946435

循环神经网络。


缺陷

假如一张图片有200万个像素点,这样输入到神经网络,那么有200万个参数需要被调节。可靠的方法叫梯度下降法,升级成随机梯度下降法,还可以通过卷积、池化降维。


我们给的是肯定的数据,而不是否定的数据,就不能像感知机那样夹逼出分界线。留作之后的问题。

激活函数

激活函数从 0,1 阶跃函数换成了 \(sigmoid\) 函数。感知机的线性函数可以理解成对某个类型里的标准模型的描述,比如对猫的标准模型的描述,激活函数则是判断数据符不符合标准。

我们在真实世界里挑不出一个标准的猫来代替所有的猫,所以我们在理念世界里面抽象创造出一个抽象完美标准的猫神,所有猫是猫神的具象化。训练神经网络本质上就是寻找猫神模型的近似表达。

posted @ 2022-04-05 12:12  小能日记  阅读(106)  评论(0编辑  收藏  举报