关于“卷积”的通俗解释

这几天搞图像总遇到卷积,对于以前是通信专业的我来说,卷积并不陌生,《信号与系统》里面的常客,但是既然这个数学工具最初是出于物理上面,那肯定有通俗易懂的物理背景。

数据挖掘中有时需要卷积这一数学工具(例如计算个体适应度、对象间距离,以及干预效果等等),昨天又有同学问到相关问题,借用最近在网上的滚烫的词汇集 { 辐射,服碘,补盐,空袭 },对卷积做了一个直观的解释。反馈还算满意,又在过去讲课的PPT中取些素材,改写成了这篇博文。
  
  幼童背古诗文的感觉,来自数学系的同学觉得卷积是小菜一碟,随手就写出卷积定义
      F(t)= ∫ f(τ)g(t-τ)dτ  (积分限从-∞ 到+∞)
  并指出这是含参积分,t是参数,觉得浅而又显,无须解释。而部分(例如来自工科和医学专业的)选修数据挖掘的学生,还是觉得稍有点难,说:相关公式能默写、能推导、能通过考试,自己还是觉得不踏实,觉得没有真正理解;发明者是怎样想出来的?有何直观背景?用在哪些场合?
  一言以蔽之,在逻辑上认可,而直观上迷茫。好像很小的时候背诵古诗文那种感觉。
  鉴于数学老师已经讲解过理论推导,作为一种补充,这里用生活实例做一些直观解释,给出一个大框架和物理直观,为叙述简单,忽略一些细节。需要说明,直观的解释仅用于辅助理解,不能取代严格的描述和证明。

 

  几个时髦(但可能不很贴切)的例子.
  辐射:设某核电站事故中,某工作人员每天到抢险现场工作T分钟,接受一定剂量的辐射,辐射会自然地衰减,如此工作N天,总的辐射量用什么计算工具来(粗略地)估计?回答:可以用卷积。 
  服碘:某人为了防辐射,自己找来碘片,每天口服若干,体内碘残量会随人体代谢衰减,N天后体内积累的碘残量如何(粗略地)估计?还是卷积;(后面科普部分将给出简单的推导过程);
  补盐:某人为了反辐射,抢购来碘盐,每餐口服若干,体内盐残量会随人体代谢衰减。N天后体内积累的盐量和碘残量如何(粗略地)估计?可以用卷积;
  空袭:某多国部队每隔N小时对桀骜不驯的某地区或国家实行间歇性空中打击,每次打击后,其物理破坏和心理震慑作用会随时间衰减(例如,被打方会组织抢修,心里承受度增加等等),如此进行M天后,累积的打击总效果如何(粗略地)估计?还是可以用卷积。
  还有其他例子,如长期服药的血药浓度,长期吸入污染物在人体内的积累,吸烟或喝咖啡的积累效应,多次喷洒农药的残留量,等等,也可以用卷积来估计。
  上面的有些例子可能不很贴切,有几个原因:,
  (a)卷积是积分运算,处理对象要求是可以积分的函数,在工程中,一般对应于连续现象而不是离散对象;把离散对象当做连续的现象处理,只能粗略估计。
  (b)社会问题,政治问题比较复杂,即使加上很多假定,也只是框架性的估算。
  但是,有计算、有依据的估计总比算命先生的神仙数字可信。
  
  难懂之因:为了数学美,拆卸了脚手架。 教科书书常用“定义—定理”的体系,先给出数学定义,然后给出若干性质, 从公式 到 公式,逐步推导。有的教科书采用用信号“反褶、平移、相乘、积分”给出几何解释,属于用数学解释数学,提问者不满足这种解释。
  这不是当年发明卷积的大师们的“需求–猜想—发现—证明—应用”的路径,大师们建设好“卷积”大厦后,为了数学美,拆卸了脚手架,现在人们看到的是炼成的钢铁,看不出钢铁是怎样炼成的。造成了部分非数学专业学生的一个难点。

 

  一次输液引出的班门弄斧 一次偶感风寒,服药未愈,转作静脉滴注,无聊地望着那药液慢腾腾地滴,忽然灵感一闪:
  (1)这是一个可离散观察的连续过程。透明玻璃管构成了可视化的界面,能离散地对药滴计数,而下面是相对稳定的液柱高度,保证了药液连续(有点脉动)地注入静脉,比较适合积分处理;(口服和注射,就相对离散,结果就更粗略一些)。
  (2)药动学有个术语血药浓度,怎样来保证血药浓度在安全阈值之下,又在有效阈值之上呢?
  立刻在草稿本上写划,哇噻,原来可以用卷积!而且只需要简单的积分知识。于是,对此常问难点,有了一个易懂的直观解释。正是:小恙滴注,焉知非福?
  下面将叙述这次双重的(数学与医学)的班门弄斧,疏漏之处,请专家指正。
  
  静脉滴注与体内药物浓度 为简单又不失一般性,给出下列符号和假定:
  从t=0开始,每隔τ秒,输入药物一次(离散化是为了简单);药量随时间变化, 在时刻t时的那次给药量为f(t),关注的时刻点为 t=0, τ,2τ,3τ,…

  
  一滴药液的在体内衰减规律 药物以多种方式代谢(衰减),按假设,在τ1时的那滴药液含药量f(τ1),当时间流逝到t时刻,假设那一滴药物在体内的残量是f(τ1)
