记录最简单的一些概念,帮助后续学习理解

神经网络权归一化 神经网络权值作用_神经网络


神经网络的传播都是形如Y=WX+b的矩阵运算;
为了给矩阵运算加入非线性,需要在隐藏层中加入激活层;
输出层结果需要经过Softmax层处理为概率值,并通过交叉熵损失来量化当前网络的优劣。

下面是一些概念:

1.神经元

它是神经网络的基本单位。它获得一定数量的输入和一个偏置值。当信号(值)到达时会乘以一个权值。如果神经元有4个输入,那么就有4个权值,权重可以在训练时调整。

神经网络权归一化 神经网络权值作用_权重_02


神经网络权归一化 神经网络权值作用_神经网络权归一化_03

2.连接

将一个神经元连接到另一层或同一层的另一个神经元。连接伴随着与之相关联的权值。训练的目标是更新此权值以减少损失(即错误)。

神经网络权归一化 神经网络权值作用_神经网络_04

3.偏置(偏移)

它是神经元的额外输入,它始终为1,并具有自己的连接权重。这确保即使所有的输入都为空(全部为0),神经元也会激活。

神经网络权归一化 神经网络权值作用_Soft_05

4.激活功能(传递函数)

激活函数用于将非线性引入神经网络。它会将值缩小到较小的范围内。

在深度学习中有许多激活函数可用,ReLU,SeLU和TanH均优于Sigmoid激活函数,例如:Sigmoid激活函数的压缩范围为0到1之间。

为什么要引入激活函数呢?

其实,上面的z已经是一个计算结果了,但是呢它不是我们最终想要的结果!!!上面的z有可能是0到1的一个数字,也可以是任意一个可能大于0或者小于0的整数,但是呢我们一般用神经网络是想解决分类问题,大多数时候,我们需要输出一个0或者1,代表是或者否,那么如何处理呢?如果大于0,我们就把它作为1,如果小于0,我们就把它输出为0,这是最简单的传递函数的一种用法,我们可以把它看作格式化输出结果将结果变成我们可以使用的一种符号或者数字

神经网络权归一化 神经网络权值作用_权重_06

  • 阶跃函数:当输入小于等于0时,输出0;当输入大于0时,输出1。
  • Sigmoid:当输入趋近于正无穷/负无穷时,输出无限接近于1/0。
  • ReLU:当输入小于0时,输出0;当输入大于0时,输出等于输入。

5.输入层

神经网络中的第一层。它需要输入信号(值)并将它们传递到下一层。它不对输入信号(值)做任何操作,并且没有关联的权重和偏置值。在我们的网络中,我们有4个输入信号x1,x2,x3,x4。

Input Shape :它是我们传递给输入层的输入矩阵形状。我们网络的输入层有4个神经元,它期望1个样本的4个值。如果我们一次只提供一个样本,我们网络的期望输入形状是(1,4,1)。如果我们提供100个样品,则输入形状将为(100,4,1)。不同的库期望形状的格式是不同的。

例1:

神经网络权归一化 神经网络权值作用_Soft_07

6.隐藏层

隐藏层具有对输入数据应用不同变换的神经元(节点)。一个隐藏层是垂直排列的神经元的集合(Representation)。在我们给出的图像中有5个隐藏层。在我们的网络中,第一隐层有4个神经元(节点),第2层有5个神经元,第3层有6个神经元,第4层有4个,第5层有3个神经元。最后一个隐藏层将值传递给输出层。隐藏层中的每个神经元都与下一层的每一个神经元有连接,因此我们有一个完全连接的隐藏层。

需要注意的是,每个隐藏层计算(矩阵线性运算)之后,都需要加一层激活层,要不然该层线性计算是没有意义的。

例2:

神经网络权归一化 神经网络权值作用_神经网络_08

7.输出层

着是网络的最后一层,它接收来自最后一个隐藏层的输入。通过这个层,我们可以知道期望的值和期望的范围。在这个网络中,输出层有3个神经元,输出y1,y2,y3。(例1)

