1. 程式人生 > >隨機計算(1)——新的開始

隨機計算(1)——新的開始

Review of Stochastic Computing

導師上週給我發了一系列的論文,這也算是正式開始我PhD科研生涯開始的標誌。我導師研究的是隨機計算近似計算,由於我本科期間是通訊專業的,所以先讓我研究隨機計算,更多用到模擬訊號的知識,方便入門些。下面進入正題:

Introduction

現在流行的計算硬體發展受限於一些現實的應用條件:小尺寸,低功耗,高可靠性。同時,它還存在一些物理現象:工業製造過程中的變化和軟錯誤。這些物理現象都易於產生錯誤,不過它們可以通過概率論中的理論來進行描述。因此,接下來描述的隨機計算 也引起了人們的研究興趣。

隨機計算最重要的特徵:SC的一個基本特徵是數字由可以由非常簡單的電路處理的位元流表示,而數字本身被解釋為概率,即這串位元流中每一個位元為1的概率,而利用伯努利大數定律,概率可以用頻率來估計,即每一位位元為1的概率可以用這串位元流中的1的個數在位元流中的佔比來表示。

舉個例子來說:
(1,0,0,0):0.25(14\frac{1}{4}
(0,1,0,0):0.25(14\frac{1}{4}

特徵1

SC(之後下文中都用SC代替Stochastic Computing)從上世紀60年代剛引入開始,它的第一個吸引點是可以使用基礎的邏輯閘搭建一個成本低的具有算術功能的電路。例如:乘法 在SC中可以通過一個與門 來實現
Alt
Figure 1

與門實現的功能可以用概率描述為:
P(S3=1)=P(S1=1)P(S2=1)P(S_{3}=1)=P(S_{1}=1)*P(S_{2}=1)
用SN(Stochastic Number)描述為:
S

3=S2S1S_{3}=S_{2}*S_{1}
但是這樣的運算若要求準確是需要條件的,例如下面:

Figure 2

可以注意到在這個算術電路中,運算結果是不正確的。這裡提前說一下,若要AND門利用SC理論準確表示乘法運算,需要兩個輸入位元流X,Y是不相關的或者獨立的

特徵2

SC的另外一個吸引人的特徵是容錯能力,尤其是因為由過程變化或宇宙輻射引起的瞬態或軟錯誤。例如:
在Figure 1 中如果輸出位元流中有一個位元位狀態翻轉,那個它的值只會從38\frac{3}{8} 變成48\frac{4}{8}28\frac{2}{8}. 但是如果是在傳統的二進位制表示形式中,一個位元位的變化會引起很大的變化。

問題1

SC同樣也存在一些問題影響它實際的應用。SC計算精度的增長會導致位元流長度的指數速度增長。例如,若要求計算精度從4變成8,位元流長度需要從24=162^{4}=16 變成28=2562^{8}=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(S4)=P(S3)P(S1)+(1P(S3))P(S2)=(P(S1)+P(S2))/2P(S_{4})=P(S_{3})P(S_{1})+(1-P(S_{3}))P(S_{2})=(P(S_{1})+P(S_{2}))/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)。這個電路包含二個主要部分:(偽)隨機數產生器,比較器。
若隨機產生器產生mm位的二進位制數,那麼一個週期內每一個產生的數的概率是12m\frac{1}{2^m}。而比較器的作用是當隨機數小於x時,輸出1。那麼輸出1的概率就是x2m\frac{x}{2^m},表現在輸出序列上就是一個長為2m2^m的位元流序列,1所佔的比例是x2m\frac{x}{2^m}
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=x1x2x4+x3(1x4)z=x_{1}x_{2}x_{4}+x_{3}(1-x_{4})
在圖四中已經選擇了適當的SN來避免不準確的問題。實際上,即使我們選擇高質量的隨機數來產生SN,例如:
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_{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)
可以得到:S6=(1,1,1,1,1,0,1,1)=7868S_{6}=(1,1,1,1,1,0,1,1)=\frac{7}{8}\neq\frac{6}{8}

原因:
1、由於隨機數的固有的抖動
例如在這個例子中S6S_{6}可以準確獲得6個“1”的概率是:
P(z=68)=(86)(68)6(28)20.31P(z=\frac{6}{8})=\binom{8}{6}(\frac{6}{8})^{6}(\frac{2}{8})^{2}\cong0.31
分析一下這個“抖動”的過程:
p^\hat{p}表示成為N位元流真實所表示的概率值; PP表示期望達到的概率值。那麼均方差為:D(P)=E[(PP^)2]=P(1P)ND(P)=E[(P-\hat{P})^{2}]=\frac{P(1-P)}{N}
所以SN所表示的概率值收斂到P^\hat{P}的速度為O(N)O(\sqrt{N}),即SN的精度隨著位元流長度的增長而提升也就是說隨著時間而改善精度。這個性質被稱作:漸進精度
拓展這個性質,又引入了一個新性質:一致精度。即一串長度為nn的位元流,如果這串位元流構成的所有SN:P^k,k=1,2,3,...,log2(n)\hat{P}_{k},\ k=1,2,3,...,\log_{2}(n)全部相等且等於P^\hat{P},因為SN的精度和準確度是隨著位元流長度增長而增長的,那麼這串位元流可以看作是表示這個概率值的最有意義的初始位元流

2、由於輸入序列之間具有相關性
為了解決這個問題,前人定義兩串位元流不相關或者獨立的定義:
S1=(S1(1),S1(2),...,S1(n))andS2=(S2(1),S2(2),...,S2(n))i=1nS1(i)S2(i)=i=1nS1(i)×i=1nS2(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}不相關或獨立

相關推薦

隨機計算1——開始

Review of Stochastic Computing 導師上週給我發了一系列的論文,這也算是正式開始我PhD科研生涯開始的標誌。我導師研究的是隨機計算和近似計算,由於我本科期間是通訊專業的,所以先讓我研究隨機計算,更多用到模擬訊號的知識,方便入門些。下面

邊緣計算1

邊緣計算:萬物互聯時代新型計算模型 施巍鬆 主要解決 1.海量的邊緣資料的集中處理 2.邊緣資料傳遞到中心使用的頻寬負載 3.網路邊緣的個人隱私問題 4.傳輸過程中使用電能很大 邊緣計算能做的: 將雲資料中心的一些計算任務進行分解,遷移到邊緣節點進行處理,進而降低資料中心的負

機器學習演算法之隨機森林1pyspark.mllib中的RF

spark的persist操作可以使得資料常駐記憶體,而機器學習最主要的工作——迭代,需要頻繁地存取資料,這樣相比hadoop來說,天然地有利於機器學習。 ———- 單機版。 至於叢集的搭建——現在手頭最多兩臺電腦,後面再折騰。 1、安裝pysaprk

Amazon的雲端計算1——基礎儲存架構Dynamo

Amazon 依靠在電子商務中積累的大量基礎性設施和各類先進技術,很早地進入了雲端計算領域,並在提供計算、儲存等服務方面處於領先地位。 Amazon 開發並提供了一系列雲端計算服務這些雲端計算服務共同構成了 Amazon Web Service amaz

iOS浪微部落格戶端開發1——特性介面

轉載自:http://blog.csdn.net/chy305chy/article/details/43118361 看完了MJ老師的微博專案視訊,準備自己動手寫一下,記錄開發中的一些感想。 1、首先判斷是否第一次使用該版本,如果是,先跳轉到新特性介面,否則,直接跳

web前端從零開始1——計算機入門

    前言:這是一個萌新從零開始的學習之路,與大家分享自己的看法與見解,還請指出錯誤與遺漏點方便改正。     1.認識計算機。     計算機語言常見的有C,PHP,Ruby,Java,C#,Basic,JS,C++等,這裡我用到的是C#語言,用到的軟體是VisualStudio 2013版本。當用V

開始寫博客,學習Linq1

設計 查詢 lin 數據源 任務 集成 部分 程序 編程   摘自《linq實戰》原文:   軟件很簡單。它可以歸結為兩件事情:代碼和數據。   開發軟件卻並非那麽簡單,其中很重要的一項任務就是編寫處理數據的代碼。   無論選擇了哪種語言,在程序開發得某個時候你將不得不開始

OAuth2.0學習5-1浪開放平臺-微博OAuth2.0認證

com blank weibo mage pen auth 平臺 target img http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5 OAuth2.0學習(5-1)新浪開放平臺-微博OAuth2.0認證

SSH開始

w3c pass nat temp 以及 class des 登錄頁面 -m 在完成了ssh框架搭建的基礎上,我嘗試著去了解更多。新一階段還是一些簡單的增刪改查,只是提高自己的熟練度。 這一片我要創建一個登錄頁面,並查詢數據庫完成登錄。 一、創建實體: 1、1新建職員實體e

【開源分享:入門到精通ASP.NET MVC+EF6+Bootstrap】從這裏開始,一起搭框架1開篇介紹

strong src 擁有 ckeditor 開發 技術分享 mdi 控制 https 框架簡介 這幾年一直在做ASP.NET開發,幾年前做項目都是老老實實一行行的寫代碼,後來發現那些高手基本都會有自己積累起來的代碼庫,現在稱之為開發框架,基礎代碼不用再去堆,

概念第二冊1--英語口語聽力課1

attention his days times eve 口語 我卻 ini cto 新概念2屬於高中難度,最適合初學者打好基礎。 $課文1 私人談話 1. Last week I went to the theatre. 上星期我去看戲。 2. I

【C# in depth 第三版】溫故而知1 (轉

64位 icm stringbu 值傳遞 關於 ota 現在 函數變量 出發 聲明 本文歡迎轉載,原文地址:http://www.cnblogs.com/DjlNet/p/7192354.html 前言 關於這本書(《深入理解C# 第三版》)的詳細

【充分利用你的Azure】將Azure用作雲計算平臺1

遠程 spa http pac 雲計算 學習 .com xshel 利用 本文將圍繞幾個步驟來講。 因為本人是MSP,微軟送了150刀的額度給我隨便使用。這篇文章是要講將Azure用作雲計算平臺,對於我來說,我是做機器學習的,那麽Azure就要有機器學習的平臺。 本文的目的

[深度學習]實現一個博弈型的AI,從五子棋開始1

com class svm 顏色 display 深度 images += have 好久沒有寫過博客了,多久,大概8年???最近重新把寫作這事兒撿起來……最近在折騰AI,寫個AI相關的給團隊的小夥伴們看吧。 搞了這麽多年的機器學習,從分

條件隨機場介紹1—— An Introduction to Conditional Random Fields

結合 特征 tro charles 信息學 幫助 all div 問題 條件隨機場介紹 原文:An Introduction to Conditional Random Fields 作者: Charles Sutton (School of Informatics, U

[Python接口自動化]從零開始學習python自動化1:環境搭建

help ins cnblogs 文件中 ssi 空格 plugins 變量 mod 第一步:安裝python編譯環境 安裝python編譯環境之前,必須保證已安裝jdk哈,如果為安裝,請參考https://jingyan.baidu.com/article/6dad507

Storm中Task數的設置與計算1.0.1版本

null 英文 如果 之間 one 很多 ask 其他 tar ==思考問題1== 向集群提交一個拓撲的時候,Storm是如何計算Task數以及Executor數的? ==思考問題2:== 構建拓撲的時候,有3個地方會影響task數,這3個地方之間有什麽關系? bui

炸金花的JS實現從0開始之 -------現在什麽都不會1

nds 朋友 div rand art iam src blog js實現 新年結束了。回想起來唯一留下樂趣的就是在家和朋友玩玩炸金花。 遂有此文。 對不起,我這時候還沒有思路。 讓我捋一捋。 。。。 。。。 捋一捋啊。。。 。。。 好了。今天先這樣吧: (1)先整理出所有

1虛擬機管理——在微軟雲Azure門戶創建虛擬機

虛擬機 雲主機 雲計算 微軟 azure Azure新門戶下如何創建虛擬機。方便管理分為3個步驟:創建存儲管理帳戶、創建虛擬網絡、創建虛擬雲主機。 通過地址https://portal.azure.cn我們打開會看到相應的界面,進入門戶登錄界面,如下圖: 登錄門戶後,我

從0開始搭建網站1

能夠 應用 架構 但是 clear 分鐘 cin ecs 上傳 一共就五步 1.註冊域名 註冊域名很簡單,只要花錢就好了,也不貴,點靠姆的域名首年是45塊,最新出來的top域名首年10塊都不到,域名註冊請點擊,有圖有真相 2.購買空間 購買空間也比較