Skip to content

15회 · 가정이 틀리면 · 노트

8 오늘 — bagging과 Huber 손실 ​

8.1 Bagging과 random forest ​

Leo Breiman(1996)은 부트스트랩을 추정량의 오차를 재는 데가 아니라 예측기를 만드는 데 썼다. 부트스트랩 표본마다 예측기를 학습하고 그 예측을 평균한다. bagging(bootstrap aggregating)이다.

명제 8.1 (평균한 예측기의 분산) 예측값 f^1,…,f^B\hat f_1,\dots,\hat f_B가 같은 분산 σ2\sigma^2과 쌍마다 같은 상관 ρ\rho를 가지면 Var⁡(1B∑f^b)=ρσ2+1−ρBσ2\Var\bigl(\tfrac1B\sum\hat f_b\bigr)=\rho\sigma^2+\tfrac{1-\rho}B\sigma^2이다.

증명 1B2(Bσ2+B(B−1)ρσ2)\tfrac1{B^2}\bigl(B\sigma^2+B(B-1)\rho\sigma^2\bigr)를 정리한다(3회 8절).

부트스트랩 표본들은 같은 자료에서 왔으므로 ρ\rho가 0이 아니다. 그래서 BB를 늘려도 분산은 ρσ2\rho\sigma^2 밑으로 내려가지 않는다. Breiman(2001)의 random forest는 나무마다 쓸 수 있는 변수를 무작위로 제한해 ρ\rho를 줄인다. 이득이 큰 것은 결정 나무처럼 자료가 조금 바뀌면 예측이 크게 바뀌는 “불안정한” 예측기다.

예제 8.2 (결정 그루터기) x∼U(−1,1)x\sim\mathrm U(-1,1), y=1{x>0}+N(0,1)y=\mathbf 1\{x>0\}+\N(0,1)인 자료 100개에 분기 하나짜리 나무(그루터기)를 맞추고 x0=0.05x_0=0.05에서 예측한다. 자료를 200번 새로 만들면 그루터기 예측의 분산은 0.131, 부트스트랩 50번으로 bagging한 예측의 분산은 0.068로 절반쯤이 된다. 대신 평균은 0.86에서 0.77로 참값 1에서 조금 더 멀어진다. 분기점 근처에서 bagging은 계단을 매끄러운 경사로 바꾼다. 분산이 크게 줄고 치우침이 조금 는다.

부트스트랩 표본마다 뽑히지 않은 약 36.8%의 관측(연습 5.3)은 그 나무의 검증 자료로 쓸 수 있다. 이것이 out-of-bag 오차이고, 교차검증 없이 일반화 오차를 추정한다.

8.2 Huber 손실과 smooth L1 ​

신경망의 회귀 손실로 널리 쓰이는 Huber 손실과 객체 검출의 smooth L1 손실(Girshick 2015)은 Huber(1964)의 ρk\rho_k 그대로다.

명제 8.3 (Huber 손실의 세 얼굴) ρk(u)=u2/2\rho_k(u)=u^2/2 (∣u∣≤k|u|\le k), k∣u∣−k2/2k|u|-k^2/2 (∣u∣>k|u|>k)에 대해

  1. (a)

    ρk′=ψk\rho_k^\prime=\psi_k이다. 경사하강의 한 걸음은 잔차를 ±k\pm k로 자른 것을 쓴다.

  2. (b)

    ρk(u)=min⁡z{12(u−z)2+k∣z∣}\rho_k(u)=\min_z\bigl\{\tfrac12(u-z)^2+k|z|\bigr\}이다. 큰 잔차를 “이상치 몫” zz와 “정상 몫” u−zu-z로 나누어, 이상치 몫에는 절댓값 벌점을 준 것이다.

  3. (c)

    smooth L1 손실 12βu2\tfrac{1}{2\beta}u^2 (∣u∣<β|u|<\beta), ∣u∣−β/2|u|-\beta/2 (그 밖)은 ρβ(u)/β\rho_\beta(u)/\beta다.

증명 전략 (a)는 구간마다 미분하고 ∣u∣=k|u|=k에서 양쪽 도함수가 같음을 확인한다. (b)는 zz에 대한 최소화를 zz의 부호로 나눠 푼다. (c)는 두 식을 구간마다 비교한다. 단계별 증명은 연습 8.3(유도형)에서 직접 쓴다. 완성된 증명은 그 연습의 풀이에 있다.

(b)의 zz는 16회에서 볼 lasso와 같은 연성 임계값이다. 로버스트 회귀는 “관측마다 이상치 몫이 있을 수 있고, 그 몫은 드물다(희소하다)”고 가정한 lasso와 같다. 경사 자르기(gradient clipping)도 같은 생각이다. 한 미니배치의 큰 기울기가 학습을 끌고 가지 못하게 자른다.

그림 8.1. 왼쪽: 그루터기 예측(회색)과 bagging 예측(파랑)의 x에 대한 평균 곡선과 분산. bagging은 계단을 경사로 바꾸고 분기점 근처의 분산을 줄인다. 오른쪽: 제곱 손실, 절댓값 손실, Huber 손실(k=1)과 그 도함수. Huber의 도함수는 ±k에서 잘린다.
그림 8.1 왼쪽: 그루터기 예측(회색)과 bagging 예측(파랑)의 xx에 대한 평균 곡선과 분산. bagging은 계단을 경사로 바꾸고 분기점 근처의 분산을 줄인다. 오른쪽: 제곱 손실, 절댓값 손실, Huber 손실(k=1k=1)과 그 도함수. Huber의 도함수는 ±k\pm k에서 잘린다.
연습문제

연습 8.1 (상관이 남기는 분산 ★) ρ=0.4\rho=0.4, σ2=1\sigma^2=1이면 B=1, 10, 100, ∞B=1,\ 10,\ 100,\ \infty에서 명제 8.1의 분산은 얼마인가?

풀이

0.4+0.6/B0.4+0.6/B: B=1B=1이면 1, 10이면 0.46, 100이면 0.406, ∞\infty이면 0.4.

연습 8.2 (연성 임계값 ★★) 명제 8.3(b)의 최소화를 z>0z>0, z<0z<0, z=0z=0의 경우로 나눠 풀어라.

풀이

z>0z>0이면 미분해 z=u−kz=u-k이고 u>ku>k일 때만 양수다. z<0z<0이면 z=u+kz=u+k이고 u<−ku<-k일 때만 음수다. 나머지 경우(∣u∣≤k|u|\le k)는 z=0z=0이 최소다. 값은 ∣u∣≤k|u|\le k에서 u2/2u^2/2, ∣u∣>k|u|>k에서 k2/2+k(∣u∣−k)=k∣u∣−k2/2k^2/2+k(|u|-k)=k|u|-k^2/2.

연습 8.3 (Huber 손실의 세 얼굴: 증명 ★ 유도형) 명제 8.3를 증명하라.

  1. (a)

    ∣u∣<k|u|<k와 ∣u∣>k|u|>k에서 ρk′\rho_k^\prime을 구하고, u=±ku=\pm k에서 왼쪽과 오른쪽 도함수가 같아 ρk\rho_k가 미분가능함을 보여라. ρk′=ψk\rho_k^\prime=\psi_k를 확인하라.

  2. (b)

    연습 8.2의 결과 z∗=sign(u)max⁡(∣u∣−k,0)z^*=\mathrm{sign}(u)\max(|u|-k,\allowbreak 0)를 12(u−z)2+k∣z∣\tfrac12(u-z)^2+k|z|에 넣어 ρk(u)\rho_k(u)를 얻어라.

  3. (c)

    β ρβ(u)\beta\,\rho_\beta(u)가 아니라 ρβ(u)/β\rho_\beta(u)/\beta가 smooth L1 손실임을 ∣u∣<β|u|<\beta와 ∣u∣≥β|u|\ge\beta에서 각각 확인하라.

풀이

(a) ∣u∣<k|u|<k에서 ρk′(u)=u\rho_k^\prime(u)=u, u>ku>k에서 kk, u<−ku<-k에서 −k-k이다. u=ku=k에서 왼쪽 도함수는 kk, 오른쪽 도함수도 kk이고 u=−ku=-k에서도 둘 다 −k-k이므로 ρk\rho_k는 미분가능하고 ρk′=ψk\rho_k^\prime=\psi_k이다. (b) z∗z^*를 넣는다. ∣u∣≤k|u|\le k이면 z∗=0z^*=0이고 값은 u2/2u^2/2다. u>ku>k이면 z∗=u−kz^*=u-k이고 값은 12k2+k(u−k)=ku−k22\tfrac12k^2+k(u-k)=ku-\tfrac{k^2}2다. u<−ku<-k도 대칭이다. (c) ∣u∣<β|u|<\beta이면 ρβ(u)/β=u22β\rho_\beta(u)/\beta=\tfrac{u^2}{2\beta}이고, ∣u∣≥β|u|\ge\beta이면 ρβ(u)/β=(β∣u∣−β2/2)/β=∣u∣−β/2\rho_\beta(u)/\beta=(\beta|u|-\beta^2/2)/\beta=|u|-\beta/2이다. 둘 다 smooth L1의 식이다. βρβ\beta\rho_\beta는 첫 구간에서 βu2/2\beta u^2/2가 되어 맞지 않는다.

이 회차에서 읽은 절 0개 · 회차 차례