输出的正规化

在例2中,输出Y的值可能会是(3,1,0.1,0.5)这样的矩阵,诚然我们可以找到里边的最大值“3”,从而找到对应的分类为I,但是这并不直观。我们想让最终的输出为概率,也就是说可以生成像(90%,5%,2%,3%)这样的结果,这样做不仅可以找到最大概率的分类,而且可以知道各个分类计算的概率值。

计算公式如下:

神经网络权归一化 神经网络权值作用_神经网络_09


简单来说分三步进行:

(1)以e为底对所有元素求指数幂;

(2)将所有指数幂求和;

(3)分别将这些指数幂与该和做商。

这样求出的结果中,所有元素的和一定为1,而每个元素可以代表概率值。

我们将使用这个计算公式做输出结果正规化处理的层叫做“Softmax”层。此时的神经网络将变成如下图所示:

神经网络权归一化 神经网络权值作用_权重_10

评价:交叉熵损失(Cross Entropy Error)

通过Softmax层之后,我们得到了I,II,III和IV这四个类别分别对应的概率,但是要注意,这是神经网络计算得到的概率值结果,而非真实的情况。

比如,Softmax输出的结果是(90%,5%,3%,2%),真实的结果是(100%,0,0,0)。虽然输出的结果可以正确分类,但是与真实结果之间是有差距的,一个优秀的网络对结果的预测要无限接近于100%,为此,我们需要将Softmax输出结果的好坏程度做一个“量化”

一种直观的解决方法,是用1减去Softmax输出的概率,比如1-90%=0.1。不过更为常用且巧妙的方法是,求对数的负数。

还是用90%举例,对数的负数就是:-log0.9=0.046

可以想见,概率越接近100%,该计算结果值越接近于0,说明结果越准确,该输出叫做“交叉熵损失(Cross Entropy Error)”。

我们训练神经网络的目的,就是尽可能地减少这个“交叉熵损失”

神经网络权归一化 神经网络权值作用_Soft_11

8.权重(参数)

权重表示单元之间连接的强度。如果从节点1到节点2的权重比较大,意味着神经元1对神经元2的影响比较大。权重降低了输入值的重要性。当权重接近零时意味着更改此输入将不会更改输出。负权重意味着增加此输入会降低输出。权重决定了输入对输出的影响程度。

9.前向传播

前向传播的过程是向神经网络馈送输入值并得到我们称为预测值的输出。当我们将输入值提供给神经网络的第一层时,它没有进行任何操作。第二层从第一层获取值并进行乘法,加法和激活操作,然后将得到的值传递给下一层。在后面的层中执行相同的操作,最后我们在最后一层得到一个输出值。

神经网络权归一化 神经网络权值作用_神经网络权归一化_12

10.反向传播

算出交叉熵损失后,就要开始反向传播了。其实反向传播就是一个参数优化的过程,优化对象就是网络中的所有W和b(因为其他所有参数都是确定的)。

神经网络的神奇之处,就在于它可以自动做W和b的优化,在深度学习中,参数的数量有时会上亿,不过其优化的原理和我们这个两层神经网络是一样的。

假设我们操纵着一个球型机器行走在沙漠中

神经网络权归一化 神经网络权值作用_神经网络权归一化_13


我们在机器中操纵着四个旋钮,分别叫做W1,b1,W2,b2。当我们旋转其中的某个旋钮时,球形机器会发生移动,但是旋转旋钮大小和机器运动方向之间的对应关系是不知道的。而我们的目的就是走到沙漠的最低点。


此时我们该怎么办?只能挨个试喽。

  • 如果增大W1后,球向上走了,那就减小W1。
  • 如果增大b1后,球向下走了,那就继续增大b1。
  • 如果增大W2后,球向下走了一大截,那就多增大些W2。
  • 。。。

