Introduction to Pattern Recognition for human ICT Parameter estimation 2014. 10. 17 Hyunki Hong Contents • Introduction • Parameter estimation • Maximum likelihood • Bayesian estimation • In most situations, the true distributions are unknown and must be estimated from data. – Two approaches are commonplace. 1. Parameter Estimation 2. Non-parametric Density Estimation • Parameter estimation – Assume a particular form for the density (e.g. Gaussian), so only the parameters (e.g., mean and variance) need to be estimated. 1. Maximum Likelihood 2. Bayesian Estimation • Non-parametric density estimation – Assume NO knowledge about the density 1. Kernel Density Estimation 2. Nearest Neighbor Rule ML vs. Bayesian parameter estimation • Maximum Likelihood – The parameters are assumed to be FIXED but unknown. – The ML solution seeks the solution that “best” explains the dataset X : • Bayesian estimation – Parameters are assumed to be random variables with some (assumed) known a priori distribution. – Bayesian methods seeks to estimate the posterior density ๐(๐| ๐) – The final density ๐(๐ฅ|๐) is obtained by integrating out the parameters. Maximum Likelihood • Problem definition – Assume we seek to estimate a density ๐(๐ฅ) that is known to depends on a number of parameters ๐ = [๐1, ๐2, …, ๐๐]๐. 1. For a Gaussian pdf, ๐1 = ๐, ๐2 = ๐ and ๐(๐ฅ) = ๐(๐, ๐). 2. To make the dependence explicit, we write ๐(๐ฅ|๐). – Assume we have dataset ๐ = {๐ฅ(1, ๐ฅ(2, …, ๐ฅ(๐} drawn independently from the distribution ๐(๐ฅ|๐) (an i.i.d. set) 1. Then we can write independent identically distributed 2. The ML estimate of ๐ is the value that maximizes the likelihood ๐(๐|๐). 3. This corresponds to the intuitive idea of choosing the value of ๐ that is most likely to give rise to the data. • For convenience, we will work with the log likelihood - Because the log is a monotonic function, then: - Hence, the ML estimate of ๐ can be written as: 1. This simplifies the problem, since now we have to maximize a sum of terms rather than a long product of terms. 2. An added advantage of taking logs will become very clear when the distribution is Gaussian. Example: Gaussian case, ๐ unknown • Problem statement – Assume a dataset ๐ = {๐ฅ(1, ๐ฅ(2, …, ๐ฅ(๐ } and a density of the form ๐ (๐ฅ) = ๐(๐, ๐) where ๐ is known. – What is the ML estimate of the mean? – The maxima of a function are defined by the zeros of its derivative. - So the ML estimate of the mean is the average value of the training data, a very intuitive result! Example: Gaussian case, both ๐ and ๐ unknown • A more general case when neither ๐ nor ๐ is known. – Fortunately, the problem can be solved in the same fashion. – The derivative becomes a gradient since we have two variables. ์ฐธ๊ณ ์๋ฃ: ๋ท์ฅ – Solving for ๐1 and ๐2 yields Therefore, the ML of the variance is the sample variance of the dataset, again a very pleasing result. – Similarly, it can be shown that the ML estimates for the multivariate Gaussian are the sample mean vector and sample covariance matrix. ์ฐธ๊ณ ์๋ฃ • ๊ฐ์ฐ์์ ํ๋ฅ ๋ฐ๋ํจ์์ ๋ํ ์ต๋์ฐ๋์ถ์ – x = (x1, …, xR)์ด x ~ N(μ, σ2)์ธ ์ํธ ๋ ๋ฆฝ ๋ฐ ๋์ผ ํ๋ฅ ๋ถํฌ ์กฐ๊ฑด์์ ์์ฑ ๋ ํ๋ณธ์ด๋ผ ๊ฐ์ ํ๋ฉด, θ = (θ1, θ2) = (μ, σ) ? • ๋ก๊ทธ ์ฐ๋: θ1, θ2 ์ ๋ํด ๊ฐ๊ฐ ๋ฏธ๋ถ • l(θ)์ ๊ทธ๋๋์ธํธ: d 1 du (log u ) ๏ฝ dx u dx ์ค์ : MLE ๊ฒฐ๊ณผ๋ ๊ฐ๊ฐ ํ์ค๊ณผ ๋ถ์ฐ Bias and variance • How good are these estimates? – Two measures of “goodness” are used for statistical estimates. – BIAS: how close is the estimate to the true value? – VARIANCE: how much does it change for different datasets? – The bias-variance tradeoff : In most cases, you can only decrease one of them at the expense of the other. • What is the bias of the ML estimate of the mean? - Therefore the mean is an unbiased estimate. • What is the bias of the ML estimate of the variance? ์ฐธ๊ณ ์๋ฃ - Thus, the ML estimate of variance is BIASED. This is because the ML estimate of variance uses ๐. instead of – How “bad” is this bias? 1. For ๐→∞ the bias becomes zero asymptotically. 2. The bias is only noticeable when we have very few samples, in which case we should not be doing statistics in the first place! – Notice that MATLAB uses an unbiased estimate of the covariance. Bayesian estimation • In the Bayesian approach, our uncertainty about the parameters is represented by a pdf – Before we observe the data, the parameters are described by a prior density ๐(๐) which is typically very broad to reflect the fact that we know little about its true value. – Once we obtain data, we make use of Bayes theorem to find the posterior ๐(๐|๐). : Ideally we want the data to sharpen the posterior ๐(๐|๐), that is, reduce our uncertainty about parameters. – Remember, though, that our goal is to estimate ๐(๐ฅ) or, more exactly, ๐(๐ฅ|๐), the density given the evidence provided by the dataset X. Joint probability(๊ฒฐํฉํ๋ฅ ): ๋ ์ฌ๊ฑด์ด ๋์์ ์ผ์ด๋ ํ๋ฅ P(A, B) A, B๊ฐ ์๋ก ๋ ๋ฆฝ์ด๋ฉด, P(A, B) = P(A)P(B) = P(A∩B). ์๋๋ฉด P(A, B) = P(A|B)P(A) • Let us derive the expression of a Bayesian estimate. – From the definition of conditional probability - ๐(๐ฅ|๐, ๐) is independent of X since knowledge of ๐ completely specifies the (parametric) density. Therefore and, using the theorem of total probability we can integrate ๐ out: 1. The only unknown in this expression is ๐(๐|๐); using Bayes rule , where ๐(๐|๐) can be computed using the i.i.d. assumption. 2. NOTE : The last three expressions suggest a procedure to estimate ๐(๐ฅ|๐). This is not to say that integration of these expressions is easy! • Example – Assume a univariate density where our random variable ๐ฅ is generated from a normal distribution with known standard deviation. – Our goal is to find the mean ๐ of the distribution given some i.i.d. data points ๐ = {๐ฅ(1, ๐ฅ(2, …, ๐ฅ(๐}. – To capture our knowledge about ๐ = ๐, we assume that it also follows a normal density with mean ๐0 and standard deviation ๐0. – We use Bayes rule to develop an expression for the posterior ๐(๐|๐). – To understand how Bayesian estimation changes the posterior as more data becomes available, we will find the maximum of ๐(๐|๐). – The partial derivative with respect to ๐=๐ is which, after some algebraic manipulation, becomes Therefore, as N increases, the estimate of the mean ๐๐ moves from the initial prior ๐0 to the ML solution. – Similarly, the standard deviation ๐๐can be found to be Example • Assume that the true mean of the distribution ๐(๐ฅ) is ๐ = 0.8 with standard deviation ๐ = 0.3. – In reality we would not know the true mean. – We generate a number of examples from this distribution. – To capture our lack of knowledge about the mean, we assume a normal prior ๐0(๐0), with ๐0 = 0.0 and ๐0 = 0.3. – The figure below shows the posterior ๐(๐|๐). 1. As ๐ increases, the estimate ๐๐ approaches its true value (๐ = 0.8) and the spread ๐๐ (or uncertainty in the estimate). ML vs. Bayesian estimation • What is the relationship between these two estimates? – By definition, ๐(๐|๐) peaks at the ML estimate. – If this peak is relatively sharp and the prior is broad, then the integral below will be dominated by the region around the ML estimate. Therefore, the Bayesian estimate will approximate the ML solution. – As we have seen in the previous example, when the number of available data increases, the posterior ๐(๐|๐) tends to sharpen. 1. Thus, the Bayesian estimate of ๐(๐ฅ) will approach the ML solution as ๐→∞. 2. In practice, only when we have a limited number of observations will the two approaches yield different results. ๋น๋ชจ์ ๋ฐ๋ ์ถ์ ๋ฒ 01_๋น๋ชจ์ ๋ฐ๋ ์ถ์ 02_ํ์คํ ๊ทธ๋จ 03_์ปค๋ ๋ฐ๋ ์ถ์ 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ 05_์ค๋ฌด๋ ์ปค๋์ ์ด์ฉํ ์ปค๋ ๋ฐ๋ ์ถ์ 06_k-NNR์ ์ด์ฉํ ๋ฐ๋ ์ถ์ (๋ค์์ฃผ) 01_๋น๋ชจ์ ๋ฐ๋ ์ถ์ ์ฃผ์ด์ง ์ ํ ๊ฐ์ ๋ฐ์ดํฐ x1, x2, ..., xN๋ก๋ถํฐ ํ๋ฅ ๋ฐ๋ํจ์ P(x|Ck) ์ถ์ ๋ฌธ์ • ๋น๋ชจ์ ๋ฐ๋ ์ถ์ (Non-parametric Density Estimation) – ํ๋ผ๋ฏธํฐ(๋ชจ์)๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ๋ณธ ๋ฐ์ดํฐ์ ๋ํ ๋ฐ๋ํจ์ ์ถ์ – ํ๋ฅ ๋ฐ๋ํจ์ P(x|Ck)๋ฅผ ์ถ์ ํ๋ ๋ฐฉ๋ฒ • ํ์คํ ๊ทธ๋จ • ์ปค๋๋ฐ๋์ถ์ (KDE) – Parzen์ฐฝ ์ด์ฉํ ์ปค๋๋ฐ๋ ์ถ์ – ์ค๋ฌด์ค ์ปค๋ ์ด์ฉํ ๋ฐ๋ ์ถ์ • K-NNR์ ์ด์ฉํ ๋ฐ๋ ์ถ์ 02_ํ์คํ ๊ทธ๋จ • ๋ฐ์ดํฐ์ ๋ฐ๋๋ฅผ ๊ฐ๋จํ ํํ๋ก ํํ − ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ผ์ ๊ฐ๊ฒฉ(bin)์ผ๋ก ๋๋๊ณ ๊ฐ ๊ฐ๊ฒฉ์ ํด๋น๋๋ ํ๋ณธ์ ๋น๋์ ๋ฅผ ์นด์ดํธํ์ฌ ๋ฐ์ดํฐ์ ๋ฐ๋๋ฅผ ํํํ ๊ทธ๋ํ • • ๋น๋์์ ์ด ํฉ = 1 ๏ ํ๋ฅ ๋ฐ๋ ๋จ์ − ๋ฐ๋ ์ถ์ ์ ์ต์ข ๋ชจ์์ ๋ง๋์ ์์์ (origin)๊ณผ ๋ง๋-ํญ(bin-width)์ ์์กดํจ − ๋ฐ์ดํฐ ๊ฐ๊ฒฉ์ด ํด ๊ฒฝ์ฐ, ์ถ์ ๋ ๋ฐ๋ ๊ฐ์ ๋ถ์ฐ์๋ ์ฆ๊ฐ ๏ ๋ถ์ฐ์ ์ ๋๊ฐ ํฐ ๋งค๋๋ฝ์ง ๋ชปํ ๋ฐ๋ ๊ฐ 02_ํ์คํ ๊ทธ๋จ Y = [2.1, 2.4, 2.4, 2.47, 2.7, 2.6, 2.65, 3.3, 3.39, 3.8, 3.87]; X = [0.25:0.5:5]; N= N = hist(Y, X); 0 0 0 0 4 3 2 2 0 0 ๋ง๋ํญ: 0.5 ์์์ : ๊ฐ๊ฐ n.0๊ณผ n.5 02_ํ์คํ ๊ทธ๋จ ๋ง๋ํญ: 0.5 ์์์ ์ 0.25๋งํผ ์ด๋ Y = [2.1, 2.4, 2.4, 2.47, 2.7, 2.6, 2.65, 3.3, 3.39, 3.8, 3.87]; X = [0.5:0.5:5]; N= N = hist(Y, X); 0 0 0 1 6 0 2 2 0 ๋จ์ : 1. ์ถ์ ๋ ๋ฐ๋๋ ์์์ , ๋ง๋ํญ์ ์์กด 2. ๋ค๋ณ๋ ๋ฐ์ดํฐ๋ ์์์ ์ ์ํฅ๋ฐ์. 3. ์ถ์ ๋ ๋ฐ๋๊ฐ ๋ถ์ฐ์์ 0 03_์ปค๋ ๋ฐ๋ ์ถ์ ์ ๊ธฐ๋ณธ ๊ฐ๋ • Histogram vs. Generic KDE – 1D Density Estimation Histogram KDE 03_์ปค๋ ๋ฐ๋ ์ถ์ • ๋น๋ชจ์์ ๋ฐ๋์ถ์ ์ผ๋ฐ์ k p ( x) ๏ NV • ์ปค๋๋ฐ๋์ถ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ V : x๋ฅผ ๋๋ฌ์ผ ์์ญ R์ ์ฒด์ (๋ฉด์ ) N : ํ๋ณธ์ ์ด์ k : ์์ญ R๋ด์ ํ๋ณธ์ ์ – KDE (Kernel Density Estimation) • ์ฒด์ V๋ฅผ ๊ณ ์ ์ํค๊ณ , ์์ญ๋ด์ ํ๋ณธ ์ k๋ฅผ ๊ฐ๋ณํ์ฌ ๋ฐ๋ํจ์ ์ถ์ • Parzen ์ฐฝ(window) ์ถ์ ๋ฒ (๋๋ Parzen–Rosenblatt window)์ด ๋ํ์ – VN = 1 ๊ณผ ๊ฐ์ N์ ํจ์๋ก ์ฒด์ VN ์ ์ง์ ํ์ฌ ์์ญ์ ์ค์ฌ๊ฐ๋ฉด์ ์ต์ ๋ฐ๋ ์ถ์ N – k-NNR ์ถ์ ๋ฒ • ์์ญ ๋ด์ ํ๋ณธ ์ k ๊ฐ์ ๊ณ ์ ๋ ๊ฐ์ผ๋ก ์ ํํ๊ณ ์ฒด์ V๋ฅผ ๋ณ๊ฒฝ์์ผ ์ ๊ทผ • ์ด๋ค ํ๋ณธ์ ์ ํฌํจํ๋ ์ฒด์ ์ด k N ๏ฝ N ๊ฐ์ ํ๋ณธ์ ํฌํจํ๋๋ก ์ฒด์ ์ค์ฌ ๋๊ฐ๋ฉด์ ์ต์ ๋ฐ๋ ์ถ์ 03_์ปค๋ ๋ฐ๋ ์ถ์ n์ ํจ์๋ก ์ฒด์ Vn ์ง์ • ์ปค๋๋ฐ๋์ถ์ ์ ๋๊ฐ์ง ๋ฐฉ๋ฒ kn๊ฐ์ ํ๋ณธ ํฌํจํ๋๋ก ์ฒด์ Vn ์ค์. - KDE, K-NNR ๋ชจ๋ N์ด ์ปค์ง์๋ก ์ค์ ํ๋ฅ ๋ฐ๋์ ์๋ ดํจ. - V์ k๋ N์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ผ๋ก ๊ฒฐ์ ๋จ. 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ • ๋น๋ชจ์์ ๋ฐ๋ํจ์ ์ถ์ ์ผ๋ฐ์: V ๊ณ ์ , k ๊ฐ๋ณ k p ( x) ๏ NV V : x๋ฅผ ๋๋ฌ์ผ ์์ญ ์ฒด์ ๋ฒ์ N : ํ๋ณธ์ ์ด์ k : V๋ด์ ํ๋ณธ์ ์ – ์ค์ฌ์ x๊ฐ ์ ๋ฐฉ์ฒด์ ์ค์ฌ, ํ ๋ณ์ ๊ธธ์ด h์ธ ์ด์ ๋ฐฉ์ฒด๋ฅผ ์์ญ R, ์ฌ๊ธฐ์ k๊ฐ์ ํ๋ณธ์ ํฌํจํ๋ค๋ฉด ์ฒด์ : V ๏ฝ h D D: ์ฐจ์์ ์ Parzen ์ฐฝ(window) : ์ต์ด๊ฐ์ด ์ค์ฌ์ด ๋๋๋ก ํ๋ ๋จ์ ์ด์ ๋ฐฉ์ฒด(hypercube) ๋ฒ์ ๋ด์ ํฌํจ์ํฌ ํ๋ณธ ์๋ฅผ ๊ฒฐ์ ํ ํจ์(kernel) ๏ฌ ๏ฏ1, u j ๏ก 1 2 K (u ) ๏ฝ ๏ญ ๏ฏ ๏ฎ0, ๊ทธ์ธ j ๏ฝ 1,..., D (Uniform kernel) ๏ฆ x ๏ญ xn k ๏ฝ ๏ฅ K ๏ง๏ง n ๏ฝ1 ๏จ h N ๋ฒ์ ๋ด์ ์ ์ ์ด์ ๏ถ ๏ท ๏ท ๏ธ 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ • Parzen–Rosenblatt ์๋์ฐ ๋ฐ๋ํจ์ ์ถ์ ์์ ์ผ๋ฐํ – ์์ญ ๋ด์ ํ๋ณธ์ ์๋ ์ค์ฌ์ด x์ด๊ณ ๊ธธ์ด๊ฐ h์ธ ๋ฒ์ ๋ด๋ถ์ ์ Xn ์ด ์ํ ๋๋ง “1”์ด๊ณ , ๋๋จธ์ง๋ “0”์ด ๋จ – ์์ญ V๋ด์ ํฌํจ๋๋ ํ๋ณธ์ ์ด ์๋ฅผ ๋ฐ๋์ถ์ ์ผ๋ฐ์์ ์นํํ๋ฉด, ๏ฌ ๏ฏ1, u j ๏ก1 2 K (u ) ๏ฝ ๏ญ ๏ฏ ๏ฎ0, ๊ทธ์ธ h ์ผ๋ฐ์ ์ธ ์ปค๋ ๋ฐ๋ํจ์ ์ถ์ ๊ธฐ 1 PKDE ( x) ๏ฝ Nh D ๏ฆX ๏ญXn K ๏ง๏ง ๏ฅ h n ๏ฝ1 ๏จ N ๏ถ ๏ท๏ท ๏ธ 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ • Parzen–Rosenblatt ์๋์ฐ – Kernel functions in common use for KDE 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ • ์ปค๋ํจ์์ ์ญํ PKDE ( x)์๊ธฐ๋๊ฐ – ์ถ์ ๋ ๋ฐ๋ PKDE ( x) ์ ๊ธฐ๋๊ฐ: ์ปค๋ ํจ์์ ์ค์ ํ๋ฅ ๋ฐ๋์ convolution – ์ปค๋์ ํญ h๋ ์ค๋ฌด๋ฉ ํ๋ผ๋ฏธํฐ ์ญํ • ์ปค๋ ํจ์๊ฐ ๋์ผ๋ฉด ๋์์๋ก ์ถ์ ์น๋ ๋ ๋ถ๋๋ฌ์์ง • h ๏ 0 : ์ปค๋ ํจ์์ ํญ ๏ 0, ํจ์ ๊ฐ ๏ ๋ฌดํ๋ ์ฆ, h ๏ 0 ์ด๋ฉด ์ปค๋ ํจ์๊ฐ delta function์ ์๋ ดํจ. 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ • ์ปค๋ํจ์์ ์ญํ 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ • ์ปค๋ํจ์์ ์ญํ ๏ฌ ๏ฏ1, u j ๏ก1 2 K (u ) ๏ฝ ๏ญ ๏ฏ ๏ฎ0, ๊ทธ์ธ (Uniform kernel) 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ • ์ปค๋ํจ์์์ bandwidth h์ ์ญํ 1 pn ( x) ๏ฝ Nh D ๏ฆ X ๏ญXn ๏ถ ๏ท๏ท K ๏ง๏ง ๏ฅ n ๏ฝ1 ๏จ h ๏ธ N – ์ปค๋ ํจ์๊ฐ ๋ค์๊ณผ ๊ฐ์ delta function์ด๋ผ๊ณ ๊ฐ์ ํ๋ฉด 1 ๏ฆX๏ถ ๏ค n ( X ) ๏ฝ K ๏ง๏ง ๏ท๏ท Vn ๏จ hn ๏ธ 1 n pn ( x ) ๏ฝ ๏ฅ ๏ค n ๏จ X ๏ญ X n j ๏ฝ1 j ๏ฉ • h ๊ฐ ์ปค์ง์๋ก – delta function์ ํฌ๊ธฐ ๊ฐ์ – ๋์์ ํฌํจ๋๋ ํ๋ณธ ๋ฐ์ดํฐ ์ ์ฆ๊ฐ – ๋๊ฒ ํผ์ง ํํํ ํํ์ ํจ์ • h ๊ฐ ์์์ง์๋ก – delta function์ ํฌ๊ธฐ ์ฆ๊ฐ – Bandwith์ ํฌํจ๋๋ ํ๋ณธ ๋ฐ์ดํฐ ์ ๊ฐ์ – ํผํฌ๋ชจ์์ ๊ฐ๊น์ด ํํ์ ๋ฐ๋ํจ์ ๏ค n (X ) 04_Parzen ์ฐฝ์ ์ํ ์ปค๋ ๋ฐ๋ ์ถ์ • ์ปค๋ํจ์์ ์ญํ 05_์ค๋ฌด๋ ์ปค๋์ ์ด์ฉํ ์ปค๋ ๋ฐ๋ ์ถ์ – ์ฐ์์ ์ธ ํํ์ ์ปค๋ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํญ์ ์์ธ ์ค๋ฌด๋ ์ปค๋ํจ์ K(x)๋ก ํ์ ์ฐฝ ์ผ๋ฐํํด์ ๋ถ์ฐ์ ํ์ ํด๊ฒฐ h: ์ค๋ฌด๋ ํ๋ผ๋ฏธํฐ ๋๋ ๋์ญํญ – Parzen ์ฐฝ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ถ์ ๋ ์ ์ฒด ๋ฐ๋์ ๋ชจ์์ด ๋ถ์ฐ์์ ์ธ ๋ชจ์์ ๊ฐ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ถ์ ๋ฒ 05_์ค๋ฌด์ค ์ปค๋์ ์ด์ฉํ ์ปค๋ ๋ฐ๋ ์ถ์ • ์ฐฝํจ์ ํจ๊ณผ 05_์ค๋ฌด์ค ์ปค๋์ ์ด์ฉํ ์ปค๋ ๋ฐ๋ ์ถ์ • ์ฐฝํจ์ ํจ๊ณผ - ๋์ญํญ์ด ์ง๋์น๊ฒ ์ปค์ง๋ฉด: • ๋ฐ๋ํจ์์ ๊ณผ๋ํ ํํํ » Oversmooth • ์ ํํ ํํ ์ถ์ ์ ์ด๋ ค์ - ๋์ญํญ์ด ์ง๋์น๊ฒ ์ข์์ง ๋ฉด: • ์ ์ฒด์ ์ถ์ธ๊ฐ ์๋ ๊ฐ๋ณ ๋ฐ ์ดํฐ์ ๋ฏผ๊ฐํด์ง » Undersmooth • ๋ถ์์ด๋ ํด๋์คํ ํ๋ค์ด์ง 05_์ค๋ฌด์ค ์ปค๋์ ์ด์ฉํ ์ปค๋ ๋ฐ๋ ์ถ์ • ์ธ๋์ค๋ฌด๋vs. ์ค๋ฒ์ค๋ฌด๋