深度学习2:概念学习

本人小白,记录一下几个深度学习的基础概念,本文会随学习不断补充。

更新

·2018.01.24 增加概念:1.深度学习是什么,2.人工智能、机器学习和深度学习的关系,3.神经元,4.神经网络。
·2018.01.30 增加概念:5.ReLU神经元,6.池化Pooling,7.Dropout。
·2018.03.01 增加概念:8.epoch、 iteration和batch size。

1.深度学习是什么

深度学习的概念源于人工神经网络,是机器学习中的一种基于数据进行表征学习的方法,其实质是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,以提升分类或预测的准确性。

2.人工智能、机器学习和深度学习的关系

参考: http://www.leiphone.com/news/201612/ivLxiAXyHTCqGu0K.html
https://www.leiphone.com/news/201609/gox8CoyqMrXMi4L4.html

深度学习2:概念学习

三者为一种包含关系:人工智能>机器学习>深度学习

人工智能(AI)是一个大概念,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,是计算机科学的一个分支。简单来说,人工智能就是一种模拟人的意识、思维,使机器智能化的技术。

机器学习是一种实现人工智能的方法,是人工智能研究的一个分支。机器学习最基本的做法是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。

深度学习是一种实现机器学习的技术,是机器学习中的一种基于数据进行表征学习的方法。

3.神经元

参考:
http://blog.****.net/pangjiuzala/article/details/72630166

神经元是神经网络的基本组成元素,神经元可以接收输入,并处理生成一个输出给其他神经元。
深度学习2:概念学习
(1)权重
如果输入有多个时,将为每个输入随机分配一个关联权重(W1,W2 … Wn),在模型训练过程中更新这些权重。

(2)偏差
对于输入还会增加一个偏差B,用于改变权重与输入相乘所得结果的范围。

这样输入可以表示为一个线性形式:

WnXn+B

(3)**函数
输出就是这些线性分量的累加和的一个非线性函数F,F即为**函数:

Out=F(WnXn+B)

4.神经网络

参考:
http://blog.jobbole.com/109748/#third
http://blog.****.net/littlesmallless/article/details/62993304

神经网络由许多相互关联的概念化的人造神经元组成的网络,神经元之间能够传递数据,并且根据网络“经验”调整的相关权重。

(1)单层神经网络

单层神经网络包含了两个层次:输入层和输出层。输入层中的神经元只负责输入数据,不做计算;输出层的神经元会对来自前一层的输入进行计算。

把需要进行计算的层次称之为计算层。此处的单层神经网络指的就是只有一层计算层的神经网络。

下图为一个单层神经网络图及其输出单元Z1和Z2的公式:
深度学习2:概念学习

可到看到输出Z1和Z2的形式相同:

Z=F(WA+B)

(2)多层神经网络

在输入层和输出层之间增加更多层次,构成了多层神经网络。这些中间层被称为隐藏层。

深度学习2:概念学习

增加更多层次带来的好处是:更深入的表示特征,更强的函数模拟能力。这部分博客《计算机的潜意识》写的十分详细,这里直接引用其内容。

更深入的表示特征可以这样理解,随着网络的层数增加,每一层对于前一层次的抽象表示更深入。在神经网络中,每一层神经元学习到的是前一层神经元值的更抽象的表示。例如第一个隐藏层学习到的是“边缘”的特征,第二个隐藏层学习到的是由“边缘”组成的“形状”的特征,第三个隐藏层学习到的是由“形状”组成的“图案”的特征,最后的隐藏层学习到的是由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。

更强的函数模拟能力是由于随着层数的增加,整个网络的参数就越多。而神经网络其实本质就是模拟特征与目标之间的真实关系函数的方法,更多的参数意味着其模拟的函数可以更加的复杂,可以有更多的容量(capcity)去拟合真正的关系。——《计算机的潜意识》
深度学习2:概念学习

常用的多层神经网络要么浅而宽,要么深而窄。后者往往更节约资源。深层网络也有劣势,就是它不太容易训练。简单的说,你需要大量的数据,很多的技巧才能训练好一个深层网络。这是个手艺活。

5.ReLU神经元

ReLU(Rectified Linear Units)是一种**函数,通过指代以斜坡函数及其变种为代表的非线性函数,可以表示为:

f(x)=max(0,x)

ReLU神经元是使用ReLU的神经元,其输出为:
max(0,wTx+b)

使用ReLU后的效果如下图:
深度学习2:概念学习
可以看到ReLU下,只有大于0的部分才会被输出,小于0的部分输出为0。

ReLU有很多变种,比如Leaky-ReLU、P-ReLU、R-ReLU。

详细内容推荐阅读:https://baike.baidu.com/item/%E7%BA%BF%E6%80%A7%E6%95%B4%E6%B5%81%E5%87%BD%E6%95%B0/20263760?fr=aladdin

6.池化Pooling

卷积神经网络中,完成卷积特征提取之后,可以得到特征图,将其划分为几个不重合区域,在每个区域上计算该区域内特征的均值或最大值,构成新的特征图用于后续训练,这一过程称为池化。

下面以Max Pooling为例来看一下Pooling的处理过程。
深度学习2:概念学习

假设卷积神经网络输出的4x4的特征图,将其划分为不重合的区域,对每个2x2的区域分别进行求最大值操作。这样就将4x4的特征图压缩为了2x2大小,这一过程就是Max Pooling。

池化可以有效的对特征图进行压缩,提取主要特征,简化网络计算复杂度。池化单元具有平移不变性。

7.Dropout

Dropout是指在深度学习网络的训练过程中,对于神经元,按照一定的概率将其暂时从网络中丢弃。
深度学习2:概念学习

对于深度神经网络(DNN),模型只是在训练集上学习分类,使其适应训练样本,而不是去学习一个能够对通用数据进行分类的完全决策分类。而Dropout就是把DNN网络看做一个集成的模型进行训练。

详细内容推荐阅读:
https://www.jianshu.com/p/ba9ca3b07922

8.epoch、 iteration和batch size

参考:
https://www.jiqizhixin.com/articles/2017-09-25-3

epoch:向前和向后传播中所有批次的单次训练迭代(本人小白完全没看懂)。简单理解,一个epoch使用训练集中的全部样本训练一次。

iteration:完成一个epoch的需要batch数,在一个epoch中,batch数和iteration是相等的。

batch size:先来理解batch。当数据集不能一次性通过神经网络,就需要将数据集分成几个batch。batch size就是是一个batch中的样本总数。

比如一个训练集有1000个样本,将这些样本划分为100个batch,那么完成一个epoch,需要100次iteration,此时batch size为10。