这几天搞图像总遇到卷积,对于以前是通信专业的我来说,卷积并不陌生,《信号与系统》里面的常客,但是既然这个数学工具最初是出于物理上面,那肯定有通俗易懂的物理背景。
数据挖掘中有时需要卷积这一数学工具(例如计算个体适应度、对象间距离,以及干预效果等等),昨天又有同学问到相关问题,借用最近在网上的滚烫的词汇集 { 辐射,服碘,补盐,空袭 },对卷积做了一个直观的解释。反馈还算满意,又在过去讲课的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时的血药浓度是
∑j f(τj)*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了,大家说是不是这个道理呢?我想这个例子已经非常形象了,你对卷积有了更加具体深刻的了解了吗?
最近要忙开题了,不过周末了还是放松一下吧。其实我真的希望我的朋友们看到这篇文章能给我留言,发表你们的想法,有不妥之处欢迎提出来。在本文的下半部分,我会再讲一个抽象的例子,以便能让大家从卷积中能更好地了解数学与生活的联系。