深度学习-神经网络
深度学习-神经网络
摘要
机器学习是人工智能的核心,而深度学习又是机器学习的核心。三者关系可用如下图来表示。
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。
首先认识一下人脑的神经元之间的联系
神经网络仿照人脑的神经元结构之间的联系,当某个神经元的轴突电信号强度达到一定程度时,就会触发将信号传递到下一个神经元。在传递的过程中加上一些对数据处理的操作,从而达到处理传递信息的目的。上面的信号其实就是数值或者多维矩阵。
神经网络
神经网络又分为两种,一种是浅层神经网络,另一种是深层神经网络,顾名思义可知,深层神经网络要比浅层神经网络复杂。
浅层神经网络
深层神经网络
上面两图中的圆圈则代表神经元,连线则代表上一层神经元对下一层神经元的信号传递
与浅层神经网络相比,深层神经网络具有更复杂的模型结构,并且层次结构较多,神经网络采用全连接的方式将神经元之间的信号进行传递,浅层神经网络则是非全连接,或者单层全连接。
- 全连接:是上一层的每个神经元都连接到下一层所有的神经元
- 非全连接:一个神经元连接一个或者下一层的其中几个神经元
每个神经元链接下一层多个神经元,由于不同神经元对该神经元的信号的Value不同,所以通过设置权重(Weight)的方式来降低或提高该神经元传递过来的信号。
其关系满足 y = Wx+ B
- w:weight权重,对该神经元的重视(需求)程度,也就是上面所说的数据处理阶段,一般总weight(w1+w2+w3)为1
- x:传递过来的信号量的值
- b:为偏移量,对于在线性分类问题,偏移量是不可或缺的。
上图如果没有偏移量的话,该直线就会过原点。
显然分类效果就不会好,通过加上一个大于0的偏移量b使得分类器往左平移。
- y:是加权后的值,激活函数的参数x就是所有y的和
激活函数
激活函数是神经网络模型中上一层神经元到下一层神经元数值的处理,上一层神经元通过线性函数(加权求和)得到的数值y,所有的y也是具有线性函数特性的,激活函数就是将这些数值非线性化,把y当作x带入到激活函数中。
- 线性函数关系为 y = Wx + B
- 非线性函数即不是一条直线的函数,例如幂函数,指数函数,对数函数等
激活函数又类似于高等数学中的符号函数(sgn),(sgn不是激活函数)
- x>0,则输出f(x)=1,传给下一个神经元
- x<0,则输出f(x)=-1,传给下一个神经元
- x=0,则输出f(x)=0,传给下一个神经元
经典的激活函数是Sigmoid 函数,其函数关系为f(x) = 1/(1-e^x)
- x较大,则输出f(x)=1,传给下一个神经元
- x较小,则输出f(x)=0,传给下一个神经元
- 所有的值均压缩在-1~1之间
反向传播
反向传播的基本思想就是在执行完所有层后,通过计算输出层与期望值之间的误差来逆向调整权重参数,从而使损失减小,误差变小。
损失(loss)
在程序运行过程中,模型生成好之后,会进行模型准确性评估,计算它的损失值,损失值越小,模型就越好。损失函数是计算损失函数的方法,也有一下几种。
- 0-1损失函数(0-1 lossfunction):
- 平方损失函数(quadraticloss function)
- 绝对损失函数(absoluteloss function)
- 对数损失函数(logarithmicloss function)或对数似然损失函数(log-likelihood loss function)
卷积神经网络
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈型的神经网络,其在大型图像处理方面有出色的表现,目前已经被大范围使用到图像分类、定位等领域中。相比于其他神经网络结构,卷积神经网络需要的参数相对较少,使的其能够广泛应用。
首先看下卷积网络结构流程图
回顾深层神经网络,因为每个层都是全连接的,假设有一个64×64×3的图像(64×64是二维平面上的像素值,3为第三维RGB的值),每个节点的权重是不同的,则下一层的每个神经元将会计算64×64×3个节点,若下一层有n个节点的神经元则计算量还需乘n,训练起来较为复杂。
卷积神经网络主要有三个特点
- 局部感受野(Local Receptive Fields)
- 共享权值(Shared Weights)
- 池化(Pooling)
局部感受野
在动物器官中,大脑皮层有不同的感受区域,如听觉区,视觉区等,每块区域都有自己特殊的神经元,当有听觉信号时会传到大脑皮层的听觉区的神经元,因此每个神经元对应的感受区域叫感受野.
那么在神经网络中,不同的卷积核会对应不同的感受区域,在卷积时彼此之间无联系。
卷积神经网络的卷积层每个节点与上一层某个区域通过卷积核连接,而与这块区域以外的区域无连接。
从右边图可见,每个圆圈代表一个卷积核,每个卷积核只需要关注自己的局部感受区域。
卷积核
卷积核到底是什么?那就来观察一下每个卷积核局部作用域。
上图是取一个卷积和其对应的局部感受野,中间的那一层就是卷积核,3×3的卷积核对源数据中左上角的3×3的矩阵进行点乘,就得到了一个数值,叫做该区域的卷积层的值。然而,这只是源数据中的部分区域,源数据是7×7的矩阵,所以卷积核再通过移动映射的方式多次卷积,如下图。
该图中在卷积层的值与源数据之间还应有个3×3的卷积核,未画出。
通过上图可以看出,如果一个7×7×1像素的图片通过一个3×3×1的卷积核卷积,则被卷积后的值为5×5×1 !这里注意一点,还是以图片为例,若是图片像素是三维的(彩色图片),则像素为7×7×3的图片必须使用三维的卷积核,并且第三维度也是3。
- stride:步长
- padding:扩展像素,填充像素
- in:输入的模式数,
- out:输出的模式数
- W H:卷积核宽度长度
共享权值
每个卷积核连接8×8个节点也就64个权重值,然而还有8×8×2个卷积核呢!这里出现了共享权值,共享权值就是每个卷积核对自己区域的权重比值都是相同的,所以仅需要给出64个权重比值即可,极大的减少了计算量。
池化
池化层也叫采样层,作用是降低数据维度,主要有两个池化方式
- 最大池化
- 平均池化
以最大池化为例,有4个2×2的矩阵,则取每个矩阵中的最大值作为该矩阵的特征。
另一个就是平均池化,就是取矩阵中的平均值来作为该矩阵的特征
迁移学习
对抗网络
G生成的图像被D识别为真图像loss越小,D对于G生成的图像的判别正确率越高越好
继续更新,点个关注哦