作者znmkhxrw (QQ)
看板Math
標題[機統] 訊號(影像/聲音)可不用隨機建模?
時間Fri Nov 11 03:13:35 2022
各位好, 之前在
#1XF2064M 有詢問過
"為何訊號處理要用隨機過程"相關問題
當時討論方向傾向於
"工程Paper寫的不嚴謹"的相關討論
而最近我又再碰一些訊號處理的paper又遇到一堆隨機過程
因此想要用實際簡單的例子來詢問
為什麼要用隨機過程/隨機變數對訊號建模
P.S. 文末有提如果內容眾多或是在意知識產權, 樂意付費求解
【問題】
(1) 為什麼要用隨機過程建模?
我有聽到一個說法是
"因為你永遠不知道下一個/串訊號x_n是什麼", 但對於這個說法
把他當作需要的理由我覺得很怪, 我直接像
分析學假設訊號x_n符合某個條件不就好了?
比如x_n€l^p, p=1 or 2..., 也就是說, 目前有兩個approach:
(a) 統計方向:
假設x_n是符合某些條件的隨機過程X_n(w)的取樣
(某些條件如stationary, ergodic, 滿足某個機率分布...)
(b) 分析方向:
假設x_n是符合某些條件的實數列
(某些條件如l^p)
會發現(a),(b)這兩種假設方式也都是
"不知道下一串訊號x_n是什麼而做的假設"
所以我才覺得這句話並不足以說服我為何要用隨機過程建模
況且電腦就是根據
確定的input去產生output
今天我的算法的accuracy是某個資料庫的N筆資料的正確率的話
這
N筆資料就是確定的固定值, 我就是要這N筆的正確率越高越好
因此何來
不知道下一串x_n是什麼的疑慮
而且隨機過程建模的話很容易讓論文的
符號有一堆模棱兩可跟猜測的空間,
舉例來說, 一個實數列x_n迄今我就看到有三種版本詮釋他:
(A) x_n = X_n(w) for some w€Ω, 其中Ω是樣本空間, X_n(w)是隨機過程
(B) x_n = X(w_n) for a sequence w_n€Ω, 其中Ω是樣本空間, X是隨機變數
(C) x_n = X(n) for n€Z, 其中整數Z是樣本空間, X(n)是隨機過程
而不管猜測/選擇哪個版本, 只要條件加的夠多, 好像三個就能得到一樣的結果
然後再套入一些說法如
"樣本空間不重要, 重要的是pdf", 變成說具體是(A),(B),(C)
哪一個也不重要了, 反正不說死x_n是什麼, 理論推導時寫E[x_n], 這個E是期望值
還是ensemble average也不重要, 反正
條件夠好值都一樣
如果真是如此的話, 那我直接用(b)假設x_n是符合某個條件的實數列就好了啊
看起來(a)並沒有帶給我任何好處反而還有一堆模稜兩可的地方
甚至我把所有
有E[x_n]的推導過程的E[x_n]都定義為ensemble average
等式幾乎都可以過去, 況且
電腦實作上對於E[x_n]也都是用moving average做
因此我才覺得假設符合條件的實數列x_n並且考慮
E[x_n]:=lim_{n→∞}( (1/n) *Σ_{k=-n~n} x_k)
(E[x_n]只是舉例, 像是特殊型MMSE是考慮E[|e_n|^2], e_n是error sequence)
最後一提的是, 用隨機過程建模的話,
某個x_n出來的結果是錯誤的話
你並
不能去說他公式推導或是假設錯誤, 因為照理論來說這個
x_n只是抽樣
抽樣的結果不對不代表什麼, 因為都有機率性的
有鑑於此, 讓我疑惑的三點就在於:
‧不管採取統計方向跟分析方向的假設, 電腦實作都是同一套
那採取哪種假設根本沒差
‧採用統計假設就有一個好處:理論推導錯誤也沒差
即便任意有限N筆資料錯, 也都不能去說作者推導有錯
因為有限抽樣的結果不能否定掉機率分布, 頂多只能說倒楣一直抽到不好的data
‧不能檢驗的理論(統計假設)為何重要? 因為在統計的假設下, 任何輸入x_n只是抽樣
他結果對與錯並不能撼動假設,
不像反證法可以由結果錯可以說假設錯
(2) 如果只是對x_n做實數列假設會怎樣嗎?
這部分跟(1)就有很多重複的地方不贅述, 特別想問的是幾乎所有機器學習, 深度學習
訊號處理的參考資料跟論文都會引入
期望值,
然後不說死E[x_n]的x_n是什麼
如果我寫論文不採用隨機過程建模, 直接用
分析學的方式去假設訊號x_n符合某些條件
會直接被打槍嗎? 如果會的話, 那就回到(1)了, 我想知道到底是有什麼理由跟好處...
抑或是從今以後我閱讀
任何有E[]的論文時, 都把他當成數列的ensemble average一切就
天下太平? 不用管什麼統計假設了, 反正電腦實作時不論x_n是不是滿足什麼統計假設也
是算一樣的東西...
【舉例】
我想以Wiener filter去比較使用
分析假設與統計假設的差別
(嚴格來說統計的理論是實變, 實變是分析學, 因此我此處的分析學是指
沒用到樣本空間/隨機過程那些的分析學)
參考
https://en.wikipedia.org/wiki/Wiener_filter 的
"Finite impulse response Wiener filter for discrete series"段落
大體說來(符號跟wiki一致), w_n跟s_n是兩串已知數列, {a_i│i=0~N}是N+1個待定係數
令a := (a_0,...,a_N)€R^(N+1)
x_n := Σ_{i=0~N} a_i*w_(n-i)
e_n := x_n - s_n
求最小誤差問題
min E[|e_n|^2]
a€R^(N+1)
接著就可以考慮幾種case:
(一) 採用統計假設, 並不說死E[]中擺的數列是怎麼來的(X_n(w)/X(w_n)/X(n))
則就像wiki那樣一路推下去, 也得出結果
我想問的是
嚴格來說wiki裡面的E[]到底是什麼? X_n(w)/X(w_n)/X(n)隨便都可以嗎?
如果是的話, 是
依據哪個定理所以隨便都可以?
如果真的隨便都可以, 那就照(二)當成數列的ensemble average就好啦?
(二) 採用分析學假設, 這些數列單純是數列而已
定義E[|e_n|^2] := lim_{n→∞}( (1/n) * Σ_{k=-n~n} |e_k|^2)
會發現wiki所有的推導都過的去, 只要
假設極限表現良好
也就是說, 所有的
推導都只是實數列的推導, 無關任何統計假設
這樣不能嗎? 有何缺點?
(三) 採用分析學假設, 去嚴格化(二)
觀察(二)會發現不一定有解a使得cost function達到minimum, 甚至下面這個空間S
根本
不一定是向量空間 S:={x_n:Z→R│E[|x_n|^2] exists}
會用特別指出他不是向量空間是為了跟下面這個
確定的結果做對比
(即是我在
#1ZPWF7qZ 的問題-(4)的結論)
令l^2:={x_n:Z→R│Σ_{k=-∞~∞} |x_k|^2 < ∞}
則l^2不僅是向量空間更是Hilbert space, <x,y> := Σ_{k=-∞~∞} x_k*y_k
這裡會發現S跟l^2的
差別就只是有沒有除以n, 正是這個除以n破壞了向量空間
在l^2中, 正項級數隨著加的項數越多值遞增, 因此遞增有上界就能收斂
但是S中多了除以n, 導致分子加的項數越多值遞增但是分母也在遞增, 無法確定收斂性
因此我
接下來的推導只會在l^2(在S目前我覺得不會有好結果)
額外一提, 如果單純考慮有限維空間的最佳近似解問題(符號混用, 過了這段就無視)
min |Ax-b|^2
x€R^n
其中A=(a_i_j)€M_mxn(R), b€R^m
則定義 e_n:= (Σ_{k=1~n} a_n_k * x_k) - b_n 的話
原問題就可以寫成
min (Σ_{k=1~m}|e_k|^2)
x€R^n
此時會發現
不管有沒有除以m, 解得的x都會是一樣的
這例子帶給人一種
l^2跟S會有差別是因為無限維的問題, 若有限維就一樣了
接著回到l^2, 把Wiener filter的最佳化問題與條件假設羅列如下:
令
w_n€l^1, s_n€l^2為兩數列
a := (a_0,...,a_N)€R^(N+1) to be determined
x_n := Σ_{i=0~N} a_i*w_(n-i)
e_n := x_n - s_n
║v║:= (<v,v>)^0.5 , for v€l^2, 即l^2的norm
求最小誤差問題
min Σ_{k=-∞~∞} |e_k|^2
a€R^(N+1)
可以發現這個最佳化問題等價於
min║w*A-s║ ---(●)
A€C
其中C:={A_n:Z→R│A_n = 0 for n not in {0,...,N}}為
l^2中的(N+1)維子空間
(也就是說, 數列A_n只是把a_n左右無限補0而已)
會發現先前
l^1, l^2的設定只是為了讓(●)well-defined(l^1*C會屬於l^2)
而藉由Hilbert space的投影定理
(因為A處於有限維空間C, 所以摺積算子的值域R_w
(R_w:={w*A│A€C}) 也會是有限維, 因此closed), 會存在唯一的垂足p€R_w
使得 s-p€R_w^⊥, 接著只要
任何滿足 w*A = p的A都是最佳化問題的解A
順帶一提, 如果在l^2空間考慮最佳化問題
min E[|e_k|^2]
a€R^(N+1)
結果會很慘, 因為l^2的級數和是有限的, 會讓無窮大的分母使得整體收斂到0
因此會變成
所有的a€R^(N+1)都是解, 毫無意義
以上就是我用
分析學假設去嚴格化(二)的陳述
為什麼歷史演進下來的Wiener filter不是這樣的假設與推導?
我是在猜測一些可能性:
‧l^1, l^2這些假設太嚴格了, 不除以項數的話很容易發散, 非常不實用
‧l^2空間去除以項數會得到無意義結果
‧考慮較寬廣的集合S, S又沒有辦法嚴格化成向量空間/Hilbert space...
就是這些因素讓應用數學家
放棄用分析學方式建模
-----------------------------------------------------------
以上就是我的問題跟猜測, 我盡量用線性脈絡去陳述我遇到的問題
但是因為牽涉到
"為什麼要這樣令、有什麼好處、理論歷史發展"之類的問題
問起來難免有點雜 不好意思
再請有涉獵的板友幫忙了, 謝謝!
另外如果有板友可以完全回答這些疑惑, 但是又覺得是自己整理的知識產權
非常樂意可以來信討論付費講解
我這幾天邊整理這些邊逛tutor版、google家教(高等數學/統計/工作的數學)...等
都沒有找到相關的資源...(有時候覺得是不是自己google能力很差...這些問題我網路
都找不到類似的人問, 當然就沒有答案)
因為本身在業界了, 自己想這個的時間沒有很多, 付費換得高效率得到答案的方式
對我來說是非常可行的
再次謝謝幫忙~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.102.225.191 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Math/M.1668107617.A.9B7.html
1F:推 deathcustom : 我建議你到comm_and_RF板求問會比較專門 11/11 09:59
好~謝謝資訊, 只是我從好幾年前到業界時, 就很難找到適合的人選問...
數學的同學或是教授偏理論, 我必須把工程上的問題翻譯跟定義完才能跟他們討論
問題就在於這些問題本身就是定義跟歷史問題, 也可以說是我翻譯完那就沒問題了...
而問業界的同事, 他們不在意理論怎樣, 反正電腦跑起來ok就ok
尤其深度學習很容易理論一套、實作一套
而又礙於理論是用統計做假設, 所以
實作(抽樣)不符合理論也沒有矛盾
綜合以上兩點, 理論如果不重要又不能檢驗(只能某個信心水準), 那這個理論用處在?
我是不相信理論不重要啦, 只是目前沒找到說法, 因此才來問
2F:推 deathcustom : 就做信號的人來說,你應該對雜訊跟干擾很熟才對 11/11 10:13
3F:→ deathcustom : 問題是在一個causal system中,你永遠沒辦法預知 11/11 10:13
4F:→ deathcustom : 雜訊跟干擾,然後你假設一旦錯了就掰惹 11/11 10:14
這個我理解, 所以就需要假設
問題在於我假設雜訊符合某個分布 vs 假設雜訊符合某個分析條件
我還是不清楚有何差別, 細節就是本文的那些思考方向(
【問題】)
5F:→ recorriendo : 當然可以 只是那樣數學比較難 實務效果也未必較好 11/11 14:00
6F:→ recorriendo : 所以現在很少人弄也是當然 11/11 14:00
嗨r大, 謝謝reference
另外請問一下, 你說"當然可以", 那我下面這個疑惑對你而言是疑惑嗎?
不管假設x_n是 (1)符合某個隨機分布的抽樣, X_n(w)/X(w_n)/X(n)哪一個隨便
或 (2)符合某個分析學的數列假設
電腦實作E[x_n]時都是用
moving average來宣稱達到期望值E[]
(其中E[]是expected value還是ensemble average根本不管, 實作都用moving average)
也就是說, 不管x_n是怎麼假設來的, 我的實作都是同一套程式碼的話
那
假設不就變得沒有意義了? 這是我的疑惑
舉一個我所謂有意義的假設, 拿
Wiener filter的(三)分析當例子
只要條件滿足羅列的所有假設, 結論一定會成立
反之如果結論不成立, 一定w不是l^1 或是 s不是l^2 或是blabla
也就是說,
分析學的假設只要你能滿足條件, 結果一定成立
反之如果
結果不成立, 假設一定有地方出錯
但是統計學的假設下, 即便
抽樣的數列跑出來的結果不成立, 也不能否定掉統計假設
我覺得我就是這裡不舒服跟覺得怪怪的
還是說要用統計學來建模的話, 就是要讓自己接受這些觀點?
而剛好歷史上在訊號處理大家都用這一套來建模, 接受就好了
如果理由確實如此的話我是可以接受
※ 編輯: znmkhxrw (114.25.106.213 臺灣), 11/11/2022 15:37:51
8F:→ recorriendo : 分析和統計 都是以給定的前提作為充分條件啊 11/11 17:24
9F:→ recorriendo : 結論不成立 本來就不能否決其充分條件 除非你證明 11/11 17:25
10F:→ recorriendo : 是充要條件 11/11 17:25
11F:→ recorriendo : 說錯 否定後件則知充分條件之一不成立 這是一樣的 11/11 17:27
12F:→ recorriendo : time average = ensemble average 這是ergoticity 11/11 17:29
13F:→ recorriendo : 假設 本來就是條件之一 11/11 17:29
14F:→ recorriendo : 統計信號處理一般都假設WSS 大部分結果這都是條件 11/11 17:32
15F:→ recorriendo : 之一 只是大多人已經接受了 就不會再特地提它 11/11 17:32
意思是說在統計假設WSS與ergodic的情況下
並且假設所
選用的moving average會等於time average
則所有抽樣的x_n都會符合理論推導
換言之, 如果
某個抽樣x_n不符合理論推導結果, 就是下列至少存在一種情況發生:
(1) 選用的moving average不夠好
(2) 不是WSS
(3) 不是ergodic
r大是這個意思嗎?
16F:→ recorriendo : ergodic單純是time average = ensemble average假設 11/11 20:51
17F:→ recorriendo : 其他結果不一定需要它 但大部分統計信號處理都有WSS 11/11 20:52
18F:→ recorriendo : 的假設 11/11 20:52
19F:→ recorriendo : 這裡說"其他結果" 通常是用ensemble average下去推 11/11 20:58
20F:→ recorriendo : 導 但是當然現實世界中能觀察到的是time average甚 11/11 20:59
21F:→ recorriendo : 至近似的moving average 因此"理論結果"和實際觀察 11/11 21:00
22F:→ recorriendo : 若要相合就大表已預期它是ergodic 11/11 21:01
了解~謝謝r大回應
23F:推 PPguest : 看到"用隨機過程建模...某個x_n出來的結果是錯誤", 11/11 21:39
24F:→ PPguest : "某個抽樣x_n不符合理論推導結果",有點好奇什麼是 11/11 21:40
25F:→ PPguest : "結果錯誤"和"不符合理論推導結果" 11/11 21:41
26F:→ PPguest : 是我後面想到簡單例子的這種嗎?公平骰子的期望值是 11/11 21:43
27F:→ PPguest : 3.5,每次抽樣10個,把x_1~x_10做平均,結果發現結果常 11/11 21:45
28F:→ PPguest : 常不是理論值的3.5 11/11 21:46
是, 這算是一個例子
以訊號來說, 比如某雜訊音檔s_n是從N(0,1)的分布中的取樣
但是你對s_n做mean跟variance很高機率不是0跟1
那假如(舉例而已)原理論推導中得到最佳參數 p = (mean+1)/variance,
mean跟var是母體, 因此對於N(0,1)的分布來說, 最佳參數就是 p = 1/1 = 1
但是實作上會發生兩個情形:
(1) 因為你假定s_n是N(0,1)的取樣, 所以p還是設1/1 = 1
但有可能s_n是很差的取樣, 所以p=1時會讓模型的效果很差
(2) mean採用樣本的mean, var採用樣本的var
所以你等於用moving average的方式去跑樣本s_n的mean跟var得到一直變動的p
如果p逼近1且模型表現好, 那一切大致符合
如果p逼近1但模型表現不好你也不能說矛盾, 因為s_n只是取樣, 理論是對母體陳述
如果p遠離1但模型表現好, 那只能說剛好而已
如果p遠離1且模型表現不好你也不能說矛盾, 因為s_n只是取樣, 理論是對母體陳述
總之就是理論是根據母體/分布做陳述, 但是實際上被計算的都是樣本
那樣本表現的不好能不能推翻理論, 就看你的一堆假設了, 比如WSS那些
表現不好就說他不是WSS之類的...
結果論只能說我比較喜歡分析學的假設方式
29F:→ recorriendo : 簡單說 "理論結果"通常是WSS假設下針對ensemble a 11/12 11:46
30F:→ recorriendo : verage或其他ensemble統計量的描述 11/12 11:46
31F:→ recorriendo : 至於能觀察到的通常是time average 11/12 11:47
32F:→ recorriendo : 所以你列的三個確實都是造成不一致的可能 我只是再 11/12 11:50
33F:→ recorriendo : 區分各自造成出錯的環節 11/12 11:50
理解~這樣聽起來確實統計假設跟分析假設都是滿足假設下去做推論
矛盾時就一定會否定掉某個假設
只是我說不上來一個具體的形容, 覺得分析假設
比較明確
阿, 應該說:
(1) 統計假設: 對X_n(w)做假設, 對x_n實作
(2) 分析假設: 對x_n做假設, 對同樣的x_n實作
或許是因為這樣我才覺得(2)比較明確...
34F:推 PPguest : 個人是覺得碰到有隨機性或不確定性的問題時, 11/13 16:03
35F:→ PPguest : 用機率來建模是可以理解的。 11/13 16:03
36F:→ PPguest : 用隨機過程建模,想出的一個(例如)denoise的方法, 11/13 16:03
37F:→ PPguest : 如果有人問為什麼這個方法可以denoise, 11/13 16:03
38F:→ PPguest : 通常都至少有一定程度可以說明。 11/13 16:03
39F:→ PPguest : 如果不要用到機率統計,只對x_n做實數列假設, 11/13 16:04
40F:→ PPguest : 我會好奇那是怎麼對問題做建模的? 11/13 16:05
41F:→ PPguest : 雜訊在模型中是什麼?能解釋為什麼方法能denoise嗎 11/13 16:05
42F:→ PPguest : 題外話,用實數列來看待,感覺也是很新奇有趣 11/13 16:12
43F:推 PPguest : 好奇問一下,方法的理論是不是都沒有講實作的表現能 11/13 16:21
44F:→ PPguest : 多好,或者其他跟實作表現有關的任何資訊? 11/13 16:22
45F:→ PPguest : 什麼都沒有的話感覺很頭痛,不知道能不能自己估計? 11/13 16:27
嗨P大, 我先敘述我個人習慣再回應你的問號
不管是純數的定理還是應用的理論建模, 我有兩個approach:
(一) 先
假設最少的條件
發現推不下去後, 再去多加一些
合理又感覺不太刻意的條件, 這些非常主觀
舉denoise來說, 因為電腦處理的資料確實就是一串數列, 所以輸入跟輸出都是實數列
因此
輸入條件先只有假設實數列對我來說就是最寬鬆的假設, 如果能得到好用的結論
當然是最好的, 不過通常越少的假設能得到的性質越少
因此只有實數列在分析上的結果非常少, 諸如:
(1) 數列不一定收斂
(2) 向量空間不可賦距
(3) 向量空間不可賦予內積
...
少了這些性質根本做不下去
因此我下一步就是增加條件, 而在增加的過程必須
主觀的相信這對實際應用沒什麼影響
比如我增加的條件是恆號, 那我就覺得這個條件太刻意, 因為輸入訊號很難保證會恆號
比如我增加的條件是l^2, 那我就覺得這個條件應該還好, 至少有限項的訊號都是l^p的
然後一路推理下去, 哪裡卡住就再加條件, 或是事後去優化條件
(二) 先不論條件,
假設well-behaved everywhere
這個approach像是碰到極限交換, adjoint存在性, 投影定理...之類的
原本都需要符合某些嚴格條件, 但是就先當作成立, 一路推到主觀覺得簡潔又好的結果時
再去做實驗說這個結果能不能用
這方向比較偏快跟實用性, 不過後續要嚴格化理論的話還是要回到(一)去一個一個篩選
條件, 找出最佳條件讓所有等式嚴格成立
-------------------------------------------
以上是我的習慣, 但是如同我之前在
#1YV0bcBv 詢問有關閱讀工程的論文時
常常他前面章節的
理論推導跟後面的實作完全對不起來
要馬是理論推導時省下一堆條件沒說要讀者自行猜測(甚至他就是當all well-behaved)
要馬就我看不出來他的實作是在實作理論講的那些東西
舉個之前提過的實際例子來說, 深度學習模型GAN在問世時有篇2014年的論文
他理論推導時說期望值會是1/2, 結果不僅理論推導有個問題是他對不同維度的R^n空間
做雙向可微的變數變換來導公式(不同維度不可能存在diffeomorphism), 實作上根本不會
有期望值1/2這個結果, 並且這個模型非常容易隨著亂樹種子影響, 接著長達好多年去
穩定這個模型
但是只要這個模型有好的幾次, 就不太用去在乎他的理論導對還是導錯
因為我在業界了所以我可以接受這個說法, 但是前提是
不要讓讀者花時間猜跟驗證
如果你先標明說這個程式碼實作跟理論推導我還沒證明是有關的, 我就可以不用浪費時間
去驗證彼此的相關性
也就是說今天我照順序閱讀下來, 當作你的理論是對的, 然後跟著實作去做
如果我做出來的結果效果不好或是跟理論推導不一樣, 我就能直接懷疑是我實作錯誤
但是如果理論都不一定對了甚至不知道實作到底有沒有在實作理論
那我要
猜的東西就一堆了...是這次倒楣取樣不好? 還是我code寫錯? 還是他理論錯?
還是他實作錯?
最後說一下, 用實數列看待算是我在學界分析學的習慣,
所以在看訊號/AI方面的論文發現大部分用統計模型看待時, 我就很好奇用統計假設
到底有什麼好處?
因為用實數列看待我可以完美的檢驗定理以及實作的契合度
但是用統計模型看待的話, 在效果不好時, 只能說取樣剛好不夠好, 或是實際情況
不符合假設
當然一定有人習慣統計假設了, 反而用實數列假設會覺得怪或是不實用之類的
因此我才想知道說熟悉這兩種假設的人, 他對於這兩種假設方式有什麼經驗可以分享
諸如我文中說的
(1) 如果不管採用什麼假設, 程式碼都是同一套, 這樣採取怎樣的假設有區別的意義嗎?
(2) 哪種假設比較"好", 有關於好的標準嗎? 主觀/客觀皆歡迎
(3) 我習慣的分析學的假設方式, 在訊號的建模上幾乎看不到, 是因為?
如果其中一個原因是因為訊號的不穩定, 我也可以把我分析學的假設設的寬一點啊
只是可能就沒有投影定理/Hilber space那些性質可以用
-------------------------------------------------------
以上分享, 謝謝
46F:推 PPguest : 對於原po說的分析方向或者實數列看待, 11/14 23:50
47F:→ PPguest : 感覺好像既知道卻同時又不知道到底是在做什麼, 11/14 23:51
48F:→ PPguest : 從Wiener filter的例子只看到在理論推導的部分。 11/14 23:51
49F:→ PPguest : 想知道原po的實數列看待到底是什麼, 11/14 23:51
50F:→ PPguest : 是否能用下面這個更簡單的例子來說明呢? 11/14 23:51
51F:→ PPguest : 以下不嚴謹、用詞不精確、很簡略警告! 11/14 23:51
52F:→ PPguest : 假設訊號 w_k = s_k + n_k, n_k 是雜訊,是 0 mean 11/14 23:52
53F:→ PPguest : 的 Gaussian noise, 有iid。 11/14 23:52
54F:→ PPguest : denoise的方法很簡單,除了邊邊要另外處理, 11/14 23:52
55F:→ PPguest : 中間的部分 x_k=1/4*[w_(k-1)+2*w_k+w_(k+1)] 11/14 23:52
56F:→ PPguest : 用機率很容易可以說明為什麼這個方法可以denoise。 11/14 23:53
57F:→ PPguest : 若用Fourier & Spectral Analysis來看同一個程式碼 11/14 23:53
58F:→ PPguest : 可以看成捲積,然後發現其實是某種low pass filter 11/14 23:53
59F:→ PPguest : 雜訊大概是某種高頻的訊號,因此可以denoise。 11/14 23:54
60F:→ PPguest : 感謝 11/14 23:54
嗨P大, 你這個例子正好可以討論
首先我說的以實數列看待Wiener filter的話就是如文中所說, 複製如下灰色:
--------------------------------------------------------------------
令w_n€l^1, s_n€l^2為兩數列
a := (a_0,...,a_N)€R^(N+1) to be determined
x_n := Σ_{i=0~N} a_i*w_(n-i)
e_n := x_n - s_n
║v║:= (<v,v>)^0.5 , for v€l^2, 即l^2的norm
求最小誤差問題
min Σ_{k=-∞~∞} |e_k|^2
a€R^(N+1)
可以發現這個最佳化問題等價於
min║w*A-s║ ---(●)
A€C
其中C:={A_n:Z→R│A_n = 0 for n not in {0,...,N}}為l^2中的(N+1)維子空間
(也就是說, 數列A_n只是把a_n左右無限補0而已)
--------------------------------------------------------------------
也就是說, 對我而言w_n, s_n只是兩串確定的實數列而已
而Wiener filter只是要找到A使得 w*A 與 s 的2-norm最接近
以上是我所謂用實數列看待(即
分析學很常用的假設, 如對函數/空間做限制)
接著你的例子應該是
使用Wiener filter來denoise
所以以我的分析學假設的話, 即是把既有的假設更加入了:
(1) w_n = s_n + N_n (我這裡的N_n是你的n_k, N代表Noise)
(2) N_n is independent of s_n
(這裡independnet的定義是 N_n€{s*A│A€C}^⊥
即噪音數列N_n落在子空間{s*A│A€C}的垂直空間上)
然後
分析學就做不下去了, 因為我查
兩個數列是獨立的定義時, 都定義在隨機變數/過程
當然我們也可以單純定義independent為s跟N在l^2這個向量空間中線性獨立
或是定義為s與N內積為0
或是blabla
只是目前我沒查到關於分析學定義兩數列獨立的通用定義
而即便我採取隨便一種定義, 會遇到很嚴重的實作問題是, 實務上只會拿到w,
拿不到s
而如果拿到s, 那也不用做denoise了...
再來看統計假設, 幾乎就是你寫的那樣假設w = s + N, N符合某個pdf(此為Gauss)
每每我論文看到這種語言形容時, 我就在
猜w,s,N到底是X_n(w)/X(w_n)/X(n)哪一種假設
然後先不管的話, 接著你推文所寫的x_k = (1/4)*...這個我雖然沒看過
但是應該跟
https://code-highlights.blogspot.com/2012/06/ 是類似的事情?
即是在隨機變數的獨立假設下, 推出transfer function(Wiener filter的頻域轉換)
是只跟SNR有關的函數
統計假設一樣會遇到拿不到s的問題, 因此上面那個網址就說
what the fuck? Do I need to know clear signal to obtain clear signal?
這也是我幾年前最初看Wiener時就有的疑惑
只是就如裡面說的假設autocorrelation of s可以
事先被其他沒有noise的影像估計
總之, 分析學的假設固然有其難操作的地方, 我也不是不能接受統計假設
只是每每遇到使用統計假設的訊號處理資料時, 下面兩件事情讓我不舒服而已
(1) 要猜測裡面寫的x_n是屬於X_n(w)/X(w_n)/X(n)哪一種
(2) 如果某個testing data/signal表現結果很糟,
只能說: (a) 取樣倒楣
or(b) moving average選取不好
or(c) 不是WSS
這種感覺蠻主觀的, 可能敘述的有點亂, 不好意思~
61F:推 ManOfSteel : 純推,以後再看 11/15 00:46
62F:→ PPguest : 看起來我讓你搞錯了,不是用Wiener filter來denoise 11/15 20:07
63F:→ PPguest : 是用 x_k=1/4*[w_(k-1)+2*w_k+w_(k+1)] 這個方法 11/15 20:07
64F:→ PPguest : 名詞的話應該是 averaging filter 這一類的 11/15 20:23
65F:→ PPguest : 我寫的w,s,n,我是這麼看:對每個k,n_k是隨機變數 11/15 20:56
66F:→ PPguest : s是"圖片"(我不知道一維的該怎麼稱呼),s_k是第k個 11/15 20:58
67F:→ PPguest : "像素".整個s在想像中是理想沒有被干擾的"圖片" 11/15 21:00
68F:→ PPguest : "圖片"本身沒隨機性,把它看成"那個"圖片"發生的機率 11/15 21:04
69F:→ PPguest : 是100%",所以s_k也看成是隨機變數,w_k也一樣 11/15 21:06
70F:→ PPguest : X_n(w)/X(w_n)/X(n)的部分,原本我以為只是符號的問 11/15 21:15
71F:→ PPguest : 題,搞清楚是指什麼就好。不過我剛剛才知道隨機過程 11/15 21:24
72F:→ PPguest : 有分離散時間和連續時間。所以……我不知道 11/15 21:24
73F:→ PPguest : 啊,本文有講,還請原po幫我刪掉22:17的推文 11/15 22:42
嗨P大, 22:17已刪
另外回覆您這段說的:
(1) 我想說你符號用我的w,x才想說你是在講同一件事情, 那我誤會了
(2) 承(1), 單純是x_k=1/4*[w_(k-1)+2*w_k+w_(k+1)]的話, 在我接觸的訊號處理中
只是固定的FIR濾波器, 也就是說x = w*h, 只是h不是causal也不是anti-causal
(h_0 = 1/2, h_(-1) = 1/4, h_1 = 1/4, h_n = 0 else)
跟Wiener filter那種是"找到濾波器A去最小化cost function"是完全不同的情況
因此這種固定濾波器的case我完全不會用隨機性去看他
單純就只是一個固定的LTI系統, 輸入w, 輸出x而已
不過要說有關也可以啦...因為
"濾波器A去最小化cost function"得到的A就是固定了
(不考慮real-time training, 就是pre-trained好的)
而這濾波器A長怎樣跟統計假設推出來的公式以及training的data有關
因此也可以說這個濾波器A是參考了
眾多抽樣的訊號後所得出來的平均值
而每個抽樣輸入w, 經過A輸出x
74F:推 recorriendo : 可了解一下RLS vs LMS filter 11/16 07:40
嗨r大, 幾年前第一次看到adaptive filter相關的名詞時, 就知道有
Wiener, LMS系列(BLMS, RLS, APA, NLMS, MDF...)...這些使用統計假設的算法
對我而言: (1) Wiener <-> 線代最佳近似解closed form的解 min_{x€R^n} |Ax-b|
(2) LMS <-> 使用
梯度下降法去逼近 closed form的解 min_{x€R^n} |Ax-b|
而梯度下降法涉及學習率μ, 所以有各種假設跟衍伸算法去討論μ的選取
對我來說, 在線代的角度, 有明確的結果:
(a) 若矩陣A一對一
則解x唯一並且 x = (A^*A)^-1 A^* b
(b) 若在任何一個初始值x_0
則存在r>0使得 |Ax-b| < |Ax_0-b|, where x = x_0 - μA^*(Ax_0 -b)
for all 0<μ<=r
(c) 若在任何一個初始值x_0
使得 |Ax-b| < |Ax_0-b|, where x = x_0 - μA^+(Ax_0 -b)
for all 0<μ<=1
這些就是研究方陣A^*A的固有值以及A^+得到的結果而已
但是Wiener跟LMS所給出的結果很類似, 就是把
以上(a)~(c)的結果加入了統計假設
我只能很主觀的說出,
純分析/線代假設下的結果我可以復證跟檢驗並且找實際例子說明
但是統計假設我不知怎麼的覺得無法檢驗, 只能被其
語言上的描述帶過去
75F:推 PPguest : 所以原po的分析學假設,我可以理解成之後會連接到 11/16 19:20
76F:→ PPguest : FIR濾波器的理論嗎? 11/16 19:22
嗨P大, 就我接觸的經驗, 濾波器是h, 被濾訊號是x, 濾出結果就是 y = h*x
然後就會研究DTFT, Z-transform,...這些東西來尋找
怎樣的h才能得到想要的y
這個approach下都不會涉及隨機過程建模, 訊號只是數列(離散)或是函數(連續)
的分析學假設而已
會有統計假設的層面大部分都是在需要
訓練濾波器係數的adaptive filter中才會引入
像是Wiener, LMS系列(NLMS, RLS, APA...)...需要pre/real-time trained或是統計假設
的關鍵字主題才會引入統計假設
因此我這篇才以Wiener來當明確的例子,
不用統計假設會怎樣嗎? 對實作有區別嗎?
77F:推 PPguest : 我問得明確一點,相對於統計假設,原po的分析學假設 11/17 09:52
78F:→ PPguest : 我是否可以理解成一樣也是用頻率的角度來解釋事情? 11/17 09:53
都可以阿, DTFT跟Z轉換都能對數列x_n(分析學假設)與隨機過成X_n(w)(統計學假設)做
反而是在adaptive filter(幾乎都是統計假設)不太會去分析頻率耶...
※ 編輯: znmkhxrw (59.102.225.191 臺灣), 11/17/2022 12:51:07