글이 많이 늦었습니다 ㅋㅋ 

근데 뭐 구독하시는 분이 있었을려나 ㅠㅠ ㅋㅋㅋ 여하튼 또 정말 잠시 짬이 나는관계로 키보드를 들었는데 ㅋㅋㅋ

이게 원체 내용이 만만치가 않고 분량도 많다보니 글을 쓰기 시작하는데 두려움이 앞서네요 ㅋㅋ

일단 천천히 써가 보고 ㅋㅋㅋ

혹시나 ADF 를 공부해 가시는 분들이 제 포스팅을 보고 저보다는 덜 삽질을 하면서 공부를 시작하시길 바랍니다 ㅋ

그리고 중요한 사실은 물론 저도 이것을 공부했지만 완벽하지 않다는 사실입니다. 제가 아는 한도 내에서, 제가 이해한 것들을 기술하는 것이니, 틀린부분이나 부족한부분은 가감없이 지적해 주시고, 혹 지나가시던 고수분들이시라면 저에게도 많은 지도 편달 부탁드리겠습니다.

그럼 한번 시작해 볼까요?


1. Wiener Filter 의 기본

Adaptive Filter 를 알려 달라니까 왜 자꾸 Random Process 이야기 하고, 통계적 신호처리 이야기하고, 이제는 Wiener Filter 를 이야기하느냐 라고 생각하시는 분들 있으실 것이라고 생각합니다.

이 글에서 그 궁금증을 해결해 드리도록 하겠습니다.

1900년대 초중반에 미국의 수학자 Norbert Wiener 에 의해서 창시된 이 filter 는 입력을 원하는 출력과 가능한 매우 유사하게 변환시켜주는 필터입니다. 처음 접하시는 분들이 여기서 헷갈리시는 것이, FIR, IIR 구조의 필터 외에 Wiener Filter 라는 구조가 또 있는가? 라는 식으로 생각하시어 접근하시는 경우가 있는데 이러면 문제가 어려워집니다 ㅋㅋ 차라리 버터워스, 체브쉐비 필터와 같은 개념이라고 생각하세요. 자세한것은 뒤에서 언급하겠습니다.

현재 우리가 다루는 시그널은 Random Process 입니다. 위에서 간단하게 말씀드렸듯이 이 필터는 내가 원하는 출력과 유사하게 변환을 시켜준다고 하였지요? 그래서 버터워스나 체브쉐비 필터와는 다르게 desired input : d(n) 이라는 라인이 하나 더 나와있게 됩니다. 일단 그림한장 보고 가시죠.


<그림 1> 기본적인 Wiener filter 의 구조


그림 1을 보시기 바랍니다. 여기서 주의하셔야 할것은, 위의 그림 전체가 Wiener filter 입니다. 간혹 가다가 가운데 네모박스 되어있는 Linear discrete-time filter 부분이 Wiener filter 라고 착각하시는 분들이 있는데 그렇게 접근하시면 이 내용을 끝까지 따라오기가 굉장히 어려워 지십니다.  

Linear discrete-time filter 에 대해서는 학부 2학년 선형 시스템 등에서 많이 배우셨을 것입니다. FIR 구조를 갖는 All-zero filter, IIR 구조를 갖는 pole-zero filter ㅋ 기억나시지요? 자세한것은 이미 아시리라 생각하고 넘어갑니다. 여하튼 이곳에는 이런 필터구조가 들어가요. 헌데, IIR 필터구조는 FIR 구조에 비해 같은 performance 를 내기위해서 더 적은 연산량을 요구한다는 장점을 갖는 반면에 필터 전달함수의 pole 이 z-domain 의 Unit Circle 안에 있지 않을 경우 시스템의 출력이 발산을 할수 있다는 무시무시한 단점을 가지고 있습니다. 그래서 대부분 FIR 구조의 필터를 이곳에 적용시키는것이 대부분 이랍니다. FIR 구조를 다른 말로 TDL 이라고도 불르죠. Tap-delayed line 의 약자입니다. 그러니 뭐 TDL 을 보셔도 쫄 필요 없어요 ㅋ 아, 필터구조를 FIR 로 짰구나 라고 생각하시고 쉽게 넘어가십시용 ㅋㅋ

자 그럼 여기에서 나오는 저 w 라는 것은 무엇일까요? ㅋㅋ 뭐 쉽죠 ? FIR 필터의 필터계수라고 생각하십시요. 사용하는 FIR 의 차수에 따라 w 의 갯수가 변화하겠죠?? ㅋㅋ Wiener Filter 는 저놈의 w 를 값을 정의해 주는 필터입니다. 어떻게??? Cost Function 의 결과가 최소가 되도록 ㅋㅋ 지금은 말이 어렵지요? Cost Function 이라는 것을 잘 모르니까요 ㅋ 그럼 밑에서 Cost Function 에 대해서 이야기 해보지요.


2. Cost Function

한국말로 "비용함수" ㅋㅋㅋ 아 없어보여 ㅋㅋㅋ

