点上方蓝字计算机视觉联盟获取更多干货

在右上方 ··· 设为星标 ★,与你不见不散

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者丨J Pan@知乎

来源丨https://zhuanlan.zhihu.com/p/41609577

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

一、狄拉克何许人也?

保罗·狄拉克(Paul Adrien Maurice Dirac,1902-1984),出生在瑞士,后移居英国,著名理论物理学家。通过几个场景来认识一下(故事来源于网络,版权归原作者所有)。

镜头一:
1933年狄拉克获诺贝尔物理奖(与薛定谔共享)。当时他私下对学术老前辈卢瑟福(也是诺奖得主)说,对于获诺奖这个事他很苦恼,他不想成为新闻人物,更不想出名,这样会打断他平静的生活,打算拒绝接受这个荣誉。卢瑟福对他说:“如果你这样做,你会更出名。”于是狄拉克同意领奖。

镜头二:
狄拉克在美国威斯康辛大学作报告。期间,有一位听众说 :“您写在黑板右上方的那个方程我看不懂。”狄拉克听后一言不发,让当时的场面相当尴尬。主持人试图打破僵局,说狄拉克教授刚才那个问题您还没回答呢。狄拉克喃喃地回应道:“刚才那个不是一个疑问句,那是一个陈述句啊。”

镜头三:
位于英国伦敦的威斯敏斯特教堂(Westminster Abbey),是英国国王登基和皇室举行婚礼的地方。这里长眠着许多伟大人物,如牛顿、达尔文、狄更斯、邱吉尔、弥尔顿。牛顿墓旁放置有一块石碑,上面镌刻着保罗• 狄拉克的名字以及他那优美的方程式。

狄拉克最早是从事相对论动力学的研究,1925年海森堡访问剑桥大学,狄拉克深受影响,把精力转向量子力学的研究。1928年他把相对论引进了量子力学,建立了相对论形式的薛定谔方程,也就是著名的狄拉克方程。1930年狄拉克出版了他的量子力学著作著作《量子力学原理》,这是物理史上重要的里程碑,至今仍是量子力学的经典教材。

在他的教材里面,他提出了一个怪异的函数,一般被叫做狄拉克  函数:

并且满足

狄拉克δ函数在概念上,它是这么一个“函数”:在除了零以外的点函数值都等于零,而其在整个定义域上的积分等于1。严格来说δ函数不能算是一个函数,因为满足以上条件的函数是不存在的。但是为什么狄拉克还要这么干呢?

百度百科上对于狄拉克函数有如下描述:

物理学中常常要研究一个物理量在空间或时间中分布的密度,例如质量密度、电荷密度、每单位时间传递的动量(力)等等,但是物理学中又常用到质点、点电荷、瞬时力等抽象模型,他们不是连续分布于空间或时间中,而是集中在空间中的某一点或者时间中的某一瞬时,那么它们的密度应该如何表示呢?——δ函数!

还记得我们之前说过得赫维赛德函数吗?就是简化了原始麦克斯韦方程组的那个人?

这个函数的导数就是δ函数哦!δ函数有很多用处,本身蕴藏的数学和物理含义很值得去挖掘,今天我们就先说一下它在工程中一般干什么用。

我们先研究一个简单的函数:一个矩形信号宽度是  ,高度是  ,总的面积是1。这个矩形信号可以变形——可胖可瘦,但是要保证面积不变。

这个函数的傅里叶变换长什么样呢?也很简单:

前面说了,这个信号可胖可瘦,那胖瘦的时候有什么规律呢?

clc; clear all; close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=10000;                                     % sampling numbers
Tau0=1;                                      % define initial Tau
for i=1:100Tau=Tau0/i; TimeRange=linspace(-10*Tau,10*Tau,N);        % display time rangeFreqRange=linspace(-200*pi/i,200*pi/i,N);    % display frequency rangeHalf_Tau=Tau/2;                              % -0.5 Tao ==> 0.5 TaoRECT=1/Tau*double(abs(TimeRange)<Half_Tau);  % one rectangular pulseSINC=sinc(FreqRange*Tau*pi);                 % sinc pulse, Xtrasubplot(2,1,1);plot(TimeRange,RECT,'LineWidth',1.5); grid on;xlim([-1 1]); ylim([-0.5 120]);xlabel('Time'); ylabel('Amplitude');title('Made by J Pan')subplot(2,1,2);plot(FreqRange,SINC,'LineWidth',1.5); grid on; xlim([-200*pi/i 200*pi/i]);ylim([-0.5 1.5]); xlabel('Frequency'); ylabel('Amplitude');title('Made by J Pan')drawnow;
end