这就是进行参数优化的形象解释(有没有想到求导?),这个方法叫做梯度下降法。
当我们的球形机器走到最低点时,也就代表着我们的交叉熵损失达到最小(接近于0)

另一种解释:

前向传播后,我们得到一个被称为预测值的输出值。为了计算误差,我们将预测值与实际输出值进行比较。我们使用损失函数(下面会提到)来计算误差值。然后我们计算神经网络中每一个误差值的导数和每一个权重。反向传播使用微分学的链式法则。在链条法则中,首先我们计算对应最后一层权值的误差值的导数。我们称这些导数为:梯度,然后使用这些梯度值来计算倒数第二层的梯度。重复此过程,直到我们得到神经网络中每个权重的梯度。然后从权值中减去该梯度值,以减少误差值。这样,我们就更接近(下降)局部最小值(也就是说最小的损失)。

神经网络权归一化 神经网络权值作用_Soft_14

11.学习率

当我们训练神经网络时,我们通常使用梯度下降法优化权重。在每次迭代中,我们都使用反向传播来计算每个权重的损失函数的导数,并从这个权重中减去它。学习率决定了你想要更新权重(参数)值的速度。学习率不能太低导致收敛的速度缓慢,也不能太高导致找不到局部最小值。

神经网络权归一化 神经网络权值作用_权重_15

12.准确率、精确率、召回率

一级指标(最底层的)

  • 真实值是positive,模型认为是positive的数量(True Positive=TP)
  • 真实值是positive,模型认为是negative的数量(False Negative=FN):这就是统计学上的第二类错误(Type II Error)
  • 真实值是negative,模型认为是positive的数量(False Positive=FP):这就是统计学上的第一类错误(Type I Error)
  • 真实值是negative,模型认为是negative的数量(True Negative=TN)

13.混淆矩阵

在机器学习领域特别是关于统计分类的问题,一个混淆矩阵(也称为误差矩阵),是一种特定的表格布局,它让你可以将算法的性能可视化(通常在监督学习中使用,在无监督学习它通常称为匹配矩阵)。矩阵的每一行表示预测类中的实例,而每一列表示实际类中的实例(反之亦然)。这个名字源于这样一个事实:它很容易看出系统是否混淆了两个类(通常是错误地标记成另一个)。

神经网络权归一化 神经网络权值作用_Soft_16


在总共66个动物中,我们一共预测对了10 + 15 + 20=45个样本,所以准确率(Accuracy)=45/66 = 68.2%。以猫为例,我们可以将上面的图合并为二分问题:

神经网络权归一化 神经网络权值作用_神经网络权归一化_17


Precision

所以,以猫为例,模型的结果告诉我们,66只动物里有13只是猫,但是其实这13只猫只有10只预测对了。模型认为是猫的13只动物里,有1条狗,两只猪。所以,Precision(猫)= 10/13 = 76.9%

Recall
以猫为例,在总共18只真猫中,我们的模型认为里面只有10只是猫,剩下的3只是狗,5只都是猪。这5只八成是橘猫,能理解。所以,Recall(猫)= 10/18 = 55.6%

Specificity
以猫为例,在总共48只不是猫的动物中,模型认为有45只不是猫。所以,Specificity(猫)= 45/48 = 93.8%。

虽然在45只动物里,模型依然认为错判了6只狗与4只猫,但是从猫的角度而言,模型的判断是没有错的。

(这里是参见了Wikipedia,Confusion Matrix的解释,https://en.wikipedia.org/wiki/Confusion_matrix)

F1-Score

通过公式,可以计算出,对猫而言,F1-Score=(2 * 0.769 * 0.556)/( 0.769 + 0.556) = 64.54%

同样,我们也可以分别计算猪与狗各自的二级指标与三级指标值。

14.全连接层

当一层中的所有节点的激活进入下一层中的每个节点时。当第L层中的所有节点连接到第(L + 1)层中的所有节点时,我们将这些层称为完全连接的层。

神经网络权归一化 神经网络权值作用_Soft_18