拼积木的大孩子们:搭建神经网络

作者: 坂本龙一 | 来源:发表于2017-11-07 22:46 被阅读84次

搭积木

第一次看到类比神经网络为乐高积木,是在《Neural Network for Natural Language Processing (自然语言处理中的神经网络)》里面,当时真的有种醍醐灌顶,恍然大悟的感觉。

之前的一些实践经验,隐隐约约感觉用框架搭建网络有点像某种东西,但是却说不出,一下子被点破,立刻有一种畅快感。

是的,就目前用深度学习来进行研究或开发,完全可以把深度学习中的各种模块,当做是乐高积木中的一块块积木。你要做的就是根据任务要求,把这些基本模块拼起来,只要孔对好了,整个拼出来的结构合理,模型就能够跑。

现在各种深度学习框架的出现,使得这个特征更加明显。基本上每个框架都把一些基本的网络架构给模块化了,直接拿出来用就行了。

军火库

如果具体一点的话,可以拿深度学习中主要的三种网络模块来举例,这三种分别是MLP(多层感知机,也有很多其他叫法)、CNN(卷积神经网络)、RNN(循环神经网络)

现在就可以把这三种网络模块,当做是三种不同的积木,比如说MLP是梯形积木,CNN是方块形积木,RNN是条形积木。

如果还要再细分的话,这些大的模块下面又有小的变种,如典型的RNN中就有LSTM和GRU这两个小兄弟。

这些模块也都各自有着自己的特性,我们需要了解其特性,然后把他们从军火库中拿出来,放到合适的位置上去,组装起来就可以得到自己的架构和模型。

连接

既然有了这些积木,那么这些积木与积木之间当然也得有孔洞才能够互相连接。那么什么是孔洞呢?

就是各个模块的输入与输出的形状,只要前一个模块的输出和后一个模块的输入吻合,整个架构就可以跑起来,结果好不好先不说。

往往刚学习搭建网络时,最常碰上的问题就是,相邻的模块之间的输入与输出形状不吻合(not match)。所以我建议可以在旁边加注释,现在的输入输出形状怎么样了,是否吻合,很有帮助的。

连接好了之后呢,虽然有了一个模型,但还没有训练,这样没训练的模型也并没有什么用。那是不是需要自己把这个模型的运算方程写出来,然后再分别求偏导,之后利用反向传播更新呢?

如果是这样子的话,那么可能就只会有数学狂人才会来研究深度学习了。

所幸的是,因为有了计算图(Computational Graph)这项伟大的技术,所以现在反向传播训练非常便利,基本上已经全自动化了,直接把模型和数据丢给它们去训练就好了。

搭积木的例子

来举实际的例子。

比如任务是物体检测的话,我们怎么搭建模型呢。粗暴点说就是,在前面使劲堆CNN型积木,最后再加上MLP型积木,然后整个模型就好了。

还有现在挺火的VQA(视觉问答),看它的基线模型的话就是,对于图片用CNN型积木先堆成一块提取特征,然后对于文本的问题就用RNN型积木提取特征,之后两个提取的特征用叫做融合模块的积木连接一下,最后加上MLP,就完成了。我们可以给新模型取名叫做VQA基线模型

当然实际上还有很多对各个模块的细调和小技巧,才能够使得整个大模型获得很好的性能。但这里就不累述了。

拿来主义

好玩的是,如果你用小模块搭成了一个大模型,别人可以直接把你这个大模型拿过去,这边卸掉一块,那边装上一块,再稍微调一调就有了自己的新模型。

深度学习研究者

对于一些上层直接应用的研究人员,如自然语言处理,还有计算机视觉来说,确实可以把这些模块当成是积木块来用。

那么那些研究这些模块的研究者们呢,可以把他们当做是积木创造者。他们对这些模块里面的小部件进行调节测试,创造出新的模块,还有如何训练,以及各种理论分析。往往很多进展都得从他们那儿得到启示。

还有一点就是,可能大家也有疑问为什么现在大概只有MLP、CNN以及RNN三大模块,不多发明几种模块呢,最好像乐高积木一样,各种各样的。

事实上,这也是深度学习领域的研究人员在不断探索着的。因为目前这三个模块大家已经进行了很多研究,它们在有些问题上遇到一些困难,现在尚不能解决。

于是人们开始期望新的模型来进一步解决问题,所以就有最近自然语言处理的一些Recursive Neural Network的树状网络的探索,还有更进一步Hinton这样的想要推出完全不同的模块Capsule的。

还有一点要提的是,因为一直以来大家对这些模块的内部具体的工作原理并不是很理解,所以如何把这个黑箱打开也是现在研究的重点之一。

相关文章

  • 拼积木的大孩子们:搭建神经网络

    搭积木 第一次看到类比神经网络为乐高积木,是在《Neural Network for Natural Langua...

  • 忆流年

    一直编织的幸福…… ------小引 如同幼时, 搭建彩虹积木, 一拼一...

  • 搭建—好朋友主题我搭什么?

    好朋友主题当中,刚开始搭建区里孩子们不知道要搭建什么内容,每次去搭建区,孩子们都在拿几块小的积木搭建一座小的城堡,...

  • 有趣的搭建

    每当提到搭建区我们就不由自主的想到各种各样的积木,孩子们用各种积木自由地搭建自己喜欢的东西,这不仅能够培养孩子...

  • 这个周末,帮帮龙与你一起免费“乐高跑”

    乐高积木,一直都是孩子们钟爱的玩具。这款被“魔术塑料积木”的乐高积木,靠小朋友自己动脑动手,拼插出变化无穷的...

  • 神经网络体系搭建(三)——卷积神经网络

    本篇是神经网络体系搭建的第三篇,解决体系搭建的卷积神经网络相关问题,详见神经网络体系搭建(序) 卷积神经网络(CN...

  • 拼积木。

    今天我和橙子一起拼积木。 橙子拼了一个龟甲战车是个垃圾车。谁让忍者神龟里面的车是个垃圾车呢?我拼的是一...

  • 拼积木。。

    今天,下午妈妈给我买来一盒积木。我特别的开心!我说妈妈你为什么给我买积木呢?因为,妈妈奖励我全把作业全都写完...

  • 拼积木。

    今天我看完了书就拼起了积木。我拼了一辆装甲车,后面还有一条警犬。还有两个武装小人在车上站着。车顶上还有一门榴...

  • 拼积木

    你家有个积木车,生活一个人用一个一个的积木拼出来的,积木有1000多个。还有两张贴花纸。 花了两个月的时间,...

网友评论

    本文标题:拼积木的大孩子们:搭建神经网络

    本文链接:https://www.haomeiwen.com/subject/pfozpxtx.html