여하튼, 우리가 하고싶은 일은 Input 으로 아무 신호나 때려 집어 넣어두고 내가 원하는 출력 포멧이 나오도록 필터의 계수를 얻고싶은 것입니다. 내가 원하는 신호와 내가 정한 필터의 출력이 완벽하게 일치를 한다면???? 내가 원하는 신호에서 필터출력을 뺀 값이 0 이 되면 되겠지요?? 그 조건을 만족하는 필터의 필터계수 w 를 찾아내자는 것입니다. 이 개념을 복소 입력으로 까지 확장해서 우리가 0 으로 만들고싶은 것을 error 이 e(n) 이 아닌 error 의 제곱평균 좀 유식한 말로 error 의 Mean Squared Error (MSE) 로 설정을 하는 것이지요. 명심하세요. Wiener Filter 의 Cost Function 은 MSE 입니다. 수식으로 정의해 보자면 아래와 같겠죠??


<그림 2. Cost function : Mean square error>


3. Linear Optimum Filter

자 그럼 앞에서 뭘해야할지에 대해 언급했다면 지금부터는 어떻게 해야할지에 대해서 한번 말해보기로 하지요. 위의 블럭도에서 본 필터를 TDL 방식으로 풀어서 다시 써보도록 하죠. 그럼 MSE 가 어떻게 보이는지도 한눈에 들어올테고. 일단 그림부터 나갑니다.


<그림 3. TDL Filter 구조를 갖는 Wiener filter>

익숙한 구조이지요? ㅋ

이런 FIR 구조의 출력은 아래와 같이 쓸수있지용? 


이정도는 뭐 ㅋㅋㅋ 근데 이렇게 시그마 날라다니고 이래서야 어떻게 증명을 해나가겠습니까 ㅋㅋ 그래서 이식을 아래와 같이 벡터 형태로 표현하도록 하겠습니다 ㅋㅋ

뭐 쉽지요 ㅋㅋ 일단 이놈의 FIR 구조 필터출력은 입력 신호와 필터계수에 의해 나오게 되는것이니까요 ㅋ

 이렇게 필터의 출력까지 정의를 내렸으면 우리는 비로소 에러 시그널을 정의 내릴수 있습니다 ㅋ

아 이거 너무 자세히 할려다보니까 아주 끝이 없네 ㅋㅋㅋ


너무나도 명확한 사실이죠? ㅋ 내가 원하던 신호에서 현재 나왔던 출력을 빼준것이 에러다 라고 말하는거니까요 ㅋ

앞에서 말한 Cost function 을 생각해보세요 ㅋ

에러의 Mean Square Error (MSE) 를 가져다가 쓴다구 했지요?? 

그대로 구해보지요 ㅋ 에러 제곱의 평균 ! ㅋㅋ 근데 여기서 말하는 평균은 앙상블 평균 (Ensemble Average) 입니다 

원래 우리가 첨부터 이야기 해온게 통계적 신호처리였자나여 ㅋㅋ Randon process 의 평균은 앙상블 평균을 구해야하자나여? ㅋㅋ 이때 신호가 WSS 하고 Erogodic 하다면 앙상블 평균과 시간평균은 같다라고 볼수있구???

기억 나시죠? ㅋ 안나면 앞으로 되돌아가서 다시 공부 ㅋㅋㅋ



자 위에서 구한 에러의 MSE 의 최종 출력을 보시지요 ㅋㅋ

핕터계수 w 에 관한 2차 식으로 정리가 됨을 알 수 있으시지요? ㅋㅋ

그럼 이놈의 위너필터의 필터계수는 뭘 만족해야겠습니까? ㅋㅋ

그라죠이~~ 원래 우리가 하고자 했던게 Cost Function 을 최소한 으로 만들고 싶었던거죠?? 

그말인즉슨, error 의 MSE 가 최소가 되도록 하겠다 이거자나여 ~ ㅋㅋ

그럼 저위의 MSE 식이 최소가 되도록 해야겠군요 ㅋ 식으로 나타내 보지요~ 


딴지거실분??? 있으신가요?? 

당연히 있어야지 왜 없어요!!!!

이거는 말이 안되자나여 ㅋㅋ

2차식에서 미분한것이 0이 되는 지점이 변곡점은 맞지요 ~ 이 지점이 최소라고 할 수 있나요??

불연속적인 점을 제외한다고 해도 저 위의 식이 성립하려면 2차항의 계수가 양수일때만 가능한 이야기이지요??

중학교때 생각들해보셔요 ㅋㅋㅋ

네네~ ㅋㅋ 저위에서나온 cost function 은 Positive Definite 되어 있습니다. 그래서 위에서 말한 미분한게 0 이 되는 지점이 비용함수를 최저로 하는것이 맞아요 ㅋㅋ

왜그러냐구요???

증명해 드릴수 있는데요~ 그거는 궁금해하시는분들이 있으면 아래에 댓글로 알려드릴게요 ~ 아직도 해야할 일이 너무 많아요 ㅋㅋ 일단은 " 아 ~ 비용함수가 필터계수의 이차식으로 표시되는데 이 식의 최고차항 계수는 항상 양수구나" 이렇게 알아두시고 넘어가시기를 바랍니다~

