老饼讲解:一步一步上手深度学习
哎呀呀,终于等来你了!
你也想学深度学习呀~!我刚好会耶!那咱赶快开始吧~!
在正式开始前,先来随便讲点小故事,说说深度学习是怎么一回事。
说到深度学习,就不得不说MLP神经网络,因为就是它生下了深度学习。
MLP是个什么东西呢,就是如下这样的东西:

对神经网络稍有接触的应该都很熟悉它,它常常被人叫做BP神经网络,因为它用BP算法来计算梯度,这是它的特色。不过在深度学习里各种模型都使用BP算法,就算不上它的特色了,一般都只叫它MLP或全连接神经网络。
MLP有什么功能呢?它的功能可特殊了,它就可以通过调整权重来学习任意的输入、输出的关系,所以你只要采集一堆输入、输出数据回来,喂给它就可以了。有同学就发问了,能不能让它学习股票中的规则然后发大财呢,这应该比较难,它只是从数据中学习规则,股票数据中更多的是伪规则,学了也没什么用。
简单来说呢,MLP就是一个不需要知道X、Y的背景、光凭数据就能学习X、Y任意关系的模型。
学过BP神经网络的同学,上手深度学习相对会更快手些,毕竟,都认识它的祖先了嘛~
好了,下面我们来说说深度学习的开山鼻祖--CNN!
首先,CNN是怎么来的呢,那就是MLP解决图像时,会遇到一个难题--输入非常的多!
输入多会导致MLP的参数疯狂爆涨!只要图片大一些,例如,它就干不动了!

可以看到,输入节点就有个,如果隐层节点来个5000,那光是输入层到隐层的权重参数就有224*224*5000=2.5亿个,那就很难训练了,一句话,对于图像,MLP干不动了!
好了,上面说到MLP在图片领域由于输入过多而干不动,下面就到我们的CNN出场了。
MLP干不动是因为输入过多,于是CNN大聪明就想到了一个办法!就是图片邻近的像素是有关联的,也就是存在信息冗余,也就是,你看着224*224的图片,实际它里面呀,也不是真的有224*224维的独立信息,所以,把它压缩小了再扔回给MLP不就行了么?!接下来,怎么压缩就是CNN要干的事情了。

如上图所示,初代CNN就是引入了卷积层和池化层,通过它们来把输入特征逐层压缩小了,再丢给MLP。一尝试,果然好用!好了,这个方向行,那就加油撸!把效果搞到极致!于是,大家开始在结构、原理上进行雕花,各种经典CNN就出现了,AlexNet,VggNet,GoogLeNet,ResNe等等。
值得注意的是,由于加入了特征压缩,模型不再是MLP时常用的三层结构,而是增加了更多层。但加层也是会遇到很多训练上的困难的,大家也不能一直加,所以一边加层、一边研究怎么加层也能顺利训练,直到玩到ResNet时,ResNet提出了残差连接技术,直接把它干爆了,祭出一个1202层的模型仍然轻轻松松完成训练!
好了,故事总是精彩的,我们这里就刹住不说了,因为说到这里,就已经大概知道深度学习是怎么回事了。
从上面的故事,我们已经大概可以知道,深度学习其实往往就是MLP在其它领域应用时,遇到瓶颈,然后经过结构改造、加深层数等等一系列手段,就发展出了该领域上的专用模型。而这些模型往往都是多层的,需要采取类似的技术来解决多层模型训练困难的问题,然后这些领域上的这些模型,就统称为了深度学习。
下面是一些较常见的深度学习领域:
⚫︎ CNN卷积神经网络:用于解决图像问题。
⚫︎ RNN循环神经网络:用于解决时序问题(例如文本、语音等)。
⚫︎ 生成模型:用于生成与训练样本类似的样本(例如图片生成)。
⚫︎ YOLO:用于目标检测的一系列模型。
⚫︎ 强化学习:构造智能体,然后通过奖励的方式来训练智能体解决问题。
⚫︎ GNN图神经网络:用于解决非结构数据。
所以呢,深度学习不是一个单薄的东西,而是各个领域上的深度模型、以及解决深度问题的总体通用技术。
好了,就随便唠唠,说得不对也没关系,反正我是写给小白看的,不过于较真,较真了寸步难行。学深度学习其实是很有意思的一件事情,它不像机器学习那样,总是学一个一个的模型,而是像看故事一样,讲述模型是如何如何一步一步的演化来解决难题,从而将效果一次又一次推上高峰。
评论