g(t,τ1),其中g(t,τ1)称为衰减因子函数,怎么找出衰减因子的具体结构呢? 药动学中有两种衰减方式 :

  (a)零级动力学消除,即恒速消除,如乙醇血浓>0.05
mg/ml时,较简单;

  (b)一级动力学消除,即恒比消除,消除速度与血药浓度成正比,如乙醇血浓<0.05
mg/ml时的衰减规律,这也类似于简单热传导中散热速度与温差成正比。

  设在τ时刻 ,输入一滴药,药量为f(τ), 根据一级动力学消除,建立最简单的微分方程 ;

 

       dg/dt =-kg

   考虑t=τ时不衰减的初始条件,容易求得 g=e-k(t-τ) ,  

  为下面方便,把衰减因子改写为  

      g(t-τ)=
e-k(t-τ)

      于是,在τ>0时,给药一次,药量为f(τ), 

              当t为2τ时,血药浓度降到  f(τ)*g(t-τ)=
f(τ)*g(τ)=
f(τ)(1/ek ) 

              当t为3τ时,血药浓度降到  f(τ)*g(t-τ)
= f(τ)*g(2τ)=
f(τ)(1/e2k ) 

              当t为4τ时,血药浓度降到   f(τ)*g(t-τ)
= f(τ)*g(3τ)=
f(τ)(1/e3k )

   可见,只给药一滴,血药浓度衰减很快,难以治疗那种要与病毒或细菌打持久战的疾病。

 

   多次密集给药 或连续给药  上面是只在τ>0时,给药一次,现在,让τ动起来,n次给药,给药时间依次取τ1, τ2,….. τn  ;则n次密集给药后,当时间流逝到t时的血药浓度是  
 

    fj)*g(t-τj)  
           ( 对 j=1,2,….. n  求和)

 

 前面说过,静脉滴注是一个可离散观察的连续过程。,所以,上面的和式可写为积分形式,即卷积 

    F(t)=  f(τ)g(t-τ)dτ 

 

    曲线光滑工具 当f(τ)是脉冲函数时(例如考察一滴药引发的血药浓度),曲线显得不够光滑,而卷积F(t)是多次脉冲的(平均)累积效应,或可视为是一种加权平均,所以,F(t)的曲线就光滑一些,所以,医生要考察N小时的滴注效果,而不察几分钟或一滴药的效果。选择适当的g(t-τ)函数,(例如,3/2次方衰减型、平方衰减性、指数衰减型、周期兼指数衰减型,...),可用卷积作为突出不同加权方式的曲线光滑工具。

   比较光滑、不是陡升陡降的血药浓度曲线表明,静脉滴注能较好地控制血药浓度;这大概也是有些医生和病人喜欢它的原因;当然,如果过分依赖静脉滴注,则减少了免疫系统的锻炼机会,所以很多医生主张,如果服药能解决问题,就不要滴注。

   

   更多的应用实例  卷积的结果可辅助人们定量地协调脉动式输入 f(τ) 和 衰减g(t-τ) 这一对矛盾,使得累积效应F(t)= ∫ f(τ)g(t-τ)dτ 在控制范围内。

   例如,研究干预规则,(例如,叶酸干预新生儿脑畸形缺陷),干预为f(τ),复杂的衰减g(t-τ),总的干预效果可否用卷积来粗略描述?
  再例如,制定正确的给药剂量和周期,例如照医嘱摄入碘或盐;
  又例如,制定空中打击方案的强度和频度,常识告诉人们,足够的强度和密度才能有效打击。卷积作为工具,或许可定量计算出最经济打击强度和密度。而被打击的一方,可计算出足够的衰减因子,使得能在被轰炸后有效恢复;战争是铁血与智慧的较量,当双方的铁与血差不多时,如《孙子.计篇》所说,“多算胜,少算不胜”,而卷积只不过在众多的计算方法基础上,增加了一个算法,仅此而已,

   最近,在这个不平静的世界上,有一场空袭和反空袭的较量,不知持续多久?10天,100天,还是200天?研究军事的专家或许可用卷积做个模型。

    武侠小说中,有时候看见一方逐步投入兵力,使用添油战术,好像是多次服药,每次都没有服够量,血药浓度低于有效门限。被逐次歼灭。

    卷积并不神秘,它有其退化版,例如水池一面进水,一面放水,求瞬时水量。当进水匀速且放水速度服从零级或一级动力学消除规律时,偶尔也作为中小学生的数学奥赛题,基础好的聪明学生能用初等方法计算。但当进水是1+sin(t)这样的脉动函数,或更复杂的函数时,就只能用卷积了。

    卷积是一个老技术,对某些专业的学生是一个难点,“老技术+新讲法+直观解释”使其容易被初学者接受。这里要强调,直观解释不能取代严格的数学推理,这里的班门弄斧。不能取代数学老师的正规训练。。