다시한번 정리하면!!! Error 의 MSE 를 0 으로 만드는 Wiener filter 의 필터 계수 wk 를 찾는 것이 지금 우리가 하고 잇는 과정이랍니다~ 

ㅇㅇ 그럼 직접 미분해서 식을 정리해보도록 하지요~




아 이거 진짜 며칠에 걸쳐서 써야겠네 ㅋ 해도해도 끝이 안나네 정말로 ㅋㅋ 일단 여기까지 쓰고 담번에 이어서 마져 써드릴게요 ㅋㅋ

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear

이번 포스팅에서는 Adaptive Signal Processing 이 어디에 어떻게 쓰이는지, Filtering 이 무었인지 등의 기본이 되는 이론들을 소개할까 합니다. 

전체적인 틀을 크게 한번 보고 나서 세부적인 부분을 다루면 그만큼 이해하기 쉬울것 같아서요 ㅋㅋㅋ

1. 필터링이란 무엇인가? (What the filtering is for?)

: 여러가지 다양한 정의가 있겠지만, 저는 이렇게 정의 내린답니다. " 신호 중에서 원하는 정보를 뽑아 내는것 " R.P 에서 원하는 정보라 함은 "원하는 통계적 특성" 이 되겠지요? statistical moment 용 ㅋㅋㅋ

filter 로 할 수 있는 작업을 크게 3가지로 나누어 보겠습니다. 

(1) filtering
(2) smoothing : 측정된 데이터를 이용하여 현재의 출력값을 결정하는 방법입니다. 다양한 스무딩 방법이 있지만 그중에서도 Adjacent Averaging method 와 Savitzky-Golay method 이 대표적이죠? 저는 이중에서도 후자인 Savitzky-Golay Smoothing filter 를 주로 쓴답니다 ㅋㅋ


요론식으로 스무딩 된답니다 ㅋㅋ 상기 그림은 제가 뽑아낸 호흡 신호를 스무딩한 그림입니다. ㅋ 스무딩 필터 이야기 하는 곳이 아니므로 관심 있으신분들은 개인적으로, 댓글로 해결하도록 해요 ㅋ

(3) prediction : forward prediction 과 backward prediction 이 두가지로 나눌수 있습니다. 너무 직관적이죠 이름이? ㅋ 과거의 정보로 미래에 일어날 일들을 예측하는 것을 forward prediction 이라고 합니다. 그 반대가 backward prediction 입니다. 

(4) Examples of the linear filtering 

i) Wiener filter : linear optimum system 설계시 주로 이용됩니다. 영상처리나 뇌파 분야, 즉 rp 를 다루는 분야에서는 이 필터에 익숙하실 것입니다. 신호의 통계적인 특성들을 알고 있을 때 사용할 수 있습니다. mean square 기반으로 target 신호와 내가 만든 모델 신호간의 error 를 최소화하려는 시도라 볼 수 있습니다. 다만 가장 큰 단점으로, nonstationary signal 에 적용하기에는 부적적합니다. 

ii) Kalman filter : 가속도 센서와 자이로센서의 출력을 융합하는데 주로 쓰이지요? ㅋ 쿼드콥터 등이 보편화된 이 시기에 대학 학부생들의 입에서도 이 단어가 심심치 않게 들립니다. 굉장히 복잡한 개념이지만, signal 의 trend 를 잘 따라갈 수 있게 해주는 filter 입니다. 추정값을 쓸 수 있는 모델링 된 식이나, reference signal 이 꼭 있어야 합니다. 이 부분은 훗날 기회가 된다면 다시한번 포스팅 하도록 하겠습니다. 이 Adaptive filtering 포스팅의 최 후반부가 되어야 겠군요 ㅋㅋㅋ


2. Adaptive Filter 란 무엇인가??

많은 사람들이 이렇게 물어보면 막연하게 대답합니다. 어떻게 동작하는지는 알겠는데 도대체 뭐를 구해내겠다는건지를 모른채 그 용도에만 초점을 맞추고 있는 것이지요. 여기서 한번 알아보겠습니다. Wiener filter 를 이야기할때 최적 필터 (optimum filter) 에 대해서 잠시 이야기 하였지요? 통계적 특성이 변화하지 않는 신호일때 Wiener filter 를 이용하여 최적 필터 계수를 구해낼 수 있습니다. 헌데.... 시간이 지남에 따라 통계적 특성이 달라지는 신호라면?? 혹은 실시간으로 신호가 들어오기 때문에 신호의 통계적 특징을 모르는 상태라면?? 난감하죠??
그래서 Adaptive filter 가 등장하게 됩니다. 1975 년에 Widraw 인가? 정확학 스팰을 모르겠네요 ㅋㅋ 여튼 이사람과 아이들에 의해서 LMS 알고리즘 기반의 Adaptive Filter 의 개념과 Application 이 등장하지요

즉, Adaptive Filter 는 시간이 지남에 따라 통계적인 특성이 달라지는 non-stationary 한 시그널을 포함해서 이 신호에 대해 샘플이 들어오는 매 시간마다 Optimum Wiener Filter 의 계수를 추정해 가는 알고리즘들을 통틀어서 Adaptive Filter 라고 부릅니다. 이렇게 추정해가는 방법이 LMS 알고리즘 기반으로 찾느냐 RLS 기반의 방법으로 찾느냐 등에 따라 적응필터의 이름이 바뀐답니다. ㅋ