假设这个信号也有爱美之心,以瘦为荣,天天不吃饭,以至于最后瘦成了一道闪电,比如 ,会出现什么结果呢?——我们发现,当这个信号瘦到一定程度的时候,就变成了狄拉克  函数:

并且满足

它的频谱也变得很简单了,变成了一条直线。

这个结论有什么意思呢?——δ函数包含了所有频率的分量。这个有啥用呢?用处大了去了,这就是一个天然的最理想的试验函数啊!只用一个函数就可以把系统的所有频率分量的响应激发出来,怎么样,带劲不带劲?换句话说,在输入为狄拉克δ函数时,系统的冲激响应包含了系统的所有信息,也就是说系统的理想冲击响应就可以代表系统本身 ——我们用小锤敲一下系统,记录下来响应,就能够得到系统的模型了。

二、卷积是怎么个回事?

终于回归正题,卷积说的是什么?为什么会在线性系统这么广泛的使用?我查阅了大量资料,发现有一个例子说的特别好,引用特别广泛,以至于都不知道原作者是谁了。接下来我们也用这个例子(版权归原作者所有)为基础来延伸和拓展一下。

话说有一个七品县令,喜欢用打板子来惩戒那些市井无赖,而且有个惯例:如果没犯大罪,只打一板,释放回家,以示爱民如子。

有一个无赖,想出人头地却没啥指望,心想:既然扬不了善名,出恶名也成啊。怎么出恶名?炒作呗!怎么炒作?找名人呀!隔现在,注册个微博账号随便找个流量明星就能开撕啊 ——那时候不行,还没有微博一说,他自然想到了他的行政长官——县令。

于是在光天化日之下,无赖站在县衙门前撒了一泡尿,后果是可想而知,这是明目张胆的藐视公堂无视法律啊,自然被请进大堂挨了一板子——这无赖身体也是好,挨了板子后居然昂首挺胸回家了。躺了一天,嘿!身上啥事也没有!无赖在这件事上的决心还很大,第二天如法炮制,全然不顾行政长管的仁慈和衙门的体面,第三天、第四天......每天去县衙门领一个板子回来,还喜气洋洋地,坚持一个月之久!这无赖的名气已经和衙门口的臭气一样,传遍八方了!

县令大人噤着鼻子,呆呆地盯着案子上的惊堂木,拧着眉头思考一个问题:这三十个大板子怎么不好使捏?......想当初,本老爷可是因为奥数加分才金榜题名的,今天要好好建个数学模型,好歹要解决这个问题,挽回一点面子:

——人(系统!)挨板子(冲击!)以后,会有什么表现(输出!)?

——废话,疼呗!

——如何量化呢?

——看疼到啥程度。像这无赖的体格,每天挨一个板子啥事都不会有,连哼一下都不会有,你也看到他那得意洋洋的嘴脸了;如果一次连揍他十个板子,他可能会皱皱眉头,咬咬牙,硬挺着不哼;揍到二十个板子,他会疼得脸部扭曲,象猪似地哼哼;揍到三十个板子,他可能会象驴似地嚎叫,一把鼻涕一把泪地求你饶他一命;揍到四十个板子,他会大小便失禁,勉强哼出声来;揍到五十个板子,他连哼一下都不可能——死啦!

县令双手捧腮,若有所悟,拧紧的眉头渐渐松弛下来:

——呜呼呀!为啥那个无赖连挨了三十天大板却不喊绕命,而一次连续打上三十个大板呀?

—— 呀呼嘿,打一次的时间间隔(Δτ=24小时)太长了,所以那个无赖承受的痛苦程度一天一利索,没有叠加,始终是一个常数;如果缩短打板子的时间间隔(建议Δτ=0.5秒),那他的痛苦程度可就迅速叠加了;等到这无赖挨三十个大板(t=30)时,痛苦程度达到了他能喊叫的极限,会收到最好的惩戒效果,再多打就显示不出您的仁慈了。

——还是不太明白,时间间隔小,为什么痛苦程度会叠加呢?

