Q2: fitness用loss合适吗?按说应该表现越好reward越高,所以fitness也越高,但是loss和这个过程正好相反?
Q3: weights 分布必须依次采样并更新,不能并行进行?
Experiment Results
Parameters & Settings
num_init=3
考虑到模型参数初始化对结果的影响很大(随机性很强),对模型进行若干次初始化,分别测试并对结果取平均。 num_dim=[2, 4, 8, 16, 32]
实验模型是一个三层MLP,每层MLP上neuron数量为num_dim
。 num_batch=10
每次初始化模型后使用若干batch计算梯度,每一batch维度符合(160000, num_dim),数据i.i.d.采样自N(0, 1)。
Quick Check
作图说明:
lr
固定为0.1; Loss decrease
表示loss下降的绝对值;
三张图分别为:
- NES采样数分别为500/5000/50000时计算出的grad用于梯度下降,与CDG grad用于梯度下降的结果对比:
- 不同的STE(vanilla/ReLU, Steep, SwishSign, Polynomial) grad梯度下降,与CDG grad用于梯度下降的结果对比:
其中不同的STE的形式为(自BinaryDuo):
- 将STE(vanilla/ReLU)、STE(SwishSign)、NES(population = 50000)、CDG grad的下降结果在同一张图中描绘:
Fix num_dim, Loss Decrease - lr Plot
作图说明:
- 每组折线对应同一
num_dim
; Loss decrease
表示loss下降的绝对值; - 受到采样时间的限制,在[1e-2, 1]区间replot的数据是
num_init=1
的条件下取得的,应当留意可能存在的随机性。
观察[1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1]尺度上的Loss decrease判断出loss decrease - lr最佳区间应在[1e-2, 1]内,因此在[1e-2, 1]区间内重新扫描。
num_dim = 4
- NES(500/5k/50k采样)与CDG baseline:
- STE(vanilla/Steep/SwishSign/Polynomial)与CDG baseline:
- NES(50k采样)/STE(vanilla/SwishSign)与CDG baseline:
num_dim = 8
- NES(500/5k/50k采样)与CDG baseline:
- STE(vanilla/Steep/SwishSign/Polynomial)与CDG baseline:
- NES(50k采样)/STE(vanilla/SwishSign)与CDG baseline:
num_dim = 16
- NES(500/5k/50k采样)与CDG baseline:
- STE(vanilla/Steep/SwishSign/Polynomial)与CDG baseline:
- NES(50k采样)/STE(vanilla/SwishSign)与CDG baseline:
num_dim = 32
- NES(500/5k/50k采样)与CDG baseline:
- STE(vanilla/Steep/SwishSign/Polynomial)与CDG baseline:
- NES(50k采样)/STE(vanilla/SwishSign)与CDG baseline:
num_dim = 64
- NES(500/5k/50k采样)与CDG baseline:
- STE(vanilla/Steep/SwishSign/Polynomial)与CDG baseline:
- NES(50k采样)/STE(vanilla/SwishSign)与CDG baseline:
Best Loss Decrease w.r.t. num_dim
一个显而易见的现象:num_dim
越少,loss受到binarize的影响越大。(因此dim较少时的结论可靠性也更低)
作图说明:
- 在每一dim,每种梯度估计方法的数据中选取适当的lr,使得该方法下降的loss最多(即按照最佳lr/最佳loss下降绘图)。
Discussion
To-Do List
2021-2024, UCaiJun Revision
af8e214 Kaleido's Personal Page
master