13. ์ ์ ํํฐ
13. ์ ์ ํํฐ¶
์ด์ : 12. ๋ค์ค ๋ ์ดํธ ์ ํธ ์ฒ๋ฆฌ | ๋ค์: 14. ์๊ฐ-์ฃผํ์ ๋ถ์
์ ์ ํํฐ(adaptive filter)๋ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ๊ณ์๊ฐ ์๋์ผ๋ก ์กฐ์ ๋๋ ํํฐ์ ๋๋ค. ์ ํธ ๋ฐ ์ก์ ํต๊ณ์ ๋ํ ์์ ํ ์ฌ์ ์ง์์ ๋ฐํ์ผ๋ก ์ค๊ณ๋ ๊ณ ์ ํํฐ์ ๋ฌ๋ฆฌ, ์ ์ ํํฐ๋ ๋ฐ์ดํฐ๋ก๋ถํฐ ์ง์์ ์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐฑ์ ํจ์ผ๋ก์จ ๋ฏธ์ง(ๆช็ฅ) ๋๋ ์๋ณ(time-varying) ํ๊ฒฝ์์๋ ๋์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ ธ์ด์ฆ ์บ์ฌ๋ง ํค๋ํฐ, ์ ํ๊ธฐ์ ์์ฝ ์ ๊ฑฐ, ๋ชจ๋์ ์ฑ๋ ๋ฑํ(channel equalization) ๋ฑ ์๋ง์ ์ค์ ์์คํ ์ ํต์ฌ ๊ธฐ์ ์ ๋๋ค.
๋์ด๋: โญโญโญโญ
์ ์ ์ง์: FIR/IIR ํํฐ ์ค๊ณ, ์ ํ๋์, ๊ธฐ๋ณธ ์ต์ ํ ๊ฐ๋
ํ์ต ๋ชฉํ: - ์๋ ํํฐ(Wiener filter)๋ฅผ ์ต์ MMSE ์ ํ ํํฐ๋ก ์ ๋ - ์ต๊ธ๊ฐํ๋ฒ(method of steepest descent)๊ณผ ์๋ ด ํน์ฑ ์ดํด - LMS ์๊ณ ๋ฆฌ์ฆ ์ ๋ ๋ฐ ๊ตฌํ, ์๋ ด ๋์ ๋ถ์ - ํฅ์๋ ์๋ ด์ ์ํ ์ ๊ทํ LMS(Normalized LMS, NLMS) ๊ตฌํ - ํ๋ ฌ ์ญ ๋ณด์กฐ์ ๋ฆฌ(matrix inversion lemma)๋ฅผ ์ด์ฉํ RLS ์๊ณ ๋ฆฌ์ฆ ์ ๋ ๋ฐ ๊ตฌํ - ๋ณต์ก๋, ์๋ ด, ์ถ์ ์ธก๋ฉด์์ LMS์ RLS ๋น๊ต - ์์คํ ์๋ณ, ์ก์ ์ ๊ฑฐ, ์์ฝ ์ ๊ฑฐ, ๋ฑํ์ ์ ์ ํํฐ ์ ์ฉ
๋ชฉ์ฐจ¶
- ์ ์ ํํฐ๋ง์ด ํ์ํ ์ด์
- ์๋ ํํฐ: ์ต์ MMSE ํด
- ์ต๊ธ๊ฐํ๋ฒ
- LMS ์๊ณ ๋ฆฌ์ฆ
- LMS ์๋ ด ๋ถ์
- ์ ๊ทํ LMS (NLMS)
- RLS ์๊ณ ๋ฆฌ์ฆ
- ๋น๊ต: LMS vs RLS
- ์์ฉ: ์์คํ ์๋ณ
- ์์ฉ: ์ก์ ์ ๊ฑฐ
- ์์ฉ: ์์ฝ ์ ๊ฑฐ
- ์์ฉ: ์ฑ๋ ๋ฑํ
- ์์ฉ: ์ ์ ๋นํฌ๋ฐ
- Python ๊ตฌํ: ์์ ํ ์ ์ ํํฐ๋ง ํดํท
- ์ฐ์ต ๋ฌธ์
- ์์ฝ
- ์ฐธ๊ณ ๋ฌธํ
1. ์ ์ ํํฐ๋ง์ด ํ์ํ ์ด์ ¶
1.1 ๊ณ ์ ํํฐ์ ํ๊ณ¶
๊ธฐ์กด FIR ๋ฐ IIR ํํฐ๋ ์ค๊ณ ์์ ์ ์ ํธ ๋ฐ ์ก์ ํน์ฑ์ ๋ํ ์์ ํ ์ง์์ ํ์๋ก ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด ๋ณด์ธ์:
- ํต๊ณ๋ฅผ ๋ชจ๋ฅผ ๋: ์ก์์ ์คํํธ๋ผ ํน์ฑ์ ๋ชจ๋ฅด๋ฉด ์ต์ ํํฐ๋ฅผ ์ค๊ณํ ์ ์์ต๋๋ค.
- ํต๊ณ๊ฐ ์๋ณ์ผ ๋: ๋ฌด์ ์ฑ๋์ ์ก์์ ๊ธฐ์ ์ด๋์ ๋ฐ๋ผ ๋ณํฉ๋๋ค. ํ ์ฑ๋ ์คํ(realization)์ ๋ง๊ฒ ์ค๊ณ๋ ํํฐ๋ ์ ์ ํ ์ค์ต์ (suboptimal)์ด ๋ฉ๋๋ค.
- ์ค์๊ฐ ๋์์ด ํ์ํ ๋: ์ผ๋ถ ํ๊ฒฝ์์๋ ์คํ๋ผ์ธ ์ค๊ณ ๋จ๊ณ ์์ด ์ง์์ ์ธ ์ ์์ด ํ์ํฉ๋๋ค.
1.2 ์ ์ ํํฐ๋ง ํ๋ ์์ํฌ¶
์ ์ ํํฐ๋ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- ํ๋ผ๋ฏธํฐํ๋ ํํฐ ๊ตฌ์กฐ (๋ณดํต FIR): ์ ๋ ฅ $x(n)$์ผ๋ก๋ถํฐ ์ถ๋ ฅ $y(n)$์ ๊ณ์ฐํฉ๋๋ค.
- ์ ์ ์๊ณ ๋ฆฌ์ฆ: ์ด๋ค ๋น์ฉ ํจ์๋ฅผ ์ต์ํํ๋๋ก ํํฐ ๊ณ์ $\mathbf{w}(n)$์ ์กฐ์ ํฉ๋๋ค.
โโโโโโโโโโโโโโโโโโโโโโโโ
x(n) โโโโโโโโโถโ Adaptive Filter โโโโโโโโโโถ y(n)
โ w(n) โ
โโโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โ e(n) = d(n) - y(n)
โ
d(n) โโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโถ Error
(desired signal) Computation
โ
โผ
Adaptation Algorithm
(update w(n+1))
์ค์ฐจ ์ ํธ(error signal)๋:
$$e(n) = d(n) - y(n) = d(n) - \mathbf{w}^T(n) \mathbf{x}(n)$$
์ฌ๊ธฐ์: - $d(n)$์ ์ํ๋(๊ธฐ์ค) ์ ํธ(desired/reference signal) - $\mathbf{x}(n) = [x(n), x(n-1), \ldots, x(n-M+1)]^T$๋ ์ ๋ ฅ ๋ฒกํฐ - $\mathbf{w}(n) = [w_0(n), w_1(n), \ldots, w_{M-1}(n)]^T$๋ ํํฐ ๊ฐ์ค์น ๋ฒกํฐ - $M$์ ํํฐ ์ฐจ์
1.3 ์ฃผ์ ๊ตฌ์ฑ¶
์ ์ ํํฐ๋ ๋ค ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค:
| ๊ตฌ์ฑ | ์ ๋ ฅ $x(n)$ | ์ํ๋ ์ ํธ $d(n)$ | ๋ชฉ์ |
|---|---|---|---|
| ์์คํ ์๋ณ | ๋ฏธ์ง ์์คํ ์ ์ ๋ ฅ | ๋ฏธ์ง ์์คํ ์ ์ถ๋ ฅ | ๋ฏธ์ง ์์คํ ๋ชจ๋ธ๋ง |
| ์ญ ๋ชจ๋ธ๋ง | ๋ฏธ์ง ์์คํ ์ ์ถ๋ ฅ | ์ง์ฐ๋ ์ ๋ ฅ | ์ฑ๋ ๋ฑํ |
| ์ก์ ์ ๊ฑฐ | ์๊ด๋ ์ก์ ๊ธฐ์ค | ์ ํธ + ์ก์ | ์ ํธ ์ถ์ถ |
| ์์ธก | ์ ํธ์ ์ง์ฐ ๋ฒ์ | ํ์ฌ ์ ํธ | ๋ฏธ๋ ๊ฐ ์์ธก |
2. ์๋ ํํฐ: ์ต์ MMSE ํด¶
2.1 ๋น์ฉ ํจ์¶
์ต์ ํ๊ท ์ ๊ณฑ ์ค์ฐจ(minimum mean square error, MMSE) ๊ธฐ์ค์ ๊ธฐ๋ ์ ๊ณฑ ์ค์ฐจ๋ฅผ ์ต์ํํฉ๋๋ค:
$$J(\mathbf{w}) = E\left[|e(n)|^2\right] = E\left[|d(n) - \mathbf{w}^T \mathbf{x}(n)|^2\right]$$
์ ๊ฐํ๋ฉด:
$$J(\mathbf{w}) = E[d^2(n)] - 2\mathbf{w}^T E[d(n)\mathbf{x}(n)] + \mathbf{w}^T E[\mathbf{x}(n)\mathbf{x}^T(n)] \mathbf{w}$$
๋ค์์ ์ ์ํฉ๋๋ค: - ์๊ธฐ์๊ด ํ๋ ฌ(autocorrelation matrix): $\mathbf{R} = E[\mathbf{x}(n)\mathbf{x}^T(n)]$ ($M \times M$ ์์ ์น ํ๋ ฌ) - ์ํธ์๊ด ๋ฒกํฐ(cross-correlation vector): $\mathbf{p} = E[d(n)\mathbf{x}(n)]$ ($M \times 1$ ๋ฒกํฐ) - $\sigma_d^2 = E[d^2(n)]$
๋น์ฉ ํจ์๋ 2์ฐจ ๋ณผ(quadratic bowl) ํํ๊ฐ ๋ฉ๋๋ค:
$$J(\mathbf{w}) = \sigma_d^2 - 2\mathbf{w}^T \mathbf{p} + \mathbf{w}^T \mathbf{R} \mathbf{w}$$
2.2 ์๋-ํธํ ๋ฐฉ์ ์(Wiener-Hopf Equation)¶
๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ๊ณ 0์ผ๋ก ์ค์ ํ๋ฉด:
$$\nabla_{\mathbf{w}} J = -2\mathbf{p} + 2\mathbf{R}\mathbf{w} = \mathbf{0}$$
์ด๋ก๋ถํฐ ์๋-ํธํ ๋ฐฉ์ ์(Wiener-Hopf equation)(์ ๊ท ๋ฐฉ์ ์)์ด ๋์ถ๋ฉ๋๋ค:
$$\boxed{\mathbf{R}\mathbf{w}_{opt} = \mathbf{p}}$$
์ต์ (์๋) ํํฐ๋:
$$\mathbf{w}_{opt} = \mathbf{R}^{-1}\mathbf{p}$$
์ต์ ํด์์์ ์ต์ MSE๋:
$$J_{min} = \sigma_d^2 - \mathbf{p}^T \mathbf{R}^{-1} \mathbf{p}$$
2.3 ์ฑ๋ฅ ๊ณก๋ฉด¶
$\mathbf{R}$์ด ์์ ์น์ด๋ฏ๋ก, ๋น์ฉ ํจ์ $J(\mathbf{w})$๋ ๋ณผ๋ก 2์ฐจํจ์๋ก ๊ทธ๋ฆ ๋ชจ์์ ๊ณก๋ฉด(ํ์ ํฌ๋ฌผ๋ฉด)์ ํ์ฑํฉ๋๋ค. ๋ชจ๋ ํ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ผํ ์ ์ญ ์ต์๊ฐ์ผ๋ก ์๋ ดํฉ๋๋ค.
๊ณ ์ ๋ถํด $\mathbf{R} = \mathbf{Q}\boldsymbol{\Lambda}\mathbf{Q}^T$๋ฅผ ์ฌ์ฉํ๋ฉด, ํ์ ์ขํ๊ณ $\mathbf{v} = \mathbf{Q}^T(\mathbf{w} - \mathbf{w}_{opt})$์์์ ๋น์ฉ ํจ์๋:
$$J(\mathbf{v}) = J_{min} + \sum_{k=0}^{M-1} \lambda_k v_k^2$$
์ฌ๊ธฐ์ $\lambda_k$๋ $\mathbf{R}$์ ๊ณ ์ ๊ฐ์ ๋๋ค. $J$์ ๋ฑ๊ณ ์ ์ ๊ณ ์ ๋ฒกํฐ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌ๋๊ณ ๊ณ ์ ๊ฐ์ ์ํด ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ ํ์์ ๋๋ค.
2.4 ์๋ ํด์ ํ๊ณ¶
์๋ ํํฐ๋ ๋ค์์ ํ์๋ก ํฉ๋๋ค: 1. $\mathbf{R}$๊ณผ $\mathbf{p}$์ ๋ํ ์ง์ (2์ฐจ ํต๊ณ) 2. ์ ํธ์ ์ ์์ฑ(stationarity) 3. $\mathbf{R}^{-1}$ ๊ณ์ฐ ($O(M^3)$ ์ฐ์ฐ)
์ค์ ๋ก ์ด ์กฐ๊ฑด๋ค์ ์ ํํ ๋ง์กฑ๋๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์, ๋ฐ๋ณต์ ์ด๊ณ ์ ์์ ์ธ ์ ๊ทผ๋ฒ์ด ํ์ํฉ๋๋ค.
3. ์ต๊ธ๊ฐํ๋ฒ¶
3.1 MSE ๊ณก๋ฉด์์์ ๊ฒฝ์ฌ ํ๊ฐ¶
์๋-ํธํ ๋ฐฉ์ ์์ ์ง์ ํ์ง ์๊ณ , ๊ฒฝ์ฌ ํ๊ฐ(gradient descent)์ ํตํด ๋ฐ๋ณต์ ์ผ๋ก $\mathbf{w}_{opt}$์ ๋๋ฌํ ์ ์์ต๋๋ค:
$$\mathbf{w}(n+1) = \mathbf{w}(n) - \mu \nabla_{\mathbf{w}} J(n)$$
MSE ๋น์ฉ ํจ์์ ์ง์ง ๊ธฐ์ธ๊ธฐ๋:
$$\nabla_{\mathbf{w}} J = -2\mathbf{p} + 2\mathbf{R}\mathbf{w}(n)$$
๋ฐ๋ผ์ ๊ฐฑ์ ๊ท์น์:
$$\boxed{\mathbf{w}(n+1) = \mathbf{w}(n) + 2\mu\left(\mathbf{p} - \mathbf{R}\mathbf{w}(n)\right)}$$
์ด๊ฒ์ด ์ต๊ธ๊ฐํ๋ฒ(steepest descent) ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ฌ์ ํ $\mathbf{R}$๊ณผ $\mathbf{p}$์ ๋ํ ์ง์์ด ํ์ํ๋ฏ๋ก ์ง์ ํ ์ ์ํ์ ์๋๋๋ค.
3.2 ์๋ ด ๋ถ์¶
๊ฐ์ค์น ์ค์ฐจ ๋ฒกํฐ๋ฅผ ์ ์ํฉ๋๋ค: $\boldsymbol{\epsilon}(n) = \mathbf{w}(n) - \mathbf{w}_{opt}$
๊ฐฑ์ ์์ ๋์ ํ๋ฉด:
$$\boldsymbol{\epsilon}(n+1) = (\mathbf{I} - 2\mu\mathbf{R})\boldsymbol{\epsilon}(n)$$
๊ณ ์ ๋ถํด $\mathbf{R} = \mathbf{Q}\boldsymbol{\Lambda}\mathbf{Q}^T$๋ฅผ ์ฌ์ฉํ์ฌ, ํ์ ์ขํ $\mathbf{v}(n) = \mathbf{Q}^T \boldsymbol{\epsilon}(n)$์์:
$$v_k(n+1) = (1 - 2\mu\lambda_k) v_k(n)$$
์๋ ด์ ์ํด์๋ ๋ชจ๋ $k$์ ๋ํด $|1 - 2\mu\lambda_k| < 1$์ด ํ์ํ๋ฉฐ, ์ด๋:
$$\boxed{0 < \mu < \frac{1}{\lambda_{max}}}$$
์ฌ๊ธฐ์ $\lambda_{max}$๋ $\mathbf{R}$์ ์ต๋ ๊ณ ์ ๊ฐ์ ๋๋ค.
3.3 ์๋ ด ์๋์ ๊ณ ์ ๊ฐ ๋ถ์ฐ¶
๊ฐ ๋ชจ๋ $v_k$์ ์๋ ด ์๋๋ $|1 - 2\mu\lambda_k|$์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๊ฐ ๋ชจ๋์ ๋ํ ์ต์ ์คํ ํฌ๊ธฐ๋ $\mu_k = 1/(2\lambda_k)$์ด์ง๋ง, ๋จ์ผ $\mu$๋ฅผ ์ฌ์ฉํ๋ฏ๋ก:
- ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์๋ ดํ๋ ๋ชจ๋๋ $\lambda_{max}$์ ํด๋น
- ๊ฐ์ฅ ๋๋ฆฌ๊ฒ ์๋ ดํ๋ ๋ชจ๋๋ $\lambda_{min}$์ ํด๋น
๊ณ ์ ๊ฐ ๋ถ์ฐ(eigenvalue spread)(์กฐ๊ฑด์, condition number):
$$\chi(\mathbf{R}) = \frac{\lambda_{max}}{\lambda_{min}}$$
์ด๊ฒ์ด ์ ์ฒด ์๋ ด ์๋๋ฅผ ์ง๋ฐฐํฉ๋๋ค. ํฐ ๊ณ ์ ๊ฐ ๋ถ์ฐ์ ๋๋ฆฐ ์๋ ด์ ์๋ฏธํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ด ์ฑ๋ฅ ๊ณก๋ฉด์ ์ข์ ๊ณ๊ณก์ ๊ฐ๋ก์ง๋ฌ "์ง๊ทธ์ฌ๊ทธ"๋ก ์์ง์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
3.4 ํ์ต ๊ณก์ ¶
๋ฐ๋ณต ํ์์ ํจ์๋ก์์ MSE๊ฐ ํ์ต ๊ณก์ (learning curve)์ ๋๋ค:
$$J(n) = J_{min} + \sum_{k=0}^{M-1} \lambda_k v_k^2(0)(1 - 2\mu\lambda_k)^{2n}$$
๊ฐ ๋ชจ๋๋ ์์์(time constant)์ ํจ๊ป ๊ธฐํ๊ธ์์ ์ผ๋ก ๊ฐ์ํฉ๋๋ค:
$$\tau_k = \frac{-1}{2\ln|1 - 2\mu\lambda_k|} \approx \frac{1}{4\mu\lambda_k} \quad \text{(์ } \mu \text{์ ๋ํด)}$$
๊ฐ์ฅ ๋๋ฆฐ ๋ชจ๋์ ์์์๋ $\tau_{max} \approx 1/(4\mu\lambda_{min})$์ ๋๋ค.
4. LMS ์๊ณ ๋ฆฌ์ฆ¶
4.1 ์ ๋¶
์ต๊ธ๊ฐํ๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ง ๊ธฐ์ธ๊ธฐ $\nabla J = -2\mathbf{p} + 2\mathbf{R}\mathbf{w}(n)$์ ํ์๋ก ํฉ๋๋ค. Widrow์ Hoff (1960)์ ํต์ฌ ํต์ฐฐ์ ์ง์ง ๊ธฐ์ธ๊ธฐ๋ฅผ ์๊ฐ ์ถ์ ๊ฐ(instantaneous estimate)์ผ๋ก ๋์ฒดํ๋ ๊ฒ์ ๋๋ค:
$$\hat{\nabla} J(n) = -2e(n)\mathbf{x}(n)$$
์ด๋ ๊ธฐ๋๊ฐ์ ์๊ฐ ์ํ๋ก ๋์ฒดํ์ฌ ์ป์ด์ง๋๋ค: - $\mathbf{R}\mathbf{w}(n) \approx \mathbf{x}(n)\mathbf{x}^T(n)\mathbf{w}(n) = \mathbf{x}(n)y(n)$ - $\mathbf{p} \approx d(n)\mathbf{x}(n)$
LMS ์๊ณ ๋ฆฌ์ฆ์:
$$\boxed{\mathbf{w}(n+1) = \mathbf{w}(n) + \mu \, e(n) \, \mathbf{x}(n)}$$
์ฌ๊ธฐ์ $e(n) = d(n) - \mathbf{w}^T(n)\mathbf{x}(n)$.
4.2 ์๊ณ ๋ฆฌ์ฆ ์์ฝ¶
LMS Algorithm
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Initialize: w(0) = 0 (or small random values)
Parameters: step size ฮผ, filter order M
For each new sample n = 0, 1, 2, ...
1. Form input vector: x(n) = [x(n), x(n-1), ..., x(n-M+1)]^T
2. Compute output: y(n) = w^T(n) x(n)
3. Compute error: e(n) = d(n) - y(n)
4. Update weights: w(n+1) = w(n) + ฮผ e(n) x(n)
๊ณ์ฐ ๋ณต์ก๋: ์ํ๋น $O(M)$ ๊ณฑ์ ๊ณผ ๋ง์ - ๋งค์ฐ ํจ์จ์ ์ ๋๋ค.
4.3 LMS์ ํน์ฑ¶
- ๋จ์์ฑ: ํ๋ ฌ ์ญ์ฐ ์์, ์๊ธฐ์๊ด ์ถ์ ์์
- ๋ฎ์ ๋ณต์ก๋: ๋ฐ๋ณต๋น $2M$ ๊ณฑ์
- ํ๋ฅ ์ ๊ธฐ์ธ๊ธฐ: ๊ธฐ์ธ๊ธฐ ์ถ์ ๊ฐ์ ์ก์์ด ์์ง๋ง ๋ถํธํฅ(unbiased): $E[\hat{\nabla}J] = \nabla J$
- ์๊ธฐ ์กฐ์ : ์ ํธ ํต๊ณ์ ๋๋ฆฐ ๋ณํ๋ฅผ ์๋์ผ๋ก ์ถ์
5. LMS ์๋ ด ๋ถ์¶
5.1 ํ๊ท ์๋ ด¶
LMS ๊ฐฑ์ ์ ๊ธฐ๋๊ฐ ๊ณ์ฐ (๋ ๋ฆฝ์ฑ ๊ฐ์ ํ์ - $\mathbf{x}(n)$์ด $\mathbf{w}(n)$์ ๋ ๋ฆฝ):
$$E[\mathbf{w}(n+1)] = E[\mathbf{w}(n)] + \mu E[e(n)\mathbf{x}(n)]$$
๋์ ๊ณ์ฐ ํ:
$$E[\boldsymbol{\epsilon}(n+1)] = (\mathbf{I} - 2\mu\mathbf{R}) E[\boldsymbol{\epsilon}(n)]$$
์ด๋ ์ต๊ธ๊ฐํ๋ฒ๊ณผ ๋์ผํ ์ ํ์์ด๋ฏ๋ก, ํ๊ท ์๋ ด ์กฐ๊ฑด์:
$$0 < \mu < \frac{1}{\lambda_{max}}$$
์ค์ ๋ก๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค:
$$0 < \mu < \frac{1}{\text{tr}(\mathbf{R})} = \frac{1}{M \cdot \sigma_x^2}$$
$\text{tr}(\mathbf{R}) = \sum_k \lambda_k \geq \lambda_{max}$์ด๊ณ , ์ ์ ์ ๋ ฅ์ ๋ํด $\text{tr}(\mathbf{R}) = M\sigma_x^2$์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
5.2 ํ๊ท ์ ๊ณฑ ์๋ ด¶
MSE๊ฐ ์๋ ดํ๊ธฐ ์ํ ์กฐ๊ฑด(ํ๊ท ์ ๊ณฑ ์์ ์ฑ)์ ๋ ์๊ฒฉํฉ๋๋ค:
$$0 < \mu < \frac{2}{\lambda_{max} + \text{tr}(\mathbf{R})}$$
์ค์ฉ์ ์ผ๋ก ์์ ํ ์ ํ์:
$$\mu < \frac{1}{3 \, \text{tr}(\mathbf{R})} = \frac{1}{3M\sigma_x^2}$$
5.3 ์ด๊ณผ MSE์ ์ค์กฐ์ ¶
์๋ ด ํ์๋ LMS ์๊ณ ๋ฆฌ์ฆ์ ํ๋ฅ ์ ๊ธฐ์ธ๊ธฐ๊ฐ ๊ฐ์ค์น ๊ฐฑ์ ์ ์ก์์ ๋์ ํ๊ธฐ ๋๋ฌธ์ $J_{min}$์ ๋๋ฌํ์ง ๋ชปํฉ๋๋ค. ์ด๊ณผ MSE(excess MSE)๋:
$$J_{excess} = J_{steady-state} - J_{min}$$
์ค์กฐ์ (misadjustment)์:
$$\mathcal{M} = \frac{J_{excess}}{J_{min}} \approx \mu \, \text{tr}(\mathbf{R}) = \mu M \sigma_x^2$$
์ด๋ ๊ทผ๋ณธ์ ์ธ ํธ๋ ์ด๋์คํ๋ฅผ ๋๋ฌ๋ ๋๋ค: - ํฐ $\mu$: ๋น ๋ฅธ ์๋ ด์ด์ง๋ง ํฐ ์ค์กฐ์ (์ก์์ด ๋ง์ ์ ์ ์ํ) - ์์ $\mu$: ๋๋ฆฐ ์๋ ด์ด์ง๋ง ์์ ์ค์กฐ์ (์ ํํ ์ ์ ์ํ)
5.4 ์คํ ํฌ๊ธฐ ์ ํ ์ง์นจ¶
| ๊ธฐ์ค | ์คํ ํฌ๊ธฐ |
|---|---|
| ์์ ์ฑ (ํ๊ท ) | $\mu < 1/\lambda_{max}$ |
| ์์ ์ฑ (ํ๊ท ์ ๊ณฑ) | $\mu < 2/(\lambda_{max} + \text{tr}(\mathbf{R}))$ |
| ์ค์ฉ์ ๊ท์น | $\mu \in [0.01, 0.1] / (M \sigma_x^2)$ |
| ์ค์กฐ์ $\leq$ 10% | $\mu \leq 0.1 / (M \sigma_x^2)$ |
5.5 ์๋ ด ์๊ฐ¶
๊ฐ์ฅ ๋๋ฆฐ ๋ชจ๋์ ๊ทผ์ฌ ์์์๋:
$$\tau_{mse} \approx \frac{1}{4\mu\lambda_{min}}$$
์ค์กฐ์ ์ ์ฝ $\mathcal{M} = \mu M \sigma_x^2$์ ๊ฒฐํฉํ๋ฉด:
$$\tau_{mse} \approx \frac{M \sigma_x^2}{4\mathcal{M}\lambda_{min}} = \frac{\chi(\mathbf{R})}{4\mathcal{M}} \cdot \frac{M\sigma_x^2}{\lambda_{max}}$$
ํฐ ๊ณ ์ ๊ฐ ๋ถ์ฐ $\chi(\mathbf{R})$์ ์ฃผ์ด์ง ์ค์กฐ์ ์์ ์๋ ดํ๋ ๋ฐ ๋ง์ ๋ฐ๋ณต์ด ํ์ํจ์ ์๋ฏธํฉ๋๋ค.
6. ์ ๊ทํ LMS (NLMS)¶
6.1 ๋๊ธฐ¶
ํ์ค LMS๋ ๊ณ ์ ์คํ ํฌ๊ธฐ $\mu$๋ฅผ ๊ฐ์ง๋ฏ๋ก, ์ค์ ์ ์ ์๋๊ฐ ์ ๋ ฅ ์ ๋ ฅ $\|\mathbf{x}(n)\|^2$์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ ๋ ฅ ์ ๋ ฅ์ด ๋ณํ ๋ LMS๋ ๋ถ์์ ํด์ง๊ฑฐ๋ ๋๋ฌด ๋๋ฆฌ๊ฒ ์๋ ดํ ์ ์์ต๋๋ค.
6.2 ์ ๋¶
NLMS ์๊ณ ๋ฆฌ์ฆ์ ์คํ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ ์ ๋ ฅ์ผ๋ก ์ ๊ทํํ์ฌ ์ป์ด์ง๋๋ค:
$$\boxed{\mathbf{w}(n+1) = \mathbf{w}(n) + \frac{\tilde{\mu}}{\|\mathbf{x}(n)\|^2 + \delta} \, e(n) \, \mathbf{x}(n)}$$
์ฌ๊ธฐ์: - $\tilde{\mu} \in (0, 2)$๋ ์ ๊ทํ๋ ์คํ ํฌ๊ธฐ - $\delta > 0$๋ 0์ผ๋ก ๋๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์์ ์ ๊ทํ ์์
6.3 ์ ์ฝ ์ต์ ํ๋ก๋ถํฐ์ ์ ๋¶
NLMS๋ ๋ค์ ์ ์ฝ ์ต์ ํ ๋ฌธ์ ๋ฅผ ํ์ด์ ์ ๋ํ ์ ์์ต๋๋ค:
$$\min_{\mathbf{w}(n+1)} \|\mathbf{w}(n+1) - \mathbf{w}(n)\|^2 \quad \text{์ ์ฝ ์กฐ๊ฑด:} \quad \mathbf{w}^T(n+1)\mathbf{x}(n) = d(n)$$
์ฆ, ์ต์ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์๋ฒฝํ๊ฒ ํผํ ํ๋ ํ์ฌ ๊ฐ์ค์น ๋ฒกํฐ์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ค์น ๋ฒกํฐ๋ฅผ ์ฐพ๋ ๊ฒ์ ๋๋ค. ๋ผ๊ทธ๋์ฃผ ์น์(Lagrange multipliers)๋ฅผ ์ฌ์ฉํ๋ฉด $\tilde{\mu} = 1$์ธ NLMS ๊ฐฑ์ ์ด ์ป์ด์ง๋๋ค.
6.4 NLMS์ ์ฅ์ ¶
- ๊ฐ๊ฑดํ ์๋ ด: ์คํ ํฌ๊ธฐ๊ฐ ์ ๋ ฅ ์ ๋ ฅ์ ์๋ ์ ์
- ๋จ์ํ ํ๋: ์ค์ ํ ํ๋ผ๋ฏธํฐ๊ฐ $\tilde{\mu} \in (0, 2)$ ํ๋๋ฟ
- ๋น์ ์ ์ ๋ ฅ์ ์ ํฉ: ๋ณ๋ํ๋ ์ ํธ ๋ ๋ฒจ์์๋ ์ ์๋
- ์ต์ํ์ ์ถ๊ฐ ๋น์ฉ: ๋ฐ๋ณต๋น ํ ๋ฒ์ ๋ด์ ๋ง ์ถ๊ฐ
6.5 NLMS ์๋ ด¶
NLMS์ ์๋ ด ์กฐ๊ฑด์ ๋จ์ํฉ๋๋ค:
$$0 < \tilde{\mu} < 2$$
์ค์กฐ์ ์ ๊ทผ์ฌ์ ์ผ๋ก:
$$\mathcal{M}_{NLMS} \approx \frac{\tilde{\mu}}{2 - \tilde{\mu}} \cdot \frac{1}{M}$$
์ผ๋ฐ์ ์ธ ์ ํ์ $\tilde{\mu} \in [0.1, 1.0]$์ ๋๋ค.
7. RLS ์๊ณ ๋ฆฌ์ฆ¶
7.1 ๋๊ธฐ¶
LMS๊ฐ ๊ธฐ์ธ๊ธฐ๋ฅผ ํ๋ฅ ์ ์ผ๋ก ์ถ์ ํ๋(ํ ๋ฒ์ ํ ์ํ) ๋ฐ๋ฉด, ์ํ ์ต์ ์ ๊ณฑ(Recursive Least Squares, RLS) ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ์ ๊ฑธ์น ๊ฒฐ์ ๋ก ์ ๋น์ฉ ํจ์๋ฅผ ์ต์ํํฉ๋๋ค:
$$J_{RLS}(n) = \sum_{i=0}^{n} \lambda^{n-i} |e(i)|^2$$
์ฌ๊ธฐ์ $\lambda \in (0, 1]$์ ๋ง๊ฐ ์ธ์(forgetting factor)(๋ณดํต $0.95 \leq \lambda \leq 1.0$)์ ๋๋ค. ์ต๊ทผ ์ํ์ ์ค๋๋ ์ํ๋ณด๋ค ๋ ํฐ ๊ฐ์ค์น๊ฐ ๋ถ์ฌ๋์ด ๋น์ ์ ํ๊ฒฝ์์ ์ถ์ ๋ฅ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
7.2 ๊ฐ์ค LS์ ๋ํ ์ ๊ท ๋ฐฉ์ ์¶
๋น์ฉ ํจ์๋ ๋ค์์ ์ํด ์ต์ํ๋ฉ๋๋ค:
$$\mathbf{w}(n) = \boldsymbol{\Phi}^{-1}(n) \boldsymbol{\theta}(n)$$
์ฌ๊ธฐ์: - $\boldsymbol{\Phi}(n) = \sum_{i=0}^{n} \lambda^{n-i} \mathbf{x}(i)\mathbf{x}^T(i)$๋ ๊ฐ์ค ์ํ ์๊ด ํ๋ ฌ - $\boldsymbol{\theta}(n) = \sum_{i=0}^{n} \lambda^{n-i} d(i)\mathbf{x}(i)$๋ ๊ฐ์ค ์ํธ์๊ด ๋ฒกํฐ
๋ ๋ค ์ํ ๊ฐฑ์ ์ ๊ฐ์ง๋๋ค:
$$\boldsymbol{\Phi}(n) = \lambda \boldsymbol{\Phi}(n-1) + \mathbf{x}(n)\mathbf{x}^T(n)$$
$$\boldsymbol{\theta}(n) = \lambda \boldsymbol{\theta}(n-1) + d(n)\mathbf{x}(n)$$
7.3 ํ๋ ฌ ์ญ ๋ณด์กฐ์ ๋ฆฌ¶
๊ฐ ๋จ๊ณ์์ $\boldsymbol{\Phi}^{-1}(n)$์ ๋ค์ ๊ณ์ฐํ๋ ๊ฒ($O(M^3)$)์ ํผํ๊ธฐ ์ํด ํ๋ ฌ ์ญ ๋ณด์กฐ์ ๋ฆฌ(matrix inversion lemma, Woodbury identity)๋ฅผ ์ฌ์ฉํฉ๋๋ค:
$$(\mathbf{A} + \mathbf{u}\mathbf{v}^T)^{-1} = \mathbf{A}^{-1} - \frac{\mathbf{A}^{-1}\mathbf{u}\mathbf{v}^T\mathbf{A}^{-1}}{1 + \mathbf{v}^T\mathbf{A}^{-1}\mathbf{u}}$$
$\mathbf{P}(n) = \boldsymbol{\Phi}^{-1}(n)$์ผ๋ก ์ ์ํ๋ฉด:
$$\mathbf{P}(n) = \lambda^{-1}\mathbf{P}(n-1) - \lambda^{-1}\mathbf{k}(n)\mathbf{x}^T(n)\mathbf{P}(n-1)$$
์ฌ๊ธฐ์ ์ด๋ ๋ฒกํฐ(gain vector)๋:
$$\mathbf{k}(n) = \frac{\lambda^{-1}\mathbf{P}(n-1)\mathbf{x}(n)}{1 + \lambda^{-1}\mathbf{x}^T(n)\mathbf{P}(n-1)\mathbf{x}(n)}$$
7.4 RLS ์๊ณ ๋ฆฌ์ฆ ์์ฝ¶
RLS Algorithm
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Initialize: w(0) = 0, P(0) = ฮด^{-1} I (ฮด small, e.g., 0.01)
Parameters: forgetting factor ฮป (e.g., 0.99), regularization ฮด
For each new sample n = 1, 2, ...
1. Compute gain vector:
k(n) = P(n-1) x(n) / [ฮป + x^T(n) P(n-1) x(n)]
2. Compute a priori error:
e(n) = d(n) - w^T(n-1) x(n)
3. Update weights:
w(n) = w(n-1) + k(n) e(n)
4. Update inverse correlation matrix:
P(n) = ฮป^{-1} [P(n-1) - k(n) x^T(n) P(n-1)]
๊ณ์ฐ ๋ณต์ก๋: ์ํ๋น $O(M^2)$ ($\mathbf{P}$ ํ๋ ฌ ๊ฐฑ์ ๋๋ฌธ).
7.5 ๋ง๊ฐ ์ธ์¶
๋ง๊ฐ ์ธ์ $\lambda$๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ํจ ๋ฉ๋ชจ๋ฆฌ(effective memory)๋ฅผ ๊ฒฐ์ ํฉ๋๋ค:
$$N_{eff} = \frac{1}{1 - \lambda}$$
| $\lambda$ | $N_{eff}$ | ๋์ |
|---|---|---|
| 1.0 | $\infty$ | ์ฑ์ฅํ๋ ์๋์ฐ (์ ์ ํ๊ฒฝ) |
| 0.99 | 100 | ๋๋ฆฌ๊ฒ ๋ณํ๋ ํต๊ณ์ ์ ํฉ |
| 0.95 | 20 | ๋น ๋ฅด๊ฒ ๋ณํ๋ ํต๊ณ์ ์ ํฉ |
| 0.9 | 10 | ๋งค์ฐ ๋น ๋ฅธ ์ถ์ , ํ์ง๋ง ์ก์์ด ๋ง์ |
7.6 RLS์ ํน์ฑ¶
- ๋น ๋ฅธ ์๋ ด: ์ฝ $2M$ ๋ฐ๋ณต์์ ์๋ ด (๊ณ ์ ๊ฐ ๋ถ์ฐ์ ๋ ๋ฆฝ์ )
- ๊ณ ์ ๊ฐ ๋ถ์ฐ ๋ฌธ์ ์์: $\mathbf{P}$ ํ๋ ฌ์ด ์ ๋ ฅ์ ๋ฐฑ์ํ(whitens)
- ๋์ ๋ณต์ก๋: LMS์ $O(M)$ ๋๋น $O(M^2)$
- ์์น์ ๋ฏผ๊ฐ์ฑ: $\mathbf{P}$ ํ๋ ฌ์ด ์์ ์น์ฑ์ ์์ ์ ์์; ์์ ํ๋ ๋ฒ์ ์กด์ฌ (QR-RLS, ๊ฒฉ์ RLS)
8. ๋น๊ต: LMS vs RLS¶
| ํน์ฑ | LMS | NLMS | RLS |
|---|---|---|---|
| ์ํ๋น ๋ณต์ก๋ | $O(M)$ | $O(M)$ | $O(M^2)$ |
| ๋ฉ๋ชจ๋ฆฌ | $O(M)$ | $O(M)$ | $O(M^2)$ |
| ์๋ ด ์๋ | ๋๋ฆผ ($\chi$์ ์์กด) | ๋ณดํต | ๋น ๋ฆ ($\sim 2M$ ๋ฐ๋ณต) |
| ์ค์กฐ์ | ๋์ | ๋ณดํต | ๋ฎ์ |
| ์ถ์ ๋ฅ๋ ฅ | ๋ณดํต | ๋ณดํต | ์ข์ |
| ์์น์ ์์ ์ฑ | ์ฐ์ | ์ฐ์ | ๋ถ์์ ํ ์ ์์ |
| ๊ณ ์ ๊ฐ ๋ถ์ฐ ๋ฏผ๊ฐ๋ | ๋์ | ๋ณดํต | ์์ |
| ์คํ ํฌ๊ธฐ ํ๋ผ๋ฏธํฐ | $\mu$ (์ค์ ๊น๋ค๋ก์) | $\tilde{\mu} \in (0,2)$ | $\lambda$ (์ค์ ๋ ์ฌ์) |
๊ฒฝํ ๊ท์น: ๊ณ์ฐ ๋น์ฉ์ด ์ต์ฐ์ ์ด๊ฑฐ๋ ํํฐ๊ฐ ๊ธธ ๋๋ LMS/NLMS๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋น ๋ฅธ ์๋ ด์ด ํ์์ ์ด๊ณ ํํฐ ์ฐจ์๊ฐ ์ ์ ํ ๋๋ RLS๋ฅผ ์ฌ์ฉํฉ๋๋ค.
9. ์์ฉ: ์์คํ ์๋ณ¶
9.1 ๋ฌธ์ ์ค์ ¶
โโโโโโโโโโโโโโโโโโโโโโ
x(n) โโโโโโโโโถโ Unknown System โโโโโโโโโโถ d(n) = h*x(n) + v(n)
โ โ h = [h0, h1, ...] โ
โ โโโโโโโโโโโโโโโโโโโโโโ
โ
โ โโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโถโ Adaptive Filter โโโโโโโโโโถ y(n) = w^T x(n)
โ w(n) โ
โโโโโโโโโโโโโโโโโโโโโโ
e(n) = d(n) - y(n) โ 0
์ ์ ํํฐ๋ ๋ฏธ์ง ์์คํ ์ ์ํ์ค ์๋ต์ ํ์ตํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ด ์๋ ดํ๋ฉด $\mathbf{w}_{opt} \approx \mathbf{h}$๊ฐ ๋ฉ๋๋ค.
9.2 ์ฌ์ฉ ์๊ธฐ¶
- ํ๋ํธ ๋ชจ๋ธ๋ง: ์ ์ด ์์คํ ์๋ ์์คํ ๋ชจ๋ธ์ด ํ์ํฉ๋๋ค
- ์ํฅ ๊ฒฝ๋ก ์๋ณ: ์ค๋ด ์ํ์ค ์๋ต ํ์
- ์ ์ ์ญ ์ ์ด: ์๋ฐฉํฅ ๋ชจ๋ธ์ ์๋ณํ ํ ์ญ์ฐ
10. ์์ฉ: ์ก์ ์ ๊ฑฐ¶
10.1 ์ ์ ์ก์ ์ ๊ฑฐ๊ธฐ (ANC)¶
Signal s(n) + Noise n0(n) = d(n) (primary input)
Noise reference n1(n) (reference input, correlated with n0)
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโ
โ Adaptive Filter โ โโโถ ลท(n) โ n0(n)
โ w(n) โ
โโโโโโโโโโโโโโโโโโโโโโ
e(n) = d(n) - ลท(n) โ s(n)
ํต์ฌ ํต์ฐฐ: ๊ธฐ์ค ์ ๋ ฅ $n_1(n)$์ ์ก์ $n_0(n)$๊ณผ ์๊ด๋์ด ์์ง๋ง ์ ํธ $s(n)$๊ณผ๋ ์๊ด๋์ง ์์ต๋๋ค. ์ ์ ํํฐ๋ $n_1(n)$์ $n_0(n)$์ ์ถ์ ๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ค์ฐจ ์ ํธ๊ฐ ๊นจ๋ํ ์ ํธ $s(n)$์ ์ถ์ ๊ฐ์ด ๋ฉ๋๋ค.
10.2 ์ํ์ ์ ๋น์ฑ¶
MSE๋:
$$E[e^2(n)] = E[(s(n) + n_0(n) - \hat{y}(n))^2]$$
$s(n)$์ด $n_0(n)$๊ณผ $n_1(n)$ ๋ชจ๋์ ์๊ด๋์ง ์์ผ๋ฏ๋ก:
$$E[e^2(n)] = E[s^2(n)] + E[(n_0(n) - \hat{y}(n))^2]$$
$\mathbf{w}$์ ๋ํด $E[e^2(n)]$์ ์ต์ํํ๋ฉด $E[(n_0(n) - \hat{y}(n))^2]$๊ฐ ์ต์ํ๋์ด $\hat{y}(n) \to n_0(n)$์ด ๋๊ณ $e(n) \to s(n)$์ด ๋ฉ๋๋ค.
์ ํธ๋ ์ก์ ์ถ์ ์ ๋ถ์ฐ๋ฌผ๋ก ์ถ์ถ๋ฉ๋๋ค.
11. ์์ฉ: ์์ฝ ์ ๊ฑฐ¶
11.1 ์ํฅ ์์ฝ ์ ๊ฑฐ (AEC)¶
์คํผ์ปคํฐ ์์คํ ์์ ์๋จ(far-end) ์์ฑ์ด ์คํผ์ปค๋ฅผ ํตํด ์ฌ์๋๊ณ , ๋ฐฉ ์์์ ๋ฐํฅ๋์ด ๋ง์ดํฌ๋กํฐ์ ํฌ์ฐฉ๋ฉ๋๋ค. ์ ์ ํํฐ๋ ์คํผ์ปค์์ ๋ง์ดํฌ๋กํฐ๊น์ง์ ์ํฅ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ธ๋งํฉ๋๋ค.
Far-end โโโถ Loudspeaker โโโถ Room โโโถ Microphone โโโถ Near-end + Echo
x(n) h(n) d(n) = s(n) + h*x(n)
โ
โ โโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโถโ Adaptive Filter โโโโถ ลท(n) โ h*x(n)
โ w(n) โ h โ
โโโโโโโโโโโโโโโโโโโโ
e(n) = d(n) - ลท(n) โ s(n)
๋์ ๊ณผ์ : - ์ํฅ ์ํ์ค ์๋ต์ ๋งค์ฐ ๊ธธ ์ ์์ต๋๋ค (8 kHz์์ 100-500 ms = 800-4000 ํญ) - ์ด์ค ํตํ(double-talk): ๋ ํ์๊ฐ ๋์์ ํ์ฑํ - ๋น์ ์์ฑ: ์ฌ๋์ด ์ด๋ํ๊ณ ๋ฌธ์ด ์ด๋ฆผ
11.2 ๋คํธ์ํฌ ์์ฝ ์ ๊ฑฐ¶
์ ํ ๋คํธ์ํฌ์์ ํ์ด๋ธ๋ฆฌ๋(2์ -4์ ๋ณํ)์ ์ํผ๋์ค ๋ถ์ผ์น๊ฐ ์ ๊ธฐ์ ์์ฝ๋ฅผ ์์ฑํฉ๋๋ค. ์์ฝ ๊ฒฝ๋ก๋ ์งง์ง๋ง ์๊ตฌ ์ฌํญ์ด ์๊ฒฉํฉ๋๋ค (>40 dB ์์ฝ ๋ฐํ ์์ค ํฅ์).
12. ์์ฉ: ์ฑ๋ ๋ฑํ¶
12.1 ๋ฌธ์ ¶
์ ์ก๋ ์ ํธ $a(n)$์ด ๋ถ์ฐ ์ฑ๋ $c(n)$์ ํต๊ณผํ์ฌ ์ฌ๋ณผ ๊ฐ ๊ฐ์ญ(inter-symbol interference, ISI)์ ์์ฑํฉ๋๋ค:
$$x(n) = \sum_k c(k) a(n-k) + v(n)$$
๋ฑํ๊ธฐ(equalizer)๋ ์ฑ๋ ์๊ณก์ ๋๋๋ฆฌ๋ ์ ์ ํํฐ์ ๋๋ค:
$$\hat{a}(n - \Delta) = \mathbf{w}^T(n) \mathbf{x}(n)$$
์ฌ๊ธฐ์ $\Delta$๋ $w(n) * c(n) \approx \delta(n - \Delta)$๊ฐ ๋๋๋ก ์ ํ๋ ๊ฒฐ์ ์ง์ฐ(decision delay)์ ๋๋ค.
12.2 ํ๋ จ ๋ฐ ๊ฒฐ์ ์ฃผ๋ ๋ชจ๋¶
- ํ๋ จ ๋ชจ๋: ์๋ ค์ง ์ํ์ค๊ฐ ์ ์ก๋ฉ๋๋ค; $d(n) = a(n-\Delta)$
- ๊ฒฐ์ ์ฃผ๋ ๋ชจ๋: ์ด๊ธฐ ์๋ ด ํ, ์ฌ๋ผ์ด์(slicer) ์ถ๋ ฅ $\hat{a}(n-\Delta)$๋ฅผ $d(n)$์ผ๋ก ์ฌ์ฉ
13. ์์ฉ: ์ ์ ๋นํฌ๋ฐ¶
13.1 ๋ฌธ์ ¶
$M$๊ฐ์ ์ผ์๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ด ์ฌ๋ฌ ๋ฐฉํฅ์์ ์ ํธ๋ฅผ ์์ ํฉ๋๋ค. ๋ชฉํ๋ ์ํ๋ ์ ํธ ๋ฐฉํฅ์ผ๋ก ๋น์ ์กฐํฅํ๋ฉด์ ๊ฐ์ญ์(interferer)์ ๋๋ง(nulling)ํ๋ ๊ฒ์ ๋๋ค.
๋ฐฐ์ด์์ ์์ ๋ ์ ํธ๋:
$$\mathbf{x}(n) = s(n)\mathbf{a}(\theta_s) + \sum_{k=1}^{K} i_k(n)\mathbf{a}(\theta_k) + \mathbf{v}(n)$$
์ฌ๊ธฐ์ $\mathbf{a}(\theta)$๋ ๋ฐฉํฅ $\theta$์ ๋ํ ์กฐํฅ ๋ฒกํฐ(steering vector)์ ๋๋ค.
13.2 ์ต์ ๋ถ์ฐ ์๊ณก ์๋ ์๋ต (MVDR)¶
Capon ๋นํฌ๋จธ๋ ๋ค์์ ํ๋๋ค:
$$\min_{\mathbf{w}} \mathbf{w}^H \mathbf{R} \mathbf{w} \quad \text{์ ์ฝ ์กฐ๊ฑด:} \quad \mathbf{w}^H \mathbf{a}(\theta_s) = 1$$
ํด:
$$\mathbf{w}_{MVDR} = \frac{\mathbf{R}^{-1}\mathbf{a}(\theta_s)}{\mathbf{a}^H(\theta_s)\mathbf{R}^{-1}\mathbf{a}(\theta_s)}$$
์ ์ํ ๋ณํ์ RLS์ ์ ์ฌํ ๊ฐฑ์ ์ ์ฌ์ฉํ์ฌ $\mathbf{R}$์ ์ํ์ ์ผ๋ก ์ถ์ ํฉ๋๋ค.
14. Python ๊ตฌํ: ์์ ํ ์ ์ ํํฐ๋ง ํดํท¶
14.1 LMS, NLMS, RLS ๊ตฌํ¶
import numpy as np
import matplotlib.pyplot as plt
def lms_filter(x, d, M, mu):
"""
LMS adaptive filter.
Parameters
----------
x : ndarray
Input signal
d : ndarray
Desired (reference) signal
M : int
Filter order (number of taps)
mu : float
Step size
Returns
-------
y : ndarray
Filter output
e : ndarray
Error signal
w_history : ndarray
Weight history (N x M)
"""
N = len(x)
w = np.zeros(M)
y = np.zeros(N)
e = np.zeros(N)
w_history = np.zeros((N, M))
for n in range(M, N):
x_vec = x[n:n-M:-1] if M > 1 else np.array([x[n]])
# Proper construction of input vector
x_vec = x[n-M+1:n+1][::-1]
y[n] = np.dot(w, x_vec)
e[n] = d[n] - y[n]
w = w + mu * e[n] * x_vec
w_history[n] = w
return y, e, w_history
def nlms_filter(x, d, M, mu_tilde, delta=1e-6):
"""
Normalized LMS adaptive filter.
Parameters
----------
x : ndarray
Input signal
d : ndarray
Desired (reference) signal
M : int
Filter order
mu_tilde : float
Normalized step size (0 < mu_tilde < 2)
delta : float
Regularization constant
Returns
-------
y, e, w_history : ndarrays
"""
N = len(x)
w = np.zeros(M)
y = np.zeros(N)
e = np.zeros(N)
w_history = np.zeros((N, M))
for n in range(M, N):
x_vec = x[n-M+1:n+1][::-1]
y[n] = np.dot(w, x_vec)
e[n] = d[n] - y[n]
norm_sq = np.dot(x_vec, x_vec) + delta
w = w + (mu_tilde / norm_sq) * e[n] * x_vec
w_history[n] = w
return y, e, w_history
def rls_filter(x, d, M, lam=0.99, delta=0.01):
"""
Recursive Least Squares adaptive filter.
Parameters
----------
x : ndarray
Input signal
d : ndarray
Desired (reference) signal
M : int
Filter order
lam : float
Forgetting factor (0 < lambda <= 1)
delta : float
Regularization for P initialization
Returns
-------
y, e, w_history : ndarrays
"""
N = len(x)
w = np.zeros(M)
P = (1.0 / delta) * np.eye(M)
y = np.zeros(N)
e = np.zeros(N)
w_history = np.zeros((N, M))
for n in range(M, N):
x_vec = x[n-M+1:n+1][::-1]
# Gain vector
Px = P @ x_vec
denom = lam + x_vec @ Px
k = Px / denom
# A priori error
y[n] = np.dot(w, x_vec)
e[n] = d[n] - y[n]
# Weight update
w = w + k * e[n]
# Inverse correlation matrix update
P = (1.0 / lam) * (P - np.outer(k, x_vec @ P))
w_history[n] = w
return y, e, w_history
14.2 ์์คํ ์๋ณ ์์ ¶
# System Identification Demo
np.random.seed(42)
# Unknown system (FIR)
h_true = np.array([0.5, 1.2, -0.8, 0.3, -0.1])
M = len(h_true)
# Generate input signal (white noise)
N = 2000
x = np.random.randn(N)
# System output + measurement noise
d = np.convolve(x, h_true, mode='full')[:N] + 0.01 * np.random.randn(N)
# Run adaptive filters
mu_lms = 0.01
_, e_lms, w_lms = lms_filter(x, d, M, mu_lms)
_, e_nlms, w_nlms = nlms_filter(x, d, M, mu_tilde=0.5)
_, e_rls, w_rls = rls_filter(x, d, M, lam=0.99)
# Plot learning curves
fig, axes = plt.subplots(2, 1, figsize=(12, 8))
# MSE learning curves (smoothed)
window = 50
mse_lms = np.convolve(e_lms**2, np.ones(window)/window, mode='valid')
mse_nlms = np.convolve(e_nlms**2, np.ones(window)/window, mode='valid')
mse_rls = np.convolve(e_rls**2, np.ones(window)/window, mode='valid')
axes[0].semilogy(mse_lms, label='LMS', alpha=0.8)
axes[0].semilogy(mse_nlms, label='NLMS', alpha=0.8)
axes[0].semilogy(mse_rls, label='RLS', alpha=0.8)
axes[0].set_xlabel('Iteration')
axes[0].set_ylabel('MSE')
axes[0].set_title('Learning Curves: System Identification')
axes[0].legend()
axes[0].grid(True, alpha=0.3)
# Final weight comparison
x_pos = np.arange(M)
width = 0.2
axes[1].bar(x_pos - 1.5*width, h_true, width, label='True', color='black')
axes[1].bar(x_pos - 0.5*width, w_lms[-1], width, label='LMS')
axes[1].bar(x_pos + 0.5*width, w_nlms[-1], width, label='NLMS')
axes[1].bar(x_pos + 1.5*width, w_rls[-1], width, label='RLS')
axes[1].set_xlabel('Tap index')
axes[1].set_ylabel('Weight value')
axes[1].set_title('Identified Impulse Response')
axes[1].legend()
axes[1].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('system_identification.png', dpi=150, bbox_inches='tight')
plt.show()
# Print final weights
print("True system: ", h_true)
print("LMS weights: ", np.round(w_lms[-1], 4))
print("NLMS weights: ", np.round(w_nlms[-1], 4))
print("RLS weights: ", np.round(w_rls[-1], 4))
14.3 ์ก์ ์ ๊ฑฐ ๋ฐ๋ชจ¶
# Adaptive Noise Cancellation Demo
np.random.seed(42)
N = 5000
t = np.arange(N) / 1000.0 # 1 kHz sampling rate
# Clean signal: sum of sinusoids
s = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 120 * t)
# Noise source
noise_source = np.random.randn(N)
# Noise that corrupts the signal (filtered version of noise source)
noise_path = np.array([1.0, -0.5, 0.3, -0.1])
n0 = np.convolve(noise_source, noise_path, mode='full')[:N]
# Primary input: signal + noise
d = s + n0
# Reference input: correlated with noise but not with signal
# (different path from the noise source)
ref_path = np.array([0.8, -0.4, 0.2])
n1 = np.convolve(noise_source, ref_path, mode='full')[:N]
# Apply adaptive noise canceller
M = 8 # Filter order (longer than the noise path to be safe)
mu = 0.01
y_lms, e_lms, _ = lms_filter(n1, d, M, mu)
y_nlms, e_nlms, _ = nlms_filter(n1, d, M, mu_tilde=0.5)
y_rls, e_rls, _ = rls_filter(n1, d, M, lam=0.995)
# Plot results
fig, axes = plt.subplots(4, 1, figsize=(14, 12))
axes[0].plot(t[:500], s[:500], 'g', linewidth=1.5, label='Clean signal')
axes[0].set_title('Original Clean Signal')
axes[0].legend()
axes[0].grid(True, alpha=0.3)
axes[1].plot(t[:500], d[:500], 'r', alpha=0.7, label='Signal + Noise')
axes[1].set_title('Noisy Signal (Primary Input)')
axes[1].legend()
axes[1].grid(True, alpha=0.3)
axes[2].plot(t[:500], e_nlms[:500], 'b', alpha=0.7, label='NLMS output')
axes[2].plot(t[:500], s[:500], 'g--', alpha=0.5, label='Clean (reference)')
axes[2].set_title('Recovered Signal (NLMS Noise Canceller)')
axes[2].legend()
axes[2].grid(True, alpha=0.3)
# SNR improvement over time
window = 200
snr_input = 10 * np.log10(
np.convolve(s**2, np.ones(window)/window, mode='same') /
np.convolve(n0**2, np.ones(window)/window, mode='same') + 1e-10
)
residual_nlms = e_nlms - s
snr_output = 10 * np.log10(
np.convolve(s**2, np.ones(window)/window, mode='same') /
np.convolve(residual_nlms**2, np.ones(window)/window, mode='same') + 1e-10
)
axes[3].plot(t, snr_input, 'r', alpha=0.7, label='Input SNR')
axes[3].plot(t, snr_output, 'b', alpha=0.7, label='Output SNR (NLMS)')
axes[3].set_xlabel('Time (s)')
axes[3].set_ylabel('SNR (dB)')
axes[3].set_title('SNR Improvement')
axes[3].legend()
axes[3].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('noise_cancellation.png', dpi=150, bbox_inches='tight')
plt.show()
# Compute overall SNR improvement
snr_in = 10 * np.log10(np.mean(s[M:]**2) / np.mean(n0[M:]**2))
snr_out_nlms = 10 * np.log10(
np.mean(s[1000:]**2) / np.mean((e_nlms[1000:] - s[1000:])**2)
)
print(f"Input SNR: {snr_in:.1f} dB")
print(f"Output SNR (NLMS): {snr_out_nlms:.1f} dB")
print(f"SNR improvement: {snr_out_nlms - snr_in:.1f} dB")
14.4 ์๋ณ ์์คํ ์ถ์ ¶
# Tracking a time-varying system
np.random.seed(42)
N = 4000
x = np.random.randn(N)
# Time-varying system: coefficients change at n=2000
h1 = np.array([1.0, 0.5, -0.3])
h2 = np.array([0.2, -0.8, 1.0])
M = 3
d = np.zeros(N)
for n in range(M, N):
x_vec = x[n-M+1:n+1][::-1]
if n < 2000:
d[n] = np.dot(h1, x_vec) + 0.01 * np.random.randn()
else:
d[n] = np.dot(h2, x_vec) + 0.01 * np.random.randn()
# Compare algorithms
_, e_lms, w_lms = lms_filter(x, d, M, mu=0.05)
_, e_nlms, w_nlms = nlms_filter(x, d, M, mu_tilde=0.8)
_, e_rls, w_rls = rls_filter(x, d, M, lam=0.98)
# Plot weight trajectories
fig, axes = plt.subplots(3, 1, figsize=(12, 10), sharex=True)
titles = ['LMS', 'NLMS', 'RLS']
w_histories = [w_lms, w_nlms, w_rls]
colors = ['tab:blue', 'tab:orange', 'tab:green']
for ax, title, w_hist in zip(axes, titles, w_histories):
for i in range(M):
ax.plot(w_hist[:, i], label=f'w[{i}]', alpha=0.8)
# Plot true values
ax.axhline(y=h1[0], color='gray', linestyle=':', alpha=0.3)
ax.axhline(y=h1[1], color='gray', linestyle=':', alpha=0.3)
ax.axhline(y=h1[2], color='gray', linestyle=':', alpha=0.3)
ax.axvline(x=2000, color='red', linestyle='--', alpha=0.5, label='System change')
ax.set_title(f'{title} Weight Tracking')
ax.legend(loc='upper right')
ax.grid(True, alpha=0.3)
axes[-1].set_xlabel('Iteration')
plt.tight_layout()
plt.savefig('tracking_demo.png', dpi=150, bbox_inches='tight')
plt.show()
15. ์ฐ์ต ๋ฌธ์ ¶
์ฐ์ต ๋ฌธ์ 1: ์๋ ํํฐ¶
$x(n)$์ด ๋ถ์ฐ $\sigma_x^2 = 1$์ธ ๋ฐฑ์ ์ก์์ด๊ณ , ์ํ๋ ์ ํธ๊ฐ $d(n) = 0.8x(n) + 0.5x(n-1) - 0.3x(n-2) + v(n)$์ธ ์์คํ ์ ๊ณ ๋ คํ์ธ์. ์ฌ๊ธฐ์ $v(n)$์ ๋ถ์ฐ $\sigma_v^2 = 0.1$์ธ ๋ฐฑ์ ์ก์์ผ๋ก $x(n)$๊ณผ ๋ ๋ฆฝ์ ๋๋ค.
(a) 3ํญ ์๋ ํํฐ์ ๋ํ ์๊ธฐ์๊ด ํ๋ ฌ $\mathbf{R}$์ ๊ณ์ฐํ์ธ์.
(b) ์ํธ์๊ด ๋ฒกํฐ $\mathbf{p}$๋ฅผ ๊ณ์ฐํ์ธ์.
(c) $\mathbf{R}\mathbf{w}_{opt} = \mathbf{p}$๋ฅผ ํ์ด ์ต์ ์๋ ํํฐ $\mathbf{w}_{opt}$๋ฅผ ๊ตฌํ์ธ์.
(d) ์ต์ MSE $J_{min}$์ ๊ณ์ฐํ์ธ์.
์ฐ์ต ๋ฌธ์ 2: LMS ์๋ ด¶
$M = 10$ ํญ์ ๊ฐ์ง LMS ํํฐ๊ฐ ์๊ธฐ์๊ด ํ๋ ฌ์ ๊ณ ์ ๊ฐ์ด $\lambda_{max} = 5.0$, $\lambda_{min} = 0.1$์ธ ์ ๋ ฅ ์ ํธ์ ์ ์ฉ๋ฉ๋๋ค.
(a) ํ๊ท ์๋ ด์ ์ํ ์ต๋ ์คํ ํฌ๊ธฐ๋ ์ผ๋ง์ ๋๊น?
(b) ์กฐ๊ฑด์ $\chi(\mathbf{R})$์ ์ผ๋ง์ ๋๊น?
(c) $\mu = 0.01$์ด๋ฉด, $\text{tr}(\mathbf{R}) = 10$์ผ ๋ ์ค์กฐ์ $\mathcal{M}$์ ๊ณ์ฐํ์ธ์.
(d) ๊ฐ์ฅ ๋๋ฆฐ ๋ชจ๋์ ์๋ ด ์์์ $\tau_{mse}$๋ฅผ ์ถ์ ํ์ธ์.
(e) LMS๋ฅผ ์ ์ฉํ๊ธฐ ์ ์ ์ ๋ ฅ์ ๋ฐฑ์ํ(whitening)ํ๋ฉด ์๋ ด์ด ์ด๋ป๊ฒ ๋ณํ ์ง ์ง์ ์ผ๋ก ์ค๋ช ํ์ธ์.
์ฐ์ต ๋ฌธ์ 3: NLMS vs LMS¶
์ ๋ ฅ์ด 500 ์ํ๋ง๋ค 0.1๊ณผ 10.0 ์ฌ์ด๋ฅผ ๊ต๋ํ๋ ๋น์ ์ ์ ๋ ฅ ์ ํธ์ ๋ํด ์ก์ ์ ๊ฑฐ๋ฅผ ์ํ LMS์ NLMS๋ฅผ ๋ชจ๋ ๊ตฌํํ์ธ์. ํํฐ ์ฐจ์ $M = 16$์ ์ฌ์ฉํ์ธ์.
(a) ๊ณ ์ ์คํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง LMS๊ฐ ๊ณ ์ ๋ ฅ ๊ตฌ๊ฐ์์ ๋ฐ์ฐํ๊ฑฐ๋ ์ ์ ๋ ฅ ๊ตฌ๊ฐ์์ ๋๋ฌด ๋๋ฆฌ๊ฒ ์๋ ดํจ์ ๋ณด์ด์ธ์.
(b) NLMS๊ฐ ์ ๋ ฅ ๋ณ๋์ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํจ์ ์์ฐํ์ธ์.
(c) ๋ ์๊ณ ๋ฆฌ์ฆ์ MSE ํ์ต ๊ณก์ ์ ๊ทธ๋ฆฌ์ธ์.
์ฐ์ต ๋ฌธ์ 4: RLS ๊ตฌํ¶
์ํ์ค ์๋ต $h = [1, -0.5, 0.25, -0.125]$๋ฅผ ๊ฐ์ง ์์คํ ์ ์๋ณํ๊ธฐ ์ํด ๋ง๊ฐ ์ธ์ $\lambda = 0.99$๋ก RLS๋ฅผ ๊ตฌํํ์ธ์.
(a) ๊ฐ ๊ฐ์ค์น๊ฐ ์ค์ ๊ฐ์ผ๋ก ์๋ ดํ๋ ๊ฒ์ ๊ทธ๋ํ๋ก ๋ํ๋ด์ธ์. LMS ๋ฐ NLMS์ ๋น๊ตํ์ธ์.
(b) $\lambda$๋ฅผ 0.9์์ 1.0๊น์ง ๋ณํ์ํค๊ณ ์ ์ ์ํ MSE ๋ ์๋ ด ์๊ฐ ํธ๋ ์ด๋์คํ๋ฅผ ๊ทธ๋ฆฌ์ธ์.
(c) $n = 1000$์์ ์์คํ ๋ณํ๋ฅผ ๋์ ํ์ธ์ ($h$๋ฅผ $[0.5, 0.3, -0.2, 0.1]$๋ก ๋ณ๊ฒฝ). LMS, NLMS, RLS์ ์ถ์ ์ฑ๋ฅ์ ๋น๊ตํ์ธ์.
์ฐ์ต ๋ฌธ์ 5: ์์ฝ ์ ๊ฑฐ ์๋ฎฌ๋ ์ด์ ¶
์ํฅ ์์ฝ ์ ๊ฑฐ ์๋๋ฆฌ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํ์ธ์:
(a) ๋ค์ํ ์ฃผํ์์ ์ ํํ ํฉ์ผ๋ก "์๋จ ์์ฑ" ์ ํธ๋ฅผ ์์ฑํ์ธ์.
(b) ์ค๋ด ์ํ์ค ์๋ต์ ์์ฑํ์ธ์ (๊ธธ์ด 100์ ์ง์์ ์ผ๋ก ๊ฐ์ํ๋ ๋๋ค ์ํ์ค ์ฌ์ฉ).
(c) ๊ทผ๋จ(near-end) ์ก์์ ์ถ๊ฐํ์ธ์.
(d) ํํฐ ์ฐจ์ 128์ NLMS๋ฅผ ์ ์ฉํ์ธ์. ์๊ฐ์ ๋ฐ๋ฅธ ์์ฝ ๋ฐํ ์์ค ํฅ์(ERLE)์ ๊ทธ๋ฆฌ์ธ์:
$$\text{ERLE}(n) = 10 \log_{10} \frac{E[d^2(n)]}{E[e^2(n)]}$$
(e) ์ด์ค ํตํ(๊ทผ๋จ ์์ฑ ์ถ๊ฐ)๊ฐ ์ ์ ํํฐ์ ๋ฏธ์น๋ ์ํฅ์ ์กฐ์ฌํ์ธ์.
์ฐ์ต ๋ฌธ์ 6: ์ ์ ๋ฑํ¶
๋์งํธ ํต์ ์ฑ๋์ด ์ํ์ค ์๋ต $c = [0.5, 1.0, 0.5]$๋ฅผ ๊ฐ์ง๋๋ค (ISI ๋ฐ์).
(a) ๋๋ค BPSK ์ ํธ($a(n) \in \{-1, +1\}$)๋ฅผ ์์ฑํ๊ณ ์ฑ๋์ ํต๊ณผ์ํค์ธ์. SNR = 20 dB์์ ์ก์์ ์ถ๊ฐํ์ธ์.
(b) $M = 11$ ํญ๊ณผ ๊ฒฐ์ ์ง์ฐ $\Delta = 5$๋ก LMS๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ๋ฑํ๊ธฐ๋ฅผ ์ค๊ณํ์ธ์.
(c) ํ๋ จ ๊ธธ์ด์ ํจ์๋ก ๋นํธ ์ค๋ฅ์จ(BER)์ ๊ทธ๋ฆฌ์ธ์.
(d) 500๊ฐ์ ํ๋ จ ์ฌ๋ณผ ํ ๊ฒฐ์ ์ฃผ๋ ๋ชจ๋๋ก ์ ํํ๊ณ BER์ด ์์ ์ ์ผ๋ก ์ ์ง๋จ์ ๊ฒ์ฆํ์ธ์.
(e) ๋ฑํ ์ ํ์ ์์ด ๋ค์ด์ด๊ทธ๋จ(eye diagram)์ ๋น๊ตํ์ธ์.
์ฐ์ต ๋ฌธ์ 7: ํํฐ ์ฐจ์์ ์ํฅ¶
์ค์ ์์คํ $h = [0.5, 1.2, -0.8, 0.3, -0.1]$์ ๋ํ ์์คํ ์๋ณ ๋ฌธ์ ์์:
(a) ํํฐ ์ฐจ์ $M = 3, 5, 7, 10, 20$์ผ๋ก LMS๋ฅผ ์คํํ๊ณ ์ ์ ์ํ MSE๋ฅผ ๋น๊ตํ์ธ์.
(b) $M < 5$ (๊ณผ์ ๋ชจ๋ธ๋ง)์ $M > 5$ (๊ณผ๋ ๋ชจ๋ธ๋ง)์ผ ๋ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ์ค๋ช ํ์ธ์.
(c) ๊ฐ $M$์ ๋ํด ์๋ณ๋ ์ํ์ค ์๋ต์ ๊ทธ๋ฆฌ์ธ์.
16. ์์ฝ¶
| ๊ฐ๋ | ํต์ฌ ๊ณต์ / ์์ด๋์ด |
|---|---|
| ์๋ ํํฐ | $\mathbf{w}_{opt} = \mathbf{R}^{-1}\mathbf{p}$ (์ต์ MMSE) |
| ์ต๊ธ๊ฐํ๋ฒ | $\mathbf{w}(n+1) = \mathbf{w}(n) + 2\mu(\mathbf{p} - \mathbf{R}\mathbf{w}(n))$ |
| ์๋ ด ์กฐ๊ฑด | $0 < \mu < 1/\lambda_{max}$ |
| LMS ๊ฐฑ์ | $\mathbf{w}(n+1) = \mathbf{w}(n) + \mu \, e(n) \, \mathbf{x}(n)$ |
| LMS ์ค์กฐ์ | $\mathcal{M} = \mu \, \text{tr}(\mathbf{R})$ |
| NLMS ๊ฐฑ์ | $\mathbf{w}(n+1) = \mathbf{w}(n) + \frac{\tilde{\mu}}{\|\mathbf{x}\|^2+\delta} e(n)\mathbf{x}(n)$ |
| RLS ์ด๋ | $\mathbf{k}(n) = \frac{\mathbf{P}(n-1)\mathbf{x}(n)}{\lambda + \mathbf{x}^T(n)\mathbf{P}(n-1)\mathbf{x}(n)}$ |
| ๋ง๊ฐ ์ธ์ ๋ฉ๋ชจ๋ฆฌ | $N_{eff} = 1/(1-\lambda)$ |
| ์ก์ ์ ๊ฑฐ | ์ค์ฐจ ์ ํธ $e(n) = d(n) - \hat{y}(n) \approx s(n)$ |
| ํธ๋ ์ด๋์คํ | ๋น ๋ฅธ ์๋ ด vs ๋ฎ์ ์ค์กฐ์ |
ํต์ฌ ์ ๋ฆฌ: 1. ์๋ ํํฐ๋ ์ด๋ก ์ ์ต์ ์ ์ ๊ณตํ์ง๋ง ์๋ ค์ง ํต๊ณ๊ฐ ํ์ํฉ๋๋ค. 2. LMS๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ์๊ฐ ์ถ์ ๊ฐ์ผ๋ก ๊ทผ์ฌํฉ๋๋ค - ๋จ์ํ๊ณ ๊ฐ๊ฑดํ๋ฉฐ $O(M)$์ ๋๋ค. 3. NLMS๋ ์ ๋ ฅ ์ ๋ ฅ์ผ๋ก ์ ๊ทํํฉ๋๋ค - ๋ณ๋ํ๋ ์ ํธ ๋ ๋ฒจ์์ ๋ ๋์ ์์ ์ฑ์ ์ ๊ณตํฉ๋๋ค. 4. RLS๋ ์ง์ ๊ฐ์ค์น๋ก ๋ชจ๋ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค - $O(M^2)$ ๋น์ฉ์ผ๋ก ๋น ๋ฅธ ์๋ ด์ ๋ฌ์ฑํฉ๋๋ค. 5. ์ค์กฐ์ -์๋ ด ํธ๋ ์ด๋์คํ๋ ๋ชจ๋ ์ ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ทผ๋ณธ์ ์ ๋๋ค. 6. ์ ์ ํํฐ๋ ์ก์ ์ ๊ฑฐ์์ ๋ฑํ๊น์ง ์๋ง์ ์์ฉ์ ์ง์ํฉ๋๋ค.
17. ์ฐธ๊ณ ๋ฌธํ¶
- S. Haykin, Adaptive Filter Theory, 5th ed., Pearson, 2014.
- A.H. Sayed, Adaptive Filters, Wiley-IEEE Press, 2008.
- P.S.R. Diniz, Adaptive Filtering: Algorithms and Practical Implementation, 4th ed., Springer, 2013.
- B. Widrow and S.D. Stearns, Adaptive Signal Processing, Pearson, 1985.
- S. Haykin, "Adaptive filter theory," in Proc. IEEE, vol. 90, no. 2, pp. 211-259, 2002.
- B. Farhang-Boroujeny, Adaptive Filters: Theory and Applications, 2nd ed., Wiley, 2013.
์ด์ : 12. ๋ค์ค ๋ ์ดํธ ์ ํธ ์ฒ๋ฆฌ | ๋ค์: 14. ์๊ฐ-์ฃผํ์ ๋ถ์