ITPub博客

首页 > 数据库 > 数据库开发技术 > 匆匆那年 我的AI2017(二)

匆匆那年 我的AI2017(二)

原创 数据库开发技术 作者:Agent的潜意识 时间:2018-02-15 13:59:26 0 删除 编辑

模型压缩与加速


有一段时间,我觉得做小项目太辛苦。看到写darknet的那帮人成立了一个公司拿到了钱,新闻上是这样写的:2017年2月2日,位于美国西雅图的AI创业公司XNOR.AI宣布获得来自Madrona Venture Group和艾伦人工智能研究所(Allen Institute for Artificial Intelligence)等机构的260万美元的种子融资。XNOR.AI 利用二值化神经网络等技术对深度学习网络进行压缩,致力于开发有效地在移动端或嵌入式设备上运行的深度学习算法。

那段时间我经常看论文,琢磨这方面的东西。我把一层一层的网络的参数和feature map全部打印出来,我发现了这些点:


1、卷积的具体过程。所谓的3*3的卷积核,事实上他的shape是input feature map的通道数*3 *3 * output feature map的通道数。例如,输入的原始图片大小是224 * 224 *3的原始图片,卷积核为3*3*3*16,那么卷积的过程就是,三个即[0-2]* 3*3 *1的卷积核跟R G B通道相乘,然后相加,得到输出feature map的一个通道的值,这样的卷积核有16个,我照着这个样子手推了一把卷积的过程。

根深才能叶茂,只有把基本原理搞了个底朝天,才能琢磨点花样来。有以下这些点是我琢磨的突破点,后来有不少人照着这些点发了不少paper,我只能说学术界研究非常活跃。


1)滑动窗口的大小。stride为2的话,这一层的计算量就减半。这个stride不能瞎设,在网络的前期是可以设为2等,但到网络的后面,设2的话就会丢失掉不少信号。效果不佳。

2)网络的宽度。网络的宽度就是卷积核的个数。这个是计算量的大头戏,前一层是128个通道,后一层是256个通道,那么,计算量是?*128*256*?。如果说在中间加一层,该层的卷积核的个数是64,那么计算量也是减少不少,成了 ?*128 *64 *? +?*64*256*?。这样的变化在网络初期变化还可以,到了后面这样变会影响效果,初期的变化能压缩一些参数吧。


我才在琢磨这些事情的时候,谷歌的mobilenet就出来了,他的压缩和加速玩的更狠,直接把通道变成了1,他的depthwise和pointwise层跟我这个简单的64通道的层比就是一个大跃进了。


3)参数的大小范围。事实上,输入的原始图片,归一化转换成网络的输入值的时候,已经不是原始像素值0-255的范围了,而是一些小值,-2-2之间。那些卷积核和中间的feature map的值就更小了,很多都是0.01之类的值。对这些权重也可以做一下文章。比较浅的就是,训练好的权重,把一些小的值去掉。真理的摸索都是由浅入深的,要向每个先驱者致敬。


比较好玩的想法是,一个卷积核和他对应的feature map在训练过程中变化不大,并且他们的值都很小,那么可以把这一个卷积核从卷积核列表里去除,这样同时减少了输出map的shape了。


对参数权重动手,我觉得比较好玩的Idea就是,把所有权重变成2值化表示,例如3是11,0.75是-11这种,这样就把浮点数乘积运算转换成了位运算了。

这个可以是在训练好的权重里做文章,这样会降低一些精度;也可以是训练过程中做文章,那样难度就大了,反向传播调整的是连续变量的值,这个是离散变量的值,得有专门的训练算法了。


厉害的是,AAAI2018还发表了IDST的一篇文章,他们还真的实现了这样的训练方式。

后模型压缩时代


我觉得模型压缩加速不是一个小的分支,事实上,应该是深度学习研究的主流,他应该可以把之前学术界一直寻找比较work的网络结构一脉相承起来。我觉得后面研究的一个方向就是,什么样的业务需求手撕一个什么样的网络,不大不小,没有臃肿和冗余,并且结构简单快速,没有多余的参数。要做到这一步真不容易,需要对深度学习的一些底层原理用严谨的数学推导出来。

