理解单隐层ReLU
神经网络的全局损失函数特点
单元格区域都是相连的,通过深度和宽度逐一搜索,时间复杂度太高了。对于真实的数据集,采用随机采样,由粗到精分析,有多大的精度逼近真实分布,统计正确率,需要通过理论来论证。
论文中的神经网络是与下图类似的
d
d
d个输入神经元、
K
K
K个ReLU
激活的隐藏神经元,一个输出神经元。
神经网络的激活函数:
L ( z , w ) = 1 N ∑ i = 1 N l ( ∑ j = 1 K z j ⋅ I i j w j ⋅ x i , y i ) , L(z,\mathbf{w})=\frac{1}{N}\sum_{i=1}^N l(\sum_{j=1}^K z_j\cdot{I_{ij}}\mathbf{w}_j\cdot \mathbf{x}_i,y_i), L(z,w)=N1i=1∑Nl(j=1∑Kzj⋅Iijwj⋅xi,yi),
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}^{N}l(\sum_{j=1}^KI_{ij}\mathbf{R}_j\cdot\mathbf{x}_i,y_i). L(R)=N1i=1∑Nl(j=1∑KIijRj⋅xi,yi).
如果输入向量与神经元权重向量在同一个方向,则
w
⋅
x
>
0
{\mathbf{w}}\cdot\mathbf{x}>0
w⋅x>0,可以通过ReLU
函数被激活;反之,输入向量与神经元权重向量方向相反,
w
⋅
x
≤
0
{\mathbf{w}}\cdot\mathbf{x}\le0
w⋅x≤0,则不被ReLU
函数激活。由于ReLU
函数的这个特性,在输入向量与隐藏神经元权重做点积后通过ReLU
激活函数,存在激活与不激活两种情况,激活部分与不激活部分可以划分为两个不同的空间,所以输入向量
x
\mathbf{x}
x可以理解为权重空间的超平面。那么,若干个输入向量
x
\mathbf{x}
x就可以将权重空间划分为若干个单元格,下面称为可微区间。
下面这幅图,可以看到,3
个样本点可以将参数空间划分为7
个可微区间。
- 论文证明了在每一个可微区域内,所有局部极小值都是全局最小值。
- 由于输入的数据、隐藏层神经元的激活模式和网络参数不同导致可微区间中的全局最小值有可能唯一,也有可能连续。
假设 l l l为凸函数(均方误差损失或者交叉熵损失)。假设为损失函数是均方误差损失。
R ∗ = arg min R 1 N ∑ i = 1 N ( ∑ j = 1 K I i j R j ⋅ x i − y i ) . \mathbf{R}^\ast=\argmin_{\mathbf{R}}\frac{1}{N}\sum_{i=1}^N(\sum_{j=1}^KI_{ij}\mathbf{R}_j\cdot\mathbf{x}_i-y_i). R∗=RargminN1i=1∑N(j=1∑KIijRj⋅xi−yi).
上式的一般解可表示为:
R ∗ = A † y + ( I − A † A ) c , \mathbf{R}^\ast=A^\dagger\mathbf{y}+(I-A^\dagger A)\mathbf{c}, R∗=A†y+(I−A†A)c,
最优解 R ∗ \mathbf{R}^\ast R∗能够被如下情况所表征:
- 1) R ∗ \mathbf{R}^* R∗是唯一的, R ∗ = A † y \mathbf{R}^*=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是存在唯一解的必要条件。秩分解,解可以表示为:
R ∗ = ( A T A ) − 1 A T y . \mathbf{R}^*=(A^TA)^{-1}A^T\mathbf{y}. R∗=(ATA)−1ATy.
- 2) R ∗ \mathbf{R}^* R∗有无限个连续的解。分两种情况:(1) N < K d N<Kd N<Kd表明 R \mathbf{R} R的一些分量是自由变量;(2) N > K d N>Kd N>Kd但 r ( A ) < K d r(A)<Kd r(A)<Kd,一些隐藏神经元并不是都所有样本激活。
真可微局部极小值存在的标准
-
1)对于 R ∗ \mathbf{R}^* R∗是唯一的情况, w \mathbf{w} w显示在定义细胞中, w ∗ \mathbf{w}^* w∗在样本的同一侧的任意一点上。对指定好的某个单元格,可表示为:
即,对所有的 j ∈ [ K ] j\in{[K]} j∈[K],上述不等式成立。存在唯一可微局部极小值的条件可以表示为,对每一个 R j ∗ ( j ∈ [ K ] ) \mathbf{R}^*_{j}(j\in{[K]}) Rj∗(j∈[K]),满足:
-
2)对于 R ∗ \mathbf{R^*} R∗是连续的,需要测试在 R ∗ = A † y + ( I − A † A ) c \mathbf{R}^*=A^\dagger y+(I-A^\dagger A)c R∗=A†y+(I−A†A)c公式中连续可微的局部最小值是否在它们的定义细胞中。
每个不等式定义了 R k d \mathbf{R}^{kd} Rkd中的一个半空间,因此,现有的真正的连续可微局部极小化的准则归结为确定所有这些半空间的交点是否为空。非零交将是一个凸高维多面体。 -
3)从 R ∗ = A † y + ( I − A † A ) c \mathbf{R}^*=A^\dagger y+(I-A^\dagger A)c R∗=A†y+(I−A†A)c公式中提取 R j ∗ \mathbf{R}^*_j Rj∗,这是整个 R d R^d Rd空间或它的一个线性子空间取决于行是否是满秩。如果所有 R j ∗ ( j ∈ [ K ] ) R^∗_j(j∈[K]) Rj∗(j∈[K])都是整个 R d \mathbb{R}^d Rd空间,那么定义单元中的任何一点都是一个真正的可微局部极小值。
基于图的深度优先遍历的单隐层 ReLU
神经网络的损失函数的全局最优解的计算
课题描述
在 《Understanding Global Loss Landscape of One-hidden-layer ReLU Networks》 论文中,讲述了输入样本向量可以将参数空间划分为若干个单元格,我的课题的核心思想就是计算每个单元格中的参数空间局部最优解,返回所有单元格中的损失函数最小值即为神经网络的最优解。
创新点
- 摒弃了传统的逃逸局部极小的随机梯度下降法,可以实现精准地找到的神经网络的最优解,不存在优化失败的问题。
- 一般类的搜索算法是判断两次迭代是否小于某阈值或者是超过预先设定的总步数限制,因此这类算法得到的结果具有一定的误差,对于较为平滑的损失函数误差更为明显。而课题中的算法思路可以精准地计算参数空间所有区域局部最小值并能在有限时间内找到参数空间最优解的位置。
课题思路和过程
- 总体思路:利用《计算几何》中线排列和双向链接边表结构体的思想,将抽象的可微区间可视化呈现。
- 难点:随着样本点的不断增多,由输入向量作为参数空间的超平面可将其划分的单元格的数量呈爆炸性增长。如果依然循规蹈矩的逐一遍历所有单元格将大为降低算法执行效率。
- 需要突破的点:提高遍历单元格的时间效率。剪枝技术、局部敏感哈希、
k-means
聚类,等等。
大概率涵盖最多样本点的球体
由于某些点处于样本分布的偏远位置不具备代表性,所以这些样本无需考虑,只要找到处于分布中心的点划分出的单元格并通过图的深度优先遍历计算其损失值即可。因此,我们也可以计算在某一固定空间中的单元格的损失值。
实现一个算法能够找到一个半径为r并且最多的涵盖样本点的球体,进而再求出在球体中的样本点所划分出的单元格的损失函数。
具体做法:
- 先假定一个球体的半径长为𝑟,𝑟的选取不宜过大也不宜过小。可根据神经网络的参数特征、激活模式以及输入样本的数量和分布情况来确定。
- 确定好𝑟说明球体的体积已固定,现在需要确定球心的位置,使得此时在球体中的样本点是最多的(自然球体外的点远离大众点,参考意义不大)。
- 具体找球心的方法(以二维平面直角坐标系找圆心的方法为例):
- 通过上述过程找到的样本处于聚集最密集的区域,也就是最具有代表性的样本点所在的位置,这样的样本划分出的单元格再计算损失函数的话才具有代表性,也省去了计算所有单元格带来的麻烦。
用局部敏感哈希来挺高算法遍历的效率
对于高维的样本特征向量,事先对样本点进行预处理,可以使用局部敏感哈希来降维。
如果使用欧氏距离来衡量高维样本点与样本点之间的距离,会得到将高维空间的点映射到低维空间中,原本相近的点在低维空间中依然相近,但原本远离的点则有一定的概率变成相近的点这样的一个结论。则利用低维空间可以保留高维空间相近距离的关系这个性质就可以构造局部敏感哈希的桶。
假设 v \mathbf{v} v是高维空间的 k k k维输入向量, x \mathbf{x} x是随机生成的 k k k维映射向量,则使用求内积操作可以使得 v v v映射到一维空间,成为一个常数。
h ( v ) = v ⋅ x h(v)=\mathbf{v}\cdot \mathbf{x} h(v)=v⋅x
即使是一维空间也会部分保存高维空间的近似距离信息,则使用下述哈希函数进行分桶:
h x , b ( v ) = ⌊ v ⋅ x + b w ⌋ h^{\mathbf{x},\mathbf{b}}(\mathbf{v})=\left \lfloor \frac{\mathbf{v}\cdot\mathbf{x}+b}{w} \right \rfloor hx,b(v)=⌊wv⋅x+b⌋
其中 w w w是每个桶的宽度, b b b是一个均匀分布的随机变量。
通过上述哈希函数映射分桶的方法,可以对样本点和由样本点形成的可谓单元格进行相似划分,这样再寻找全局最优解,提高算法的效率。