이 강의의 목표는 높은 차원으로 직접 보내지 않고 비슷도로 비선형 문제를 푸는 법을 아주 기초부터 이해하는 것입니다.
먼저 오늘의 핵심 식을 봅니다.
K i j = k ( x i , x j ) K_{ij}=k(x_i,x_j)
K i j = k ( x i , x j )
이 식을 외우기 전에, 식 안의 말과 기호를 먼저 하나씩 풀어야 합니다.
말
뜻
커널
두 입력의 비슷도를 계산하는 함수
커널행렬
모든 데이터 쌍의 비슷도 표
특징사상
입력을 새 특징으로 옮기는 함수 ϕ \phiϕ
커널 트릭
새 좌표를 직접 만들지 않는 방법
RKHS
커널이 만들어 내는 함수 공간
수학에서 어려운 부분은 계산보다 읽기입니다. 뜻을 모르고 계산하면 공식이 암호처럼 보입니다.
동그라미 안쪽 점과 바깥쪽 점은 직선으로 나누기 어렵습니다. 하지만 반지름 같은 새 특징을 쓰면 쉬워집니다. 커널은 이런 새 특징 효과를 비슷도 계산으로 대신합니다.
핵심 식을 다시 봅니다.
K i j = k ( x i , x j ) K_{ij}=k(x_i,x_j)
K i j = k ( x i , x j )
기호를 하나씩 말로 바꿉니다.
x i x_ix i , x j x_jx j 는 각각 i ii 번째와 j jj 번째 데이터입니다.
k ( ⋅ , ⋅ ) k(\cdot,\cdot)k ( ⋅ , ⋅ ) 는 커널 함수로, 두 입력이 얼마나 비슷한지 하나의 숫자로 돌려줍니다.
K KK 는 커널행렬(그람행렬)입니다. 데이터가 n nn 개면 n × n n\times nn × n 크기입니다.
K i j K_{ij}K i j 는 그 행렬의 i ii 행 j jj 열 원소, 즉 x i x_ix i 와 x j x_jx j 의 비슷도입니다.
즉 이 식은 "커널행렬의 각 칸은 두 데이터의 비슷도"라는 뜻입니다. 그런데 이 비슷도가 왜 고차원 특징의 내적과 같은지, 즉 커널 트릭이 무엇인지는 다음 절에서 정의합니다.
비선형 문제를 풀려면 입력을 높은 차원으로 옮겨야 할 때가 많습니다. 이 옮기는 함수를 특징사상 ϕ \phiϕ 라 합니다. 예를 들어 ϕ \phiϕ 가 수백, 수천 차원이면 좌표를 직접 계산하고 저장하는 비용이 큽니다.
핵심 통찰은 많은 학습 알고리즘이 특징 좌표 자체가 아니라 두 특징의 내적만 필요로 한다는 점입니다. 그래서 특징사상의 내적을 직접 계산하는 함수를 커널로 정의합니다.
k ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ k(x_i,x_j)=\langle \phi(x_i),\phi(x_j)\rangle
k ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩
이렇게 하면 ϕ ( x ) \phi(x)ϕ ( x ) 를 실제로 만들지 않고도 고차원 공간에서의 내적을 얻습니다. 이것이 커널 트릭입니다. 고차원으로 "올라갔다 내려오는" 계산을 생략하고, 비슷도 한 번으로 끝냅니다.
k ( x i , x j ) = ( x i T x j + c ) d k(x_i,x_j)=(x_i^Tx_j+c)^d
k ( x i , x j ) = ( x i T x j + c ) d
d = 2 d=2d = 2 , c = 0 c=0c = 0 인 경우를 보면, 이 커널은 원래 특징들의 곱(2차 상호작용)을 특징으로 쓰는 것과 같습니다. 즉 ϕ \phiϕ 를 명시적으로 만들지 않아도 2차 다항 특징공간의 내적을 계산합니다.
k ( x i , x j ) = exp ( − ∥ x i − x j ∥ 2 2 σ 2 ) k(x_i,x_j)=\exp\!\Big(-\frac{\lVert x_i-x_j\rVert^2}{2\sigma^2}\Big)
k ( x i , x j ) = exp ( − 2 σ 2 ∥ x i − x j ∥ 2 )
두 점이 가까우면 거리 제곱이 작아 값이 1에 가깝고, 멀면 0에 가까워집니다. 이 커널의 특징공간은 무한 차원이지만, 커널 트릭 덕분에 거리 계산만으로 다룰 수 있습니다.
RKHS(재생핵 힐베르트공간)는 커널 하나가 만들어 내는 함수들의 공간입니다. 핵심 아이디어는 각 데이터 x xx 마다 그 점을 중심으로 한 "기본 함수" k ( x , ⋅ ) k(x,\cdot)k ( x , ⋅ ) 를 두고, 이들을 겹쳐서 함수를 만드는 것입니다.
f ( ⋅ ) = ∑ i α i k ( x i , ⋅ ) f(\cdot)=\sum_i \alpha_i\, k(x_i,\cdot)
f ( ⋅ ) = i ∑ α i k ( x i , ⋅ )
이 공간에서는 함수값을 내적으로 다시 얻는 재생성질이 성립합니다.
f ( x ) = ⟨ f , k ( x , ⋅ ) ⟩ f(x)=\langle f,\ k(x,\cdot)\rangle
f ( x ) = ⟨ f , k ( x , ⋅ ) ⟩
그래서 "복잡한 함수 학습"이 "커널로 만든 기본 함수들의 가중합 찾기"로 바뀝니다. 대표정리에 따르면 많은 학습 문제의 최적해가 실제로 위 형태, 즉 데이터에 걸린 커널들의 조합으로 나옵니다. 그래서 무한 차원 함수공간을 다루면서도 계산은 유한한 커널행렬 K KK 로 끝납니다.
문제: σ = 1 \sigma=1σ = 1 인 RBF 커널에서 x i = [ 0 0 ] x_i=\begin{bmatrix} 0 \\ 0 \end{bmatrix}x i = [ 0 0 ] , x j = [ 1 1 ] x_j=\begin{bmatrix} 1 \\ 1 \end{bmatrix}x j = [ 1 1 ] 의 커널값을 구하라.
풀이: 먼저 거리 제곱을 계산합니다.
∥ x i − x j ∥ 2 = ( 0 − 1 ) 2 + ( 0 − 1 ) 2 = 1 + 1 = 2 \lVert x_i-x_j\rVert^2=(0-1)^2+(0-1)^2=1+1=2
∥ x i − x j ∥ 2 = ( 0 − 1 ) 2 + ( 0 − 1 ) 2 = 1 + 1 = 2
커널값은 다음과 같습니다.
k ( x i , x j ) = exp ( − 2 2 ⋅ 1 2 ) = e − 1 ≈ 0.368 k(x_i,x_j)=\exp\!\Big(-\frac{2}{2\cdot 1^2}\Big)=e^{-1}\approx 0.368
k ( x i , x j ) = exp ( − 2 ⋅ 1 2 2 ) = e − 1 ≈ 0 . 3 6 8
같은 점끼리는 거리 0이라 k ( x i , x i ) = e 0 = 1 k(x_i,x_i)=e^{0}=1k ( x i , x i ) = e 0 = 1 입니다. 그래서 커널행렬의 대각선은 모두 1이고, 멀어질수록 값이 작아집니다.
문제: d = 2 d=2d = 2 , c = 0 c=0c = 0 인 다항 커널에서 x i = [ 1 2 ] x_i=\begin{bmatrix} 1 \\ 2 \end{bmatrix}x i = [ 1 2 ] , x j = [ 3 1 ] x_j=\begin{bmatrix} 3 \\ 1 \end{bmatrix}x j = [ 3 1 ] 의 커널값을 구하라.
풀이: 먼저 내적을 구합니다.
x i T x j = 1 ⋅ 3 + 2 ⋅ 1 = 5 x_i^Tx_j=1\cdot 3+2\cdot 1=5
x i T x j = 1 ⋅ 3 + 2 ⋅ 1 = 5
커널값은 다음과 같습니다.
k ( x i , x j ) = ( 5 ) 2 = 25 k(x_i,x_j)=(5)^2=25
k ( x i , x j ) = ( 5 ) 2 = 2 5
이 값은 특징사상 ϕ ( x ) = [ x 1 2 2 x 1 x 2 x 2 2 ] \phi(x)=\begin{bmatrix} x_1^2 \\ \sqrt{2}\,x_1x_2 \\ x_2^2 \end{bmatrix}ϕ ( x ) = ⎣ ⎢ ⎡ x 1 2 2 x 1 x 2 x 2 2 ⎦ ⎥ ⎤ 의 내적과 같습니다. 실제로 ϕ ( x i ) = [ 1 2 2 4 ] \phi(x_i)=\begin{bmatrix} 1 \\ 2\sqrt{2} \\ 4 \end{bmatrix}ϕ ( x i ) = ⎣ ⎢ ⎡ 1 2 2 4 ⎦ ⎥ ⎤ , ϕ ( x j ) = [ 9 3 2 1 ] \phi(x_j)=\begin{bmatrix} 9 \\ 3\sqrt{2} \\ 1 \end{bmatrix}ϕ ( x j ) = ⎣ ⎢ ⎡ 9 3 2 1 ⎦ ⎥ ⎤ 이고, 내적은 1 ⋅ 9 + 2 2 ⋅ 3 2 + 4 ⋅ 1 = 9 + 12 + 4 = 25 1\cdot 9+2\sqrt{2}\cdot 3\sqrt{2}+4\cdot 1=9+12+4=251 ⋅ 9 + 2 2 ⋅ 3 2 + 4 ⋅ 1 = 9 + 1 2 + 4 = 2 5 입니다. ϕ \phiϕ 를 직접 만들지 않고 커널 한 번으로 같은 값을 얻었습니다.
오늘 배운 핵심은 높은 차원으로 직접 보내지 않고 비슷도로 비선형 문제를 푸는 법입니다.
커널 트릭은 특징사상의 내적을 직접 계산합니다: k ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ k(x_i,x_j)=\langle \phi(x_i),\phi(x_j)\ranglek ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ .
다항 커널과 RBF 커널이 대표적이며, RBF는 무한 차원 특징공간에 해당합니다.
RKHS는 커널로 만든 기본 함수들의 가중합으로 이루어진 함수공간이고, 계산은 커널행렬 K KK 로 끝납니다.
K i j = k ( x i , x j ) K_{ij}=k(x_i,x_j)
K i j = k ( x i , x j )
커널 트릭의 정의식 k ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ k(x_i,x_j)=\langle \phi(x_i),\phi(x_j)\ranglek ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ 을 설명할 수 있는가?
RBF 커널에서 두 점이 가까울 때와 멀 때 값은 각각 어떻게 되는가?
RKHS의 함수는 어떤 형태로 표현되는가?
다항 커널이 특징 내적과 같음을 예로 확인할 수 있는가?