Review of Stochastic Computing
导师上周给我发了一系列的论文,这也算是正式开始我PhD科研生涯开始的标志。我导师研究的是随机计算和近似计算,由于我本科期间是通信专业的,所以先让我研究随机计算,更多用到模拟信号的知识,方便入门些。下面进入正题:
Introduction
现在流行的计算硬件发展受限于一些现实的应用条件:小尺寸,低功耗,高可靠性。同时,它还存在一些物理现象:工业制造过程中的变化和软错误。这些物理现象都易于产生错误,不过它们可以通过概率论中的理论来进行描述。因此,接下来描述的随机计算 也引起了人们的研究兴趣。
随机计算最重要的特征:SC的一个基本特征是数字由可以由非常简单的电路处理的比特流表示,而数字本身被解释为概率,即这串比特流中每一个比特为1的概率,而利用伯努利大数定律,概率可以用频率来估计,即每一位比特为1的概率可以用这串比特流中的1的个数在比特流中的占比来表示。 举个例子来说:
(1,0,0,0):0.25(
1
4
\frac{1}{4}
41)
(0,1,0,0):0.25(
1
4
\frac{1}{4}
41)
特征1
SC(之后下文中都用SC代替Stochastic Computing)从上世纪60年代刚引入开始,它的第一个吸引点是可以使用基础的逻辑门搭建一个成本低的具有算术功能的电路。例如:乘法 在SC中可以通过一个与门 来实现
Figure 1
与门实现的功能可以用概率描述为:
P
(
S
3
=
1
)
=
P
(
S
1
=
1
)
∗
P
(
S
2
=
1
)
P(S_{3}=1)=P(S_{1}=1)*P(S_{2}=1)
P(S3=1)=P(S1=1)∗P(S2=1)
用SN(Stochastic Number)描述为:
S
3
=
S
2
∗
S
1
S_{3}=S_{2}*S_{1}
S3=S2∗S1
但是这样的运算若要求准确是需要条件的,例如下面:
Figure 2
可以注意到在这个算术电路中,运算结果是不正确的。这里提前说一下,若要AND门利用SC理论准确表示乘法运算,需要两个输入比特流X,Y是不相关的或者独立的。
特征2
SC的另外一个吸引人的特征是容错能力,尤其是因为由过程变化或宇宙辐射引起的瞬态或软错误。例如:
在Figure 1 中如果输出比特流中有一个比特位状态翻转,那个它的值只会从
3
8
\frac{3}{8}
83 变成
4
8
\frac{4}{8}
84 或
2
8
\frac{2}{8}
82. 但是如果是在传统的二进制表示形式中,一个比特位的变化会引起很大的变化。
问题1
SC同样也存在一些问题影响它实际的应用。SC计算精度的增长会导致比特流长度的指数速度增长。例如,若要求计算精度从4变成8,比特流长度需要从 2 4 = 16 2^{4}=16 24=16 变成 2 8 = 256 2^{8}=256 28=256,从而也导致计算时间呈指数增长,使得处理时间变长。
问题2
它的准确性较低,毕竟都是概率性的。
问题3
复杂的设计需求。在后面将提到SC电路设计包括Reconfigurable Design, Fixed Design, Combinational Logic Design and Sequential Logic Design。
Basic Concepts
Scaled Add
由于SN(Stochastic Number)实际是用来表示概率的,所以它的范围是在[0,1]。也因此两个数的加法运算不方便,因为和的范围在[0,2]内。SC采用了特殊的Scaled add操作来解决这个问题。如下:
Figure 3
P
(
S
4
)
=
P
(
S
3
)
P
(
S
1
)
+
(
1
−
P
(
S
3
)
)
P
(
S
2
)
=
(
P
(
S
1
)
+
P
(
S
2
)
)
/
2
P(S_{4})=P(S_{3})P(S_{1})+(1-P(S_{3}))P(S_{2})=(P(S_{1})+P(S_{2}))/2
P(S4)=P(S3)P(S1)+(1−P(S3))P(S2)=(P(S1)+P(S2))/2
Convert binary numbers to stochastic numbers and vice versa
Figure 4. Number conversion circuits: (a)binary-to-stochastic; (b)stochastic-to-binary
Figure 4(a) 展示了一个广泛运用的二进制数-随机数之间转换的转换电路,被称为SNG(Stochastic Number Generator)。这个电路包含二个主要部分:(伪)随机数产生器,比较器。
若随机产生器产生
m
m
m位的二进制数,那么一个周期内每一个产生的数的概率是
1
2
m
\frac{1}{2^m}
2m1。而比较器的作用是当随机数小于x时,输出1。那么输出1的概率就是
x
2
m
\frac{x}{2^m}
2mx,表现在输出序列上就是一个长为
2
m
2^m
2m的比特流序列,1所占的比例是
x
2
m
\frac{x}{2^m}
2mx。
Figure 4(b)是一个随机数-二进制数的转换电路。原理是SN作为Counter(计数器)的使能信号,一串比特流序列中有多少个1那么计数器就在一个计数周期内计数多少次,从而转变成二进制数。
Different SN Formats
IBP在后面的Fixed Circuit设计中起到重要的作用。部分Gate的运算在不同的域不一样:XOR(IBP: Multiplication), XNOR(BP: Multiplication)。特例是:MUX(UP, BP, IBP: Add)。
Accuracy Problem
Figure 4 Stochastic circuit realizing the arithmetic function
z
=
x
1
x
2
x
4
+
x
3
(
1
−
x
4
)
z=x_{1}x_{2}x_{4}+x_{3}(1-x_{4})
z=x1x2x4+x3(1−x4)
在图四中已经选择了适当的SN来避免不准确的问题。实际上,即使我们选择高质量的随机数来产生SN,例如:
S
1
=
(
0
,
1
,
1
,
0
,
0
,
0
,
1
,
0
)
,
S
2
=
(
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
)
S
3
=
(
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
)
,
S
4
=
(
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
)
S_{1}=(0,1,1,0,0,0,1,0), \ S_{2}=(0,0,1,1,1,1,1,1)\\ S_{3}=(1,1,1,1,1,1,1,1),\ S_{4}=(0,0,0,0,0,0,0,0)
S1=(0,1,1,0,0,0,1,0), S2=(0,0,1,1,1,1,1,1)S3=(1,1,1,1,1,1,1,1), S4=(0,0,0,0,0,0,0,0)
可以得到:
S
6
=
(
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
)
=
7
8
≠
6
8
S_{6}=(1,1,1,1,1,0,1,1)=\frac{7}{8}\neq\frac{6}{8}
S6=(1,1,1,1,1,0,1,1)=87̸=86
原因:
1、由于随机数的固有的抖动
例如在这个例子中
S
6
S_{6}
S6可以准确获得6个“1”的概率是:
P
(
z
=
6
8
)
=
(
8
6
)
(
6
8
)
6
(
2
8
)
2
≅
0.31
P(z=\frac{6}{8})=\binom{8}{6}(\frac{6}{8})^{6}(\frac{2}{8})^{2}\cong0.31
P(z=86)=(68)(86)6(82)2≅0.31
分析一下这个“抖动”的过程:
设
p
^
\hat{p}
p^表示成为N比特流真实所表示的概率值;
P
P
P表示期望达到的概率值。那么均方差为:
D
(
P
)
=
E
[
(
P
−
P
^
)
2
]
=
N
P
(
1
−
P
)
N
2
D(P)=E[(P-\hat{P})^{2}]=\frac{NP(1-P)}{N^{2}}
D(P)=E[(P−P^)2]=N2NP(1−P)
(N个独立的伯努利分布变量的和产生的新变量的方差是
N
P
(
1
−
P
)
NP(1-P)
NP(1−P),然后每个变量
X
X
X都要乘上
1
N
\frac{1}{N}
N1,所以方差乘上
1
N
2
,
最
终
得
到
P
(
1
−
P
)
N
\frac{1}{N^{2}},最终得到\frac{P(1-P)}{N}
N21,最终得到NP(1−P))
所以SN所表示的概率值收敛到
P
^
\hat{P}
P^的速度为
O
(
N
)
O(\sqrt{N})
O(N),即SN的精度随着比特流长度的增长而提升也就是说随着时间而改善精度。这个性质被称作:渐进精度。
拓展这个性质,又引入了一个新性质:一致精度。即一串长度为
n
n
n的比特流,如果这串比特流构成的所有SN:
P
^
k
,
k
=
1
,
2
,
3
,
.
.
.
,
log
2
(
n
)
\hat{P}_{k},\ k=1,2,3,...,\log_{2}(n)
P^k, k=1,2,3,...,log2(n)全部相等且等于
P
^
\hat{P}
P^,因为SN的精度和准确度是随着比特流长度增长而增长的,那么这串比特流可以看作是表示这个概率值的最有意义的初始比特流。
2、由于输入序列之间具有相关性
为了解决这个问题,前人定义两串比特流不相关或者独立的定义:
定
义
输
入
的
两
个
比
特
流
为
S
1
=
(
S
1
(
1
)
,
S
1
(
2
)
,
.
.
.
,
S
1
(
n
)
)
a
n
d
S
2
=
(
S
2
(
1
)
,
S
2
(
2
)
,
.
.
.
,
S
2
(
n
)
)
当
且
仅
当
:
∑
i
=
1
n
S
1
(
i
)
S
2
(
i
)
=
∑
i
=
1
n
S
1
(
i
)
×
∑
i
=
1
n
S
2
(
i
)
n
不
相
关
或
独
立
定义输入的两个比特流为S_{1}=(S_{1}(1),S_{1}(2),...,S_{1}(n))\ and\ S_{2}=(S_{2}(1),S_{2}(2),...,S_{2}(n))\\ 当且仅当:\sum^{n}_{i=1}S_{1(i)}S_{2}(i)=\frac{\sum^{n}_{i=1}S_{1}(i)\times\sum^{n}_{i=1}S_{2}(i)}{n}不相关或独立
定义输入的两个比特流为S1=(S1(1),S1(2),...,S1(n)) and S2=(S2(1),S2(2),...,S2(n))当且仅当:i=1∑nS1(i)S2(i)=n∑i=1nS1(i)×∑i=1nS2(i)不相关或独立
注:这和两随机信号不相关是一致的,随机信号中定义:
互
协
方
差
函
数
K
(
t
1
,
t
2
)
=
E
(
X
(
t
1
)
X
(
t
2
)
)
−
m
(
X
(
t
1
)
)
m
(
X
(
t
1
)
)
=
0
时
,
两
随
机
过
程
是
不
相
关
的
互协方差函数K(t_{1},t_{2})=E(X(t_{1})X(t_{2}))-m(X(t_{1}))m(X(t_{1}))=0时,两随机过程是不相关的
互协方差函数K(t1,t2)=E(X(t1)X(t2))−m(X(t1))m(X(t1))=0时,两随机过程是不相关的
为了产生不相关的比特流,SC使用伪随机数产生器(LFSR-线性反馈移位寄存器)。伪体现在:它产生随机数的过程类似n重伯努利实验,所以最后产生的比特流中的“1”和“0”的个数几乎一样;而且它产生的随机数是循环周期的产生,且每个周期内产生数据的顺序是一致的且不重复,因此它可以准确的用一串序列中1的个数来反映每一位为1的概率,如Figure 1中的电路结构。
设计一种利用LFSR产生任意SN的SNG:
Figure 5 SNG Using Linear Feedback Shift Register
提示:
L
3
,
L
2
,
L
1
,
L
0
均
互
不
相
关
L_{3},\ L_{2},\ L_{1},\ L_{0}均互不相关
L3, L2, L1, L0均互不相关
W
3
=
L
3
W
2
=
(
1
−
L
3
)
L
2
W
1
=
(
1
−
L
3
)
(
1
−
L
2
)
L
1
W
0
=
(
1
−
L
3
)
(
1
−
L
2
)
(
1
−
L
1
)
W_{3}=L_{3}\\ W_{2}=(1-L_{3})L_{2}\\ W_{1}=(1-L_{3})(1-L_{2})L_{1}\\ W_{0}=(1-L_{3})(1-L_{2})(1-L_{1})
W3=L3W2=(1−L3)L2W1=(1−L3)(1−L2)L1W0=(1−L3)(1−L2)(1−L1)
根据互不相关SN的性质可得:
P
3
=
1
2
,
P
2
=
1
4
,
P
1
=
1
8
,
P
0
=
1
16
P_{3}=\frac{1}{2},\ P_{2}=\frac{1}{4},\ P_{1}=\frac{1}{8},\ P_{0}=\frac{1}{16}
P3=21, P2=41, P1=81, P0=161,其实这4个
W
i
W_{i}
Wi没有交叠的“1”,可以类比成概率论中的互不相容时间,最后得到的
X
^
≈
X
\hat{X}\approx{X}
X^≈X。
在实际SC电路中,如果需要多个独立的SN,如果是采用多个SNG,则成本太高了,所以也可以采用以下电路:
当然,如果我们的运算中包含乘法运算,则输入序列需要不相关。但有时我们也需要合理利用不相关,例如像在多路选择器MUX中,便不需要输入序列互不相关。在XOR中,如果输入序列具有最大的互相关性,则运算可表示为** ∣ X − Y ∣ \vert X-Y\vert ∣X−Y∣**。
Design
Reconfigurable stochastic circuits
将一般函数利用优化理论逼近为一个贝恩斯坦多项式,求得最优的贝恩斯坦多项式系数,电路图如下:
Figure 6 Reconfigurable Design
DGC中实际是一个加法器。
P
(
S
=
i
)
=
(
n
i
)
(
X
)
i
(
1
−
X
)
m
−
i
P(S=i)=\binom{n}{i}(X)^{i}(1-X)^{m-i}
P(S=i)=(in)(X)i(1−X)m−i。
从而
Y
=
∑
0
i
=
m
B
i
(
n
i
)
(
X
)
i
(
1
−
X
)
m
−
i
Y=\sum_{0}^{i=m}B_{i}\binom{n}{i}(X)^{i}(1-X)^{m-i}
Y=∑0i=mBi(in)(X)i(1−X)m−i。
Fixed stochastic circuits
利用IBP形式的SN来进行设计电路。此处略。
电路图如下:
Figure 7 Fixed Design
Application
Filter design
Image processing
Decoding Error-Correcting Codes
Artificial neural networks
第一次写综述,对着论文写的估计很乱很杂。本来今天给自己的任务就是写完,没想到写到接近五点,仍然亢奋,
但是怕掉头发,最后很多东西都省略了,第一次就自我安慰一下吧。明早直接睡到12点,哈哈哈哈哈哈啊哈~
由于本人水平不高,其中估计有错误,望不吝赐教!
万分感谢。