卷积

理解卷积公式(狭隘)

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

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

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

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

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

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

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

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

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

卷积的物理意义

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

为什么叫卷积(狭隘)

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

图像的卷积操作

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

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

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

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

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

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

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

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

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

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

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

平滑卷积操作

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

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

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

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

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

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

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

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

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

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

卷积神经网络

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

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

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

卷积的三层含义

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

感知机

是什么

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

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

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

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

\[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 \]

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

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

感知机的缺陷

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

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

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

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

总结

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

神经网络

是什么

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

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

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

循环神经网络。

缺陷

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

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

激活函数

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

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

Machine Learning 02 学习笔记 卷积、感知机、神经网络的更多相关文章

  1. <Machine Learning - 李宏毅> 学习笔记

    <Machine Learning - 李宏毅> 学习笔记 b站视频地址:李宏毅2019国语 第一章 机器学习介绍 Hand crafted rules Machine learning ...

  2. Coursera课程《Machine Learning》学习笔记(week1)

    这是Coursera上比较火的一门机器学习课程,主讲教师为Andrew Ng.在自己看神经网络的过程中也的确发现自己有基础不牢.一些基本概念没搞清楚的问题,因此想借这门课程来个查漏补缺.目前的计划是先 ...

  3. Andrew Ng Machine Learning Coursera学习笔记

    课程记录笔记如下: 1.目前ML的应用 包括:数据挖掘database mining.邮件过滤email anti-spam.机器人autonomous robotics.计算生物学computati ...

  4. Coursera课程《Machine Learning》学习笔记(week2)

    1 特征 1-1 什么是特征? 我的理解就是,用于描述某个样本点,以哪几个指标来评定,这些个指标就是特征.比方说对于一只鸟,我们评定的指标就可以是:(a)鸟的翅膀大还是小?(b)鸟喙长还是短?(c)鸟 ...

  5. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  6. 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)

    ##机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)---#####注:机器学习资料[篇目一](https://github.co ...

  7. 《Machine Learning》系列学习笔记之第一周

    <Machine Learning>系列学习笔记 第一周 第一部分 Introduction The definition of machine learning (1)older, in ...

  8. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

  9. 机器学习(Machine Learning)&深度学习(Deep Learning)资料

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...

随机推荐

  1. Spring Data ElasticSearch的使用

    1.什么是Spring Data Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务. S ...

  2. MySQL二进制binlog日志说明以及利用binlog日志恢复数据

    MySQL的binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全量备份+binlog日志恢复增量数据部分). 一.关于 ...

  3. KCP协议:从TCP到UDP家族QUIC/KCP/ENET

    行文前先安利下<再深谈TCP/IP三步握手&四步挥手原理及衍生问题-长文解剖IP >.<再谈UDP协议-浅入理解深度记忆> KCP协议科普 KCP是一个快速可靠协议,能 ...

  4. 【Mybatis】SQL语句的解析执行过程原理

    sqlSession简单介绍 拿到SqlSessionFactory对象后,会调用SqlSessionFactory的openSesison方法,这个方法会创建一个Sql执行器(Executor),这 ...

  5. setTimeout时间延迟为何不准?

    单线程, 先执行同步主线程, 再执行异步任务队列

  6. JDBC 中文编码

    在使用JDBC开发的过程中,通常会遇到中文保存到数据库乱码的问题. 这个问题的产生有3个方面: 数据库,包括数据库编码.表编码.字段编码等 在Java Web 程序中,请求对象(Request)未进行 ...

  7. 请说出作用域public,private,protected,以及不写时的区别?

    这四个作用域的可见范围如下表所示.说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly.作用域    当前类  同一package  子孙类   其他packagepublic    ...

  8. Vue手动集成less预编译器

    less是一门css预处理语言,简单的说就是在css的基础上提升为可编程性的预编译器 需要在项目中安装 less ,less-loader 2个插件,语法为:npm i -D less less-lo ...

  9. su 和 sudo的区别

    su是一个命令,可切换其他用户进行操作:而 '-' 号则是代表是否完全切换指定的用户环境信息 sudo是一个服务,可通过/etc/sudoers进行配置文件,让被限制的用户只能执行被授予的命令操作.

  10. 学习zabbix(七)

    zabbix自定义监控项 1.创建主机组,可以根据redis.mysql.web等创建对于的主机组 2.创建主机 3.创建Screens 4.自定义监控项 zabbix_agentd.conf配置文件 ...