---
# System prepended metadata

title: 'DeepChain: Auditable and Privacy-Preserving . Deep Learning with Blockchain-Based Incentive'
tags: [Paper]

---

# DeepChain: Auditable and Privacy-Preserving . Deep Learning with Blockchain-Based Incentive

###### tags: `Paper`

## Abstract
* 隱私保護深度學習引起了信息安全界的極大關注，其中訓練數據和訓練模型預計都不會暴露
* Federated learning(聯合學習)是一種流行的學習機制，多方將local gradients上傳Server，Server使用收集的gradients更新模型參數
* Federated learning忽略許多安全問題
    1. 參與者可能在收集gradients或參數更新中表現不正確，或者Server也可能是惡意的
* 提出了一個名為 DeepChain 的分佈式、安全和公平的深度學習框架來解決這些問題
* DeepChain 提供基於區塊鏈的價值驅動獎勵機制(value-driven incentive mechanism)，強制參與者做出正確的行為
* DeepChain 保證每個參與者的數據隱私，並為整個訓練過程提供可審計性(auditability)
* 本文實現了 DeepChain 的原型，並對不同設置的真實數據集進行了實驗，結果表明本文的 DeepChain 很有前景

## Introduction
* 為了獲得更高的準確性，必須將大量數據匯入深度學習模型，從而導致過高的計算開銷。但是，可以通過採用近年來已廣泛研究的**分佈式深度學習技術**來解決此問題。不幸的是，在分佈式深度學習的情況下，隱私問題更加惡化。
* Federated learning(聯合學習，也稱為協作學習，分佈式學習)，本質上是深度學習和分佈式計算(deep learning and distributed computation)的組合，其中有一個Server（稱為parameter server），該Server維護深度學習模型以進行培訓，並且有多個參與分佈式培訓的參與者處理
    1. training data 被劃分並且儲存再各個地方
    2. 各地方分別在其本地數據上訓練 deep learning model（與parameter server上維護的模型相同），並將中間梯度上傳到parameter server
    3. 在收到所有各方的梯度後，parameter server會匯總這些梯度並相應地更新學習模型參數，此後，各方都會從server下載更新的參數，並繼續使用相同的本地數據再次訓練他的模型下載的參數
    4. 重複此訓練過程，直到訓練誤差小於預定閾值為止
> Parameter Server 
>> Parameter Server 是一個框架，用於方便分佈式並行程序的編寫，其中重點在於對大規模參數的分佈式儲存和協同的支持。
* 這種聯合學習框架無法保護訓練數據的私密性，即使訓練數據被分割並單獨存儲也是如此
* 一些研究人員表明，中間梯度可用於推斷有關訓練數據的重要信息，Shokri等。通過上傳在梯度中添加噪聲來應用差分隱私技術(differential privacy technique)，從而在數據隱私和訓練準確性之間取得了權衡。Hitaj等指出，Shokri的工作未能保護數據隱私，並證明了好奇的參數服務器可以通過GAN（通用對抗網絡）學習來學習私有數據。Orekondy等利用中間梯度對訓練數據發起可鏈接性攻擊，因為梯度包含足夠的數據特徵。
* 豐等人提出使用同態加密技術(homomorphic encryption technique)來保護training data的隱私免受好奇參數服務器的侵害
    * 計劃的缺點是他們假設協作參與者是誠實的但並不好奇，因此在某些參與者感到好奇的情況下，他們的計劃可能會失敗
    * 為了防止好奇的參與者，Bonawitz等人採用了秘密共享和對稱加密機制(secret sharing and symmetric encryption mechanism)來確保參與者梯度的保密性
    * 他們假設
        1. 參與者和參數服務器根本無法合謀
        2. 純文本中的匯總梯度不會顯示有關參與者本地數據的任何信息
    * 不幸的是，純文本中的匯總梯度不會顯示有關參與者本地數據的任何信息
* 儘管正在進行有關分佈式深度學習的廣泛研究，但到目前為止，有兩個嚴重的問題很少受到關注
    * 第一個是現有工作通常考慮來自好奇參數服務器的隱私威脅，而**忽略了梯度收集和參數更新中不誠實行為還存在其他安全威脅的事實**，這可能會破壞協作培訓過程，例如，參數服務器可能會故意降低某些參與者的梯度，或者故意錯誤地更新模型參數
    * Bagdasaryan等證明了這個問題的存在，即不誠實的當事人可以通過用精心設計的更新模型代替更新模型來毒害協作模型。因此，分佈式深度學習框架不僅要保證梯度的機密性，還要保證梯度收集和參數更新的正確性的可審計性至關重要
    * 第二個是在現有方案中，假設各方有足夠的本地數據進行訓練，並且首先願意合作，這在實際應用中並不總是如此，例如，在醫療保健應用中，由於HIPAA等隱私法規、人們不願分享和惡意攻擊(例如識別針對HCUPnet的推理攻擊)，公司或研究機構通常面臨收集足夠的個人醫療數據的困難，因此，缺乏訓練數據通常會導致深度學習模型不佳
    * 另一方面，在業務應用中，一些公司可能不願意參與協作培訓，因為他們非常擔心在分佈式培訓期間可能會洩露其有價值的數據。因此，確保數據隱私並為分佈式深度學習引入一些獎勵機制至關重要，以便更多方可以積極參與協作訓練
    * 傳統獎勵機制包括：
        1.   reputationbased(基於聲譽)
        2.   tit-for-tat(以牙還牙)
        3.   payment-based mechanism(基於支付機制)
        *    前兩者需要一個受信任的中心化權威來審計參與者的行為並仲裁他們的回報。不幸的是，它們未能提供公共可審計性和決策公平性
        *    以牙還牙雖然沒有可信賴的中心化政黨(trusted centralized party)，但並不適合我們的設定，因為一方的貢獻與其同行的貢獻不對稱
    * 值得注意的是，區塊鏈起源於去中心化的貨幣系統，通過採用共識協議和財務獎勵，使不信任的節點能夠在不需要受信任的第三方的情況下共享一個共同的交易賬本。這促使我們引入基於支付的獎勵機制，以保證公共權威和公平
    * 本文提出**DeepChain**，一種基於區塊鏈獎勵機制和密碼原語的安全去中心化框架，用於保護隱私的分佈式深度學習，可以提供數據保密性、計算可審計性和獎勵各方參與協作訓練
    * ![](https://i.imgur.com/fSn4AX9.png)
        * DeepChain 可以通過啟動交易並安全的聚合來自不受信任的參與者的本地中間梯度，而本地訓練和參數更新由受獎勵處理交易的worker（DeepChain 中的一個實體，稍後將定義）執行
* 本文貢獻:
    1. 提出DeepChain，一個具有獎勵機制的協作訓練框架，鼓勵各方共同參與深度學習模型訓練並共享獲得的lacal gradient
    2. DeepChain 保留local gradient的隱私並保證訓練過程的可審計性。透過採用獎勵機制和交易，推動參與者誠實行事，特別是在梯度收集和參數更新方面，進而在協作訓練期間保持公平。
    3. 實現了DeepChain 原型，並在密碼大小、吞吐量、訓練準確性和訓練時間方面評估其性能。相信 DeepChain 可以使 AI 和機器學習社區受益，例如，它可以審計協作訓練過程和訓練模型，它代表了學習的知識。當基於模型的定價市場成熟時，訓練好的模型可以用於付費服務。此外，通過結合遷移學習技術，充分利用所學知識，可以提高學習效率和準確性。
* 本文接下來大綱 ：
    * 第 2 節中，我們簡單介紹一下區塊鍊和深度學習，模型訓練。然後，我們描述了威脅模型和第 3 節中的安全要求。在第 4 節中，我們提出我們的 DeepChain，一個用於可審計和保護隱私的深度學習框架，並分析第 5 節中的 DeepChain。我們給出了實現細節第 6 節中的 DeepChain，並進行廣泛的實驗來評估其性能。最後，我們總結論文在第 7 節中。
## Background
#### 2.1 Blockchain technology
*    BlockChain : 具有4個特性(去中心化，不可變的，共享，按時間順序)的的分散式帳本
        * Transactions被存在包含timestamps and references的blocks中(及前一個block的Hash)。
        * 在Bitcoin中，Transactions(which imply money transfers)是由匿名的參與者創建的，並由一個稱為Worker人們實體競爭性地收集以建立新的block
        * 建立新的並有效的block的worker可以獲得一定數量的獎勵，從而使具有競爭力的worker不斷延長鏈條。為了達到這個，proof of work (PoW)提出了區塊鏈環境中的共識協議和獎勵機制
        * 共識協議有許多種：例如基於權益證明 (PoS)、基於拜占庭容錯 (BFT) 和混合協議，一般來說，在為區塊鏈設置引入新的共識協議時，需要考慮六個問題：
        1. leader selection(領導者選擇):如何在每一輪中選擇新的block leader
        2. network model(網絡模型):消息通信方式，如同步、同步、半同步等
        3. system model(系統模型):許可或無許可系統模型，說明一方是否可以自由加入系統
        4. communication complexity(通信複雜度):反映了在每一輪中向系統中所有各方傳播一個新block的通信成本
        5. adversary assumption(對手假設):定義了系統中容錯方的概率
        6.  consensus property(共識屬性):對應於經典共識協議中定義的 greement-Validity-Termination 屬性。

* Algorand協議 : (基於PoS and BFT混合的協議)
    * 與他們不同的是，Algorand 可以在共識屬性方面以壓倒性的概率保證共識的最終性。在這裡，共識最終性意味著附加到鏈上的有效block將來永遠不會被刪除，這特別適合本文的問題
    * 如果不放棄block的數據，可以避免花費過多時間和計算能力來重新計算一個巨大模型
    * Algorand 在許可的環境工作，假設同步網絡，可以適應我們的設置

* 一些最新的區塊鏈技術，如以太坊和 Hyperledger，引入了支持圖靈完備可編程性的智能合約。 這些技術用於解決不同應用場景中的特定安全問題，例如軟件更新管理 、雲端存儲和機器學習 
* 另一方面，一系列關於交易隱私的工作在區塊鏈中應用了加密工具，例如 Zerocash 、Zerocoin 和 Hawk
* 一般來說，區塊鏈中的共識協議和獎勵機制是實現區塊鏈的關鍵要素。我們來解決缺乏獎勵功能和協作公平保證的問題。
#### 2.2 Deep learning and distributed deep learning

###### 2.2.1 Deep Learing
* Deep learning使深度學習模型能夠學習數據的**抽象**表示
* 典型的Deep learning model由三層組成，即**input layer、hidden layer 和output layer**，一個model可以包含多個hidden layer，即為model的深度
* 每個hidden layer可以有一定數量的神經元(neurons)，不同層的神經元可以學習輸入訓練數據的層次特徵，代表不同的抽象層次
* 每個neurons都有多個input和一個output，透過weight和bias來連接，這兩格個參數需透過model的training來學習
* **Back-Propagation (BP)**，包含feed forward step and back-propagation step：
    * feed forward step：每一層的輸出分別基於前一層和當前層的參數計算
    * back-propagation step ： 採用gradient descent，逐漸縮小model的error，透過不斷去更新參數來達到最小的error
* **Activation Function** : 是每個neurons的output，Activation Function用於通過函數 $Act()$ 學習輸入的非線性特徵，為了計算第 l 層神經元 i 的輸出值，$Act()$ 將來自第 l -1 層的 i 的所有 n 個輸入作為輸入
* 我們假設權重 wj,i 與第 l-1 層的神經元 j 和第 l 層的神經元 i 之間的連接相關，bias 是神經元 i 的偏差值，我們可以通過$Act_i(l) = Act_i(\sum^{n}_{j=1}=1(w_{j,i} ∗ Actj (l − 1)) + b_i).$ 獲得第 l 層神經元 i 的值

###### 2.2.2 Distributed Deep Learing
* 在訓練複雜的多層深度學習模型時，上述的Deep learning訓練過程需要很高的計算量，為了環解這個問題，提出了Distributed deep learning(分散式深度學習)
    * Model parallelism(並行) ： 將model在多台機器進行切分
    * Data parallelism ：拆分dataset
    * 本文著重於Data parallelism，即有多台機器，每台機器維護訓練模型的副本，同時保留整個dataset的一個子集作為模型輸入，這些機器通過向集中式參數服務器(centralized parameter server)上傳/下載參數來共享訓練模型的相同參數，在此基礎上使用 SGD（隨機梯度下降）更新訓練模型，然後機器上傳他們更新後的參數，他們透過服務器下載更新後的參數並且繼續training，直到機器獲得最終model 
    
#### 3.THREATS AND SECURITY GOALS
本章節會介紹協做學習(collaborative learning)面臨的威脅，以及DeepChain位應對威脅實作的安全目標
* Threat 1 : Disclosure(洩漏) of local data and model
    * 儘管只上傳local gradients到參數服務器上，但攻擊者(adversaries)仍可以通過發起推理攻擊(inference attack)和成員攻擊(membership attack)，透過gradient來獲取local data的重要資訊
    * 另一方面，基於gradient，攻擊者可以發起參數推斷攻擊來或取model的敏感資訊
* Security Goal : Confidentiality of local gradients
    * 假設參與者沒有公開自己的數據，並且至少t位參與者是誠實的（即，不多於t位參與者合謀暴露參數，這樣除非至少有t個參與者勾結，否則local的gradient不會暴露
    * 如果在任何情況下參與者都不公開從協作模型中下載的參數，則攻擊者將無法獲得有關參數的任何信息
    * 為了在DeepChain實現以上目標，每個參與者分別加密，然後上傳從其本地模型獲得的梯度
    * 使用所有梯度來更新由所有參與者進行協作加密的協作模型的參數，然後參與者在每次迭代中通過**協作解密**獲得更新的參數。在此，協作解密意味著至少t個參與者提供其秘密份額以解密密碼。
* Threat 2: Participants with inappropriate behaviors.
    * 於協做訓練期間，可能會有參與者做出惡意行為，ex:隨意選擇輸入，從而產生不正確的gradient，目的在於誤導訓練過程 => 下載gradient時可會得到錯誤結果
    * 另一方面，在協作解密階段，不誠實的參與者可能會給出有問題的解密份額(共享)，並且他們可能是自私的，會提前中止local training的過程以節省training的過程以節省培訓成本成本
    * 不誠實的參與者可能會為了自我利益而延遲交易或終止合約，以上行為都會導致無法完持協作任務
* Security Goal 1 : Auditability of gradient collecting and parameter updating.
    * 假設大多參與者和至少2/3以上的worker在gradient收集和更新上市誠實的
    * 在gradient收集的期間，參與者的transation包含加密的gradient和correctness proofs(正確性證明)，允許第三方審核參與者是否給出了正確加密的梯度結構
    * 對於參數的更新，worker會透過紀錄在DeepChain裡的交易資訊來計算結果，這些交易資訊是可以審計的，只有至少2/3以上的worker是誠實的才能保證計算結果是正確的
    * 參數更新後，參與者下載並協同解密參數，通過提供他們的解密份額和相應的證明來驗證正確性
    * 同樣，任何第三方都可以審核解密共享是否正確
* Security Goal 2: Fairness guarantee for participants
    * DeepChain 透過超時檢查(timeout-checking)和罰款機制(monetary penalty)來為參與者提供公平性
    * 對於具有smart contract的每個功能，DeepChain為其定義一個時間點。在函數執行後的時間點，將驗證函數結果。如果驗證失敗，則意味著:
        * 參與者沒有準時達到時間點
        * 部份參與者錯誤的執行功能
    * 對於以上兩種情況，DeepChain可以罰款機制，撤銷不誠實參與者的預凍結存款，將其分配給誠實的參與者
#### 4. THE DEEPCHAIN MODEL
本章結中將介紹DeepChain，這是一種用於保護隱私的深度學習的安全且分散的框架，DeepChain 通過引入激勵機制和交易處理實現協同訓練。 在協同訓練的過程中，數據的機密性和可審計性通過使用密碼技術得到保證。
#### 4.1 System overview
* DeepChain術語定義：
    * **Party(參與方)** : 參與方與傳統的分佈是深度學習model的實體相同，但由於數據有限或計算能力不足，無法單獨完成training
    * **Trading(交易)** : 當參與者獲得他的local gradient，，她會通過稱為**交易合約(trading contract )** 的智能合約向DeepChain發送gradient，此過程稱為Trading。這些合約可以下載並由worker進行處理
    * **Cooperative group(合作組)** : 一個使用相同深度學習model來進行訓練的人們
    * **Local model training(本地模型訓練)** : 每個參與方獨立地訓練其本地模型，並且在本地迭代結束時，該參與方通過將其local gradient附加到contract來生成要的交易
    * **Collaborative model training** : 
        * Cooperative group透過各方協助來train deeplearning model。具體上來說，他們在確定相同的深度學習model和參數初始化後，以迭代的方式訓練model。
        * 在每次迭代中，各方trade他們的gradient，然後worker會下載並處理gradient
        * 處理後的gradient會由worker發送到稱為**process contract**的smart cintract上
        * 這些經過正確處理的gradient被從worker中選出的leader用來更新collaborative model(協作模型)的參數
        * 各方下載協作模型的更新參數，並相應地更新其local model 
        * 之後再開始新的Iteration
    * **Worker** : 
        * 類似Bitcoin中的miner，worker被激勵去處理協作模型更新訓練weight的交易
        * worker在同一個Block中工作，第一個完成工作的可以成為leader，leader可以獲得Block reward來在未來做消費
        * 例如 ： leader可以使用block reward來支付DeepChain中已訓練model的使用費
    * **Iteration** : 在每次Iteration結束時，model的的所有neurons的weight都會更新一次
    * **Round** : 在 DeepChain 中，Round 是指創建新區塊的過程
    * **DeepCoin** : 
        * 為DeepChain中的一種資產，記做 $$Coin$
        * 對於每個新生成的block，DeepChain將產生一定數量的$$Coin$作為獎勵
        * DeppChain的參與包括參與者(Parties)和worker
            1. Parties : 透過對本地model訓練來獲得$$Coin$
            2. worker : 透過幫助parties更新訓練model來獲得$$Coin$
        * 對於那些無能力自己訓練model並想使用該model的人，將花費$$Coin$來取得model
        * 機器學習基於model的定價已經在某些場景有applications，本文為$$Coin$定義**有效性質**，它本質上是一個回合的時間間隔，有效性值與DeepChain中的共識機制有關
    * 來自$P_j$方(Party)的gradient包含在交易 ${T_x}^{i}_{p_j}$中，所有transations都在第$i$輪的trading contract被收集
    * 中間梯度的local weights是$C_{P_j}(\Delta W_{i,j})$，其中$C$是$P_j$方用來加密weights的密碼
    * 當所有transactions${T_x}^{i}_{p_j}$在第i輪中背收集完畢，Trading contract會將他們上傳至DeepChain
    * 之後，workers下載這些交易(${T_x}^{i}_{p_j}$)以透過processing contract進行處理
#### 4.2 Building blocks of DeepChain
* DeepChain由獎勵機制和共識協議來building blocks，他們都支持DeepChain中的Federated learning
* DeepChain包含兩個步驟，即DeepCoin分發和building blocks。假設所有參與者和workers都已在DeepChain中註冊（即擁有有效帳戶），其中每個人都使用與DeepCoin單位相對應的地址(pk)發起交易。
###### 4.2.1 Incentive mechanism(獎勵機制)
* 對於那些數據不夠自己訓練model的parties，獎勵機制可以激勵他們使用他們的local data來參與協做訓練
* 通過獎勵和懲罰機制來確保 ： 
    * parties在local model的training和gradient trading時是誠實做事的
    * workers 在處理parties's transactions是誠實的
* 舉例一個由兩個parties組成的交易流程 ： 
    ![](https://i.imgur.com/Ci83UNU.png)
    * 雙方通過啟動transactions來將他們的data貢獻給協作訓練
    * 假設雙方擁有的data數量不相等
        * 每一方都可以根據自己擁有的data數量發起交易並支付交易費用
        * data數量愈多 => 支付費用愈少(雙方就協同訓練模型的費用總額達成一致)
    * 在處理交易時成功創建Blocks的worker可以成為leader並獲得獎勵
    * transactions的發出和處理是可以驗證的，如果有一方提出無效交易，將會受到懲罰(被罰款)
    * 如果leader錯誤的處理交易，也會受到懲罰
    * 最後，協做訓練完成後，各方可以從訓練model中受益，通過向**想要使用訓練model的用戶收取使用費**，為他們帶來收入
* 接下來介紹兩個屬性(兼容性和parties獎勵機制的活躍性)，然後進一步說明parties和workers有誠實行事的動機
* 假設我們保證共識協議的數據隱私和安全，分別使用$V_c$和$V_i$分別表示訓練有素的**協作模型**和訓練有素的**個體模型**i的值，假設$V_c$ > $V_i$
* 首先，如果每個Parties都能根據自己的貢獻獲得最好的結果，我們就說激勵機制具有相容性
* 只有各方都願意通過不斷發起交易來更新自己的價值$V_i$的本地訓練模型，並且每個工人也有動力更新價值$V_c$的協同訓練模型的參數，它才有活躍度
* 假設$\omega_P$和$\omega_W$分別代表parties和工人對於model訓練的最終貢獻，$\pi_P$和$\pi_W$分別是對應收益
    * 活躍度 ： 
        * Parties : 在整個培訓過程中花費$V_i$，那麼她最終將獲得$V_c$，這對Parties很有吸引力，因為$V_c$ > $V_i$
        * Workers : 處理transactions來建構協作訓練model，以便有概率的獲得reward，worker可以使用這些reward來支付DeepChain中的deep learning services
        > worker獲得reward的概率取決於已經獲得的reward數量。 數量越大，獲得reward的概率就越高
    * 兼容性 ： Parties貢獻$\omega_P$愈多，所獲得的$\pi_P$也愈多(Worker同理)
    * 若有雙方任何人表現不佳，則![](https://i.imgur.com/gK87HES.png)
    ($\land$ = "And", $\lor$ = "or")
###### 4.2.2 Consensus protocol(共識協議)
* 不可或缺的，因為他使所有參與者都能夠在**去中心化**環境中來達成某些事情的共識
* DeepChain基於blockwise-BA協議來運作，包括3個主要步驟
    * 創建新的block的leader是通過加密抽籤隨機選擇的
    * 由新block中的的參與者(transactions包含在此block中)組成委員會，通過拜占庭協議驗證病同意新的block
    * 委員會中的每個validator通過使用八卦協議將新的block告訴他的鄰居，以便 DeepChain 中的所有參與者都知道新的block
    * 本文的共識協議具有3個屬性
        * 安全性 ：所有parties都同意再DeepChain中的交易歷史
        * 正確性 ：要求誠實的parties同意的任何transactions都來自誠實的parties
        * 活躍度 ： Parties和workers願意在 DeepChain 中持續執行，從而使 DeepChain 保持活力
    * 我們假設消息傳輸是同步的，並且不超過1/3的惡意方。 在這種情況下，各方都同意擁有最大資產的鏈
    * 共識協議三大步驟 ：
        * **Leader selection** ： 從收集交易並將其放入block中的worker中隨機選擇一個 leader，包括leader選擇和leader驗證![](https://i.imgur.com/ozvMxjt.png)
        * sk和pk歸worker所有，seedi是選擇leader的隨機種子，$\tau$=1表示只選擇一個leader，$\omega$表示參與者$Coin$的數量，$\omega_{total}$表示DeepChain中$Coin$的總量 
        > $\omega$很重要，因為它是用來控制worker根據他已經獲得的獎勵數量獲得獎勵的概率
        * **Committee agreement** ： leader驗證完後，將選出的block發送給委員會，委員會的每個人都會驗證leader處理的交易是否正確(weight的更新操作是否正確)
            * 根據多數決方式決定是否簽署這個block(需超過2/3同意才有效)，若未超過則拒絕block
            * 如果此block有效，則leader可以從此block中獲得$Coin$;否則，block會被丟棄並創建一個新的block來替換，重複此過程直到委員會同意此block
        * **Neighbor gossip** : 假設block以由委員會達成協議，委員會的參與者有責任告訴他們的鄰居 block，通過使用八卦協議。因此，經過這一步所有參與者在深鏈達成共識
#### Procedures of DeepChain
為了實現隱私保護的協同學習，本文引入3個過程，即DeepChain的自舉(DeepChain bootstrapping)、資產聲明(Asset statement)和合作訓練(Collaborative training)
###### 4.3.1 DeepChain bootstrapping
* 包括兩步驟 ： DeepCoin distribution和genesis block generation(創造第一個block)
*  假設所有參與方都已經在DeepChain中註冊有效帳號，每個人都使用一個地址$pk$對應一個 DeepCoin 單元來發起交易
    *  第一步 ： DeepCoin distribution實現parties和workers之間的DeepCoin分配，最初時期所有人的DeepCoin數量都相同
    *  第二步 ： 在第0輪生成第一個block，包含每個 DeepCoin 的初始交易記錄所有權聲明
    *  第三步 ： block建立後，隨機種子 seed0 也為公眾所知，由註冊用戶通過分佈式隨機數生成例程隨機選擇，當 DeepChain 繼續運行時，在第 i 輪，seedi−1 用於生成 seedi
    > 這些隨機種子對 DeepChain 至關重要，因為它們保證了在每一輪選擇leader創建新區塊時的隨機性
###### 4.3.2 Asset statement(資產報表)
* parties需說明他的資產，使他能夠找到合作者並完成Deep leanring任務
* 資產報表不會顯示資產的內容，因為它只是資產的某種描述，例如資產可以用於哪種深度學習任務。具體地說，Parties通過發送資產交易來聲明資產
###### 4.3.3 Collaborative training
根據Asset statement，具有相似Deep learning任務的parties可以組成協作組，由以下4個步驟完成
1. Collaborative group establishment : 在組成協作小組前，parties可以審核其他和作者的資產，以確保資產所有權的真實性
2. Collaborative information commitment ： 協做小組組成後，Parties就可以安全地訓練深度學習模型的信息達成一致
    * 待訓練的協作模型**modelco**
        * 對於協作模型，Praties在訓練神經網絡，訓練算法和網絡配置（例如網絡層數，每層神經元數，最小批量和迭代次數）上達成共識
        * 他們也對**modelco**的初始weight( $\omega_0$ )有共識
        * 在第i次訓練迭代後，weight( $\omega_i$ )將更新為$\omega_i + 1$。它們通過應用Paillier.Encrypt算法來保護$\omega_0$
        * **每個合作方都需要承諾一定數量的保證金以進行安全計算**，如果有parties故意失職，其存款$Coin$將被沒收，並補償其他誠實方。否則，這些押金將在培訓過程完成後退還
        > 以上所有協做訊息都會被上載到DeepChain的交易中
        > 協作組中的各方定義了稱為**交易者(trader)**和**經理(manager)**的兩個角色
3. parties透過由合作方選擇的**經理**執行交易合同迭代的交易其gradient，每個交易者都誠實地對交易梯度進行加密，同時附加了正確的加密證明，表明了兩個安全性要求，即機密性和可審計性
    * 在此生成了gradient交易，再保密方面，如果交易者不公開其gradient，則沒有人可以獲得任何有關此gradient的任何訊息
    * 假設經理沒有透露他所知道的，交易者需合作解密更新後的參數
    * 在可審計性方面，存在可以進行審計的正確加密的證據，在合作解密時，每個交易者都提供自己的解密證明。這些證明是非交互式生成的，並且可由DeepChain上的任何一方公開審核
4. 通過超時檢查和罰款機制，交易者和經理的行為被迫真實可信
    * 即使交易者和經理串通，tradding contract的結果也無法修改
    * 除了tradding contract外，processing contract還負責參數更新
    * worker通過累加的gradient來處勵交易，並將計算結果發送到**processing contract**
    * **processing contract**驗證正確的計算結果並更新model的參數，這兩個合同被迭代使用，以完成整個訓練過程
#### 5.  SECURITY ANALYSIS
###### 5.1 Confidentiality Guarantee for Gradients
* 保證model的gradient不會被暴露，為了實現此目標，DeepChain採用**Threshold Paillier**，提供additive homomorphic property
* 我們假設存在一個受信任的設置，並且如果沒有至少 t 個參與者的協作，密鑰就不會洩露
###### 5.2 Auditability of Gradient Collecting and Parameter Update（梯度收集和參數更新的可審計性）
* Auditability確保任何第三方都可以在Gradient Collecting和Parameter Update接受審計加密梯度和解密份額(decryption shares)的正確性
* 通過遵循可驗證的CDN協議(UVCDN)來實現可審計性
###### 5.3 Fairness Guarantee for Collaborative Training
* 於blockchain中使用兩種安全機制，即trusted time clock mechanism(可信時鐘機制)和secure monetary penalty mechanism(安全的貨幣懲罰機制)，來提高協作訓練期間的公平性
    * trusted time clock mechanism ： 合約中的操作背強制再某一個時間點內完成
    * 分別為gradient collecting and collaborative decryption(協同解密)定義了兩個安全的貨幣懲罰機制(每個合作方都需要承諾一定數量的保證金以進行安全計算。在合作培訓期間，如果一方故意失職，其存款d（$Coin$）將被沒收，並補償其他誠實方。否則，這些押金將在培訓過程完成後退還)
### 6.IMPLEMENTATION AND EVALUATION
我們實現了 DeepChain 的原型，並在密碼大小、吞吐量、訓練精度和訓練時間方面評估其性能
######  Implementation
我們實現了 DeepChain 的buildinf blocks和協同訓練程序，形成三個modules，即 CordaDeepChain、TrainAlgorithm 和 CryptoSystem
* 第一步：我們創建一個模擬DeepChain的blockchain設置，blockchain的nodes被視為parties和workers，他們參與交易並透果兩個預先定義好的智能合約互動，即tradding contract和processing contract
* 生成的transactions在blockchain中被序列化，使用**Corda V3.0**來模擬DeepChain的適應性和簡化性
    * **Corda** : 一種去中心化的分類帳本，一個Corda network包含多個notaries(公證人)，本文的共識協議可以在他們上執行
    *  接著建構nodes並將他們化分為parties和workers，具體來說，設置了兩個BlockChain同意的**CorDapps**，一個當作parties，一個當作workers
    *  根據Corda提供的API，同過3個組件來實現他們的邏輯
        *  State : 用於表示一種數據的事實，一但 State 實例在特定時間點被所有nodes所知，它就是不可變的
        *  Contract : 用於實例化交易的一些規則
        *  FLow : 定義了帳本更新的一系列步驟，例如：如何啟動從一個node到另一個node的交易
* 第2步：  我們使用 Python（3.6.4 版）、Numpy（1.14.0 版）和 Tensorflow（1.7.0 版）構建Deep learning的環境，訓練model為CNN（架構為：Input → Conv → Maxpool → fully connected → Output）
* 第3步：threshold Paillier使用Java實現，在執行加密算法之前，將weight矩陣組合成一個向量，這樣就只為一方生成一個密碼
###### 6.2 Evaluation
* 我們通過使用 4 個指標，來評估多方設置DeepChain 模型訓練的可行性
    * 密碼大小
    * 吞吐量
    * 訓練準確性
    * 總時間成本
* 從下圖可以看出，當我們加密不同數量的梯度時，密碼的大小保持不變![](https://i.imgur.com/1z5X3ja.png)
* 另一方面，隨著梯度數量的增加，吞吐量穩步下降![](https://i.imgur.com/sJTBA8N.png)
* 在訓練準確率方面，我們表明參與協作訓練的各方越多，訓練準確率越高
* 通過在 DeepChain 中共享梯度，每一方都可以獲得由其他方的梯度貢獻的更新參數。具體來說，更新的參數是通過取各方梯度的平均值來計算的，透過協做的正確率都會高於baseline party![](https://i.imgur.com/3e9xF1P.png)![](https://i.imgur.com/y02VVtG.png)
* 整個協做訓練的過程![](https://i.imgur.com/ZbJ4EGd.png)
* 時間成本影響 ：
    * model大小
    * parties數量多寡
    * 加解密時間
### 7. CONCLUSION AND FUTURE WORK
* 我們介紹了DeepChain，這是一個基於區塊鏈的健壯且公平的去中心化平台，用於安全的協作深度培訓
* 引入一種**激勵機制**並實現三個安全目標，即**機密性**，**可審核性**和**公平性**
* 為了保證局部梯度的機密性，我們採用Threshold Paillier算法來保護數據。通過將熟練的組件應用於加密算法，可以實現僅為一方生成一個密碼的目標
* 通過區塊鏈的超時檢查和罰款機制來推動參與者公平行事
* 我們最終實現了DeepChain的原型，並對其進行了評估，以從密碼大小，吞吐量，訓練準確性和訓練時間四個方面說明可行性
###### 未來
* 當基於模型的定價市場充滿希望時，經過訓練的模型可以創造財務價值
* 記錄了每次迭代的所有訓練過程和模型參數，這可以促進轉移學習的發展




