最近一直在研究模板匹配方法的過程,起先一直對模板匹配的過程不能夠有乙個充分的理解,開始時是對模板序列和樣本序列的組織不能夠理解,後期又是對其中的關係不能夠有清醒的認識,再之後又對bellman的最優化原理不能夠很好的理解,總之是沒完沒了的看書,找方法。現在對這個過程做乙個個人的總結:
一、基於最優路徑搜尋技術的側度
在我進行的工作當中主要是針對相對簡單的測試樣本波形和參考模板波形進行對比,獲取他們的匹配程度。
1、首先需要建立乙個參考模板r(i),i = 1,2,...,i 和測試樣本t(j), j = 1,2,...,j 的對應關係,建立乙個二維的**,兩個序列的元素作為各自座標軸的點,即參考模式的序列在橫座標軸(i 軸),測試模式的序列在縱座標軸(j 軸),組建好這個**後,在**的橫縱交叉結點上(i,j)都對應乙個代價值,它有乙個合適的定義函式d(i,j),用於測量各自波形元素 r(i) 和 t(j) 之間的距離。計算從原點(0,0) 到 (i, j)的所有路徑的最小距離值d,這個路徑成為兩個序列的最小代價路徑,它揭示了兩個序列元素之間的成對對應的最優關係,因為兩個序列的長度不同,所以這種對應關係是今後進行匹配操作的關鍵。(如何能夠使兩個序列依據最小路徑進行轉換還沒有找到明確的方法)也就是說,在模板匹配的第一前提是獲取當前兩個序列的最優路徑,從而獲得測試樣本與參考模板的完整對應序列。
2、為了獲得可能的最優路徑,必須尋找所有可能的路徑,這可是乙個力氣活,計算量會是非常高。在實際的應用中會利用bellman原理的動態規劃演算法來解決計算量的問題。bellman的基本原理是:經過(i,j)的從(i0,j0)到(if,jf)的最優路徑是一條由原點(0,0)到結點(i,j)到終點(if,jf)的最優路徑的串聯。
原則確定好了之後我可以使用全域性約束定義和區域性約束來搜尋各個結點,而不是全部搜尋所有的結點,只是在各個節點的子集中進行,這個過程就是動態規劃演算法。演算法的過程可以進行如下描述:
a、明確全域性和區域性約束的內容,全域性約束表明路徑的起止點分別為(0,0)和(i,j);區域性約束為路徑經過各個節點時的斜率選擇範圍,根據書了的例子我們可以定義只關心相同橫座標的3個後驅節點,選擇為,(i,j),(i,j+1),(i,j+2)。
b、在當前節點到3個後驅節點計算過程要考慮本身節點與其前驅節點的最小間距,即在獲取最小間距的過程中要判斷其後驅節點的距離,要分別對本節點的三個點以及前驅的三個節點進行計算,然後決定當前節點是否轉移,上乙個確定的節點不用轉移,如果需要轉移則依據上一節點到本橫座標的某個節點再到前驅節點進行連線確定其最小距離。(現在是這樣理解的)
c、迴圈操作一直到二維**的(i,j)位置即可。
3、獲得最優路徑之後,需要利用最優路徑進行回溯,這時可以揭示出測試樣本與參考模板的最優化節點對應關係。(如何回溯還沒有總結好)
最優化和深度學習的區別
如今訓練神經網路最常見的方法是使用梯度下降或 adam 等變種。梯度下降是尋找函式極小值的迭代優化演算法。簡單的說,在最優化問題中,我們對某個度量 p 感興趣,想找到乙個在某些資料 或分布 d上最大化 或最小化 該度量的函式 或函式的引數 這聽起來就像是機器學習或深度學習。我們有一些指標,例如準確率...
索引原理和優化
mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶 每個資料頁中的記錄又可以組成乙個單向鍊錶 使用索引後 沒有用索引我們是需要遍歷雙向鍊錶來定位對應的頁,現在通過 目錄 就可以很快地定位到對應的頁上了!二分查詢,時間複雜度近似為 o logn 其實底層結構就是 b 樹,b...
動態規劃最優化原理與無後效性
上面已經介紹了動態規劃模型的基本組成,現在需要解決的問題是 什麼樣的 多階段決策問題 才可以採用動態規劃的方法求解?一般來說,能夠採用動態規劃方法求解的問題必須滿足.最優化原理和.無後效性原則。1 動態規劃的最優化原理。作為整個過程的最優策略具有如下性質 無論過去的狀態和決策如何,對前面的決策所形成...