——这与人(线性时不变系统)对板子(脉冲、输入、激励)的响应有关。什么是响应?人挨一个板子后,疼痛的感觉会在一天(假设的,因人而异)内慢慢消失(衰减),而不可能突然消失。这样一来,只要打板子的时间间隔很小,每一个板子引起的疼痛都来不及完全衰减,都会对最终的痛苦程度有不同的贡献,总的来说:

t个大板子造成的痛苦程度=Σ(第τ个大板子引起的痛苦*衰减系数)

请看下图:

先考虑挨两板时是什么情况:把挨板子时的疼痛响应用  来表示,其中  表示持续时间。当刚挨最新一板子时,响应显然为  即  ,那相隔  之前还有一板子呢?响应是  ,所以挨两板子时总的疼痛定义为每板子的响应乘以持续时间:

实际上两板子不可能完全一样,今天是士兵甲打的,明天是士兵乙,两个力道完全不在一个层级上啊,怎么办?需要修正一下要把激励的大小也考虑进去:

要是碰上一个身强力壮,心情又不好的士兵呢?连续不停地打,这时可怜的无赖只能祈求上帝了:

当  时,有

如果把积分时间扩展到负半轴,

这就是卷积公式,它本质上说系统(人)在连续激励下(挨板子)所的得到的结果(疼)。翻译的学术一点:卷积将是过去所有连续信号经过系统的响应之后得到的在观察那一刻的加权叠加。而现实生活中,我们就是要解大量的这种问题,这也就是为啥卷积这么常见这么重要的原因。

三、卷积定理又是个什么玩意?

前面我说了狄拉克函数,说了卷积,为什么把他们两个放在一起?这可以通过卷积定理来说明。

信号与系统或自动控制研究的内容是输入输出系统三者之间的关系。

在第一部分,我们说狄拉克函数(也就是单位脉冲函数)的傅里叶变换横贯在整个频域上,因此可以作为一个理想的测试信号来确定系统的在各个频率上的响应情况,也就是说可以用单位脉冲响应可以完整的表征系统的响应特性。

在第二部分的例子中,打板子可以看成是一种冲击或脉冲信号,系统的响应可以用卷积来计算。

其中,  为激励信号,  为脉冲响应。

这些都是在时域观察的,如果我们切换到频域,会是什么样?假设激励信号的傅里叶变换为  ,脉冲响应  的傅里叶变换为  ,输入 表示输入有哪些分量,系统单位脉冲响应  表示每个分量会有怎样的响应,那两者相乘不就把输入的那些分量筛选出来了?——乘积是不是就代表系统的不同频率下响应?

等等,我们刚才说了个什么事?我们先在时域里面看,认为系统的输出为输入与单位脉冲响应的卷积;然后又切换到频域看,认为系统的输出为输入傅里叶变换与单位脉冲福利变换的乘积。我们看的是同一个事情,为什么结果不同——难道他们是一回事?

你的猜想是对的,这两个东西还真是一回事,这就是卷积定理:函数卷积的傅立叶变换是函数傅立叶变换的乘积。具体分为时域卷积定理和频域卷积定理,时域卷积定理即时域内的卷积对应频域内的乘积;频域卷积定理即频域内的卷积对应时域内的乘积,两者具有对偶关系。

还记得我们以前说过的,时域和频域有某种对称性嘛?时域的乘法与频域卷积或时域卷积与频域乘法是具有对称性的,有了这个工具,我们在处理问题的时候就可以随意转换,哪个域方便就在哪个域计算。

end

这是我的私人微信,还有少量坑位,可与相关学者研究人员交流学习 

目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟

王博的公众号,欢迎关注,干货多多

王博的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章(上)

博士笔记 | 周志华《机器学习》手推笔记第八章(下)

博士笔记 | 周志华《机器学习》手推笔记第九章

点个在看支持一下吧