之二

作者用最通俗的语言诠释了卷积,觉得不错,公式太抽象,这样解释就易懂很多。

最近总是和卷积打交道,工作需要,每天都要碰到它好几次,不胜烦恼,因为在大学时候学信号与系统的时候就没学会,我于是心想一定要把卷积完全搞明白。正好同办公室的同学也问我什么是卷积,师姐昨天也告诉我说:“我也早就想把这个问题搞明白了!”经过一段时间的思考之后,有一些很有趣的体会和大家分享。

听说卷积这种运算式物理学家发明的,在实际中用得不亦乐乎,而数学家却一直没有把运算的意义彻底搞明白。仔细品以下,还是有那么点滋味的。

我们都知道这个公式,但是它有什么物理意义呢,平时我们用卷积做过很多事情,信号处理时,输出函数是输入函数和系统函数的卷积,在图像处理时,两组幅分辨率不同的图卷积之后得到的互相平滑的图像可以方便处理。卷积甚至可以用在考试作弊中,为了让照片同时像两个人,只要把两人的图像卷积处理即可,这就是一种平滑的过程,可是我们怎么才能真正把公式和实际建立起一种联系呢,也就是说,我们能不能从生活中找到一种很方便且具体的例子来表达公式的物理意义呢?我想到一种,下面进入正题:
比如说你的老板命令你干活,你却到楼下打台球去了,后来被老板发现,他非常气愤,扇了你一巴掌(注意,这就是输入信号,脉冲),于是你的脸上会渐渐地(贱贱地)鼓起来一个包,你的脸就是一个系统,而鼓起来的包就是你的脸对巴掌的响应,好,这样就和信号系统建立起来意义对应的联系。下面还需要一些假设来保证论证的严谨:假定你的脸是线性时不变系统,也就是说,无论什么时候老板打你一巴掌,打在你脸的同一位置(这似乎要求你的脸足够光滑,如果你说你长了很多青春痘,甚至整个脸皮处处连续处处不可导,那难度太大了,我就无话可说了哈哈),你的脸上总是会在相同的时间间隔内鼓起来一个相同高度的包来,并且假定以鼓起来的包的大小作为系统输出。好了,那么,下面可以进入核心内容——卷积了!
如果你每天都到地下去打台球,那么老板每天都要扇你一巴掌,不过当老板打你一巴掌后,你5分钟就消肿了,所以时间长了,你甚至就适应这种生活了……如果有一天,老板忍无可忍,以0.5秒的间隔开始不间断的扇你的过程,这样问题就来了,第一次扇你鼓起来的包还没消肿,第二个巴掌就来了,你脸上的包就可能鼓起来两倍高,老板不断扇你,脉冲不断作用在你脸上,效果不断叠加了,这样这些效果就可以求和了,结果就是你脸上的包的高度岁时间变化的一个函数了(注意理解);如果老板再狠一点,频率越来越高,以至于你都辨别不清时间间隔了,那么,求和就变成积分了。可以这样理解,在这个过程中的某一固定的时刻,你的脸上的包的鼓起程度和什么有关呢?和之前每次打你都有关!但是各次的贡献是不一样的,越早打的巴掌,贡献越小,所以这就是说,某一时刻的输出是之前很多次输入乘以各自的衰减系数之后的叠加而形成某一点的输出,然后再把不同时刻的输出点放在一起,形成一个函数,这就是卷积,卷积之后的函数就是你脸上的包的大小随时间变化的函数。本来你的包几分钟就可以消肿,可是如果连续打,几个小时也消不了肿了,这难道不是一种平滑过程么?反映到剑桥大学的公式上,f(a)就是第a个巴掌,g(x-a)就是第a个巴掌在x时刻的作用程度,乘起来再叠加就ok了,大家说是不是这个道理呢?我想这个例子已经非常形象了,你对卷积有了更加具体深刻的了解了吗?
最近要忙开题了,不过周末了还是放松一下吧。其实我真的希望我的朋友们看到这篇文章能给我留言,发表你们的想法,有不妥之处欢迎提出来。在本文的下半部分,我会再讲一个抽象的例子,以便能让大家从卷积中能更好地了解数学与生活的联系。

时间: 2024-10-27 05:52:10

关于“卷积”的通俗解释的相关文章

通俗解释主要编程语言及其用途

在 Quora 网站上有这样一个问答贴:<In layman's terms, what are the major programming languages, and what are they used for? >如何用通俗语言来解释主要的编程语言及其用途.这个问答贴回复很多,不乏精彩回答.伯乐在线挑选得票数排前二的回复.编译如下: Isaac Lewis 的回复 (3457 票,最有特色的回复,把编程语言比作女人) PHP 是十多岁的花季恋人,是你在那个夏天首次笨手笨脚寻求的女孩.但

简短几句 通俗解释javascript的闭包_javascript技巧

何谓没有被释放资源的栈区和预执行的过程,用一个最常见的示例来解释: 比方现在我们有一个ul,下面有很多个li,需要遍历他们为他们绑定单击事件,并在点击后将当前下标传递给另外一个function来进行额外的处理: 复制代码 代码如下: for(var i=0; i<agroup.length; i++) { agroup[i].onclick = function() { handler(i); } } 执行结果显而易见对吧?在handler中,获取传递过去的参数i,你看到的将全部是最大的下标,这

对MySQL几种联合查询的通俗解释_Mysql

表a aid adate 1 a1 2 a2 3 a3 表b bid bdate 1 b1 2 b2 4 b4 两个表a.b相连接,要取出id相同的字段. select * from a inner join b on a.aid = b.bid 这是仅取出匹配的数据. 此时的取出的是: 1 a1 b1 2 a2 b2 那么left join 指: select * from a left join b on a.aid = b.bid 首先取出a表中所有数据,然后再加上与a.b匹配的的数据.