이 때 사용되는 필터의 형태는 FIR, IIR 모두 상관 없지만, 필터의 시스템이 발산하지 않게 하도록 하기 위해서 FIR 필터를 대부분 사용합니다. 왜 FIR 필터의 시스템이 안정적인지에 대해서는 모두 아시리라고 굳게 믿습니다.

뒷부분에서 자세하게 다루겠지만 최적 필터 계수란 것은 아래의 그림과 같습니다. 벡터의 내적이나 함수의 내적을 생각해 보시면 되겠네요. 공업수학에서 내적 이야기할때 기준 벡터로의 투영 (Contour) 이야기 많이 했었지요? 이 벡터가 다른 한 벡터의 방향으로 얼마의 크기성분을 가지고 있는가 ? 를 계산하는것이 내적 아닙니까 ㅋㅋ 신호(함수) 의 내적도 같습니다.


이 그림을 보십시요. 측정한 신호 u(n) 의 크기를 조절해 (w) 소망 신호인 d(n) 과의 거리가 가장 가까워지도록 만들면? 그것이 최적의 필터가 되겠지요. Error 가 가장 적어지는 것이니까요. Weighting Factor 를 곱하기만 해서 신호 벡터의 방향을 바꿀 수는 없습니다. 결국 크기를 얼마나 조절하느냐 라는 개념이라고 단순화 시켜 생각할 수 있는데 그 때 그 차이 크기가 가장 작아지도록 하는 계수들 w matrix 를 갖는 필터를 optimum filter 라고 부를 수 있는 것입니다.

Adaptive Filter 를 구현함에 있어서 고려해야할 Factor 들이 있습니다. 지금은 어떤것들이 있는지 일단 알아보기만 하겠습니다. 

(1) Convergence rate (수렴속도) : 얼마나 빨리 Optimum Filter 상태로 수렴해 가는가?
(2) Misadjustment (적응정도) : 수렴한 후에는 얼마나 계수의 변화폭이 큰가? (수렴후에는 변화폭이 작을수록 좋다)
    - (1), (2) 은 Trade-Off 관계에 있습니다 ㅋㅋㅋ

(3) Tracking : 얼마나 원하는 신호를 잘 추적해 가는가?
(4) Robustness : 필터의 구조가 탄탄한가? 모든 신호에 일관성 있게 적용되어 출력되는가?
(5) Computational requirement : 알고리즘의 계산량은 얼마나 되는가?
(6) Structure : 필터의 구조가 얼마나 복잡한가? 
    -(5), (6) 은 실시간으로 mcu 나 DSP 칩에서 구현을 하지 위해 연산속도와 battery 소모 등을 고려하기 위해서 고려하는 것입니다.

3. 필터의 구조 (Filter Structures)

(1) FIR structure

i) Transversl (Taped-delayed line) : 우리가 흔히 아는 FIR filter 구조입니다. 최대 FIR filter 의 Order 만큼의 delay 가 발생되며, 각각의 샘플에 원하는 w 가 곱해진 후 모두 더해지는 구조로 되어있지요? 출력이 다시 입력으로 feedback 되거나 입력이 출력쪽으로 feedforward 되지 않는다는 점도 유의해서 볼 필요가 있군요



ii) Lattice, escalator (Gram-Schmidt) 

흐음.. 이게 저도 잘 모르는 부분인데요 ㅋㅋㅋ Lattice(격자) 구조와 위에서 설명한 TDL 구조 두개를 합쳐서 만듭니다. 왜 그러냐면 통계적으로 상관이 없는 신호 (uncorrelated) 된 신호는 변환 속도가 빠르답니다. 그래서 Lattice 구조를 통해 신호의 통계적 특성을 없앤 후에 TDL 구조로 필터링을 하는 구조로 되어있어요


요론 구조인데요 ㅋㅋ 아직 저도 완벽하게 모르고 사용도 안해본지라 ㅋㅋ 훗날 쓰게 되면 한번 포스팅 하도록 하겠습니다. 고수분들이 있으시면 댓글로 설명좀 해주십시요 ㅋㅋ

iii) Systolic array

Parallel computing 이 가능한 구조라는거 같은데 ㅋㅋ ii) 도 완벽하게 정복 못한 제가 iii) 에 대해 씨부리면 거의 대부분이 잘못된 정보일듯 ㅋㅋㅋ 여기서 함구할테니 훗날을 기약하시던지 아니면 지나가던 강호 무림의 고수분이 댓글로 알려주시기를 바래야겠습니다 ㅋㅋ

(2) IIR structure : 특별히 언급할 것은 없습니다. 출력의 Feedback 에 의해서 Stability 의 문제가 발생할 수 있습니다. 그래서 ㅋㅋㅋ FIR 형태로 Adaptive Filter 를 주로 만든다고 위에서 말씀드렸죠? ㅋ