总结 | “卷积”其实没那么难以理解相关推荐

  1. 【转】“卷积”其实没那么难以理解

    全文转载自 https://zhuanlan.zhihu.com/p/41609577 "卷积"其实没那么难以理解 J Pan 航空工程师 傅里叶变换.拉普拉斯变换.自(互)相关及 ...

  2. “卷积”其实没那么难以理解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨J Pan@知乎 来源丨https://zhuanlan.z ...

  3. 卷积为什么如此强大?理解深度学习中的卷积

    译自Tim Dettmers的Understanding Convolution in Deep Learning有太多的公开课.教程在反复传颂卷积神经网络的好,却都没有讲什么是"卷积&qu ...

  4. JAVAOO难以理解的部分

    JAVA虽然是一门高级语言,在逻辑上相比汇编语言更接近人类语言,但是对于初学者, 一样有不少难以理解部的分.遇到在第一个坎就是在基础部分在流程控制语句里,尤其是碰到多重循环, 再加上if判断,等理清楚 ...

  5. 难以理解的软件工程师:几千行代码能搞定为什么要写几万行?

    导读:"所以程序高手原本就不多,而一直继续在写程序的程序高手就更是稀有了."本文是一位从业多年的软件工程师分享的经验和看法,他提到的一些现象,槽点颇多,应该是从业人员都会遇到的,不 ...

  6. 卷积中反转平移的理解

    在卷积的定义中为什么函数g(τ)要先翻转为g(-τ)再平移为g(x-τ)而不是直接记作g(τ-x)这样做有什么好处么? 说点我的理解,希望有所帮助.(楼上也有类似观点,不过按照我的理解再解释一下) 教 ...

  7. ibm软件工程师含金量_令人难以理解的软件工程师:几千行代码能搞定的为什么要写几万行?...

    原标题:令人难以理解的软件工程师:几千行代码能搞定的为什么要写几万行? 一 我们公司的 Windows 版软体已经有十多年的历史,经过历代工程师的整治之后,内容已经凌乱不堪.过去三个月,我找时间自己重 ...

  8. 对于新手来说,Python 中有哪些难以理解的概念?我似乎明白了

    对于初学者,我们都遇到过难以理解一些概念.哪门都有哪些呢? 总结来说有:编码问题.装饰器.闭包.对象引用.可变性,抽象基类.魔术方法.多重继承.mixin.重载.可迭代对象.迭代器和生成器.上下文管理 ...

  9. 对于0基础来说,Python 中有哪些难以理解的概念?我似乎明白了

    对于初学者,我们都遇到过难以理解一些概念.哪门都有哪些呢? 总结来说有:编码问题.装饰器.闭包.对象引用.可变性,抽象基类.魔术方法.多重继承.mixin.重载.可迭代对象.迭代器和生成器.上下文管理 ...

最新文章

  1. Groovy开发语言
  2. 一个很好的练听力的网站
  3. python中的enumerate函数
  4. uWSGI 和 nginx 的区别?
  5. python重新加载模块_jupyter实现重新加载模块
  6. STM32H743-梳理ADC模数转换器在CubeMX上的配置
  7. git-分支管理-增加删除切换合并操作
  8. Android Studio导入包
  9. windows API 菜鸟学习之路(二)
  10. Find a way BFS
  11. 阿里云ECS服务器搭建Nginx+PHP+MySql+Redis环境详细步骤(CentOS7环境)
  12. 基于mysql的全文索引
  13. DSP的CMD文件 RUN_START
  14. Python基础PTA习题答案
  15. 腾讯电脑管家修复代理服务器,腾讯电脑管家修复msvcp140.dll丢失的方法
  16. PageHelper.startPage和new PageInfo(list)的一些探索和思考
  17. Android切词工具——BreakIterator(1)
  18. 洋酒销售系统的设计与实现(附源码+资料+论文+截图+数据库)
  19. 4.8 单元格背景样式的设置 [原创Excel教程]
  20. 上面两点下面一个三角形_【知识点】三角形全等的判定+性质+辅助线技巧都在这里了!...

热门文章

  1. android 读取sd卡中string.xml,android,从SD卡读取xml文件中的值
  2. oracle 建表字段设置,Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结...
  3. java 发送带basic认证的http post请求实例代码_图解HTTP学习笔记(八)—确认访问用户身份的认证...
  4. html遮罩层禁止滚动条滚动,遮罩层上弹窗滚动时禁止下层页面滚动的处理
  5. 如何限制iframe内网页打开新窗口_网页外链用了 target=quot;_blankquot;,结果悲剧了...
  6. 老年机按键串号_为什么老人机依然很多人在用?
  7. sqlserver备份和恢复
  8. 编写一个学生类 student,包含的属性有学号、姓名年龄,将所有学生存储在一个数组中
  9. Strust2的sx:datetimepicker限制日期选择
  10. MySQL5.5.15_linux下mysql-5.5.15安装详细步骤