对单隐层ReLU神经网络输入样本将参数空间划分为抽象单元格后损失函数全局特性的讨论

单元格的划分

  对于单隐层ReLU神经网络,考虑ReLU函数可以引入非光滑性的性质,通过输入的样本向量与网络权值参数向量的点积后是否被ReLU函数所激活,进而可以将激活与不激活的位置抽象为空间的不同区域——单元格。输入的样本向量,可以作为网络参数空间的法向量。则有,若干个样本向量可以将神经网络权值空间划分为若干个不同的单元格。

  如果设输入神经元与隐藏神经元的权值向量为 w j \mathbf{w_j} wj​,输入的样本向量是 x i \mathbf{x_i} xi​,令 I i j I_{ij} Iij​表示ReLU激活函数的取值,则ReLU函数的表达式是:

I i j = { 1 ,  if  w j ⋅ x i > 0 0 ,  otherwise . I_{ij}=\begin{cases}1, & \text{ if } \mathbf{w_j}\cdot{\mathbf{x_i}}>0 \\0, & \text{ otherwise}. \end{cases} Iij​={1,0,​ if wj​⋅xi​>0 otherwise.​

  为简化损失函数输入层与隐藏层和隐藏层与输出层之间的复杂性,定义 R j = z j ⋅ x j \mathbf{R}_j=\mathbf{z}_j\cdot{\mathbf{x}_j} Rj​=zj​⋅xj​来代表两层权值的积分形式。最终的损失函数的表达式是:

L ( R ) = 1 N ∑ i = 1 N l ( ∑ j = 1 K I i j R j ⋅ x i , y i ) . L(\mathbf{R})=\frac{1}{N}\sum_{i=1}^Nl(\sum_{j=1}^KI_{ij}\mathbf{R}_j\cdot{\mathbf{x}_i},y_i). L(R)=N1​i=1∑N​l(j=1∑K​Iij​Rj​⋅xi​,yi​).

  样本向量 x \mathbf{x} x是 w \mathbf{w} w空间的超平面并将 w \mathbf{w} w空间划分为若干个凸单元格。在每个单元里边, I i j I_{ij} Iij​的取值自然不会发生变化,所以损失函数是可微函数。如果穿越不同的单元格,ReLU函数的值将发生改变,则损失函数在单元格的边界上将变成不可微函数。所以存在单元格中的和存在于边界上的局部极小值被称为可微和不可微的局部极小值。

  刘波教授的某篇论文中已经证明了在每一个单元格中,所有的局部极小值都是其单元格中的全局最小值

可微局部极小值的位置和数量

  在这里,假定损失函数是平方差损失,损失函数的解便是下述的最小二乘问题的探究:

R ∗ = argmin R 1 N ∑ i = 1 N ( ∑ j = 1 K I i j R j ⋅ x i − y i ) 2 \mathbf{R}^\ast=\mathop{\text{argmin}}\limits_{\mathbf{R}}\frac{1}{N}\sum_{i=1}^N(\sum_{j=1}^KI_{ij}\mathbf{R}_j\cdot{\mathbf{x}}_i-y_i)^2 R∗=Rargmin​N1​i=1∑N​(j=1∑K​Iij​Rj​⋅xi​−yi​)2

相应的线性解 ∑ j = 1 K I i j R j ⋅ x i = y i \sum_{j=1}^KI_{ij}\mathbf{R}_j\cdot{\mathbf{x}_i}=y_i ∑j=1K​Iij​Rj​⋅xi​=yi​扩展成为矩阵的形式为:

A R = y , A = ( I 11 x 1 ⊤ ⋯ I 1 K x 1 ⊤ ⋮ ⋱ ⋮ I N 1 x N ⊤ ⋯ I N K x N ⊤ ) , y = ( y 1 y 2 ⋮ y N ) . A\mathbf{R}=y,A=\begin{pmatrix} I_{11}\mathbf{x}_1^\top & \cdots &I_{1K}\mathbf{x}_1^\top \\ \vdots &\ddots & \vdots \\ I_{N1}\mathbf{x}_N^\top & \cdots & I_{NK}\mathbf{x}_N^\top \end{pmatrix}, y=\begin{pmatrix} y_1 \\ y_2\\ \vdots\\ y_N \end{pmatrix} . AR=y,A=⎝⎜⎛​I11​x1⊤​⋮IN1​xN⊤​​⋯⋱⋯​I1K​x1⊤​⋮INK​xN⊤​​⎠⎟⎞​,y=⎝⎜⎜⎜⎛​y1​y2​⋮yN​​⎠⎟⎟⎟⎞​.

则上述损失函数的解可以表示为:

R ∗ = A † y + ( I − A † A ) c . \mathbf{R}^\ast=A^\dagger \mathbf{y}+(I-A^\dagger A)c. R∗=A†y+(I−A†A)c.

  损失函数最优解可以被如下两种情况所表示:

  • R ∗ \mathbf{R}^\ast R∗是唯一的:当且仅当 R ∗ = A † y \mathbf{R}^\ast=A^\dagger \mathbf{y} R∗=A†y时发生,公式后面的那一项是无效的。说明 rank ( A ) = K d \text{rank}(A)=Kd rank(A)=Kd。为了有唯一解, N ≥ K d N\ge Kd N≥Kd是必要的,此时 A A A是满秩矩阵。
  • R ∗ \mathbf{R}^\ast R∗是连续无限多的:这种情况, I − A † A ≠ 0 I-A^\dagger A\ne 0 I−A†A​=0。此时 rank ( A ) ≠ K d \text{rank}(A)\ne Kd rank(A)​=Kd。这就出现了两种情况:(1) N < K d N<Kd N<Kd,代表着神经网络的超参数化, A R = y A\mathbf{R}=\mathbf{y} AR=y有无限多的解。其中 R \mathbf{R} R的一些分量是*变量。(2) N ≥ K d N\ge Kd N≥Kd但 rank ( A ) < K d \text{rank}(A)<Kd rank(A)<Kd。即一些隐藏神经元并没有被样本所激活。

  如果所有的隐藏神经元都不被样本激活,得到 A = 0 A=0 A=0,得到 R ∗ = c \mathbf{R}^\ast=c R∗=c,可以是整个加权空间的任意向量。

  为了计算神经网络的损失值,将上述的分析结果带入到损失函数可得:

L ( R ∗ ) = 1 N ∥ A A † y − y ∥ 2 . L(\mathbf{R}^\ast)=\frac{1}{N}\left \| AA^\dagger y-y \right \| ^2. L(R∗)=N1​∥∥​AA†y−y∥∥​2.

  • 读取mnist数据集。(Fashion-mnist数据集)
  • 定义哈希函数,降维。(暂时使用PCA降维,一系列的操作)。
  • 减少样本的数量。
  • 数据集归一化。
  • 定义神经网络,n个输入神经元,隐藏神经元的数量。
  • 定义偏置的值的大小。
  • 求出 I i j I_{ij} Iij​的值。
  • 划分单元格。
  • 求出神经网络的全局极小值。
  • 更换数据集,例如Cifar10,再次实验。

  权值的取法、单元格的划分、原论文、设置偏置。mnist数据集降维、使用局部敏感哈希方法、高维。

  更新中, to be continued…

上一篇:深入V8引擎-AST(1)


下一篇:【每日一题】【vue2源码学习】VUE中模版编译原理