4. Linear Adaptive Filter algorithms (선형 적응 필터의 알고리즘 종류)

(1) Stochastic gradient approach

 - Cost function 의 MSE (Mean Square Error) 의 크기를 최소화 하겠다는 발상입니다. 이를 통해 최적 Wiener filter 의 계수를 추정해 가는 과정입니다. 대표적으로 LMS (Least mean square) 알고리즘이 있습니다

ex) TDL filter with the LMS algorithm

장점 : 매우 간단하고 효율적입니다. C 로 코드를 짤 경우 3줄 밖에 되지 않습니다.
단점 : 수렴 속도가 다른 알고리즘에 비해 상대적으로 느립니다.

(2) Least-squares estimation

- Weighting factor 가 곱해진 에러 제곱의 합을 최소화 하겠다는 발상입니다. 대표적으로 RLS 알고리즘이 있습니다.

es) TDL filter with the LS algorithm

장점 : 수렴 속도가 빠릅니다.
단점 : 계산량이 다른 알고리즘에 비해 상대적으로 많습니다. 따라서 알고리즘 구현도 복잡합니다.
         matrix inversion 에 의해 대수학적으로 안정적이지 않을 수 있다는 잠재적인 문제점을 앉고있습니다.

RLS, fast RLS, QR-decomposition 등의 알고리즘이 LS 기반의 알고리즘입니다.


5. Adaptive filter applications (적응 필터로 할 수 있는 것들)

- 이거이거 굉장히 중요합니다. 어디다 어떻게 쓸 수 있는지 알아야 뭘 써먹든 말든 하지요. 외울 필요도 없습니다. 블럭도를 보고 "입력이 이렇고 출력이 이러니까 이것은 이것이다." 라고 이해 할수 있어야 합니다. 흔히들 생각하는 필터링 이외에서 모델링, 예측, 노이즈 캔슬레이션 등에 다양하게 이용할 수 있습니다. 그럼 하나씩 알아 볼깝숑?

(1) System identification

: 이름 무시무시 합니다. 시스템을 정의 내리겠습니다. 모르는 어떤 시스템으로 들어가는 입력 신호를 ADF 의 입력으로 사용하고, 시스템의 출력과 ADF 의 출력의 차이 (Error) 를 최소화 함으로써 모르는 시스템을 배껴버리겠다는 소리죠. 모르는 시스템을 표현할 수 잇는 filter 의 계수를 알아버렸기때문에 우리는 모르는 시스템을 모델링 해버렸다고 생각할 수 있는것입니다. 그럼 이 글을 그림으로 블럭화 시키면 어떻게 되는지 한번 알아볼깝숑?


이렇게 표현이 가능합니다. 자세한 구현 알고리즘은 훗날 다루도록 하고 아래에는 예제 그림을 보여드리도록 하겠습니다. 


사진이 왜 이따위로 나오지? ㅋㅋ 여튼 ㅋㅋㅋ
White noise 를 이용해서 어떤 필터를 건 출력을 추정 해 본 것입니다. 아래그림의 빨간색을 보시면 처음에는 헤롱헤롱해서 이상한 값을 뿌리지만 뒤로갈수록 정확하게 추정하는 것을 알 수 있습니다. 이 때 추정된 계수 w 는 처음 입력신호에 취했던 fir 필터의 계수와 일치합니다. 즉, 우리는 모르는 시스템(여기서는 filter) 을 추정 했다고 볼 수 있는 것이지요. 

(2) Inverse modeling

: 이것도 외우지 마시고, 이렇게 생각하십시요. ADF 의 입력으로 어떤 모르는 시스템의 출력이 사용되고, ADF 의 출력과 어떤 시스템에 들어간 입력신로를 딜레이 시킨 신호와의 에러를 최소화 시켜 어떤 모르는 시스템의 입력값을 유추해 내겠다. 이때 delay 된 input 을 사용하는 것은 system 의 causality 를 위함입니다. 즉, Inverse modeling 이 되는 것이지요. 위와 거의 비슷한 과정이기 때문에 따로 예제는 보이지 않겠습니다. 아래 보이는것이 이 개념의 블럭도 입니다.


(3) Prediction

ADF 의 입력으로 delay된 input signal 을 사용하고 ADF 의 출력과 딜레이 되지않은 input 의 Error 를 최소화 시킴으로써 과거의 입력으로 미래의 출력을 예측할수 있게 할 수 있습니다. 


짱 신기하지 않습니까? ㅋㅋ 저는 짱 신기했는데 ㅋㅋ


흠. 이것도 화질이 그리 좋지 않네요 ㅋㅋ 하지만 보십시용 빨간색이 ADF 출력이고 파란색이 입력 시그널 입니다.
초기에 빨간색 라인이 보이는 이유는 딜레이 되어있기 때문이겠지요? ㅋ 하지만 시간이 지나 수렵해 가면서 어떻게 되었습니까? ㅋ 빨간색이 거의 보이지 않죠? ㅋ 딜레이된 입력을 사용해서 미래의 출력값을 예측해 입력파형과 똑같은 출력을 ADF 가 내보내고 있기 때문이랍니다 ㅋㅋ 신기하지 않습네까? ㅋㅋㅋ
이거 잘하면 어디다 이용할수 있나염? ㅋㅋ 주식!!!! ㅋㅋㅋ 세상만사 ADF 와 같다면 정말 대박이겠다 ㅋㅋㅋ

