《 Learning and Memorization 》之 LUT -- lookup table

Learning and Memorization

Memorization: Ability to remember training data, poor classification on testing data.
Generation: Ability to remember training data, good classification on testing data.

1 摘要

首先,摘要部分提出三个观点:
(1)增加网络深度可以提高网络性能
(2)随机数据可以被 memorized,而真实数据可以被 generalized
(3)一般来说,对于随机数据的 memorization 是要难于真实数据的

2 一个简单的 lookup table


左图B={0,1} 对应的 Bk ( k=3 ) 时有7种模式;
中间图:lookup table。y0 与 y1 分别代表 output 为 0 和为 1 ,下面的值为 pattern p输出为 0 或 1 的次数;
右图:经过函数后生成的 truth table,具体函数如下图所示。“*”表示在 0 ~ 1 间随机选取的数。

结果表明,左图中只有第一个和第六个的值是对应不上的。
在这里插入图片描述
cp1 表示对应该 pattern p,output 为 1 出现的次数。
cp0 表示对应该 pattern p,output 为 0 出现的次数。

简单的 LUT 示意图( k=2 ):
在这里插入图片描述

3 网络型 LUT

数据集:MNIST

“0” 分类:数字 “0~4” ; “1” 分类:数字“5~9”

函数fB28*28–> B

网络具体架构:
输入层:228*28
网络共有 d 层,前 d-1 为隐藏层,最后一层为输出层,每层都有 k 个输入。
在 1 <= l <= d 层,每层都有 nl 个lookup table,nd = 1

令 k=2,d=2,即 n1=2,n2=1,示意图如下。

在这里插入图片描述
在 n1 层,经过函数 f,分别得到 f10 和 f11 .
在这里插入图片描述
在 n2 层,经过函数 f,得到 f20 .
在这里插入图片描述
结果表明,左图中只有第一个和第七个值与网络预测的值是对应不上的。

该网络的优点
(1)效率高,只需要计数和对 LUT 的查找,且不涉及浮点型数字。
(2)所有的 LUT 都是独立且并行的。

4 Experiment

4.1 Experiment 1

网络结构:
k=8,nd=1
隐藏层:d-1=5,nl=1024
在这里插入图片描述
第 0 层不对应 luts,对应的是输入:28*28

结论:
(1)随着网络层数的加深,accuracy 也随之增加
(2)隐藏层每一层的输入都是前一层的输出,输出的 accuracy 高于输入

对于网络的具体设计,作者有备注说:
在第 5 层,只需要 8 个 luts;在第 4 层,只需要 64 个 luts,但作者还未对其进行优化。

4.2 Experiment 2 & Experiment 3

网络结构:
k是变量,nd=1
隐藏层:d-1=5,nl=1024
在这里插入图片描述
有人提出 k=28*28 ,但其实 k 不用那么大,模型就已经训练得很好了。

真实数据(前三列):
在 k=2 时,模型的 accuracy 较低,memorization效果差。
随着 k 值的增加,模型的 accuracy 越来越高,且训练数据与测试数据间 accuracy 的差值也越来越小。
当 k>12时,测试数据的 accuracy越来越低,差值也越来越大,说明 k=12 时,模型效果最优。
k不是越大越好,而且 12 << 28*28。

随机数据(后两列):
随着 k 值不断地增大,训练数据的 accuracy 越来越大。
不管 k 值如何改变,测试数据的 accuracy 始终维持在 0.5 附近徘徊,偏差 < 0.05.

真实数据与随机数据的比较:
accuracy :真实数据( k=4 ) ≈ 随机数据( k=12 )

k=12 时,网络可以很好地 memorize 随机数据( 0.82 ),也可以很好地 generalize 真实数据( 0.99 )。

4.3 Experiment 4

与其它流行的算法进行比较。
在这里插入图片描述
从上述图中可以观察到,LENET卷积网络( 2 Convs, max-pooling, 3 FCs, 6 epochs, SGD )的性能最好。但 memorization 比其它算法,其 accuracy 是高出不少的。

4.4 Experiment 5

这个 experiment 用到了 Pairwise,我在网上找了个例子来解释 :

有一个数组 [7,9,11,13,15],按照最佳组合值为 20 来计算,只有 7+13 和 9+11 两种组合。而 7 在数组的索引为 0,13 在数组的索引为 3,9 在数组的索引为 1,11 在数组的索引为 2。

所以我们说函数:pairwise([7,9,11,13,15],20) 的返回值应该是 0+3+1+2 的和,即 6。

对于一个 10 分类的数据集,对其进行两两分类,可得到 ( 10 * 9 ) / 2 = 45 个分类。
在这里插入图片描述
在 experiment 2 中,当训练数据的 accuracy = 1 时,其测试数据的 accuracy 是减小的。

而在本实验中,当训练数据的 accuracy = 1 时,45 个分类中有 31 个 accuracy 达到 0.98 ,而最差的(难以区分 ”4“ 跟 ”9”)的 accuracy 也达到了 0.95。

此时, k=6 and k=8.

4.5 Experiment 6

改变网络深度。
在这里插入图片描述
在 experiment 5中,当 k=2 时,网络的区分度很低。为了加强网络性能,可以适当增加网络深度。

保持 k=2, 增加隐藏层个数从 20 --> 25。从图中可以观察到当 隐藏层个数 = 16 或 32 时,网络已具有良好的性能。

此时,luts 的结构非常的小,其训练数据和测试数据间 accuracy 的差值也越来越小。

4.6 Experiment 7

改变数据集。

数据集:CIFAR-10, 5000张

“0” 分类:数字 “0~4” ; “1” 分类:数字“5~9”

函数fB3*32*32–> B

网络结构:
k=8,nd=1
隐藏层:d-1=5,nl=1024
在这里插入图片描述
对于这个数据集,memorization也保持良好的稳定性( train:0.79, test:0.63 )。

对于其它算法,表现得却不太稳定。在 MNIST 数据集性能好的,在 CIFAR-10 数据集性能变差;或在MNIST 数据集性能不好的,在CIFAR-10 数据集性能变好。

LENET网络性能一如既往得好,但是在 CIFAR-10 数据集需要 40 epochs。

4.7 Experiment 8

用到了 “Pairwise"。
在这里插入图片描述得到最高的分类 accuracy ( CAT v/s DOG) 为 0.95,最低的分类 accuracy ( FROG v/s SHIP ) 为0.61,平均分类 accuracy 为 0.76。

4.8 Experiment 9

设置区域 [−2, 2] × [−2, 2] ∈ R2,以 x2 + y2≤ 1.6 为边界把数据分成两类。
用 10 位定点数来表示每一个点,所以函数 f :B20 --> B
隐藏层:d-1=32, nl =2048
在这里插入图片描述
当 k = 6 时,网络的性能表现得最好。

5 Conclusion

(1)在对 MNIST 与 CIFAR-10 这两个数据集进行分类时,Memorize的性能已不弱于一些传统算法。
(2)该网络的性能随深度的提升而提升。
(3)该网络可以 memorize 随机数据,而不能 generalize 随机数据。
(4)memorize 随机数据难于 memorize 真实数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值