关于 LRA 和 Force Regularization 的探索

这部分是将《Coordinating Filters for Faster Deep Neural Networks》中提到的 Force RegularizationLRA 用于实际项目的效果,虽然现在看来不是很严谨,不过算是一次很好的尝试。

设定

为了探索 Low-Rank Approximations ( LRA )Force Regularization ( 参考 Wen. “Coordinating Filters for Faster Deep Neural Networks” ICCV 2017 ) 在我的工程上的实际效果, 进行了一些实际测试. 由于时间限制, 主要进行了两次探索, 分别为:

  • LRA
    • 单次大降秩(rank ratio 0.48)
    • 在大降秩的基础上小降秩(rank ratio 0.8)
  • LRA + Force Regularization
    • 多次迭代 LRA (每次 rank ratio 0.9), FR (0.003 Degradation)

此外还有在 MNIST 上对 LeNet 的对照测试, 结果与文中叙述结论基本一致, Force Regularization 后 LRA 带来的压缩率有进一步的提高, 但主要在全连接层体现 (实验时卷积层个数完全没变), 尚未使用其他网络进行测试, 也没有观察出 Force Regularization 后卷积核的变化, 可能需要进一步实验 (调整 Force Regularization 参数, 用更好的可视化方法 t-SNE 等)

结果

  • 原模型结果
测试分数
原准确率0.8993
原召回率0.9017
F1-Score0.8919
  • LRA
    单次 0.48 大降秩后 finetune 17300 iters, 接着 0.8 小降秩 finetune 40000 iters:
测试0.48分数0.48+0.8分数
准确率0.89470.9181
召回率0.88680.8157
F1-Score0.88130.8489
  • LRA + Force Regularization
    此版本由于原工程正在改进, 所以使用了新的方法 (修改了网络输出层的卷积个数以及输入的通道数, 准确率略微提高, 召回率变化不大)
    在新方法训练的模型下进行 0.003 Degradation 的 Force Regularization, 400 iters ( 50 iters/epoch ) 后 0.9 rank ratio 降秩, finetune 1000 iters后 继续 0.9 rank ratio 降秩, finetune 1300 iters 后得到收敛结果
测试源模型 FR第一次降秩第二次降秩
准确率0.92520.92070.9228
召回率0.77290.85200.8443
F1-Score0.82980.87310.8698

分析

  1. 从 LRA 可以看出, 单次大降秩也能恢复到接近源模型的效果(召回率下降大约2%), 模型大小压缩明显(12.7M => 4.8M), 但是再度降秩模型效果开始较大幅度下降(召回率再度下降7%), 且模型大小变化不大(4.8M => 3.7M)
  2. FR 后模型的召回率迅速降低, 但理论上在此基础上再进行多次降秩并最终 finetune 应该是能恢复效果的, 问题 loss 已经几乎收敛, 无法看出有明显下降, 召回率仍然有较大损失, 所以怀疑可能需要降低训练 force regularization, 和 learning rate, 或者有可能是 FR 未足够 finetune 的问题??

后续

进行了FR再测试, 对原模型进行了更久的 finetune, 得到

测试分数
准确率0.9194
召回率0.9018
F1-Score0.9030

对于速度, 进行了几个小实验, 似乎该方法在小网络上会由于增加卷积层所以减慢前向速度, 而且比起低秩增速, 卷积层的增加带来的负面影响似乎更大. 至少以本项目来说是有些许降速的.

使用 Hugo 构建
主题 StackJimmy 设计