(4) Interference cancelling

이게 우리가 가장 DSP 에서 흔히 쓰이는 개념이지요 ㅋ Noise Cancelling 도 이 개념입니다. 내가 측정한 신호를 ADF 의 입력으로 사용하고 ADF 의 출력과 내가 바라는 신호와의 차이를 최소화 함으로써 원하지 않는 노이즈성분만을 따로 뽑아내는것입니다. 60Hz 전원 노이즈 제거 등에 주로 쓰이지요? ㅋㅋ 더 나아가면 태아 심전도를 디텍팅 하는쪽에서도 쓰입니다. 



아래는 예제 입니다.

25Hz 와 60Hz 를 섞어서 60Hz 만 제거를 해보았습니다. 검증을 FFT 를 이용해 주파수 분석을 함으로써 60Hz 가 빠진것을 보여드리도록 하곘습니다. ㅋㅋ


짜짜잔 ㅋㅋ 신기하지 않습니까? ㅋㅋㅋㅋ


일단 이번 포스팅에서는 이정도로만 알아두시면 좋을 것 같습니다. ㅋ 아 이런식으로 쓰이는 구나 정도만 ㅋ

다음 포스팅에서는 Wiener Filter 부터 해서 차근차근 알아가 보도록 하겠습니다용 ㅋㅋ

많은 도움이 되셨기를 바랍니다. 그럼 다음번에~ ㅋㅋ

궁금증은 댓글로 하셔용 ㅋ 비밀글은 다 지워버리겟습니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear

이거 말고도 써야할 글들이 많은데 다 마무리도 짓지 못하면서 이렇게 또 무거운 키보드를 드네요 ㅋㅋ

다른건 어느정도 할줄알고 결과가 나온 부분이라서 쉽사리 펜이 잡히지 않지만, 이 부분은 지금 제가 힘을들여가며 공부해가는 것이라서 또 훗날을 위해 정리를 하게 되나 봅니다.

시간이 조금만 더 많다면, 이제 막 시작하시는 분들을 위해서 더욱 자세하게 작성을 할 수도 있겠지만, 저도 공부를 하는 학생인지라서 ㅋㅋ 제 위주로 쓰지만, 그래도 최대한 다른분들이 이해하기 쉽도록 풀어서 써보도록 하겠습니다. ㅋ

서론을 그만하구요 ㅋ

일단 오늘 한강의 시작해 보지요~ 몇개의 포스팅에 나누어 올라갈지는 모르지만요 ㅋㅋ

Adaptive Filter !

굉장히 멋진 이름입니다. 공학을 하는 사람들을 어떤식으로든 한번 들어는 보았을 것입니다. 특히나 의공학을 하시는 분들은 Fetal ECG, EEG 에 응용된다고 귀에 못이 박히게 듣지만, 막상 어떤 이론에 의해 이렇게 되는지를 잘 모르지요 ㅋ

사실 학부때 Random Process 를 제대로 배우지 않기 때문에 설명하기에 무리가 따르는것도 사실입니다.

Adaptive Filter 를 이해하기 위해서는 기본적인 통계 이론과 랜덤 프로세스를 알아야한다는 말입니다.

이어지는 챕터에서 가볍게 랜던프로세스에 나오는 용어들과 정의, 통계적 신호처리에 대해 가볍게 언급하고 넘어가고자 합니다.

이 글이 써지고 있는 카테고리가 적응 필터이기 때문에 매우 자세히 언급하지는 않을 것입니다.

관심이 있으신 분들을 직접 책을 찾거나 구글신에게 부족한 부분을 채우시길 바라고, 저는 훗날 Wiener Filter 나 LMS 알고리즘을 언급하면서 필요한 이론들을 그때 설명하도록 하겠습니다. 

그럼 가벼운 마음으로 이런게 있었군~ 하면서 글을 읽어보시겠어요? ㅋㅋ

1. Statistical Model & Deterministic Model : 일반적으로 사용되는 모델을 크게 두종류로 나누어 보았습니다. 랜덤 프로세스에서 어떠한 sample function 의 미래 값을 정확하게 예측 가능하면 Deterministic 모델이라고 부릅니다. Non deterministic모델은 그 반대말을 의미한답니다. 반대로 통계적 모델링이라는것은 신호의 통계적 특성을 이용해 모델링하는 문제들에서 많이 사용됩니다. 특히나 통신문제에서 많이 사용되죠~ 오디오 코딩이나 음성신호~ 초음파의 Beam forming등에 주로 사용됩니다. 물론 제가 전공하는 생체신호들 (ECG, EMG, EEG 등등) 도 통계적 모델링이 되는 것이지요. 아래는 ECG 에서 노이즈를 제거하는 예입니다. LMS 기반 알고리즘이 사용되었네요 ㅋ 자세한것은 훗날 알려드리고 이번에는 의공학에서 통계적 모델이 이런용도로 사용되는구나 정도만 알고 넘어가세요 ㅋ


