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∗能够被如下情况所表征:
R ∗ = ( A T A ) − 1 A T y . \mathbf{R}^*=(A^TA)^{-1}A^T\mathbf{y}. R∗=(ATA)−1ATy.
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是一个均匀分布的随机变量。
通过上述哈希函数映射分桶的方法,可以对样本点和由样本点形成的可谓单元格进行相似划分,这样再寻找全局最优解,提高算法的效率。