所有的标准网络,都是在Imagenet数据集上刷分刷出来的,这个事实上是不科学的。一个分1000个类别的网络,不一定是分10个类别的业务需求需要的,同时,也不一定适合于分2000个类别。


谷歌的Nasnet开了个头,就是根据具体业务需求,用一个神经网络来学习网络的结构,有点庞大和不好用。


在这里,我斗胆做一个猜想,未来的算法工程师能不能这样工作:根据业务数据,做一些预处理,出一些图表统计,大概明白了业务数据的分布,估摸出一个网络结构,然后用这个简单干净的网络结构训练数据,能快速收敛并且work,速度也快,参数也少,可以部署到低功耗的芯片上,这样的工作模式可以大大减轻芯片的压力,同时也可以给持续的AI芯片热降温了。


学术与创业


我发现,我离学术越近,离市场、离真实的业务需求就越远。并且,学术研究日新月异的今天,靠简单的几个论文几个切入点切分市场的时代一去不复返了。施一公先生说,鼓励科学家创业是压死骆驼的最后一根稻草。我觉得也是。秀才造反,百年不成,大抵也是这个道理。


学术研究是探索,是创造知识。这些知识一般并不能立刻解决实际业务问题,但是人类探索真理的一小步。

现在人工智能创业还非常注重学术研究,也有一些创业公司靠发表论文或在公开数据集上刷榜来融资,我觉得有些本末倒置了,创业公司就应该不断的打磨出解决实际问题的产品,用产品来造福社会,如果你的精力都在学术研究上,那你应该专心做一个researcher,像何凯明老师、周志华老师这种,对自己的学术方向有所追求,不为外物所动,脚踏实地做出成果来。

我的项目和生活


这些年我做了不少项目,我的第一个小项目是某古都一个大学老师的小项目,才6000块钱。当时谁都看不上,觉得我没追求,我还是脚踏实地把它做好了。后来越做越大,自己忙不过来了还找了一些牛人来帮我一起做。

别人说,你这样傻啊,你的算法是核心,怎么项目谈这么低?

首先,你手上有200万的项目,你根本就没必要去做3-5万的项目,你得看你手上有什么底牌,你没有底牌你是没有议价能力的,还不如脚踏实地做好一些事情。

其次,大项目都是要做出东西来的,打磨东西的过程不是一件轻松事,你光想要多钱,手上没货也不行。

最后,也是我一直跟团队其他人说的,就是,你不需要跟你的合作伙伴或同事较劲,你跟事情较劲,没有人剥削你,没有人是白拿钱,你手上有好产品,现在是市场经济,你就能卖个好价钱,你如果有好技术,你去找工作也能找到更高待遇。你唯一该较劲的就是打磨出好产品,让市场更认可你。





具体的项目我就不一一说了,摸爬滚打,这些年积累的东西,可以让我从容的在二线城市买房买车吧。大概就这样了。

讲真,我挣得都是辛苦钱,去年17年元旦,我外婆往生,我手上有项目,写了一个晚上的代码跨年,也没有回去。

有一段时间我过得非常焦虑。周末的时候,跟姑娘去爬中山陵,爬到山顶的时候,俯瞰大地,气势磅礴,

那时候是春天,阳光很好,我躺在石凳子上,头枕着姑娘的大腿,一会就睡着了。醒来的时候,姑娘说:

亲爱滴,你有白头发了。我猛一惊,我的家族从来没有少年白,我想起刘强东额头上的那小撮白发,虽然他说他脸盲应该是假,但那白发的故事应该是真吧。

今年是大年三十,在这里给大家拜年。祝大家新年大吉大利,新春吉祥。


原文作者:Agent的潜意识;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-03-21

  • 博文量
    187
  • 访问量
    82265