2. Signal 의 분류 (Power Signal , Energy Signal) : 이 부분은 학부의 Linear System 에서 무조건 배우는 내용이지요 ㅋ 시그널을 크게 두종류로 나누어 보면 위와 같이 나눌수 있는 것이지요. 근데 다들 Signal 이 뭔지 System 이 뭔지는 정확히 알고 계시겠지요? ㅋㅋ 모르신다구요? ㅋㅋ 공부하세요!!! ㅋㅋㅋ 아시는 분들이 아랫쪽에 댓글 달아주시겠지요 뭐 ㅋㅋ 


너무 기본적인 내용이라서 길게 사족 달지 않겠습니다.

이정도 사진 두장 보시면 생각이 나시면서, 혹은 모르더라고 다른곳에서 자료를 찾아보기에 충분한 자료라 사료됩니다~ ㅋㅋㅋ 갑자기 문득 생각나네요 ㅋㅋ 학부때 ㅋㅋ "주기함수는 파워시그널"  하면서 외우던 기억이요 ㅋㅋㅋ


3. Random Event , Random Variable , Random Process

이것만 가지고 설명하기에도 한달 이상은 걸리겠지요? ㅋㅋ 무론 저도 완벽하게 알고 있지 않다고 스스로 생각하고 있답니다 ㅋ 지금 제 자신이 이해하고 있는 부분이 맞는지도 잘 모르겠구요 ㅋ 그래서 이 개념은 스스로 공부하는것이 좋을 듯 싶어요 ㅋ 알기위해서는 기본적인 확률 & 통계 이론이 필요합니다. (pdf, cdf, joint-pdf 등등)

(1) Random Event : '확률' 로 표현 됩니다. ( S = {e1, e2, ..... } )
(2) Random Variable : '확률 밀도 함수 (Probability Density Function)' 으로 표현됩니다.   
                                ( X = {x(e1), x(e2), ..... } ) 

(3) Random Process : '시간의 개념이 추가된 Random Variable' 형태로 표현됩니다. 이때 표현되는 pdf 는 두개의 독립변수에 영향을 받기 때문에 joint pdf 로 표현이 되겠지요? ( X = {x(t , e1) , x(t , e2) , .....} )

아래의 초 간단 예제를 보시고 위의 세가지 개념의 차이점에 대해 감을 잡으시길 바랍니다. 이 중에서 우리가 Adaptive Filter 를 구현 해 감에 있어 주로 다루게 될 것은 당연히 Random Process 가 되겠지용?


Random Process 보다는 Random Event 와 Random variable 사이의 관계가 굉장히 헷갈리는데요 ㅋ
Random Event 를 내가 수학적 계산을 하기 위해서 내가 원하는 수에 mapping 을 시킨 것을 Random Variable 이라고  생각하셔도 무방할 듯 싶습니다. 이벤트이기 때문에 각 이벤트가 일어날 확률로 표시되는 것이고, 이것을 내가 원하는 수에 매핑 시켰기 때문에 r.v 는 숫자의 형태로 보여지는 것이지요. 숫자의 형태를 띄어야 pdf 에 인자로 집어 넣을수가 있자나요 ㅋㅋㅋ


이것이 바로 Random Process 의 고전적인 그림입니다 ㅋ

이거 나오면서부터 머리가 아파요 ㅋ 조기 엄청난 이름이 보이네요 ㅋㅋ 그 이름도 유명한 Ensemble ! 앙상블 ㅋㅋ 아오 이거 정말 짜증나지요 ㅋㅋ

여튼 여기서 말하고자 하는것은~ r.v 에 time 의 개념이 추가된 하나의 시그널을 Sample function 이라고 부르지요? 이런 sample function 들이 모여서 random process 가 됩니다. 

process 라는 단어때문에 뭔가 이런 데이터 들의 집단이라고 처음에 잘 생각하지 않고, 뭔가를 하는 과정이라고 생각하는 경우가 있습니다. 저도 왜 이렇게 이름을 지었는지 모르겠지만, 이해가 안되면 초기에는 암기하시기 바랍니다.

time 개념이 추가된 random variable 들을 sample function 이라고 할때, 이러한 sample function 들이 모인 집단을 random process 라고 한다. 


4. Statistical Independence (통계적 독립) : 두 r.p X(t), Y(t) 가 S.I 라 함은, 어떠한 시간에서의 각 프로세스에 해당되는 랜덤 변수들이 서로 독립적이란 소리다. 즉 어느 임의의 시간에서도 두 프로세스가 상호 의존적이지 않다는 소리. 더욱 직관적으로 말하자면, 어느 시간 t1 에서 Y(t1) 의 출력식에 X(t) 에 관한 식이 들어가지 않는다는 소리다. ㅋ 즉, 각각의 프로세스는 자기 자신으로 완전체다 ㅋㅋㅋ 


