神经网络的引出
逻辑回归得限制
这里的逻辑回归所能做的分界线就是一条直线,没有办法将红蓝色用一条直线分开。
没办法将红蓝色用一条直线分开
特征转换
可以将很多的逻辑回归接到一起,就可以进行特征转换。比如上图就用两个逻辑回归 对 z 1 , z 2 z_1,z_2 z1,z2 来进行特征转换,然后对于 x 1 ′ , x 2 ′ x_1^{'},x_2^{'} x1′,x2′ ,再用一个逻辑回归zz来进行分类。
对上述例子用这种方式处理:
经过这样的转换之后,点就被处理为可以进行分类的结果。
一个逻辑回归的输入可以来源于其他逻辑回归的输出,这个逻辑回归的输出也可以是其他逻辑回归的输入。把每个逻辑回归称为一个 Neuron(神经元),把这些神经元连接起来的网络,就叫做 Neural Network(神经网络)。(由特征转换引出神经网络)
前馈神经网络
神经元
Sigmoid 型函数
Sigmoid型函数是指一类S型曲线函数,为两端饱和函数。常用的Sigmoid型
函数有Logistic函数和Tanh函数。
Logistic 函数 Logistic函数定义为
σ ( x ) = 1 1 + e x p ( − x ) (2.1) σ(x) = \frac{1}{1 + exp(-x)}\tag{2.1} σ(x)=1+exp(−x)1(2.1).
Logistic函数可以看成是一个“挤压”函数,把一个实数域的输入挤压到
(0, 1)。当输入值在0附近时,Sigmoid型函数近似为线性函数;当输入值靠近两端
时,对输入进行抑制。输入越小,越接近于0;输入越大,越接近于1。这样的特点
也和生物神经元类似
因为Logistic函数的性质,使得装备了Logistic激活函数的神经元具有以下两点性质:1)其输出直接可以看作是概率分布,使得神经网络可以更好地和统计学习模型进行结合。2)其可以看作是一个软性门(Soft Gate),用来控制其它神经元输出信息的数量。
Tanh 函数 Tanh函数是也一种Sigmoid型函数。其定义为
t a n h ( x ) = e x p ( x ) − e x p ( − x ) e x p ( x ) + e x p ( − x ) (2.2) tanh(x)=\frac{exp(x)-exp(-x)}{exp(x)+exp(-x)}\tag{2.2} tanh(x)=exp(x)+exp(−x)exp(x)−exp(−x)(2.2)
Tanh函数可以看作是放大并平移的Logistic函数,其值域是((1, 1)。
t a n h ( x ) = 2 σ ( 2 x ) − 1 (2.3) tanh(x) = 2σ(2x) -1\tag{2.3} tanh(x)=2σ(2x)−1(2.3)
Tanh 函数的输出是零中心 化的(Zero-Centered),而Logistic函数的输出恒大于0。非零中心化的输出会使
得其后一层的神经元的输入发生偏置偏移(Bias Shift),并进一步使得梯度下降。 的收敛速度变慢。
ReLU函数
ReLU(Rectified Linear Unit,修正线性单元),是目前深层神经网络中经常使用的激活函数。
ReLU实际上是一个斜坡(ramp)函数,定义为
R e L U ( x ) = { x x ≥ 0 0 x < 0 (2.3) ReLU(x) = \begin{cases} x & x\geq0\\ 0 & x<0 \end{cases}\tag{2.3} ReLU(x)={
x0x≥0x<0(2.3)
= m a x ( 0 , x ) (2.4) =max(0,x) \tag{2.4} =max(0,x)(2.4)
优点:采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效。ReLU 函数被认为有生物上的解释性,比如单侧抑制、宽兴奋边界(即兴奋程度也可以非常高)
在优化方面,相比于Sigmoid型函数的两端饱和,ReLU函数为左饱和函数,且在x > 0时导数为1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。
缺点:ReLU函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率。此外,ReLU 神经元在训练时比较容易“死亡”。在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个 ReLU 神经元在所有的训练数据上都不能被激活(输出为0),那么这个神经元自身参数的梯度永远都会是 0,在以后的训练过程中永远不能被激活。这种现象称为死亡 ReLU 问题。
网络结构
单一的神经元是远远不够的,需要通过很多神经元一起协作来完成复杂的功能。这样通过一定的连接方
式或信息传递方式进行协作的神经元可以看作是一个网络,就是神经网络。
前馈网络
前馈网络中各个神经元按接收信息的先后分为不同的组。每一组可以看作一个神经层。每一层中的神经元接收前一层神经元的输出,并输出到下一层神经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播,可以用一个有向无环路图表示。前馈网络包括全连接前馈网络和卷积神经网络等。
前馈网络可以看作一个函数,通过简单非线性函数的多次复合,实现输入空
间到输出空间的复杂映射。这种网络结构简单,易于实现。
记忆网络
记忆网络,也称为反馈网络,网络中的神经元不但可以接收其它神经元的信息,也可以接收自己的历史信息。和前馈网络相比,记忆网络中的神经元具有记忆功能,在不同的时刻具有不同的状态。记忆神经网络中的信息传播可以是单向或双向传递,因此可用一个有向循环图或无向图来表示。记忆网络包括循环神经网络、Hopfield 网络、玻尔兹曼机、受限玻尔兹曼机等。
图网络
前馈网络和记忆网络的输入都可以表示为向量或向量序列。但实际应用中
很多数据是图结构的数据,比如知识图谱、社交网络、分子(Molecular )网络等。
前馈网络和记忆网络很难处理图结构的数据。
图网络是前馈网络和记忆网络的泛化,包含很多不同的实现方式,比如 图卷积网络、图注意力网络、消息传递网络等。
图4.6给出了前馈网络、记忆网络和图网络的网络结构示例,其中圆形节点
表示一个神经元,方形节点表示一组神经元。
全连接前馈神经网络
基本概念
概念:前馈(feedforward)也可以称为前向,从信号流向来理解就是输入信号进入网络后,信号流动是单向的,即信号从前一层流向后一层,一直到输出层,其中任意两层之间的连接并没有反馈(feedback),亦即信号没有从后一层又返回到前一层。第0层称为输入层,最后一层称为输出层,其它中间层称为隐藏层。整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。
本质:通过隐藏层进行特征转换
上图是输入为1和-1的时候经过一系列复杂的运算得到的结果
为什么叫全链接呢?
因为layer1与layer2之间两两都有连接,所以叫做Fully Connect;
为什么叫前馈呢?
因为现在传递的方向是由后往前传,所以叫做Feedforward。
我们用下面的记号来描述一个前馈神经网络:
出层。
• L:表示神经网络的层数;
• m ( l ) m^{(l)} m(l):表示第l 层神经元的个数;
• f l ( ⋅ ) f_l(·) fl(⋅):表示第l 层神经元的激活函数;
• W ( l ) ∈ R m ( l ) × m l − 1 W^{(l)} ∈ R^{m(l)×m^{l-1}} W(l)∈Rm(l)×ml−1:表示第 l − 1 l-1 l−1 层到第l 层的权重矩阵;
• b ( l ) ∈ R m l b^{(l)} ∈ R^{m^{l}} b(l)∈Rml:表示第l l 1层到第l 层的偏置;
• z ( l ) ∈ R m l z^{(l)} ∈ R^{m^{l}} z(l)∈Rml:表示第l 层神经元的净输入(净活性值);
• a ( l ) ∈ R m l a^{(l)} ∈ R^{m^{l}} a(l)∈Rml:表示第l 层神经元的输出(活性值)。
前馈神经网络通过下面公式进行信息传播,
z ( l ) = W ( l ) ⋅ a ( l − 1 ) +