[Deep Learning, d2l] Linear Neural Networks for Classification (3)
지금까지 우리는 데이터가 처음에 어디에서 왔는지, 또는 모델의 출력으로 무엇을 할 계획인지에 대해 깊이 고민하지 않았다. 실제로 데이터가 주어지면 머신러닝/딥러닝 개발자들은 이런 근본적인 문제를 고려하지 않고 모델 개발에 급급하다.
많은 머신러닝/딥러닝의 배포 실패는 여기서 비롯된다. 모델은 테스트 세트에서의 정확도로는 훌륭한 성능을 보이지만, 배포 후 데이터 분포가 갑자기 바뀌면 심각한 실패를 겪는다. 더욱이 모델의 배포 자체가 데이터 분포를 교란시키는 원인이 될 수 있다. 예를 들어, 누가 대출금을 상환하고 누가 상환하지 않을지 예측하는 모델을 학습 시켰을 때, 사람의 신발이 대출금 상환 위험과 연관이 있다고 판단하게 된다면 구두를 신은 신청자에게는 대출을 승인하고, 운동화를 신은 신청자에게는 대출을 거부할 수 있다.
이러한 경우, pattern recognition 에서 decision making 으로 성급히 넘어가고 environment 를 비판적으로 고려하지 않은 것이 재앙적인 결과를 초래할 수 있다. 즉 우리가 신발을 기준으로 결정을 내리기 시작하면 고객들은 이를 눈치채고 행동을 바꿀 것이다. 머지않아 모든 신청자들이 구두를 신겠지만, 신용도가 개선되는 것은 아닐 것이다. 비슷한 문제는 많은 머신러닝/딥러닝 응용 분야에서 흔히 발생한다. 즉 모델 기반의 결정(성급한 결정)을 environment 에 도입함으로써 모델을 망칠 수 있다.
이러한 주제들을 여기서 완벽하게 다룰 수는 없지만 공통적인 문제들을 소개하고, 이러한 상황을 일찍 감지하고 피해를 줄이며 머신러닝/딥러닝을 책임감 있게 사용하는 데 필요한 비판적 사고를 자극해보자. 일부 해결책은 “올바른” 데이터를 요구하는 것처럼 간단하고, 일부는 강화 학습 시스템을 구현하는 것처럼 기술적으로 어렵다. 또 일부는 통계적 예측의 영역을 벗어나 알고리즘의 윤리적 적용이라는 어려운 철학적 질문과 씨름해야 할 수도 있다.
Types of Distribution Shift
- 우선 데이터 분포가 변할 수 있는 다양한 상황과 모델 성능을 유지하기 위해 어떤 조치를 취할 수 있는지를 고려해보자.
- 고전적으로 우리는 학습 데이터가 분포 $p_S(\mathbf{x}, y)$ 에서 샘플링되었지만, 테스트 데이터는 $p_T(\mathbf{x}, y)$ 라는 다른 분포에서 샘플링된 label 없는 예시들로 구성된다고 가정한다.
- 이 시점에서 우리는 중요한 현실과 마주하게 된다. $p_S$ 와 $p_T$ 가 어떻게 연관되어 있는지에 대한 가정이 없다면, 강건한 모델을 학습하는 것은 불가능하다.
- binary classification 문제를 고려해보자. 우리는 개와 고양이를 구분하고 싶다.
- 만약 분포가 임의로 변화할 수 있다면, 입력에 대한 분포($p_S(\mathbf{x}) = p_T(\mathbf{x})$)는 그대로 유지되지만, label 이 모두 뒤집히는 병적인 경우($p_S(y \mid \mathbf{x}) = 1 - p_T(y \mid \mathbf{x})$)를 허용하게 된다.
- 즉, 갑자기 미래에 모든 “고양이”가 개가 되고, 우리가 이전에 “개”라고 불렀던 것이 이제 고양이가 된다면, 입력 분포 $p(\mathbf{x})$ 에 변화가 없더라도 우리는 이 상황을 분포가 전혀 변하지 않은 상황과 구분할 수 없을 것이다.
- 다행히, 데이터가 미래에 어떻게 변화할 수 있는지에 대한 제한된 가정 하에서는 원칙적인 알고리즘들이 변화 탐지를 수행하고, 심지어 실시간으로 적응할 수 있어 원래 모델의 정확도를 개선할 수 있다.
Covariate Shift
- distribution shift 중에서도 covariate shift 는 가장 널리 연구되었다.
- 이는 입력 데이터 $P(\mathbf{x})$ 의 분포가 시간이 지남에 따라 변하지만, labeling function, 즉 조건부확률 $P(y \vert \mathbf{x})$ 는 변하지 않는 경우를 말한다.
- 통계학자들은 이것이 공변량(covariates, feature) 분포의 변화로 발생하는 문제이기 때문에 covariate shift 라고 불렀다.
- 인과관계(causality)를 언급하지 않고 분포 변화에 대해 추론할 수 있는 경우도 있지만, covariate shift 는 $\mathbf{x}$ 가 $y$ 의 원인이 되는 상황에서 자연스러운 가정이다.
- 개와 고양이를 구분하는 문제에서, 학습 데이터는 실제 사진으로 구성된 반면 테스트 세트는 만화로 그려진 개와 고양이로만 이루어져 있다고 해보자.
- 당연하게 이 경우는 모델이 잘 작동하지 않는다. 학습 데이터와 테스트 데이터의 특성이 상당히 다른 데이터셋에서 학습할 때는 새로운 도메인에 적응할 수 있는 명확한 계획이 없으면 문제가 발생할 수 있다.
- 즉 covariate shift 는 학습 데이터를 구성하는 여러 feature 의 convariate 분포가 테스트 데이터의 분포와 다른 상황이다. 따라서 입력 데이터의 분포는 변하지만 조건부확률은 변하지 않는 경우다.
- 또 다른 예로 스팸 메일 필터링 시스템에서 학습 데이터가 몇 년 전의 메일 데이터일 때, 현재의 메일 데이터는 분포가 변했지만 주어진 메일의 특정 내용이 스팸인지 아닌지에 대한 확률은 변하지 않는 경우가 그에 해당한다.
- 정리하면 모델에 들어오는 입력이 바뀌는 현상을 covariate shift 라고 하며, 학습 데이터를 모집단에서 균일하게 선택하거나 재학습이 필요하다.
Label Shift
- label shift 는 반대의 문제를 설명한다.
- 여기서는 label 의 marginal distribution $P(y)$ 가 변화할 수 있지만, 조건부 분포 $P(\mathbf{x} \mid y)$ 는 도메인 간에 고정된다고 가정한다.
- label shift 는 $y$ 가 $\mathbf{x}$ 를 유발한다고 믿을 때 합리적인 가정이다.
- 예를 들어, 시간이 지나면서 질병의 상대적 유행이 변화하더라도 증상(또는 다른 발현)을 기준으로 진단을 예측하려고 할 수 있다.
- 여기서 label shift 가정이 적절한 이유는 질병이 증상을 유발하기 때문이다.
- 어떤 경우에는 label shift 와 covariate shift 가정이 동시에 성립할 수 있다.
- 예를 들어, label 이 결정론적일 때는 $y$ 가 $\mathbf{x}$ 를 유발하더라도 covariate shift 가정이 충족될 수 있다.
- 이러한 경우에는 label shift 가정에서 파생된 방법을 사용하는 것이 유리하다.
- 그 이유는 이러한 방법들이 딥러닝에서 high-dimensional 한 입력과 달리 low-dimensional 의 label 을 다루는 경향이 있기 때문이다.
Concept Shift
- 또한 concept shift 라는 문제에 직면할 수 있다.
- 이는 label 의 정의 자체가 변화할 때 발생한다. 이 개념이 이상하게 들릴 수도 있다. 고양이는 고양이가 아니라는 말이기 때문이다.
- 하지만 다른 카테고리의 객체들은 시간에 따라 사용 방식이 변화할 수 있다.
- 예를 들어 정신 질환의 진단 기준, 유행하는 스타일, 직함 등은 모두 상당한 concept shift 의 영향을 받을 수 있다.
- 예를 들어 미국 지도 중에서 탄산음료 이름을 가진 상당한 concept shift 를 발견할 수도 있다.
- 우리가 기계 번역 시스템을 구축한다고 가정하면, $P(y \mid \mathbf{x})$ 의 분포는 우리가 어디에 있는지에 따라 달라질 수 있다.
Distribution Shift Example
- 이러한 distribution shift 를 해결하기 전에, 해당 shift 들이 명확하지 않은 구체적인 상황들을 보자.
Medical Diagnostics
- 암을 감지하는 알고리즘을 설계하고 싶다고 상상해보자. 그러면 건강한 사람과 병든 사람의 데이터를 수집한 후, 이 데이터를 바탕으로 알고리즘을 학습시킨다.
- 알고리즘은 잘 작동하고, 높은 정확도를 보이며, 이제 성공적인 의료 진단을 제공할 준비가 되었다고 생각한다. 하지만 그렇게 간단하지 않다.
- 학습 데이터에서 발생한 분포와 실제 환경에서 만나게 될 분포는 상당히 다를 수 있다.
- 이는 실제로 스타트업에서 발생한 일이다. 그들은 주로 나이 든 남성에게 영향을 미치는 질병을 진단하기 위한 혈액 검사를 개발하고 있었으며, 환자들로부터 수집한 혈액 샘플을 사용해 연구하려고 했다.
- 그러나 건강한 남성으로부터 혈액 샘플을 얻는 것은 시스템에 이미 등록된 환자들로부터 샘플을 얻는 것보다 훨씬 어려웠다.
- 이를 보완하기 위해 스타트업은 대학 캠퍼스의 학생들에게 혈액 기증을 요청해 건강한 대조군으로 삼아 검사를 개발했다. 그 후 그들은 질병을 감지하는 모델을 구축하고자 했다.
- 건강한 집단과 병든 집단을 거의 완벽한 정확도로 구분하는 것은 매우 쉬웠다. 그러나 이는 테스트 대상이 나이, 호르몬 수치, 신체 활동, 식단, 알코올 소비 등 질병과 관련이 없는 여러 요인에서 차이가 있었기 때문이다. 이러한 차이는 실제 환자들과는 다를 가능성이 높았다.
- 이들의 샘플링 절차로 인해, 극단적인 covariate shift 에 직면할 가능성이 컸다.
- 게다가 이러한 경우는 일반적인 방법으로 교정하기 어렵다. 결론적으로, 이 스타트업은 상당한 금액을 낭비했다.
Self-Driving Cars
- 자율주행차 개발을 위해 기계 학습을 활용하려는 회사가 있다고 가정해보자. 여기서 중요한 구성 요소 중 하나는 도로 감지기이다.
- 실제 labeling 이 되어 있는 데이터를 얻는 것은 비용이 많이 들기 때문에, 그들은 게임 렌더링 엔진에서 생성된 합성 데이터를 추가적인 학습 데이터로 사용하는 아이디어를 냈다.
- 이 방법은 렌더링 엔진에서 가져온 “테스트 데이터” 에서는 매우 잘 작동했다. 그러나 실제 차량에서는 완전히 실패했다.
- 알고 보니 도로는 매우 단순한 질감으로 렌더링되었으며, 더 중요한 것은 모든 도로가 동일한 질감으로 렌더링되었다는 점이다. 그리고 도로 감지기는 이 “feature” 를 매우 빠르게 학습했다.
- 비슷한 일이 미국의 육군이 처음으로 숲 속의 탱크를 감지하려고 했을 때 발생했다.
- 그들은 먼저 탱크가 없는 숲의 항공 사진을 찍었고, 그 후 탱크를 숲에 몰고 가서 또 다른 사진을 찍었다.
- 모델은 완벽하게 작동하는 것처럼 보였다. 그러나 모델은 단순히 그림자가 있는 나무와 그림자가 없는 나무를 구분하는 법을 배운 것뿐이었다.
- 즉 첫 번째 사진 세트는 이른 아침에 찍혔고, 두 번째 사진 세트는 정오에 찍혔던 것이다.
Nonstationary Distribution
- 더 미묘한 상황은 분포가 천천히 변화할 때 발생하며, 이를 비정상적 분포(nonstationary distribution)라고도 한다. 이 경우 모델이 적절하게 업데이트되지 않을 수 있다. 아래는 몇 가지 일반적인 사례들이다.
- 우리는 광고 모델을 학습시키고 이를 자주 업데이트하지 않는다. 예를 들어, 아이패드라는 새로운 기기가 출시되었다는 사실을 반영하지 못할 수 있다.
- 스팸 필터를 구축한다. 이 필터는 지금까지 우리가 본 모든 스팸을 잘 탐지한다. 하지만 스팸 발송자들이 지혜를 모아, 우리가 본 적 없는 새로운 메시지를 만들어낸다.
- 우리는 제품 추천 시스템을 구축한다. 이 시스템은 겨울 동안 잘 작동하지만, 크리스마스가 지난 후에도 계속해서 산타 모자를 추천한다.
More Anecdotes
- 다른 상황들도 있다.
- 우리는 얼굴 탐지기를 구축한다. 이 탐지기는 모든 벤치마크에서 잘 작동한다. 그러나 테스트 데이터에서는 실패한다. 문제가 된 예시들은 얼굴이 이미지를 가득 채운 클로즈업 사진들로, 이러한 데이터는 학습 데이터셋에 없었다.
- 미국 시장을 위한 웹 검색 엔진을 구축한 후 이를 영국에 배포하려고 한다.
- 각 클래스가 동일하게 대표되는 대규모 데이터셋을 컴파일하여 이미지 분류 모델을 학습시킨다. 예를 들어, 1000 개의 카테고리 중 각 카테고리가 1000 개의 이미지로 대표된다. 그런 후 우리는 이 시스템을 실제 세계에 배포하는데, 실제 사진의 label 분포는 분명히 균일하지 않다.
Correction of Distribution Shift
- 위에서 본 것처럼 학습 데이터셋의 분포와 테스트셋의 분포 $P(\mathbf{x}, y)$ 가 다를 수 있는 경우가 많다.
- 운이 좋으면 covariate, label, 혹은 concept shift 가 있음에도 불구하고 모델이 작동할 수 있다. 다른 경우에는, 이러한 shift 를 처리하기 위한 전략을 사용함으로써 더 나은 성과를 낼 수 있다.
- 아래 내용은 shift 를 처리하기 위한 전략이다.
Empirical Risk and Risk
- 우선 모델 학습 중에 실제로 무슨 일이 일어나는지 생각해보자.
- 학습 데이터 ${(\mathbf{x}_1, y_1), \ldots, (\mathbf{x}_n, y_n)}$ 의 feature 와 이에 대응하는 label 들을 반복하여 학습하고, 각 mini-batch 후에는 모델 $f$ 의 parameter 를 업데이트한다.
-
여기서 Regularization 은 고려하지 않고, 아래 식은 학습에서 loss 를 최소화하는 식이다.
\[\mathop{\mathrm{minimize}}_f \frac{1}{n} \sum_{i=1}^n l(f(\mathbf{x}_i), y_i)\] - 여기서 $l$ 은 주어진 label $y_i$ 에 대해 예측 $f(\mathbf{x}_i)$ 이 “얼마나 나쁜지”를 측정하는 loss function 이다.
- 통계학자들은 위 식의 term 을 Empirical Risk 라고 부른다. 이러한 Empirical Risk 는 Risk 를 근사하기 위한 학습 데이터에 대한 loss 의 평균이다.
-
즉, 실제 데이터 분포 $p(\mathbf{x}, y)$ 에서 추출한 우리가 가진 데이터에 대한 loss 의 기대값이다.
\[E_{p(\mathbf{x}, y)} [l(f(\mathbf{x}), y)] = \int\int l(f(\mathbf{x}), y) p(\mathbf{x}, y) \;d\mathbf{x}dy\] - 그러나 실제로는 전체 데이터 집합을 얻는 것이 불가능하다.
- 따라서, Empirical Risk Minimization, 즉 Empirical Risk 를 최소화하는 것이 머신러닝/딥러닝에서 실질적인 전략이 되며, 이는 risk 를 대략적으로 최소화하려는 목적을 가지고 있다.
Covariate Shift Correction
- 어떤 종속성 $P(y \mid \mathbf{x})$ 을 추정하고자 하며, 이에 대한 label 이 붙은 데이터 $(\mathbf{x}_i, y_i)$ 를 가지고 있다고 가정하자.
- 관측된 $\mathbf{x}_i$ 는 target 분포인 실제 데이터의 분포 $p(\mathbf{x})$ 가 아니라 source 분포, 즉 우리 데이터의 분포 $q(\mathbf{x})$ 에서 추출된 것이다.
-
다행히도 종속성 가정에 따르면 조건부 분포는 변하지 않는다.
\[p(y \mid \mathbf{x}) = q(y \mid \mathbf{x})\] -
만약 source 분포 $q(\mathbf{x})$ 가 “잘못”되었다면, risk 에서 위 식을 같이 이용해서 아래와 같이 수정할 수 있다.
\[\begin{aligned} \int\int l(f(\mathbf{x}), y) p(y \mid \mathbf{x})p(\mathbf{x}) \;d\mathbf{x}dy = \int\int l(f(\mathbf{x}), y) q(y \mid \mathbf{x})q(\mathbf{x})\frac{p(\mathbf{x})}{q(\mathbf{x})} \;d\mathbf{x}dy \end{aligned}\] -
즉, 각 데이터 예제가 올바른 분포에서 추출될 확률과 잘못된 분포에서 추출될 확률의 비율로 재가중해야 한다.
\[\beta_i \stackrel{\textrm{def}}{=} \frac{p(\mathbf{x}_i)}{q(\mathbf{x}_i)}\] -
각 데이터 예제 $(\mathbf{x}_i, y_i)$ 에 대해 가중치 $\beta_i$ 를 대입하면, 우리는 가중된 empirical risk minimization 을 사용하여 모델을 학습할 수 있다.
\[\mathop{\mathrm{minimize}}_f \frac{1}{n} \sum_{i=1}^n \beta_i l(f(\mathbf{x}_i), y_i)\] - 안타깝게도 우리는 이 비율을 알지 못하므로, 유용한 작업을 수행하기 전에 먼저 이 비율을 추정해야 한다.
- 여러 방법들이 있으며, 기대 연산자(expectation operator)를 직접 재조정하는 minimum-norm 또는 maximum entropy 원칙과 같은 복잡한 operator-theoretic 접근법도 존재한다.
- 기억할 점은 어떤 접근법이든 두 분포로부터 추출된 샘플이 필요하다.
- 예를 들어, 테스트셋으로 접근할 수 있는 “진짜” 분포인 $p$ 와, 학습 데이터셋을 생성하는 데 사용된 $q$ 를 얻을 수 있다(후자는 쉽게 구할 수 있다).
- 또한 우리는 $p(\mathbf{x})$ 를 따르는 특징 $\mathbf{x}$ 만 필요하며, $p(y)$ 에 따른 label 은 접근할 필요가 없다.
- 이 경우, 매우 효과적인 접근법이 존재하는데, 바로 logistic regression 이다.
- logistic regression 은 binary classification task 에서 사용하는 softmax regression 의 특수한 경우다.
- 이를 통해 확률 비율을 추정할 수 있다. 우리는 $p(\mathbf{x})$ 에서 추출된 데이터와 $q(\mathbf{x})$ 에서 추출된 데이터를 구별하는 모델을 학습한다.
- 두 분포를 구별할 수 없다면, 해당 예제는 두 분포 중 하나에서 나올 가능성이 동일하다는 것을 의미한다. 반면, 잘 구별되는 예제는 그에 따라 상당히 과대 또는 과소 평가되어야 한다.
- 간단히 하기 위해 두 분포 $p(\mathbf{x})$ 와 $q(\mathbf{x})$ 에서 동일한 수의 예제를 가지고 있다고 가정하자. 그리고 label $z$ 가 $p$ 에서 추출된 것은 1, $q$ 에서 추출된 것은 -1 이라고 하자.
-
이를 이용하여 확률은 다음과 같이 주어진다.
\[P(z=1 \mid \mathbf{x}) = \frac{p(\mathbf{x})}{p(\mathbf{x})+q(\mathbf{x})} \textrm{ and hence } \frac{P(z=1 \mid \mathbf{x})}{P(z=-1 \mid \mathbf{x})} = \frac{p(\mathbf{x})}{q(\mathbf{x})}\] -
따라서, $P(z=1 \mid \mathbf{x})=\frac{1}{1+\exp(-h(\mathbf{x}))}$ ($h$ 는 parametrized 함수)인 logistic regression 접근법을 사용하면 다음을 얻을 수 있다.
\[\beta_i = \frac{1/(1 + \exp(-h(\mathbf{x}_i)))}{\exp(-h(\mathbf{x}_i))/(1 + \exp(-h(\mathbf{x}_i)))} = \exp(h(\mathbf{x}_i))\] - 결과적으로, 우리는 두 가지 문제를 해결해야 한다.
- 두 분포에서 추출된 데이터를 구별해야 한다.
- $\beta_i$ 를 사용하여 가중된 empirical risk minimization 문제를 해결해야 한다.
- 이제 covariate shift 를 처리하는 알고리즘을 설명해보자.
- 학습 데이터셋 ${(\mathbf{x}_1, y_1), \ldots, (\mathbf{x}_n, y_n)}$ 와 label 이 없는 테스트 세트 ${\mathbf{u}_1, \ldots, \mathbf{u}_m}$ 가 있다고 가정하자.
- covariate shift 를 위해, $1 \leq i \leq n$ 인 모든 $\mathbf{x}_i$ 는 source 분포에서 추출되었고, $1 \leq i \leq m$ 인 모든 $\mathbf{u}_i$ 는 target 분포에서 추출되었다고 가정한다.
- covariate shift 를 수정하는 대표적인 알고리즘은 다음과 같다.
- binary classification 학습 데이터셋 ${(\mathbf{x}_1, -1), \ldots, (\mathbf{x}_n, -1), (\mathbf{u}_1, 1), \ldots, (\mathbf{u}_m, 1)}$ 을 생성한다.
- logistic regression 을 사용하여 binary classifier 를 학습하여 함수 $h$ 를 얻는다.
- $\beta_i = \exp(h(\mathbf{x}_i))$ 또는 $\beta_i = \min(\exp(h(\mathbf{x}_i)), c)$ (상수 $c$) 를 사용하여 학습 데이터에 가중치를 부여한다.
- 가중치 $\beta_i$ 를 사용하여 empirical risk minimization 에서 학습 세트 ${(\mathbf{x}_1, y_1), \ldots, (\mathbf{x}_n, y_n)}$ 에 대해 학습한다.
- 위 알고리즘은 중요한 가정에 의존한다.
- 이 방식이 작동하려면 target 분포(테스트 시점)에서의 각 데이터 예제가 학습 시점에 발생할 확률이 0 이 아니어야 한다.
- 만약 $p(\mathbf{x}) > 0$ 이지만 $q(\mathbf{x}) = 0$ 인 지점을 발견한다면, 해당 중요도 가중치는 무한대가 되어야 한다.
Label Shift Correction
- $k$ 개의 카테고리를 가진 classification 작업을 다루고 있다고 가정하자.
- 위에서 사용된 것과 동일한 표기법을 사용하여, $q$ 와 $p$ 는 각각 source 분포(훈련 시)와 target 분포(테스트 시)이다.
- 여기서 label 분포는 시간이 지남에 따라 변한다. 즉 $q(y) \neq p(y)$ 다.
- 그러나 클래스 조건부 분포는 동일하게 유지된다. 따라서 $q(\mathbf{x} \mid y)=p(\mathbf{x} \mid y)$ 다.
-
source 분포 $q(y)$ 가 “잘못”되었을 경우, 우리는 위에서 본 것처럼 risk 를 수정할 수 있다.
\[\begin{aligned} \int\int l(f(\mathbf{x}), y) p(\mathbf{x} \mid y)p(y) \;d\mathbf{x}dy = \int\int l(f(\mathbf{x}), y) q(\mathbf{x} \mid y)q(y)\frac{p(y)}{q(y)} \;d\mathbf{x}dy. \end{aligned}\] -
여기서 중요도 가중치(importance weights)는 label likelihood 비율에 해당한다.
\[\beta_i \stackrel{\textrm{def}}{=} \frac{p(y_i)}{q(y_i)}\] - label shift 에서 좋은 점은, source 분포에 대해 꽤 괜찮은 모델이 있다면 딥러닝의 입력과 같이 high-dimensional 데이터를 다루지 않고도 위와 같은 가중치의 일관된 추정치를 얻을 수 있다는 것이다.
- 딥러닝에서 입력은 주로 이미지와 같은 고차원 객체인 반면, label 은 주로 카테고리와 같은 더 단순한 객체인 경우가 많다.
- target label 분포를 추정하기 위해, 먼저 학습 데이터로 학습된 꽤 괜찮은 모델을 사용하고, 학습 분포에서 추출한 validation 세트로 혼동 행렬(confusion matrix)을 계산한다.
- 혼동 행렬 $\mathbf{C}$ 는 $k \times k$ 행렬로, 각 열은 label 카테고리(정답)를 나타내고, 각 행은 모델이 예측한 카테고리를 나타낸다.
- 각 셀의 값 $c_{ij}$ 는 validation 세트에서 실제 label 이 $j$ 이고 모델이 $i$ 를 예측한 비율을 나타낸다.
- 우리는 테스트 데이터에 대한 label 을 직접 볼 수 없으므로, 혼동 행렬을 테스트 데이터에서 직접 계산할 수는 없다. 실시간 주석 파이프라인을 구축하지 않는 한 그렇다.
- 그러나 우리가 할 수 있는 것은 테스트 시간에 모델의 모든 예측을 평균내어 $\mu(\hat{\mathbf{y}}) \in \mathbb{R}^k$ 라는 평균 모델 출력을 얻는 것이다.
- 여기서 $i$ 번째 요소 $\mu(\hat{y}_i)$ 는 테스트 세트에서 모델이 $i$ 를 예측한 총 비율을 나타낸다.
- 일정한 조건 하에서 아래와 같은 간단한 linear 시스템을 풀어서 테스트 세트의 label 분포를 추정할 수 있다.
-
조건에 대한 가장 강력한 가정은 초기 모델이 꽤 정확하고, target 데이터가 이전에 본 적 있는 카테고리만 포함하고, label shift 가정이 성립할 경우다.
\[\mathbf{C} p(\mathbf{y}) = \mu(\hat{\mathbf{y}})\]
-
- 이는 $\sum_{j=1}^k c_{ij} p(y_j) = \mu(\hat{y}_i)$ 가 $1 \leq i \leq k$ 에 대해 성립하기 때문에 가능하다.
- 여기서 $p(y_j)$ 는 $k$ 차원의 label 분포 vector $p(\mathbf{y})$ 의 $j$ 번째 요소이다.
- 모델이 충분히 정확하다면 혼동 행렬 $\mathbf{C}$ 는 가역성(invertible)을 가지며, 우리는 $p(\mathbf{y}) = \mathbf{C}^{-1} \mu(\hat{\mathbf{y}})$ 라는 해를 얻을 수 있다.
- source 데이터의 label 은 관측할 수 있기 때문에 $q(y)$ 분포를 추정하는 것은 쉽다.
- 그런 다음, label $y_i$ 를 가진 모든 학습 예제 $i$ 에 대해 추정된 $p(y_i)/q(y_i)$ 비율을 사용하여 가중치 $\beta_i$ 를 계산하고 이를 사용하여 empirical risk minimization 에 적용할 수 있다.
Concept Shift Correction
- concept shift 는 이론적으로 수정하기가 훨씬 더 어렵다.
- 예를 들어, 고양이와 개를 구별하는 문제에서 갑자기 흰색 동물과 검은색 동물을 구별하는 문제로 바뀌는 상황에서는 새로운 label 을 수집하고 처음부터 다시 학습하는 것 외에 더 나은 방법을 기대하는 것은 무리일 것이다.
- 다행히도, 실제로는 이러한 극단적인 변화는 드물다. 대신, 일반적으로 발생하는 상황은 과제가 점진적으로 변화하는 것이다. 다음은 구체적인 예시들이다.
- 컴퓨터 광고에서 새로운 제품이 출시되고, 오래된 제품은 인기가 줄어든다. 이는 광고와 그 인기도에 대한 분포가 점진적으로 변화함을 의미하며, 클릭율 예측 모델도 이에 맞춰 점진적으로 변해야 한다.
- 교통 카메라 렌즈는 환경적 마모로 인해 점진적으로 성능이 저하되어 이미지 품질이 점차 악화된다.
- 뉴스 콘텐츠는 점진적으로 변한다. 예를 들어 대부분의 뉴스는 변하지 않지만 새로운 이야기들이 등장한다.
- 이러한 경우에는 네트워크를 학습할 때 사용한 접근 방식을 그대로 사용하여 데이터의 변화에 적응하도록 만들 수 있다.
- 즉, 기존 네트워크 가중치를 사용하고, 새 데이터를 가지고 몇 번의 업데이트만 수행하여 처음부터 다시 학습하는 것이 아니라 기존 모델을 점진적으로 적응시킬 수 있다.
A Taxonomy of Learning Problems
- distribution shift 에 대처하는 방법을 알게 되었으니, 이제 머신러닝/딥러닝 문제를 구성하는 다른 측면에 대해서도 고려해보자.
Batch Learning
- batch 학습에서는 feature 와 label ${(\mathbf{x}_1, y_1), \ldots, (\mathbf{x}_n, y_n)}$ 에 접근할 수 있으며, 이를 사용해 모델 $f(\mathbf{x})$ 을 학습시킨다.
- 이후, 같은 분포에서 도출된 새로운 데이터 $(\mathbf{x}, y)$ 에 이 모델을 적용한다. 이것은 우리가 다루는 문제들에 대한 기본 가정이다.
- 예를 들어, 우리는 고양이와 개의 많은 사진을 기반으로 고양이 탐지기를 학습시킬 수 있다.
- 학습 후에는 이 모델을 smart catdoor computer vision 시스템의 일부로 배포하여 고양이만 들어올 수 있게 할 수 있다.
- 이 시스템은 고객의 집에 설치된 후 특별한 상황이 발생하지 않는 한 업데이트되지 않는다. 즉 고양이만 들어온다는 가정이 기저에 깔려있다.
Online Learning
- 데이터 $(\mathbf{x}_i, y_i)$ 가 한 번에 하나씩 도착하는 상황을 상상해보자.
- 더 구체적으로는, 먼저 $\mathbf{x}_i$ 를 관찰하고, 그 후에 $f(\mathbf{x}_i)$ 의 추정값을 내놓아야 한다고 가정하자.
- 이 추정을 내린 후에야 비로소 $y_i$ 를 관찰하게 되며, 그에 따라 결정에 대한 보상을 받거나 손실을 입는다.
- 많은 실제 문제가 이 범주에 속한다. 예를 들어, 내일의 주가를 예측하여 그 예측을 바탕으로 거래하고, 하루가 끝나면 그 예측이 수익을 가져왔는지 알게 된다.
-
즉, online learning 에서는 새로운 관찰을 통해 모델을 지속적으로 개선하는 다음과 같은 순환을 겪게 된다.
\[\begin{aligned}&\textrm{model } f_t \longrightarrow \textrm{data } \mathbf{x}_t \longrightarrow \textrm{estimate } f_t(\mathbf{x}_t) \longrightarrow\\ \textrm{obs}&\textrm{ervation } y_t \longrightarrow \textrm{loss } l(y_t, f_t(\mathbf{x}_t)) \longrightarrow \textrm{model } f_{t+1}\end{aligned}\]
Bandits
- bandits 은 위 문제의 특별한 경우다.
- 대부분의 학습 문제에서 우리는 딥러닝 모델과 같이 parameter 를 학습하려는 continuously parameterized 함수 $f$ 를 가지고 있다.
- 그러나 bandit 문제에서 우리가 취할 수 있는 행동은 유한하다.
- 이렇게 더 간단한 문제에서는 최적성(optimality)에 대한 이론적 보장을 더 강하게 제공할 수 있다는 것은 그리 놀라운 일이 아니다.
- 이 문제는 종종 또 다른 학습 설정으로 취급되기 때문에 여기에 언급한다.
Control
- 많은 경우, environment 는 우리가 한 일을 기억한다. 반드시 적대적으로 기억하지는 않더라도, 이전에 일어난 일에 따라 반응이 달라질 수 있다.
- 예를 들어, coffee boiler controller 는 기계를 이전에 가열했는지에 따라 다른 온도를 관찰할 수 있다.
- PID (비례-적분-미분) 제어 알고리즘은 여기서 인기 있는 선택이다.
- 마찬가지로, 뉴스 사이트에서 사용자의 행동은 이전에 그들에게 무엇을 보여주었는지에 따라 달라질 것이다. 예를 들어 사용자는 대부분의 뉴스를 한 번만 읽는다.
- 많은 이러한 알고리즘은 그들이 활동하는 환경에 대한 모델을 형성하여 그들의 결정을 덜 무작위적으로 보이게 만든다.
- 최근에 제어 이론이 하이퍼파라미터를 자동으로 조정하여 더 나은 분리 및 복원 품질을 달성하고, 생성된 텍스트의 다양성과 생성된 이미지의 복원 품질을 향상시키는 데에도 사용되고 있다.
Reinforcement Learning
- 기억을 가진 환경의 일반적인 경우는, 환경이 우리와 협력하려고 하거나(특히 비제로섬 게임에서의 협력적 게임) 환경이 이기려고 할 수 있는 상황에 직면할 수 있다.
- 체스, 바둑, Backgammon 또는 스타크래프트는 강화 학습에서의 일부 예다.
- 마찬가지로 자율 주행 자동차를 위한 좋은 제어기를 만들고 싶을 수 있다.
- 다른 자동차들은 자율 주행차의 운전 스타일에 복잡한 방식으로 반응할 가능성이 있다.
- 예를 들어, 자율 주행차를 피하려 하거나, 사고를 일으키려 하거나, 그와 협력하려 할 수 있다.
Considering the Environment
- 위에서 다룬 다양한 상황에서 중요한 차이점 중 하나는 정적 환경에서는 효과적이었던 전략이, 적응할 수 있는 환경에서는 효과적이지 않을 수 있다는 것이다.
- 예를 들어, 거래자가 발견한 차익 거래 기회는 이를 활용하면 사라질 가능성이 있다.
- 환경이 변하는 속도와 방식은 우리가 사용할 수 있는 알고리즘의 유형을 크게 결정한다.
- 예를 들어, 변화가 느리게 일어날 것이라고 알고 있다면, 예측치가 천천히 변화하도록 강제할 수 있다.
- 환경이 즉각적으로 변할 수 있지만 매우 드물게 변한다고 알고 있다면, 이에 대한 예외를 허용할 수 있다.
- 이러한 지식은 해결하려는 문제가 시간이 지남에 따라 변할 수 있는 concept shift 를 다루는 데 있어 데이터 과학자가 필수적으로 알아야 할 사항이다.
Fairness, Accountability, and Transparency in Machine Learning
- 마지막으로, 머신러닝/딥러닝 시스템을 배포할 때 단순히 예측 모델을 최적화하는 것이 아니라는 점을 기억하는 것이 중요하다.
- 머신러닝/딥러닝 시스템을 배포하는 것은 일반적으로 의사결정을 부분적 또는 완전하게 자동화하는 도구를 제공하는 것이다.
- 이러한 기술 시스템은 그 결과로 개인들의 삶에 영향을 미칠 수 있다.
- 예측을 통해 의사결정을 내리는 것은 새로운 기술적 질문을 제기할 뿐만 아니라 신중히 고려해야 하는 윤리적 질문들도 많이 수반한다.
- 의료 진단 시스템을 배포할 때는 이 시스템이 어떤 인구 집단에서 잘 작동하는지, 어떤 인구 집단에서 잘 작동하지 않는지를 알아야 한다. 특정 하위 집단의 복지에 대한 예측 가능한 위험을 간과하면, 열악한 치료를 제공할 수 있다.
- 게다가 의사결정 시스템을 고려할 때는 기술 평가 방법을 다시 생각해 보아야 한다.
- 이러한 범위 변화의 결과 중 하나는 정확도가 항상 적절한 평가 기준이 아니라는 것이다.
- 예를 들어, 예측을 행동으로 번역할 때, 우리는 다양한 오류로 인해 발생할 수 있는 비용의 민감성을 고려하고자 할 것이다.
- 이미지 분류 오류 중 하나가 인종적 편견으로 인식될 수 있고, 다른 오류는 무해할 수 있다면, 우리는 의사결정 프로토콜을 설계할 때 사회적 가치를 반영해 임계값을 조정하고자 할 것이다.
- 또한 예측 시스템이 feedback loop 를 유발할 가능성에 주의해야 한다.
- 예를 들어, 범죄 예측 시스템이 범죄 발생이 예측된 지역에 순찰 경찰관을 배치한다고 생각해 보자. 여기서 아래와 같은 우려스러운 패턴이 나타날 수 있다.
- 범죄가 많은 지역에 더 많은 순찰이 배치된다.
- 그 결과, 해당 지역에서 더 많은 범죄가 발견되어 이후 반복될 학습 데이터에 포함된다.
- 더 많은 사례에 노출된 모델은 그 지역에서 더 많은 범죄를 예측하게 된다.
- 다음 반복에서는 업데이트된 모델이 동일한 지역에 더 집중적으로 목표를 설정하여 더 많은 범죄가 발견되는 악순환이 발생한다.
- 종종 모델의 예측이 학습 데이터와 연결되는 다양한 메커니즘은 모델링 과정에서 고려되지 않는다.
- 이는 연구자들이 통제 불가능한 feedback loop 라고 부르는 문제로 이어질 수 있다.
- 또한 우리가 처음부터 올바른 문제를 해결하고 있는지 주의해야 한다. 예측 알고리즘은 정보 전달을 중재하는 데 있어 과도한 역할을 하게 되었다.
- 개인이 접하게 되는 뉴스가 그들이 좋아요를 누른 페이스북 페이지에 의해 결정되어야 할까?
- 이것들은 머신러닝 경력에서 마주할 수 있는 많은 윤리적 딜레마 중 일부일 뿐이다.
Summary
- 학습 데이터셋과 테스트 데이터셋이 같은 분포에서 오지 않는 경우가 많다. 이를 분포 변화(distribution shift)라고 한다.
- Risk 는 실제 분포에서 얻은 전체 데이터 집합에 대한 loss 의 기대값이다. 그러나 이 전체 데이터 집합은 보통 접근할 수 없다.
- Empirical Risk 는 Risk 를 근사하기 위한 학습 데이터에 대한 평균 loss 다. 실제로 우리는 Empirical Risk Minimization 을 수행한다.
- 해당 가정 하에서 covariate shift 와 label shift 는 테스트 시점에서 감지 및 수정될 수 있다.
- 이러한 편향을 고려하지 않으면 테스트 시점에서 문제가 발생할 수 있다.
- 일부 경우에는 환경이 자동화된 행동을 기억하고 예상치 못한 방식으로 반응할 수 있다.
- 우리는 모델을 구축할 때 이 가능성을 고려해야 하며, 모델과 환경이 예상치 못한 방식으로 얽힐 수 있음을 염두에 두고 실시간 시스템을 지속적으로 모니터링해야 한다.
댓글 남기기