通俗解释遗传算法及其Matlab实现

早上再看一个APP推荐的文章,发现的. (1)初识遗传算法         遗传算法,模拟达尔文进化论的自然选择和遗传学机理的生物进化过程的计算模型,一种选择不断选择优良个体的算法.谈到遗传,想想自然界动物遗传是怎么来的,自然主要过程包括染色体的选择,交叉,变异(不明白这个的可以去看看生物学),这些操作后,保证了以后的个体基本上是最优的,那么以后再继续这样下去就可以一直最优了. (2)解决的问题         先说说自己要解决的问题吧.遗传算法很有名,自然能解决的问题很多了,在原理上不变的情况

多线程开发join()的方法比较透彻和清晰的解释

问题描述 多线程开发join()的方法比较透彻和清晰的解释 我现在正在自学java中的多线程,但是呢,join()这个方法和sleep()方法,我不是很能理解,哪位大神可以解释一下,最好有个简单的例子,谢谢啦 解决方案 Thread.sleep(1000); 这意思是,如果线程运行到这儿了,线程在这个地方等1秒钟再往下走(精度不准) sleep就是睡觉意思,这就好理解了 join()简单用法就是等一个线程结束 例如开启个线程做延时操作 Thread myThread1; 在main中调用它 my

java-通俗解释:什么是面向对象?与面向过程区别在哪?

问题描述 通俗解释:什么是面向对象?与面向过程区别在哪? 什么是面向对象?与面向过程区别在哪?用通俗的话语解答,不要理论性的专业术语,最好是拿生活中的熟知的事物去类比解释!!!多谢~ 解决方案 面向对象和面向过程不矛盾,事实上,Java也是面向过程的编程语言. 面向过程是指,允许在程序中定义函数或者方法.也许你觉得奇怪,难道还有语言不能定义函数方法么?早期的basic就不可以,只能用跳转来实现函数调用. 面向对象更近一步,允许你将"过程"(函数.方法)以及它们的上下文相关的数据封装成对

谈谈SNS网站及网站会员分析

一直关注国内和国外SNS和社区的发展,运营过SNS两年,看过很多有关SNS方面的评论和分析,同时也一直在使用各个SNS网站,我想就从在SNS运营中碰到的一些问题和想法与各位交流一下,在这篇文章里我会提到一些具体的网站,如有不妥当的地方,欢迎大家给我提出指正和批评,我也将认真的回复您的意见,您的提出的任何东西都将对我极为有用,让我们共同提高! 先谈谈SNS的概念,以便于大家理解: Social Networking Service (简称SNS ,社会化网络软件)是Web 2.0 体系下的一个技术

搜索的服务进化论 一个关于产品与内容的问题

[核心提示] 互联网正经历着变革,用户主导地位的突出促使每一个服务提供方为用户而服务.即搜即得不仅是一个技术的问题,更是一个产品与内容的问题. 这个时节是各大互联网公司进行校招的时候,笔者遂将准备了许久的关于搜索的一点小小思考放将出来,不希望 BAT 校招失利后,埋落尘中. 服务之论 展望互联网的方向,互联网正经历着变革,用户主导地位的突出促使每一个服务提供方为用户而服务.而用户的主导型行为在将互联网产品变成服务. 按照我国通用的三种产业划分标准来看,互联网产业本身就属于第三产业,也叫"服务业&

零才:HTML语义化在搜索引擎优化中的应用

        其实零才接触HTML语义化也不是很久,还记得第一次接触竟然是被某网络公司WEB前端招聘的HR问到,当时真的很囧.所谓吃一堑,长一智,零才决定对WEB前端和SEO结合起来学习.什么是HTML语义化?如果大家对它也较为陌生,或者决定对下面的解释理解起来有点吃力,可以参考下零才在微博中给的通俗解释.         分离结构与表现的另一个重要方面是使用语义化的标记来构造文档内容.一个XHTML元素的存在就意味被标记内容的那部分有相应的结构化的意义,没有理由使用其他的标记.换句话说,不要