神经网络的重要概念

输入(x)输出(y)、标签(label)

  • 输入是指传入给网络处理的向量,相当于数学函数中的变量。
  • 输出是指网络处理后返回的结果,相当于数据函数中的函数值。
  • 标签是指我们期望网络返回的结果。

损失函数(loss function)

损失函数评估网络模型的好坏,值越大,表示模型越差,值越小,表示模型越好。因为传入大量的训练集训练的目标,就是将损失函数的值降到最小。

常见的损失函数定义:
差的平方和 sum((y - label)^2)

1、[0, 0, 1] 与 [0.1, 0.3, 0.6]的差的平方和为 0.01 + 0.09 + 0.16 = 0.26
2、 [0, 0, 1]与 [0.2, 0.2, 0.6]的差的平方和为 0.04 + 0.04 + 0.16 = 0.24
3、[0, 0, 1] 与 [0.1,0, 0.9]的差的平方和为 0.01 + 0.01 = 0.02

交叉熵 -sum(label * log(y))

1、 [0, 0, 1] 与 [0.1, 0.3, 0.6]的交叉熵为 -log(0.6) = 0.51
2、[0, 0, 1] 与 [0.2, 0.2, 0.6]的交叉熵为 -log(0.6) = 0.51
3、[0, 0, 1] 与 [0.1, 0, 0.9]的交叉熵为 -log(0.9) = 0.10

当label为0时,交叉熵为0,label为1时,交叉熵为-log(y),交叉熵只关注独热编码中有效位的损失。这样屏蔽了无效位值的变化(无效位的值的变化并不会影响最终结果),并且通过取对数放大了有效位的损失。当有效位的值趋近于0时,交叉熵趋近于正无穷大。

回归模型

我们可以将网络理解为一个函数,回归模型,其实是希望对这个函数进行拟合。
比如定义模型为 Y = X * w + b,对应的损失即

loss = (Y - labal)^2
     = -(X * w - b - label)^2

这里损失函数用方差计算,这个函数是关于w和b的二次函数,所以神经网络训练的目的是找到w和b,使得loss最小。

可以通过不断地传入X和label的值,来修正w和b,使得最终得到的Y与label的loss最小。这个训练的过程,可以采用梯度下降的方法。通过梯度下降,找到最快的方向,调整w和b值,使得w * X + b的值越来越接近label。

学习速率

简单说,梯度即一个函数的斜率,找到函数的斜率,其实就知道了w和b的值往哪个方向调整,能够让函数值(loss)降低得最快。那么方向知道了,往这个方向调整多少呢?这个数,神经网络中称之为学习速率。学习速率调得太低,训练速度会很慢,学习速率调得过高,每次迭代波动会很大。

神经网络的标签 神经网络标签值_有效位

softmax激活函数

Softmax函数几乎是深度学习中的标配了,在人工神经网络中,几乎无处不可见softmax函数的身影。可以认为softmax是arg max操作的一种平滑近似。

将softmax的用途总结为两种:

  • 分类:给定一系列类别,softmax可以给出某输入被划分到各个类别的概率分布。由于人工智能领域的许多问题都可以抽象成分类问题,所以softmax最广泛的应用当属分类;
  • 寻址:由于softmax的输出是一种概率分布的形式,可以用它来实现一种软性的寻址。近几年逐渐推广的(软性)注意力机制就可以认为是一种软性寻址的方式,根据各个键向量与查询向量的相似度从各个值向量中获取一定的“信息”。因此使用了softmax的注意力机制也可以用于外部记忆的访问。