5. Stationary, WSS (Wide Sense Stationary) : 점점 맨탈 붕괴가 다가 오지요? ㅋㅋ 대부분의 랜덤 프로세스는 Wide Sense Stationary 하다고 가정한 뒤에 신호처리를 하게 됩니다. Stationary 가 뭔지도 모르겠는데 맨날 WSS 라고 하니 그것은 또 무엇인가 헤메다가 결국 다 포기하게 되지요 ㅋ Stationary 는 사전적 의미로 정적이라는 뜻이지요. 시간이 지나더라도 그 신호의 통계적 특징(Moment, pdf)이 변화하지 않는 신호를 말합니다. 화이트 노이즈나 지속적으로 울리는 사이렌 소리 같은것이 해당되겠네요. Non-Stationary 는 그 반대겠지요~ 가장 쉽게는 공기중에 울리는 음파는 시간이 지남에따라 그 진폭이 사그라 들면서 사라지지요 ㅋ Non-Stationary 하다고 할수 있습니다. ㅋ 즉 t시점의 출력 파형은 t-1 의 출력 신호에 의해 결정되는 신호들은 Non-Stationary 한 것이지요 ㅋ

이 지구상에 완벽하게 Stationary 한 신호는 White Noise 한가지 밖에 없습니다. 그렇다고 신호를 Non-Stationary 하다고 접근하기에는 모든 문제가 너무 복잡해져버려서 WSS 라는 개념을 도입하게 됩니다. First order, Second Order Stationary 하면 Wide Sense Stationary 하다고 부르자. 그럼 First order-stationary 와 Second-order Stationary 가 무엇이냐! 아래의 식과 그림을 보시면 쉽게 이해가 되실듯용. 조금 더 풀어 써 본다면 어떤 프로세스의 1차 평균과 자기 상관함수(2차 평균) 가 시간 축에 무관한 경우 WSS 라고 부릅니다. 더 궁금하신 점은 댓글을 이용합시다~ (토론의 장) ㅋㅋ




6. Autocorrelation : 크게 설명이 필요하겠습니까? ㅋ 자기 자신과 자기 자신의 딜레이된 신호와의 연관성을 보는것입니다. 식도 간단하지요? ㅋ 

E{X(t)X(t+tau)} 

tau 가 0 일때는 어떻게 됩니까? ㅋ X 라는 신호의 variance 가 출력으로 나오지요? ㅋ 완전하게 stationary 하다면 
tau != 0 일때 autocorrelation 도 0 이 되어야 합니다. 이런신호는 White Noise 밖에 없어요 ㅋ


7. Ergodicity : 요고도 자주 들어보셨으리라고 생각됩니다. 맨날 그러자나요 ㅋ 이 r.p 가 WSS 이고 Ergodic 하다 가정하면.... ㅋㅋ 안그러나요? ㅋㅋ 시간이 무한하게 흘렀을때 앙상블 평균과 시간 평균이 같아지는 신호를 Ergodic 하다고 합니다. 어떤 신호가 Ergodic 하다갈고 알려지면, 앙상블 평균과 Autocorrelation (각각 1차 평균, 2차 평균이라고도 부르지요)을 구하기 위해서는 하나의 Sample Function 만 있으면 됩니다. ㅋ


각각은 위와 같은 집단으로 표현할 수 있겠군요 ㅋㅋ 개념의 크기가 이런 관계가 성립한답니다~ ㅋ

8. Correlation, Cross Correlation, Covariance : 요곳들은 스스로 공부하시기 바랍니다 ㅋㅋ 이것들은 다 위에서 나온 개념들에서 파생 된 것이기 때문에 살짝만 찾아보시면 충분히 아실 수 있을 것입니다. 

9. Spectral Estimation : R.P 의 PSD 는 R.P 의 Autocorrelation function 으로 계산할수 있습니다. 기존에 알고있던 Fourier Transform 과 거의 비슷한 식이에요. 증명도 가능합니다. 처음 보았을 때 저도 엄청 신기했습니다. 와 ~ 이렇게도 되는구나 ㅋㅋㅋ 당장 크게 써먹을것 같지않아 제목만 언급하고 넘어가겠습니다. 관심있으신 분들은 한번 찾아보세요. 



이것으로 기본적은 stochastic theorem 에 대한 리뷰? 혹은 프리뷰를 마치도록 하겠습니다. 매우 기본이 되는 이론들이고 매우 간단하게 다루었기 때문에 부족하신 부분은 따로 책과 다른 사이트를 참고하시길 바랍니다. 

다음 포스팅 부터는 실제 Adaptive Filter 에 대한 이론에 대해 포스팅 할 예정입니다. 

주로 사용하게 될 참고 교제가 Adaptive Filter 책중에 가장 유명한 책이라고 하더군요.

Simon Haykin 의 ADAPTIVE FILTER THEORY 입니다. 

그리고 또 ADF 에 관한 논문들 ㅋㅋ

제가 잘 이해가 되지 않는 부분이나 잘못 이해한 부분은 댓글과 메일을 이용해 서로 토론해 볼수 있었으면 좋겠습니다. 얼마가 걸릴지 모르는 포스팅이지만 저도 꾸준히 시간을 가지고 공부해가도록 하겠습니다. 많이들 도와주세요

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear