A. CACHE替換演算法有哪幾種,分別簡要說明
其代表演算法有:①Hybrid演算法:演算法對Cache中的每一個對象賦予一個效用函數,將效用最小的對象替換出Cache;②LowestRelativeValue演算法:將效用值最低的對象替換出Cache;③(LCNR)演算法:該演算法使用一個關於文檔訪問頻次、傳輸時間和大小的推理函數來確定替換文檔;④Bolot等人提出了一種基於文檔傳輸時間代價、大小、和上次訪問時間的權重推理函數來確定文檔替換;⑤SizeAdjustLRU(SLRU)演算法:對緩存的對象按代價與大小的比率進行排序,並選取比率最小的對象進行替換
擴展知識:
Cache是一種根據程序局部性原則,通過小容量速度快的存儲器緩存部分數據,以減少處理器對慢速大容量存儲器的訪問次數,從而提升處理器取指效率的機制。Cache替換演算法是指當Cache缺失發生後,Cache按某種機制選中高速緩存中的某個地址進行數據更新。Cache替換演算法對Cache的命中率有較大的影響。目前主流的Cache替換演算法有偽隨機、先進先出(FIFO——First In First Out)和最近最少使用(LRU——Least Recently Used)等。相較於偽隨機和先進先出演算法,LRU演算法更符合程序局部性原則(當前執行的程序代碼,在不久後會再次訪問該代碼段),Cache的命中率更高,但其硬體資源消耗非常大。
傳統的LRU演算法對Cache的每一路進行統計,在需要替換時,將最近最少被使用的那一路替換。由於傳統LRU演算法的數據使用頻率統計為向上計數,故其計數器計數位寬較大,且需要額外的機制來處理計數溢出的情況。
B. 計算機組成原理-----替換演算法
fifo先進先出演算法 有abc 三個存儲空間 每個空間能存放一個元素按照隊列方式
進出,以此是 a b c 命中率=abc中訪問到的次數/元素個數
------------------2 1 0 此時存儲空間已滿 要調用新的元素就要出隊列
------------------4 2 1 下一個元素2在b內 訪問成功一次
------------------。。。。 以此類推
--------------最後3 1 2 最後一個元素又從存儲單元里訪問到一次 所以2/11
fifo+lru:同上加上最近雖少使用。列出上面的表格按隊列進入 把最長時間沒使用到的替換掉 一共訪問到2這個元素3次 所以就是3/11
C. 反向傳播演算法的演算法簡介
反向傳播演算法(backpropagation)是目前用來訓練人工神經網路(artificial
neural
network,ann)的最常用且最有效的演算法。其主要思想是:
(1)將訓練集數據輸入到ann的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是ann的前向傳播過程;
(2)由於ann的輸出結果與實際結果有誤差,則計算估計值與實際值之間的誤差,並將該誤差從輸出層向隱藏層反向傳播,直至傳播到輸入層;
(3)在反向傳播的過程中,根據誤差調整各種參數的值;不斷迭代上述過程,直至收斂。
反向傳播演算法的思想比較容易理解,但具體的公式則要一步步推導,因此本文著重介紹公式的推導過程。
1.
變數定義
上圖是一個三層人工神經網路,layer1至layer3分別是輸入層、隱藏層和輸出層。如圖,先定義一些變數:
表示第層的第個神經元連接到第層的第個神經元的權重;
表示第層的第個神經元的偏置;
表示第層的第個神經元的輸入,即:
表示第層的第個神經元的輸出,即:
其中表示激活函數。
2.
代價函數
代價函數被用來計算ann輸出值與實際值之間的誤差。常用的代價函數是二次代價函數(quadratic
cost
function):
其中,表示輸入的樣本,表示實際的分類,表示預測的輸出,表示神經網路的最大層數。
3.
公式及其推導
本節將介紹反向傳播演算法用到的4個公式,並進行推導。如果不想了解公式推導過程,請直接看第4節的演算法步驟。
首先,將第層第個神經元中產生的錯誤(即實際值與預測值之間的誤差)定義為:
本文將以一個輸入樣本為例進行說明,此時代價函數表示為:
公式1(計算最後一層神經網路產生的錯誤):
其中,表示hadamard乘積,用於矩陣或向量之間點對點的乘法運算。公式1的推導過程如下:
公式2(由後往前,計算每一層神經網路產生的錯誤):
推導過程:
公式3(計算權重的梯度):
推導過程:
公式4(計算偏置的梯度):
推導過程:
4.
反向傳播演算法偽代碼
輸入訓練集
對於訓練集中的每個樣本x,設置輸入層(input
layer)對應的激活值:
前向傳播:
,
計算輸出層產生的錯誤: