인지야공

인지야공/인공 지능 공부 치트 시트 정리/6번째 글

CS229 지도학습 치트시트를 다시 쓴다 — 무엇이 무엇의 특수한 경우인가

알고리즘을 하나씩 외우면 여덟 개가 여덟 개다. CS229 치트시트가 좋은 이유는 무엇이 무엇의 특수한 경우인지를 계속 보여 주기 때문이다. 그 뼈대만 남기고 다시 썼다.

알고리즘별 특징과 실기 코드는 알고리즘 정리 글에 이미 적어 두었으니 여기서는 되풀이하지 않는다. 여기는 왜 그 식이 그렇게 생겼는가 쪽이다.

판별 모델과 생성 모델

판별 모델생성 모델
배우는 것P(y∣x)P(y \mid x) 를 직접P(x∣y)P(x \mid y) 를 배워 P(y∣x)P(y \mid x) 를 유도
결과물결정 경계데이터의 확률분포
예선형·로지스틱 회귀, SVM, 신경망GDA, 나이브 베이즈

생성 모델은 “각 부류의 데이터가 어떻게 생겼는지”를 배우고 베이즈 정리로 뒤집는다.

P(y∣x)=P(x∣y) P(y)P(x)P(y \mid x) = \frac{P(x \mid y)\,P(y)}{P(x)}

가정이 강한 대신 데이터가 적을 때 유리하다. 판별 모델은 가정이 약한 대신 데이터를 더 요구한다. 어느 쪽이 낫다가 아니라 이 교환이 전부다.

모델이 다른 게 아니라 손실이 다른 것이다

J(θ)=∑i=1mL(hθ(x(i)), y(i))J(\theta) = \sum_{i=1}^{m} L\big(h_\theta(x^{(i)}),\, y^{(i)}\big)

손실식쓰는 곳
최소제곱12(y−z)2\tfrac12 (y-z)^2선형회귀
로지스틱log⁡(1+e−yz)\log(1+e^{-yz})로지스틱 회귀
힌지max⁡(0, 1−yz)\max(0,\, 1-yz)SVM
교차엔트로피−[ylog⁡z+(1−y)log⁡(1−z)]-[y\log z + (1-y)\log(1-z)]신경망

넷 다 “얼마나 틀렸는가”를 재는 함수이고, 모델의 뼈대(θTx\theta^T x)는 같다. 힌지 손실을 숫자로 보면 SVM 의 성격이 바로 보인다.

y=+1, z= 2.0 → 0.0   경계에서 충분히 떨어졌다. 벌점 없음
y=+1, z= 0.5 → 0.5   맞혔지만 경계에 너무 가깝다 → 벌점
y=+1, z=-1.0 → 2.0   틀렸다

맞혀도 아슬아슬하면 벌점을 준다 — 이것이 “마진을 최대화한다”의 실제 구현이다.

최적화 — 경사하강과 뉴턴법

θ←θ−α∇θJ(θ)\theta \leftarrow \theta - \alpha \nabla_\theta J(\theta)

방식한 번 갱신에 쓰는 데이터
배치 경사하강전체
미니배치묶음 하나
확률적(SGD)한 개

뉴턴법은 ℓ′(θ)=0\ell'(\theta)=0 을 직접 찾는다. 2차 미분까지 쓰므로 훨씬 적은 횟수로 수렴하지만, 다차원에서는 헤시안 ∇θ2ℓ\nabla^2_\theta \ell 의 역행렬이 필요해서 변수가 많으면 비싸진다.

θ←θ−(∇θ2ℓ(θ))−1∇θℓ(θ)\theta \leftarrow \theta - \left(\nabla^2_\theta \ell(\theta)\right)^{-1} \nabla_\theta \ell(\theta)

변수가 수천 개인 요즘 모델이 뉴턴법 대신 SGD 를 쓰는 이유가 여기 있다.

선형회귀 — 정규방정식은 정말 닫힌 해다

θ=(XTX)−1XTy\theta = (X^T X)^{-1} X^T y

직접 확인해 보면 sklearn 과 소수점까지 같다.

Xb = np.c_[np.ones(len(X)), X]
theta = np.linalg.solve(Xb.T @ Xb, Xb.T @ y)   # [1.0005, 2.006, -0.9994, 0.4939]
LinearRegression().fit(X, y)                    # [1.0005, 2.006, -0.9994, 0.4939]

식에는 역행렬이 있지만 코드에서는 solve 를 쓴다. 이유는 SciPy 글에 적었다 — 더 빠르고 오차도 적다.

GLM — 회귀들이 하나로 묶이는 자리

일반화 선형 모델은 세 가정 위에 서 있다.

  1. y∣x;θ∼ExpFamily(η)y \mid x;\theta \sim \text{ExpFamily}(\eta) — 지수족을 따른다
  2. hθ(x)=E[y∣x;θ]h_\theta(x) = E[y \mid x;\theta] — 예측값은 조건부 기댓값이다
  3. η=θTx\eta = \theta^T x — 자연모수가 입력의 선형결합이다

지수족은 이렇게 쓸 수 있는 분포들이다.

p(y;η)=b(y)exp⁡(η T(y)−a(η))p(y;\eta) = b(y)\exp\big(\eta\, T(y) - a(\eta)\big)

분포자연모수 η\eta대응하는 모델
가우시안μ\mu선형회귀
베르누이log⁡ϕ1−ϕ\log\frac{\phi}{1-\phi}로지스틱 회귀
포아송log⁡λ\log \lambda포아송 회귀 (계수 데이터)

최소제곱과 로지스틱 회귀는 서로 다른 알고리즘이 아니라 같은 틀에 다른 분포를 넣은 것이다. 베르누이의 자연모수를 뒤집으면 시그모이드가 그냥 나온다.

ϕ=11+e−η=g(θTx)\phi = \frac{1}{1+e^{-\eta}} = g(\theta^T x)

확인해 보면 로지스틱 회귀의 predict_proba 는 정확히 1/(1+e−θTx)1/(1+e^{-\theta^T x}) 다. 부류가 셋 이상이면 소프트맥스로 확장된다(합이 1 이 되도록 정규화할 뿐이다).

ϕi=exp⁡(θiTx)∑j=1Kexp⁡(θjTx)\phi_i = \frac{\exp(\theta_i^T x)}{\sum_{j=1}^{K}\exp(\theta_j^T x)}

로지스틱 회귀에는 정규방정식 같은 닫힌 해가 없다. 그래서 반드시 반복 최적화를 돈다.

SVM — 마진과 커널

min⁡12∥w∥2s.t.y(i)(wTx(i)−b)≥1\min \tfrac12 \lVert w \rVert^2 \quad \text{s.t.}\quad y^{(i)}(w^T x^{(i)} - b) \ge 1

∥w∥\lVert w\rVert 를 줄이는 것이 곧 마진을 넓히는 것이다. 현실 데이터는 완전히 갈라지지 않으므로 여유(slack)를 허용하고 그 값에 CC 만큼 벌점을 매긴다. CC 가 크면 오분류를 못 참고 마진이 좁아진다 — 과적합 쪽이다.

커널은 “고차원으로 올려서 가른다”를 올리지 않고 하는 방법이다. 다항커널로 확인해 보면 값이 정확히 같다.

K(a,b)=(aTb+1)2=φ(a)Tφ(b)K(a,b) = (a^T b + 1)^2 = \varphi(a)^T \varphi(b)

a, b = [1., 2.], [3., 4.]
(a@b + 1)**2      # 144.0
phi(a) @ phi(b)   # 144.0   ← 6차원으로 올려 내적한 것과 같다

φ\varphi 를 실제로 계산하지 않고 KK 만 계산하면 되니, 무한 차원(RBF)도 다룰 수 있다.

생성 모델 둘

GDA 는 각 부류가 같은 공분산의 정규분포를 따른다고 본다.

y∼Bernoulli(ϕ),x∣y=j∼N(μj,Σ)y \sim \text{Bernoulli}(\phi), \quad x\mid y=j \sim \mathcal{N}(\mu_j, \Sigma)

공분산을 공유하기 때문에 결정 경계가 직선이 된다(sklearn 의 LDA 가 이것이다). 가정이 맞으면 로지스틱 회귀보다 적은 데이터로 같은 성능에 도달하고, 틀리면 로지스틱 쪽이 안전하다.

나이브 베이즈는 특징들이 부류가 주어졌을 때 서로 독립이라고 본다.

P(x∣y)=∏k=1nP(xk∣y)P(x \mid y) = \prod_{k=1}^{n} P(x_k \mid y)

“나이브(순진)“라는 이름 그대로 현실에서는 거의 틀린 가정인데, 분류 성능은 자주 멀쩡하다. 확률값 자체는 못 믿어도 순위는 유지되기 때문이다. 확률을 그대로 보고해야 하는 문제라면 주의한다.

학습이론 한 줄

VC 차원은 그 모델이 어떤 라벨 조합이든 완전히 가를 수 있는 점의 최대 개수다. 2차원 직선 분류기의 VC 차원은 3 이다 — 점 3개는 어떻게 라벨을 붙여도 직선으로 가를 수 있지만, 4개부터는 불가능한 조합(XOR 모양)이 생긴다.

표현력이 클수록 VC 차원이 크고, 일반화 오차의 상한도 함께 커진다. 모델을 키우면 왜 과적합이 오는가에 대한 이론 쪽 답이다. 실무 쪽 답인 편향-분산은 다음 글에서 본다.

출처

Afshine Amidi · Shervine Amidi 의 CS 229 VIP Cheatsheet: Supervised Learning (Stanford, 2018)을 보고 다시 쓴 것이다. 원본은 stanford.edu/~shervine에서 볼 수 있다. 수식은 옮겨 적으며 직접 확인했고, 코드로 맞춰 본 결과는 위에 적은 그대로다.

표시는 이 브라우저에만 남는다. 서버로 가는 것은 없다.