一、组成
1.神经元
(一)定义
神经元即神经细胞,是神经系统结构和功能的基本单位。人脑中有数1000亿个神经元,其功能是接受(树突)、整合(细胞体)、传导(轴突)和输出(轴突末梢)信息实现信息转换。
(二)生物神经元特性
--兴奋性
--传导性
--时空整合特性
(三)神经元的类型(按功能划分)
-感觉神经元(输入神经元)
-运动神经元(输出神经元)
-联络神经元(中间联系输入输出的神经元)
(四)生物神经元与人工神经元的联系
--x1,x2,x3指的是前边的神经元所为它传入的信息,传导性决定了输入信息x1,x2,x3分别会有一个权值w1,w2,w3,时空整合性体现在中间神经元(图中的求和节点)将输入信息和权重进行整合。整合以后跟随一个激活函数,体现了兴奋性,即在达到某个阈值才能输出信号yk。由此可见,生物神经元和人工神经元是相互联系的。
2.神经网络(ANN)
(一)定义
生物神经细胞功能比较简单,需要通过很多神经元一起协作完成复杂功能,通过一定的连接方式或信息传递方式进行协作的神经元可以看作是一个网络,就是人工神经网络,简称神经网络(ANN)。人工神经网络包括输入层,隐藏层和输出层。
(二)根据不同神经元之间的连接关系,将神经网络分为:
3.感知机
(一)感知机是一种最简单的人工神经网络。
单层感知机本质上是一个二分类器,而二分类器是一种机器学习模型,用于将数据分为两个不同的类别。它可以预测输入数据属于两个类别中的哪一个。常见的二分类问题包括正负情感分析、垃圾邮件过滤、疾病诊断等。
由于感知机只有输入层和输出层,所以它只能用来解决线性问题,要想解决非线性问题,就得加入隐藏层。
(二)神经网络的扩张
--增加网络层数
--增加每层网络的神经元数量
--调整激活函数:对激活函数做扩展
4.激活函数
(一)什么是激活函数?
在多层神经网络当中,上一层结点的输入与后边的输出中间有一个函数关系,这个函数关系就叫激活函数
(二)激活函数的作用
倘若没有激活函数,其实就相当于激活函数为F(x)=x,那么就是每一层节点的输入都是对上一层输出的权值的相加的和,相当于很多个线性函数的叠加成一个线性函数。这样一来就和没有隐藏层的效果一样,也就是跟感知机一样。总的来说,激活函数在这里起到一个引入非线性的作用。
(三)常见的激活函数
(1)Sigmoid函数 (最常用的)
优点:单调连续,求导容易,输出有界,输出仅限0~1
缺点:在远离中心点俩侧导数趋于零,当网络非常深的时候,越来越多的反向传播的梯度会落入饱和区,从而导致梯度的模会越来越小,五层之内会产生梯度退化为零的现象
(这块不是很懂---)
(2) Tanh函数
相对于Sigmoid函数
优点:输出在-1~1,而且在中间区域变化更敏感,而若超出这个区间,就会变得缺乏敏感性,处于饱和状态,最终会影响神经网络预测的精度值
(3)Softsign函数
相对于Tanh函数
优点:更平缓,更慢,可以更高效的学习,更好地解决梯度消失问题。
缺点:导数更复杂。
(4)RuLU函数
(5)Softplus函数
(6)Softmax函数
(四)如何选择激活函数
--非线性
--连续可微性
--有界性
--单调性
--平滑性
5.损失函数
(一)定义
用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负值函数,通常使用L(Y,f(x))来表示,损失函数越小,模型的鲁棒性(指系统或者算法在不同的情况下,仍能够保持稳定和可靠的能力)越好。也就是说,损失函数越小,代表着模型预测值和实际值越接近。
(二)常用的损失函数
--均方误差 (多用于回归问题)
td指的是预测值
od指的是实际值
--交叉熵误差 (多用于分类问题,它刻画了俩个概率分布之间的距离,是分类问题中使用较多的一种损失函数)
od指的是实际的概率分布
td指的是预测的概率分布
(三)作用
将回归问题、分类问题转化为优化问题,转化为求损失函数极值的问题
(四)极值
(五)梯度下降法求极值
影响算法的俩因素:初始化的点的位置和梯度下降的步长
二.网络的训练方法
1.前向传播
(一)定义
输入信号从输入层传输到输出层
(二)对于每个神经元
--计算上层输入的加权平均值
--计算激活函数值
(三)最后输出:模型预测值
2.误差反向传播
(一)定义
它使用链式求导法则将输出层的误差反向传回给网络,使神经网络的权重有了较简单的梯度计算实现方法。另外,前向传播指的是信息的传播,而反向传播指的是误差的传播。
(二)步骤
--从最后一层开始,计算误差对于该层节点参数的梯度
--基于上一层的梯度值,对当前参数的梯度值进行计算,重复该步骤,将参数传播至第一层
第一步 误差反向传播
误差按照权重的比例,分别传给每个计算单元,计算单元指的是隐藏层的神经元
第二步 权重更新
得出每个神经元需要对最后产生的误差负多少责任,然后再根据分的的误差更新权重
三、常用的俩种神经网络
1.卷积神经网络(cnn)
(一)定义
是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于图像处理有出色的表现。CNN避免了对图像的复杂前期预处理而可以直接输入原始图像。
它包裹卷积层(convolution layer)、池化层(pooling layer)、全连接层(fully connected layer)。三个层在神经网络中都可以有多个。
(二)单核卷积
(三)多核卷积
图中的特征图一里的7就等于卷积核W0扫过矩阵的面积里的对应数相乘再相加再加上偏置1得到的
Zero padding=1指的是在输入的图像边缘增加1圈零,因为很多时候输入的图像大小是不一致的,所以填充0来保证图像大小的一致性。
卷积核的数量等于得出特征图的数量
(四)CNN核心思想
(1) 局部感知
(2)参数共享
(五)CNN中卷积层、池化层、全连接层的作用
(1)卷积层
对输入的图像使用6个卷积核得到6个feature map
CNN自动处理图像的过程就是通过卷积层来实现的
(2)池化层
图一是图二的四倍,但图一中存在许多冗杂的数据比如黑色的夜晚,池化就极大减少了数据量
--最大池化
步长(Stride)为2
--池化的作用
先卷积再池化
(3)全连接层
在全连接层之前会把输出拉成一个很长的列向量,这个列向量再经过全连接层(Wx)的计算最后得到输出层
(六)总结
CNN比较适合处理图像的非序列的信息,与时间不是强相关序列性的信息
2.循环神经网络(rnn)
(一)处理序列数据的问题
序列数据具有上下文相关性,处理的时候不能单靠当前的输入进行判断
在前面介绍的网络中,前一个神经元的输入和后一个神经元的输入是没有关系的
(二)定义
是一种通过隐藏层节点周期性的连接,来捕捉序列化数据中动态信息的神经网络,可以对序列化的数据进行分类。
图中x是输入单元,s是隐藏单元,o是输出单元。与其他神经网络不同的是中间的环形w。左图按照时间展开后得到右图,在同一个隐藏单元中,在不同的时刻接受了不同的输入,也就是(1)xt是输入序列在时间t处的输入。
St接收了前面St-1的输入和当前St的输入,然后这个隐藏单元输出了一个St,这个St和前边的St-1以及当前输入的Xt有着(2)的关系
U、V、W都是整个神经网络中的参数
由此我们发现,rnn与前面的学的前向神经网络是有一些不同的,rnn可以保存一种上下文的状态,能够在任意长的上下文窗口当中去存储、学习、表达相关的信息,不再局限于传统网络当中空间上的一个边界,它可以在时间上有一个延拓,直观上来讲,本时间的一个隐藏层与下一时刻的隐藏层之间是有一个关系的。所以rnn广泛应用在与序列有关的一些场景。
(三)rnn局限
(四) rnn变种的神经网络(*)
在一个序列当中,当前的这个词它可能既跟前边的词有关系,又跟后边的词有关系就有了双向循环神经网络