为什么 Deep deeplearning4j 最先在语音识别和图像处理领域取得突破

& 波形有千万种, 不可能每一种都进行研究,要找到那个"1".
& 那么,首先我们来看看比较重要的"线性时不变系统": 所谓线性时不变系统,首先要线性,然后要时不变: &所谓线性,指的是如果任意输入x输入系统得到y, 那么x*k输入系统,应该得到y*k, 比如,"乘100"就是个线性系统,因为例如以5为输入得到输出500,而5*6为输入得到 3000 == 5*100*6. 而"平方"则不是线性系统,因为以5为输入得到25,而5*6得到的结果是 30*30 != 5*5*6. &线性时不变系统的另一个特性就是叠加性, 即假如x进入系统得到结果f(x), 那么若x=a+b, 必有f(x) = f(a) + f(b).
& &还有就是时不变,时不变指的是若一个输入x得到信号y,那么一个经过了延迟的x得到的 也只是一个被延迟过的y.而不能是其他值. &举个不太恰当的例子,假设有一个火车站, 今天你去买票买到了今天的票, 明天你去买到了明天的票,那么这个火车站就是个时不变系统,假如今天你去买票买到了今天的票,明天你去买到了大后天的票,那么这个火车站就不是时不变系统. &说了半天了,进入正题,脉冲信号有啥用?
& 注: 为了方便理解,以下全部使用离散信号: &假设我们有个连续信号,我们不妨对它进行采样,为了方便讲解我把采样率弄低了一点:
& &但是,即使这样也不能证明脉冲就有用了, 就算波形能被分解成不同振幅系数,不同延迟系数的线性组合, 那又怎么样呢? &回忆一下我们最开始所说的线性时不变系统的定义, 就会发现, 一个信号x(t)输入系统,得到输出y(t),那么k*x(t)输入系统就会得到k*y(t), x(t-T)输入系统就会得到y(t-T),那么,假如我们把刚才的六个信号输入线性时不变系统,就会得到以下内容:实际上,我们根本不需要让这六个信号都输入系统,由于线性时不变,我们只需要让这六个信号中的任意一个信号归一化,对齐到0时刻,进入系统,再对输出乘以不同系数,延迟不同时间,就得到了所有的输出. &故事到这里还没结束, 还记得咱们这六个信号怎么来的吗? 没错, 是从一个波形上切下来的;然后,由于线性系统的叠加性,这个波形的输出就等于那六个信号的输出之和. 而那六个信号又 等于不同延迟,不同系数的脉冲信号, 因此我只需将脉冲信号输入系统,就可以得到完整波形输入 系统后能得到的全部内容---- 无非就是一堆不同延迟,不同系数的脉冲信号的输出之和:
& &再来我们看看卷积: & &我们知道拿着脉冲对着线性时不变系统H "哔"一下,得到的结果h(t),即冲击响应. 再用这个冲击响应和信号x做卷积,得到的结果y就是x经过线性时不变系统H的结果. 那么问题来了: &1. TM凭什么! 2. 卷积为啥定义成这个德行???&
& & 我是从泛函那边儿学过来的,刚看卷积时简直匪夷所思,为啥x和h要反着乘??? &跟内积定义的一样不行吗? 其实弄明白上文中脉冲的作用,就不难理解卷积的形式了: &上文中我们知道,只要知道了脉冲经过线性时不变系统的输出结果,就可以用这个输出结果附上系数,延迟,累加出任意信号x的输出y.那么这个累加的过程,连续脉冲响应,道理上和离散的差不多,拿连续脉冲讲的话一是图不好画,二是比较要命的连续脉冲响应还不是个正常函数,所以使用离散来讲了.
& & 1.为什么深度学习突然间火起来了? &谈到这个问题,如果在五六年之前,很多人肯定会说是因为Hinton在Science上的那篇论文“Reducing the dimensionality of data with neural networks”。 &虽然神经网络“号称”自己可以拟合任何函数,并且可以模拟人脑的运作形式,但是这一切都是建立在神经网络足够深足够大的基础上。没有了规模,浅层的神经网络啥都达不到。而人们发现,优化多层神经网络是一个高度非凸的问题,当网络层数太多了之后,训练就难以收敛,或者只能收敛到一个次优的局部最优解,性能反而还不如一两层的浅模型。这个严重的问题直接导致了神经网络方法的上一次衰败。
& 在2006年Hinton的那篇文章中,他提出了利用RBM预训练的方法,即用特定结构将网络先初始化到一个差不多“好”的程度,再回到传统的训练方法(反向传播BP)。这样得到的深度网络似乎就能达到一个不错的结果,从一定程度上解决了之前网络“深不了”的问题。在这个框架下,深度学习重新得到了人们重视,一批新方法被发明出来(Denoise Autoencoder,Dropout,ReLU……),都让神经网络有了前所未有的“更深”的可能。
& 但是我们现在再回过头来看这个问题,我们应该加入两个甚至更加关键的元素:大数据和高性能计算 &在如今的互联网时代,近十年来数据量的积累是爆炸式的。几年后人们发现,只要有足够多的数据,即便不做预训练,也能使深层网络得到非常好的结果。而针对卷积神经网络CNN或者LSTM来说,预训练本身也不像全连接那么好做了。一个技术不能很大地提升性能,还需要researcher辛辛苦苦想算法,需要程序员辛辛苦苦写代码,你说谁干呢……现在的语音识别或图像识别系统,如果拥有大量的训练样本,基本都是没有预训练步骤的。
& 而高性能计算是与大数据相辅相成的,想象你有好多好多数据(百万幅图片,上万小时语音),但是计算速度跟不上,训练一个网络需要好几年(做机器学习的人应该知道这个完全没有夸张吧),那这个研究也完全不必要做了吧?这也是为什么有人认为神经网络火起来完全是因为GPU使得计算方法更快更好了。从这个意义上,GPU并行计算的发展确实极大推动了深度学习的普及。
& 有大数据和高性能计算打下最坚实的基础,人的聪明才智是无穷无尽的。那些笃信深度学习的学者们使用了各种各样的算法激发深度学习的潜能,比如微软的残差学习[2]。否则,再多的数据也不能把传统的神经网络训练到152层啊。 &总得来说,大数据的快速积累、大规模并行计算的快速发展、新算法的不断出现共同促使了神经网络技术改头换面,重出江湖。
& 2.为什么人们会想到将深度学习应用到语音识别和图像识别中? &众所周知,深度学习的目标是模仿人类神经网络感知外部世界的方法。那么很自然地,如果把人想象成计算机,那么语音和图像就是最主要的input形式(当然了,什么气味之类的,就属于化学或者物理领域了……)。既然人能够很好地识别图像和语音,那么自然地,我们也会希望这个试图模仿人类大脑的深度学习算法也能像我们一样听清语音、看清图片。目前在许多重要的模式识别问题中,机器都远远没有人表现得好。而如果这个方法能够像人脑一样工作,那它理应在这两个领域得到接近或者乃至达到人的水平。这是非常让人兴奋,让人觉得promising的。 (同理,文字也是重要的输入,因此也有许多工作试图在NLP领域应用深度学习算法。) 深度学习热潮率先在这两个领域刮起,当然还有一个不可忽视的因素。一个机器是否具有智能,最最基础的就是看它能否接收到外界的视频音频信号。如果有算法号称自己能够做这件事,并且貌似靠谱的话,那么研究机器学习的人当然是要一起从这上面下手了。你说,拉funding的人听到你说你的机器能听懂人说话,他能不感兴趣么!当全世界的科学家都意识到语音、图像识别中的深度学习是个坑之后,大家必须争先往里跳啊。
& 3.为什么深度学习能成功地应用到语音、图像识别中,取得突破? &当然,深度学习不是神,并不是无所不能。从上面的分析我们知道,是深度学习看起来无比光明的前景让大家把它应用到语音、图像领域。而它之所以能在语音和图像领域获得成功,又回过头促进深度学习发展,背后必然是有一定的道理的。
& 第一个非常重要的原因就是问题1中提到的——大量数据(硬件装备各个领域都一样,就不考虑了)。为什么这么说?比如语音识别中用到的深度学习技术,除去最新的端到端技术,大部分都是在上世纪就已经有了的,但是到2012年,Li Deng和Hinton等人才写出了语音识别中划时代的文章“Deep Neural Networks for Acoustic Modeling in Speech Recognition”,中间差的是什么,一个关键就是大量的数据。
& 举个例子,一个语音识别系统,当训练数据达到3000小时时能有较好的效果。3000小时什么概念?可以想象一下自己听一段演讲,然后把它逐字逐句敲下来,这才多少小时?而谷歌、微软他们的训练数据则更是海量的几万个小时。同样,在图像识别领域,ImageNet则有百万张图片,这么多的数据让当年六万张手写数字的mnist情何以堪。正是这些大量的数据,使得深度学习应用到这两个领域成为可能。
& 这里可能有稍微了解语音识别的同学要提出疑问:“有很多研究单位现在研究小数据量下的深度学习,不是说必须要数据量大才管用么?”注意,这里所谓的小数据只是某一类别的数据少,而全体“可用”数据仍然很多。比如在语音识别中,我可以说训练粤语的数据量很少,但是我可以通过已有的大量普通话数据,还帮助我提高识别粤语的性能。因此,最终还是需要数据作为支撑。
& 第二个非常非常重要的原因是——特征原始性的保留。在模式识别领域,一句重要的话是:“Features matter”。如何最大限度保留原始信息地表示输入的特征,对于识别是一个重要的问题。神经网络一个特点是它能够作为特征抽取器。什么意思呢?比如在图像识别中,人们发现神经网络每层的权重实际上学习到了图像的某些“成分”;而且越高层,成分越具体。在第一层可能是一些“点”、“边”、“拐角”等;再往上可能就是“眼角”、“嘴唇”;到最后一层可能就是脸的不同部分了。说明网络和人脑一样,将原始信号经过逐层的处理,最终从部分到整体抽象为我们感知的物体。 &因此这个特征抽取器对输入有一个不小的要求:应该足够原始并包含目标任务的信息。显然,假设你已经把一幅图片根据你的理解变成了有多少张人脸,有多少朵花,有多少棵树统计出来的向量的话,你还怎么指望深度学习能给你学出来什么嘴巴鼻子眼睛,来进行人脸识别呢。 &我们发现,对于语音和图像来说,这个要求实际上是相对容易满足的,每一幅图像、每一段语音帧,都属于自然界的原始信号,并且能够清晰地反映我们要识别的人脸或者音素,我们通过尽量简单的预处理就能将其送入神经网络。把最主要的识别工作交给深度学习来完成。
& 反之,对于NLP问题来说,我们拿到的一段段文本,实际上都是由人脑处理过的,我们用什么样的特征来刻画它才足够原始呢?再比如语音信号处理的另一个任务——说话人识别,应用深度学习也是有一定困难的,一段语音中有什么特征能够反映一个说话人的身份,又没有经过过多的人为处理呢?从这个角度看,这些领域深度学习的应用都没有语音识别、图像识别那么简单、自然,也没有那么成功。 &就我感觉而言,如果你的任务能拿到原始的有效特征,数据量足够巨大,任务本身和感知相关(人也能完成相似的工作),那么深度学习就极有可能带你飞一会。只是图像和语音是人们最感兴趣的,人们花了大量努力让它飞起来而已(那么多大牛在努力填坑呢)。
& 如此看来,深度学习在语音、图像识别中获得成功,也是很自然的事情了。
&辟谣1:玻璃很便宜
我们家窗上的玻璃很便宜,其实他们是很初级的二氧化硅晶体(此处晶体为广义上大家对结晶的称呼,玻璃是非晶体,初中还是高中的物理已经说过了),含有很多会影响光学素质的元素,最简单的是我们从玻璃的侧面观察,发现玻璃是绿色的,因为含有铁元素。其实还有很多元素的,只是这些东西完全不影响玻璃作为窗的应用,所以可以无视了。但到了精密的光学仪器,很多的这些元素是必须被除去或者控制的,从而提高的制作成本。
有些东西需要被除去,有些东西必须被添加。用作镜头的玻璃,一般需要较高的折射率,从而提升光学性能,早期的玻璃通过添加铅来实现这个目标,但后来因为环保的需要而禁用了,而是用一些更贵的元素(具体是那些我也不是很清楚)来实现这个目的,进一步提高成本。
玻璃的研磨的成本是很高的,倒并不是因为人工研磨(现在还使用人工研磨玻璃的镜头,不拥有巨大销量的特性),而因为玻璃本身硬度非常高,要找比它硬得多的一些特殊合金来研磨,而且这些合金也是损耗品,成本也是摆着的。当然有些很便宜的镜头使用的树脂玻璃,随便磨就可以了。
镀膜,现代光学仪器都是使用多层镀膜的,设备同样杠杠的贵,技术都是专利,国内能自己做多层镀膜的几乎没有。
&&& 特殊玻璃,例如非球面镜,贵在研磨,超低色散镜片,贵在成分,萤石,其实就是氟化钙,早期用天然的,现在全部人工制造,佳能专利(不过这玩意不用在”有巨大销量“镜头上)
综上所述,镜头玻璃其实很贵
&&& 辟谣2:镜头手工装嵌,人工贵
除了施耐德、徕卡及原装蔡司之外(本来就不是销量巨大的镜头),几乎没有什么市面易见的镜头是使用完全手工装配的,都是先机器组装一些模块,人再将以各个模块组装起来。装镜头完全没有传说中神秘,都是依样画葫芦的。日本厂商早就将一些便宜镜头放到国外组装,所以装嵌成本不会比一般电子器材高得去哪。所以装嵌人工其实不贵。
&&& 辟谣3:虽然镜头设计需要极大量的人力物力,但产量大就可以摊薄了
除了我们熟悉的那个伽利略把一块凹透镜一块凸透镜叠一起就成了一个望远镜的故事外,镜头的设计从来都是先经过运算的,曲度是多少的玻璃产生怎样的折射,怎么叠,距离多少,产生什么成像,都是完全靠算的。以前是人算,现在是电脑算,但依然涉及大量人力物力的投入。现代镜头的结构远比以前的复杂,设计一个出来需要投入的钱可是以百万人民币为基本单位的,所以并没有我们想象中的容易和便宜。所以一个镜头结构设计出来之后,是可以申请专利的,受到保护的。而镜头的产量并没有我们想象中大,毕竟不是IPHONE,今年5月23日,算上五花八门的东西,佳能宣布EF镜头累计生产数达到9000万支。这可是一辈子的所有型号的量啊,都够不上IPHONE 4S的销量吧
&&& 前面大家已经了解一个事实了,就是再怎么量产的镜头,其实量都是非常小的。如果你手上有个稍微值钱一点的镜头,不妨看看他们的镜头编号,你会发现他们的生产数量基本都是以万为单位的(宾得、索尼),厉害点的就以十万为单位(佳能、尼康)。这就足以说明,越稀有的镜头(而不一定是光学素质越好的镜头),能平摊设计、生产、流通中的成本的能力就越低,价格就越高。
&& 所以普通消费者咬咬牙上个便宜红圈还是可以的,但让你买个50 1.2或者是来套徕卡,大部分人就承担不起了。在摄影器材上,应该说是在几乎所有消费品的顶端领域,一分钱一分货,一毛钱两分货,一元钱三分货就是这样来的,就更不用说企业本身的营销、市场定位因素等等了(这些我不讨论,因为不涉及技术、生产成本本身)
有这样一个传说,为了使玻璃获得最好的状态,徕卡在烧制的最后冷却步骤,以一小时降一摄氏度的方式进行温控,以玻璃的熔点大约是1500度左右算,使镜片完全冷却,需要大概2个月的时间(所以我一直觉得这是传说)。
& 我们几乎没有渠道知道工程师们为了追求极致的光学素质究竟有多丧心病狂。加上德国蓝领吓死人的工资单,或者那些动则两三万的镜头也就情有可原了。
在此再次强调,现在再怎么好的镜头,其实都很少有手工研磨的了。在机器不发达的年代,大师很重要,但现在的机械技术早就超过人手精度太多了,就像你以前还听过国际象棋大师和电脑比赛的故事,现在?哪个大师还出来丢脸啊。倒是手工装嵌还是大行其道的,这倒不是为了提高精度,前面说过了,手板眼见功夫哪里的工人都能胜任,纯粹为了省钱。搞一个动装镜头的机械臂可比请真人贵太多了。宾得在越南装的公主镜头和之前日产的一点区别都米有,成本省了价钱还涨(贱!)还有就是所有的sony蔡司都是made in japan的,其实就是福冈光学,和福伦达一条线出来的,所以为什么比德蔡便宜(要是德蔡能自动对焦,你以为会卖多少钱?
& 除了美国,其实没多少国家微电子强。这话不太对,日本韩国还是不错的。
但是之外的国家确实不多,基本原因还是钱、人、技术三者。
美国微电子的发展,有1/3功劳要归功于摩尔提出的摩尔定律,这条定律很好地协调(coordinate)产业链的进度,可以说是美国优于其他国家很重要的一点。这个外行人不会明白,但是内行人是很注重这条定律的。
日本是走的材料方向,与主流不太同,所以在有些领域是垄断优势的。日本不缺钱。
中国是因为以前闭关,从而导致无人才,国家穷,导致无钱。但是现在算来,人才和金钱都到位了,有些细分市场已经是国内芯片占比最大了。现在不缺钱了,国内华为海思已经是TSMC的16nm最初客户之一,这是技术+金钱的一个表现,以前不可想象的。
中国目前进来太晚,导致专利壁垒很高。其实很多微电子的壁垒并不高,估计再隔10年,国产芯片
应该类似国产电器,国产为主了。
&为什么从改革开放开始就提倡发展微电子行业但到现在依然落后?
这个需要时间,因为金钱和技术都需要积累,才能出成绩。
做个比喻,家电的金钱、人才、技术需要的积累少些,所以10年就出成绩了。
微电子大概需要20+年,
更高科技的,诺贝尔科学奖,这个需要就更长。
&国家直到现在依然大力提倡发展微电子行业会改善这种局面吗?
基本没用。
& 在全球分工越来越细的情况下 中国没必要可以去追求什么技术都是天下第一
建立一个可用的完整工业体系是不现实的 如果建立好了 那么除了原材料之外 我们就不用进口任何产品了 可能吗? 有意义吗?
不要听者工业党天天想打核战的意淫
中国做到尺有所长 有自己的核心技术 有自己的独门特色 能让13亿人民过的开心 幸福就够了
至于要不要把微电子搞好 顺其自然吧 刻意去扶持似乎很难成功
& 美国有一票从50年代晶体管分立元件干起来的老工程师,整个微电子行业的标准、协会、通讯、历史、创新、苦工、积累、工业基础都在美国那边。微电子行业相关的基础物理、实验物理、化学、高精密仪器、光学仪器等等基础学术研究从头到尾都是一起成长。微电子行业发展驱动的EDA软件、数学理论等等也都是一起发展起来。这是一个相对开放的、学术和商业并行驱动的行业。在硅谷每隔几周这票大爷大妈就会凑起来开会谈学术谈研究谈家长里短美其名曰society。我实在想不出有什么道理不是美国(欧美)主宰微电子行业。
国家的投入当然非常重要。但这不是两弹一星或者航妈涡扇之类的大项目。国家的投入可以让中国成为微电子大国,但中国短期内绝不会成为微电子行业发展的主要驱动力,还是跟在人家身后学走路吧。
&&& Google的汽车已经在路上了,根据新闻报道,虽然目前在试验阶段,但已经跑了十几万公里,试验效果也挺好。我想你的问题应该是Google研发的汽车有没有可能大规模生产和普及。
让车自动走路很容易,只要把车发动开,在油门上压块砖头就可以了。最关键的是让它选择走什么样的路,我们能在车上干什么。
GPS的成熟应用。这里就不在赘述。到时候会变成GGPS,因为人家Google用自己的卫星。再搭配上Google家Google Maps,双剑合一。
Android平台的普适性。Android不仅可以为手机,可以为平板,更可以为汽车。在硬件保证的前提下,除了自动驾车应用等必备应用,开发者完全可以为提高乘车乐趣而开发出来一大堆应用来,专门为汽车优化的平台可以叫Carmobile,但我想google不会起来这么没创意的名称。
畅想一下未来:
Google不会参与到汽车硬件生产上,和手机一样,它要的是平台。
推出市场时应该会像现在的电动汽车,双模。可以随时根据实际情况来调节驾驶模式。
任何一项产品都是在不断改善中逐渐变得日趋完美,否则也就不会4.0,5.0,6.0。但我仍期望在Goolge汽车发布时,就像看到Iphone一样让我两眼放光。
&& 据说Google研发产品时会有个假设,假如某个东西现在才被发明出来,那么现在它应该是个什么样子,Google Wave就是建立在这种假设上。
我想我们也可以在头脑里来场风暴。
&& Google的自动驾驶汽车完全可以实现量产,我觉得5-10年的阶段会从豪华车型辅助全自动驾驶向全面覆盖到中级轿车并走入平常人的生活。但这个情况可能只会在欧洲或者美国先行推进。因为现有自动驾驶车辆无非是通过雷达,红外感应,图像传感器收集周围数据,结合GPS宽泛定位,路线指引,将数据交由计算机处理。但现在的自动处理能力,难以模拟预测其他车辆将会出现的行为。比如当人驾驶车辆时,有人要过马路,驾驶者会通过人脑综合分析预判断行人的动机,他是想等驾驶者驾车通过再过马路,还是想闯过去,再对车辆进行相应的操控。那么在这里,人的预判断需要分析的内容很多,甚至是穿越马路行人的眼神也会被放入参考之列。但目前的计算机难以计算如此大量的数据,或者说还缺少一套更好的逻辑软件让它运算。这就是google自动驾驶测试车所在做的事情,他们就是要通过大量的实验,来测试改进和验证他们的算法,让这套算法更能接近于人类驾驶水平,或可能加入云计算与车辆链接,提升运算能力。不过就像开头所说,这套系统肯定会在欧洲美国先行,因为那里的交通法规完善详细,人们遵守法规,相对来讲需要判断的因素就会少很多。而中国的状况使得情况更加复杂,要考虑不打灯变线,要考虑没有斑马线的地方横穿的行人,要考虑四处乱穿的摩托车等等等等变数非常之多。所以,很不幸,就如同现在很多豪华轿车上的半自动驾驶系统无缘中国市场一样,自动驾驶技术离我们的距离不在技术问题,而在基础设施和是否完善细致的法律法规上。
&& 其实中国现在的交通状况并不是因为人们素质低,z f把现在的交通状况归罪于人们素质低下是不负责任的说法。在英国,完善的道路法规和非常详尽的道路体系建设(几乎每个十字路口都有很多红绿灯让你从各种角度都会知道这里要停车了,人流大的地方每200米就有一个供行人过马路的斑马线和隆起的减速带或者红绿灯等等等等)。没有一套完善的道路体系(道路建设,标识,指示,规则)人们在大多数情况下就无章可循,何来遵守。
& 跟踪是一个很混乱的方向。
& 比如TLD、CT、Struct这些效果不错的Tracker其实都不是单纯的Tracker了。09年的时候我记得比较流行的是Particle Filtering, 或者一些MeanShift/CamShift的变形,比如特征变了,比如对问题的假设变了。 &
& 后来突然出现一些tracking by detection的方法,之前的很多朋友就觉得这是耍流氓。比如TLD,严格的跟踪算法也许只是里面的Forward/Backward Opitcal Flow的部分,但是效果很Impressive,所以不管怎样,一下就火了。 &
& 之后所谓的跟踪就不再是一个传统的跟踪问题,而是一个综合的工程问题。online learning,random projection ,sparse learning的东西都加进来,大家其实到底是在做跟踪还是在做检测或者online learning,其实已经不重要,因为衡量的标准是你在某些public dataset上的精度。 &但这些对实际的项目有没有帮助呢? &这是个很有意思的地方,在很多时候,我们之所以需要跟踪算法,是因为我们的检测算法很慢,跟踪很快。基本上当前排名前几的跟踪算法都很难用在这样的情况下,因为你实际的速度已经太慢了,比如TLD,CT,还有Struct,如果目标超过十个,基本上就炸了。况且还有些跟踪算法自己drift掉了也不知道,比如第一版本的CT是无法处理drift的问题的,TLD是可以的,究其原因还是因为检测算法比较鲁棒啊…… &实际中我觉得速度极快,实现也简单的纯跟踪算法居然是NCC和Overlap。 &
& NCC很简单,这个是对点进行的,对于区域也有很多变种,网上有一些相关的资源。 &
& Overlap是我取的名字,一般用在视频里面,假如你的摄像头是静止的,背景建模之后出来的前景可以是一个一个的blob,对相邻两帧的blob检测是否Overlap就可以得到track。在一些真实场景下,这个算法是非常有效的。关于背景template的问题在真实的视频里面也是很好解决的。 &坐在电脑前面调试代码tuning 各种阈值让跟踪算法在某一个视频帧下面不要drift的事情我是再也不想干了。 &以上说的跟踪是指给定一个视频帧中的物体区域,然后跟踪住这个物体。其他地方也有一些跟踪,比如SLAM里,但是问题域不一样。
& 有人把跟踪(tracking)和计算机视觉中的目标跟踪搞混了。 &
& 前者更偏向数学,是对状态空间在时间上的变化进行建模,并对下一时刻的状态进行预测的算法。例如卡尔曼滤波,粒子滤波等。 &
& 后者则偏向应用,给定视频中第一帧的某个物体的框,由算法给出后续帧中该物体的位置。最初是为了解决检测算法速度较慢的问题,后来慢慢自成一系。因为变成了应用问题,所以算法更加复杂,通常由好几个模块组成,其中也包括数学上的tracking算法,还有提取特征,在线分类器等步骤。 &
& 在自成一系之后,目标跟踪实际上就变成了利用之前几帧的物体状态(旋转角度,尺度),对下一帧的物体检测进行约束(剪枝)的问题了。没错,它又变回物体检测算法了,但却人为地把首帧得到目标框的那步剥离出来。在各界都在努力建立end-to-end系统的时候,目标跟踪却只去研究一个子问题,选择性无视"第一帧的框是怎么来的"的问题。我想,目标跟踪的下一步应该是成为目标检测的一步,充分利用物体特性,建成一个视频中目标检测的大系统,而不是自成体系,只在自己的小圈子里做研究。
& & 许多高级程序员瞧不上VBA。因为程序员是有鄙视链的:汇编 &C &C++ &Python &Java及C#及PHP(这三者相互撕) &VB &HTML。在这长长的鄙视链中,甚至都没有VBA的位置。
& 可是,Excel+VBA是图灵完备的,所以被程序员用来耍酷的各类性感语言能实现的大部分功能,Excel+VBA都能实现,而且往往是以更高效更快捷的方式,在这里不谈效率和优雅。而且考虑到大部分普通群众是没有编程环境的(各种依赖各种包,各种OS各种编译环境,还有IDE),然而使用VBA,只需要打开装机自带的Office,然后按下Alt+F11就自动进入编程和执行环境;甚至可以更简单的通过录制宏来解决写程序的问题,只需要在简单的代码基础上修修补补就可以执行。再考虑到VBA和Office各软件的完美整合,所以在便捷性方面,VBA是无可比拟的。最后,Office+VBA的分享性和移植性很强,任何测试通过的程序放到别的机器上也可轻易执行;而其他程序,哪怕是一段最简单的“Hello World”,也不一定。
因此本文讨论各种通过Excel+VBA能实现的各种炫酷功能(也会拓展到Office+VBA),主要是为Professional Service以及各行各业不写程序但是又严重依赖于Office的职场人士服务的。
曾经有一个朋友和我说,“Excel根本不需要编程,像我这样的Excel大牛靠函数和自定义函数能解决所有的问题。”对于这样的评论,我想起自己小学时的一段经历。因为不能理解虚数i(i^2 = -1)的价值,问我爸i有卵用?我爸说,“等你长大了,遇到更多的问题,就知道i的价值。”
& &1、自动打印
刚进职场的新人,只要爸爸不是李刚,基本都做过影帝影后(影=印,各种复印打印的体力劳动)。特别是咨询投行服务行业,在某次给客户的大汇报或者大忽悠会议之前,花数小时或者整晚来打印数个文件,并不是天方夜谭。而且这件事情是对着同样一堆不断修改的文件,会经常不断重复发生。
& & &我加入BCG的第一个项目,就是帮助某大型企业从上到下设计KPI体系并实施。从上到下涉及到几十个部门,大概有100多张的KPI表格需要完成,这些KPI表格分布在各个Excel文件里。我们4个咨询顾问的任务:
& & 设定好KPI的基本格式,然后每个顾问负责几个部门,在Excel里不断修改KPI表格,打印出来后去各个当事人及其领导那里讨论并修改
每周把所有的Excel文件中的KPI表格归集在一起,按顺序分部门打印出来,并需要多份,找负责该项目的HR头儿汇报进度和情况
这里面有个费时费力的环节,每周需要在多个Excel文件中找出目标Worksheet,然后选定合适的区域作为输出的表格,按照一定的格式和一定的顺序,打印出这100多张表格。之前我们全是凭借人力,每周由一个Analyst把所有最新的Excel文件收集在一起,然后挨个打开文件选中合适的Worksheet,选中区域设置好格式进行打印。每进行一次,几乎耗费一两个小时,还不能保证不出错。
& & 于是写下了我的第一个VBA程序,而且基本上是宏录制之后来改的,没有使用参考书及搜索引擎,全靠F1和自动提示,所以贴出来特别纪念一下。实现的功能就是将上述的人肉实现的功能全部自动化。按下一个妞,就慢慢等着打印机按顺序出结果吧。
& & 后来这个程序的升级版是:调度多台打印机,进一步提高效率,以及将打印机卡纸造成队列错误的概率降到极小的范围内。
2、制作图表及GIF动画
图表制作是每个Office一族的必备任务,制得一手好表格,绝对是升职加薪和偷懒放风的利器。,就利用Excel+VBA做出数张炫酷的信息地图,利用VBA为每个省的图形涂色。同时,为了进一步增强炫酷结果,还利用VBA将这些连续变化的图表做成了GIF动画。
& &3、制作复杂的分析图表
下图是研究各个车型之间的用户相互转换关系,因为要将一维的转化率向量,变成两维的矩阵,所以使用了如下的复杂公式。
=IF(ISERROR(OFFSET($C$2,MATCH(CONCATENATE(ROW(A4),"-",COLUMN(A4)),$D$3:$D$600,FALSE),0)/OFFSET($C$2,MATCH(CONCATENATE(ROW(A4),"-",ROW(A4)),$D$3:$D$600,FALSE),0)),"",OFFSET($C$2,MATCH(CONCATENATE(ROW(A4),"-",COLUMN(A4)),$D$3:$D$600,FALSE),0)/OFFSET($C$2,MATCH(CONCATENATE(ROW(A4),"-",ROW(A4)),$D$3:$D$600,FALSE),0))
同时为了用颜色的深浅来表示转化率的大小关系而便于比较,使用了VBA对下面的矩阵进行着色。当然有人肯定会说可以使用条件化格式,但是使用VBA保持了最高灵活度和效率。
4、根据格式化信息,生成标准的word文件
这是帮朋友实现的一个项目,他们实验室是研究某类事故并对重大事故进行鉴定,最后发布word版的正式报告。之前的工作流程是在专业的软件中完成计算和仿真,最后按照正式报告八股文的行文,把各种关键信息填进去,最后写成word文件。写报告的过程枯燥而没有技术含量,但却要反复进行。
通过下图的Word+VBA,完成主要的交互界面并连接计算软件。在通过简单的交互获取主要信息后,在后台完成计算并将主要信息填写入八股文的word模版,最终完成报告,同时将结构化的信息存入Access数据库。将Termsheet的书写及Termsheet到SPA及M&A等的法律文件书写工作彻底自动化。
5、通过Excel管理分布的任务流,并将Excel表格输出到Powerpoint
这是协助某国际大型汽车制造厂完成新品牌及其新款车型上市,面临车型即将断档的窘境,该新车型的上市非常关键,不能错失时间节点。然而,新车型上市涉及到无数分支:制造、产品、市场、渠道、营销、公关、财务等等,同时还要协调欧洲的两个总部以及中国的两个分部。
这次咨询的核心任务就是项目管理,总控整个大项目的进度,并每周向中国区的CEO汇报进度并发掘出易出现问题的关键节点以调配资源。我们4个咨询顾问分配下去各自负责几个部门或者项目分支,和团队一起规划流程、画甘特图、确认里程碑及时间点、安排负责人等等。当每天回到办公室大家将进度汇总在一起的时候发现了挑战及难点,每条任务线并不是独立发展的,而是各条任务线交织在一起并互相影响。
某些核心人员在多个任务线出现。比如:负责预算的财务人员,几乎要出现在各条线中负责相关预算的审批环节
某些任务线的里程碑是其他任务线里程碑的必要条件而相互关联。比如:新车的下线时间影响发布会的时间,相关法规测试的通过又影响车辆的下线时间等等
当任务线增多以及任务线之间的交叉越发频繁的时候,汇总的任务将会几何级数增加,这就是我们在项目过程中遇到的问题。于是我利用Excel+VBA完成了这个工作的自动化。主要实现的功能:
自动将4个顾问手中分散的Excel文件汇集在一起形成一个大的总表,如下图
各顾问手中的表格是按照部门维度来划分的,汇总后需要按照不同的维度来输出不同类型的表格,比如:按任务线输出表格、按责任人输出表格、所有延误任务的表格、所有需要资源重点投入任务的表格等等
在此基础之上,还要将上面提到的各种维度下的所有表格(大概有200多张),按要求格式粘贴到PPT中,每周提交给中国区的总部进行汇报和评估。密密麻麻的表格如下图。于是,我又写了一个程序将Excel中的表格输出到Powerpoint中,将一个秘书每次需要数小时才能完成的工作,简化成了一键发布,并可以在Excel中完成对PPT的更新。
这个项目的程序量不小,近似于写了一个迷你版的Microsoft Project来进行项目管理。
最后,下图中密密麻麻的PPT每周需要更新一次,每次都是快100张的工作量,然而基本上都是靠Excel来自动完成更新的。因为PPT的模版每次变化不大,我将这些模版记录下来,每周更新的时候只要根据Excel中最新的数据更改PPT中的数据即可。
6、根据结果倒推假设
一般的Financial Model都是根据重重假设计算最终结果。而在为某顶级手机品牌服务的过程中,我们却遭遇了逆向的尴尬。本来是根据地面销售人员的一定服务水平,计算所需要的销售人员数量;结果在项目过程中,总部已经确定好了销售人数的Head Count,转而要求我们根据HC确定服务水平。然而,服务水平不是一个单变量,是由零售店的覆盖率、销售拜访频率、拜访中的服务深度等多重因素来决定的,同时还可以根据一线至无线城市来变化。
于是只好再次寄出Excel+VBA法宝。先根据常规思路建立好Financial Model,得出HC的初步结果。然后写VBA程序,根据不同的情景、不同的优先级以及不同的权重来调节零售店的覆盖率、销售拜访频率、拜访中的服务深度等多因素,同时设定这几大因素的可接受范围,逐步逼近HC的预设值。
如果没有程序,以前基本是靠人工手动调节来凑结果,而且因为各种情景的不同,还需要多次调节。而通过程序,基本是自动完成,还可智能得设置优先级及权重,无需人工参与。
7、海量下载Bloomberg数据并完成分析
通过Bloomberg的VBA API,海量下载数百只目标股票的tick data以及order book。
并根据实现构建好的数学模型,在后台完成计算,将上述的实时数据转化成每只股票实时的trading cost,实时展现在交易员最常用的Excel界面中,方便交易员评估当下的交易成本以便于优化交易策略。
计算了一下,我在BCG做了三年咨询顾问,大概写了几万行VBA程序(都是自己手工输入的,没有复制拷贝和系统自动生成),每个项目一千至几千行程序不等。最后将Excel用成了中控界面,类似EMACS,在Excel可以随意操控全公司的打印机、Word、Powerpoint等等,自动完成各种任务以及数据更新和抓取。因为Excel的数据更结构化,所以将其作为中控平台,比Word和Powerpoint更有优势。
& 1.美国的本科,60-70年代开始巨大的GPA Inflation,原本是为了给学生更高的分,省得他们drop大学,drop了大学就得去打越战了。GPA Inflation这种东西牵一发动全身,一旦一个系开始,周边相关的系也就开始,过阵子学校整个就往上涨了。
这是对美本自己而言的,也就是如果你抓一个40年前的校友来,他的GPA有极大可能性比你低1左右。尤其是私立学校,学生交钱,校友捐钱,教授讲课,学生反馈,这一系列机制之下教授给高分能既受欢迎,又省事,学习学习热情还高,也就都给高分了。
& 2. 第一点并不能导出美帝本科药丸这个结论。虽然药丸是药丸,但是不是因为“水”这件事情。非科研的路线上。这件事情也和学校之外的力有关。既然本科教育作为signaling,本科GPA也作为了衡量一个人能力的标准,对于毕业之后直接就业的人来说,尤其重要,在一门有些挑战,然而又拿b风险的课,和一门相对简单,但是拿a容易的课之间,人们肯定会倾向于后者,不光是“懒”,而是因为就业形势下GPA跟工作挂钩这件事情本身有点问题。(我知道会有人反驳说其实没关系。我这里说的是对于美国人,中国人在美国本科的起点本来就很高了) 科研的路线上,美国人也不傻,全是4.0,收谁当学生啊?这点知乎上回答问题的各位phd比我更有发言权。如果我说错了欢迎更正。大体思路是,美本最强的学生,其实大三之后上的都不是本科的课了,虽然全上只给本科生开的课也可以毕业,但是扔到申请里面真的没什么竞争力。GPA并不是“保护主义”的结果,更何况,美国人也知道GPA并不能直接拿来对比。 &
& & 3. 所以,并不具备可比性。而且也很难比了,比如,举个例子,数学系,平均GPA 3.2,这是什么意思? 这整个样本里面,有本科毕业直接就业的,也有准备搞科研的,有刚刚好上完Major要求的12门课,混了好多别的课把GPA提上去的,有干了八门研究生博士生级别课程的。系之内都没法评价谁的GPA是高了,谁是低了。 这点可能跟国内区别比较大,美帝这边课程自由度高(声称一下无褒贬),同样一个系毕业,不一样的track,选的课可能是天差地别的。 &
& &4. 最后我想谈一下怎么讨论问题。知乎上这问题下面,大家好歹也都是高等教育出来的,能不能不要总引用“我一个朋友在XX校才GPAX.XX,教授一下fail半个班”这种论据。首先,朋友的水平怎么样?学校的什么系?什么教授的什么级别的课?这个说不清楚的话完全没法比啊。直接扔出学校的distribution也没有太大意义,有些学校有些系就是有很多混文凭的人把GPA掺高了,有些学校就是有奇怪的规定。等等,我建议大家如下看待美本GPA的问题: &
& &a. 区别一下学校差异。看一下这个学校的总Scale是什么。有没有A+ ?(我校就没有A+这档的分数,A+和A都记作4);有没有半档?(CMU的成绩没有A-, B+,只有ABCD)有没有权重?&
& &b. 区分一下专业GPA和总GPA,掺水的一般是总GPA c. 区别一下对比的人群。我一直认为对一个学校的成绩分布,最靠谱的了解方式是问你同一个高中的朋友/同一个大学的朋友,这些人的水平你很清楚,他们在各自的学校基本上也就是你在你学校的水平,他们对总体的估计基本上可以跟你对总体的估计作对比。 别太信网上的人说的话,首先,很多人报自己GPA根本不说真话的。其次,爆GPA的人群分部严重有偏。比如在美帝phd的同学,你们判作业判到的大部分中国人,是你们本科时候后80%的水平,并不是相当于你们水平的同学。 &
& 最后声明一下,拿自己学校举例子只是因为熟悉,不是想自黑或者捧我校。美帝GPA Inflation这事情很微妙,我们有时候会聊,但是因为现在正在被benifit,并没有人太拿这个说事。我校是传统上的GPA低的典型,除却文理学院我不了解,大U里面说到学风严谨分数低,基本上就是我们了。但是这几年依旧是涨得不行。我之前翻到90年代的分数,基本都比现在的平均GPA低。数学系现在是3.3,物理系2.9,而经济系已经3.5了据说。是不是经济系水呢?回到我第二点,经济系有搞科研的,在上各种honor课,学的东西我看都看不懂的同学,也有混文凭掺水掺到3.8的。系内部没法比,系之间没法比,学校之间没法比,跨国更比不了了
& &需要哪些背景知识?&
& &有没有都行,也就是一开始学还无关紧要。&
& &怎样动手从头开始?&
& &1.确定自己真的要学,不会中途而非。学习的过程中,会越来越感到乏味,80个人,能剩下20个坚持到底的就不错了。 & &2.软件先行,先学会拿着开发板写程序,然后外跟上硬件。&
& &3.去淘宝买一块C51单片机开发板,买哪个都无所谓,跟着视频教程一点一点学,不要定长远计划,也不用全部搞懂学完,如果你能全学完全搞懂当然更好。时限,两天(女生都可以做到,做不到你就不要学了),任务,一个计时器,且新的计时开始时,显示上一次计时结果,用数码管做。(到此为两天的任务,以下为扩展任务,再加两天)切换计时时有蜂鸣器提示音,数码管换成液晶LCD1602或别的什么液晶,加上串口通信,可由电脑控制计时并返回计时结果。 4.上面的任务如果能圆满完成,可以直接学习K60单片机或者学习STM32,学哪个无所谓,一通百通。
& &经过上面的学习,基本以后的软件学习都可以用同样的模式进行了。&
& &单片机的学习,最重要的就是用,边学边用,一来能加强学习效果,二来能给自己带来更多的正反馈。 &
& &补充两点关注32位单片机的学习:&
& &1.要学会使用库,32位单片机一般都有成熟的库可以使用,要学会使用这些库。&
& &2.相关硬件的学习,要学会看英文原版的datasheet,很多电子元件都只有英文原版的数据手册,英文原版的效果也比中文好,因为有些东西翻译过来味道就不一样了。 &
& &下面大概说一下单片机硬件的学习:&
& &1.跟着视频做基本的软件操作学习,可以去网上搜索相关教学视频,看两个就差不多了。或者直接找书对着边学边做,推荐后者,学起来不枯燥,可以自己把握节奏。软件可以先使用Altium designer,封装,元件库可以从网上下载开源的板子生成。 如果是在校大学生,最好找个导师,跟着导师做他的项目,因为有人指导,效果肯定不一样,况且可以做一个实际的东西,动力也不一样。我当时就是跟着一个老师,画他的项目的一块板子,假期做的,从什么都不会,硬着头皮做,每天从6点画到23点,中间不吃饭不睡觉,回寝室的时候整个人都是飘的。画画改改一个星期,老师才满意了。 我这才刚刚学会从现成的原理图画PCB。后面才开始学怎么画原理图。不过在画PCB时,不知道原理图的功能是不行的。 找不到老师,可以自己画一个计时器的板子,不需要跟做51时的电路完全一样,自己设计一个。画完可以去网上找商家做出来印刷电路板。淘宝就有。&
& &2.焊电路板。 焊电路板是门手艺。首先,去网上找视频。大概分为,贴片电容电阻焊接,插针焊接,芯片焊接,学会之后多动手,慢慢就会焊很多东西了。&
& &3.画电路板不要给自己设定太长学习时间,根本没有那么难,一个星期,就必须学会从原理图画PCB,后面的会在实践中渐渐丰腴。 单片机的学习,要先学会使用黑箱,先学好80%的东西,不必要记住,只需要达到效果就可以了。 还要学会自己解决毫无头绪的问题,要有这样的心态。 。 &
& &看到上面有人提到protues,我要稍微反对一下这个学习方法,不不不,是反对这个入门学习方法。 原因是这是一种自上而下提出的入门学习方法。它需要你对单片机已经有了解,至少要会用。然后还要有一点点硬件的基础。 为什么呢,因为它是仿真软件,何为仿真,有真才能仿。它是给不方便设计实物时,测试用的,换句话说就是给已经会用的人用的。教学除外,我们有一门课叫智能仪表,就是让我们用这个软件来做作业。有空上个图你们就明白了。&
& &所以我提倡去淘宝一百来块钱买一个51的板子,又有教程。很适合入门。然后做做我上面说的小任务。巩固学习。只做教程给的任务,会茫茫然不知所以然。
& & &硅用来做CPU,是因为它的优点太多,而缺点都是可克服的。锗虽然也有优点(比如开启电压、载流子迁移率),但它的几个缺点是很难克服的。 &
& & 首先是价格。硅直接拿沙子就能制,虽然工艺复杂吧但是原料成本接近0.锗在地壳中分布非常分散,成品锗(还不是半导体级别)的价格就已经超越了白银,印象中将近2000美元一公斤。 &
& &其次很大一个问题就是锗的氧化物不稳定,不好用。二氧化硅是致密的绝缘体,力学电学化学性质都很稳定,不溶于水;氧化锗没那么致密,还是溶于水的。这一条基本就宣告了CPU无望。 &
& &还有锗器件在稍高的温度下表现不良的问题,以及锗本身比硅重,又比硅软,更容易碎;等等。而且现在整个半导体行业都以硅为基础,没人会开发锗的CPU。 &
& &目前锗的前途很大程度上在光电学方面,太阳能电池,光传感器,红外LED,锗激光器(这个已经被MIT做出来了,但不是大家想象中的激光笔那样子),等等。因为硅做激光完全不可能,锗又能比较容易地在硅上生长出来,因此大家的理想是将用锗做成的光学器件与硅做成的电子器件整合在一张硅片上。那就牛逼了。 &
& &我们组是目前世界上唯一一个用Ge3H8和Ge4H10生长锗的研究组。目前我们在硅上面长锗已经能长得很好了,长出来的锗膜可以用来做衬底生长其他的半导体材料。我手头正在进行的一个课题是锗的in-situ doping, 已经出了两篇文章,还在继续努力中。。。 &
& & 再说一句,近三五年来锗基半导体方面进展很大,但是不少同行还没完全了解这些进展。如果看以前的书本上讲的一些关于生长锗的局限,现在很多都已经被攻克了。以前人们说在硅上没办法直接长锗,还有得用高温,或者需要几个GeSi的buffer,十年前确实是这样。但现在我在三百多度的温度下直接在硅片上生长锗,出来的膜质量很不错。
使用微语记录您身边的新鲜事 10:34}

我要回帖

更多关于 deep learning bengio 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信