深度学习 _ 简介及相关概念

1. 传说

传说深度神经非常神奇,把那些浅层学习都给甩出十万八千里去了!还需要什么特征工程?卷积神经网络的特征都是自动识别的!只要用正确的条件和结果训练得足够多,以后给条件就能自动出结果了,比教人还简单!它模拟的可是人类的大脑,现在的运算量已经赶上猫狗的脑了,只要运算足够大足够快,机器人分分钟就消灭人类!

这些只是传说,它夸大的事实的一部分,而故意忽略了另一部分.不过,树立的典型不都这样么?看 2010 年以来最热门的卷积神经网络(CNN)的发展,从 AlexNet 到 RssNet,就可以看到,它主要解决了什么问题,具体怎么用,离强人工智能还有多远。

其实,神经网络就是机器学习的一种,机器学习又是人工智能的一种。现在一说人工智能就说深度学习,不懂这个就太 out 了。环境就是这样,也只好花时间来了解一下了,此专题大致分为:简介,入门工具,BP 实现,CNN,RNN,技巧这几部分来介绍一下。

2. 引入

简单地举个例子:有一家玩具工厂,想通过试生产的方式培养员工的生产玩具的能力.具体过程是提供 3 种材料(输入),和 1 种成品(输出),让工人们练手(此例为回归问题).所有工人被分成三组(w1,w2,w3),如图所示,产品按箭头方向渐步生产.于是把它们分成了四层:输入层(3 种材料)->隐藏层 A(初级半成品)->隐藏层 B(高级半成品)->输出层(1 种成品).注意:每层中的圆圈是产品(状态),而非员工(权重).

图片.png

当工人生产完一个玩具时,交给质检员(黄色方块),质检员将之与成品规格对比(误差函数),然后告诉第三组的工人:做得太大了,用手一比划,说下回做小点.于是第三组反馈给第二组头太大身太大…第二组反馈给第一组骨架太大填充太多…从而所有人都做相应的调整(以上只是示例,实际每层节点的含义并没这么具体)。训练就是不断地给不同材料让他们去实践(训练),并用产品规格去评价评测做出来的产品(误差函数),每个人都在不断调整自己(调整权值)。在大量的磨合之后,大家都找到了合适的工作方式(各自权重)。这时候再给一些用过的新材料,也可以根据训练出来的体系做成相对靠谱的产品。

3. 重要概念

下面说说其中几个重要的概念

1) 权值

权值就是在上例中我们所说的每个工人都知道自己怎么做,它是神经网络的训练成果.图中圈与圈之后的每条黑线都代表一个权值,一般用符号 w 表示.

2) 损失函数

损失函数也叫做成本函数,代价函数,误差函数.它是图中的黄色部分,用于评测预测值 f(x) 与实际值 Y 的差异.通常使用符号 L(Y, f(x)) 来表示,损失函数越小,学习效果越好.

3) 学习率

学习率也叫学习因子,每训练一次权值都会被调整一次,从上例中看,当质检员说太大了,工人该怎么调整呢?是调低 20%,还是 50% 呢?这个调整的比例就是学习率.学习率决定了参数移动到最优值的速度快慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,使得长时间算法无法收敛。学习率也可以动态调整.

4) 批尺寸

批尺寸指的就是每生产多少个玩具,调整一下权重.如果每做一个玩具就调整一次,会造成反复波动,难以收敛;如果把所有的都训练完再调整,在数据量大的情况下,会占用大量的资源,还有正负相互抵消的问题.因此数据量大时,一般分批训练。

5) 全连接与部分连接

在上例中,每一层的节点都会用到上一层所有节点的结果,并且把自己的运算结果提供给下一层的每个节点,这就是全连接.有时候并不需要全连接,以节约资源,就是部分连接(部分连接在 CNN 部分再详述).

6) 激活函数

激活函数也叫激励函数, 是图中红色部分.它的主要作用是把线性变换转换成非线性变换.神经网络优于其它算法主要方面就是它能解决非线性问题.如果没有激活函数,则每层变换都是线性变换,线性变换多层组合还是线性变换,那样的话多个隐藏层和单个隐藏层就没区别了.因此,在每层都加了一个非线性变换,理论上这样就可以解决所有非线性问题.

7) 说明

此处概念较多,最好是跟着程序一块儿看,具体后面《深度学习——BP 神经网络》.

4. 程序员的工作

不要以为把材料和规格扔进去就啥事儿没有了.程序设计者至少需要事先指定的有几个隐藏层,每层多少个单元,每层的激活函数,误失函数,优化率,是否全连接等等.程序员就好比工厂的管理者,他的经验知识就体现在这儿。

5. 深度学习

算法分好多层,并且后层依赖前层的结果,所以叫深度学习,不止是神经网络,其它的算法与其自身,或者算法与算法之间,层层堆叠的也叫深度学习.

6. 分类

这里我们先看看 NN,DNN,CNN,RNN,GAN 这些常见的概念,到底是什么关系。这里只是个大致的分类,更多时候它们是组合使用的。

1) 从算法上分

  • 多层感知机(MLP)

感知机拥有一个输入层, 一个输出层, 一个隐藏层, 数据从输入层, 经过隐藏层变化, 然后在输出层得出分类结果. 后来发展出多层感知机, 就是有多个隐藏层,

  • 神经网络(NN)

神经网络是在感知机的基本上,又加入了激励函数, 模拟人脑的响应, 如上例中那样工作, 这就是所谓的神经网络 NN. 后文的《深度学习——BP 神经网络》描述了 BP 神经网络的具体实现(非调库方式)。

  • 深度神经网络(DNN)

随着层数的加深, 梯度消失问题变得严重, NN 越来越容易隐入局部最优解, 为了克服梯度消失问题。采用了一些方法, 比如用 ReLU 替代 sigmoid 激活函数, 预训练等方法缓解了局部最优解问题, 使 NN 可用更多层实现, 这就是 DNN。但具体使用了什么算法, 扩展到多少层叫 DNN, 也没有确定的说法. 只是说 DNN 是 NN 的改进版.

  • 生成式对抗网络(GAN

GAN 是博弈式的训练过程,生成模型的工作过程如下:生成一些图片 ->判别模型学习区分生成的图片和真实图片 ->生成模型根据判别模型改进自己,生成新的图片 ->….-> 判别模型无法判断是生成的还是真实的 ->结束

2) 从功能上分

  • 卷积神经网络(CNN)

卷积神经网络一种专门用来处理具有类似网格结构的数据的神经网络,它一般指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。它典型的应用是图像处理.

  • 循环神经网络(RNN)

循环神经网络是专门用于处理序列的神经网络,例如它可对时间序列上的变化建模。神经元的输出可以在下一个时间戳直接作用到自身。它典型的应用是自然语言处理.

7. 参考

[CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络) 概念区分理解](http://blog.csdn.net/eddy_zheng/article/details/50763648)

'到底什么是生成式对抗网络GAN?