간단하게 말해 우리의 주요 작업은 학습 알고리즘을 선택해서 어떤 데이터에 훈련시키는 것이므로 문제가 될 수 있는 두 가지 '나쁜 알고리즘'과 '나쁜 데이터'입니다. 이 절에서는 이 두가지에 대해 알아봅니다. 나쁜 데이터의 사례부터 알아보겠습니다.
1.4.1 충분하지 않은 양의 훈련 데이터
어린아이에게 사과에 대해 알려주려면 사과를 가리키면서 '사과'라고 말하기만 하면 됩니다(아마도 이 과정을 여러 번 반복해야 합니다). 그러면 아이는 색깔과 모야이 달라도 모든 종류의 사과를 구분할 수 있습니다. 정말 똑똑하지요.
머신러닝은 아직 이렇게까지는 못합니다. 대부분의 머신러닝 알고리즘이 잘 작동하려면 데이터가 많아야 합니다. 아주 간단한 문제에서조차도 수천 개의 데이터가 필요하고 이미지나 음성 인식 같은 복잡한 문제라면 수백만 개가 필요할지도 모릅니다(이미 만들어진 모델을 재사용할 수 없다면 말이죠).
믿을 수 없는 데이터의 효과
2001년에 발표한 유명한 노문에서 마이크로소프트 연구자인 미셀 반코와 에릭 브릴은 아주 간단한 모델을 포함하여 여러 다른 머신러닝 알고리즘에 충분한 데이터가 주어지면 복잡한 자연어 중의성 해소 문제를 거의 비슷하게 잘 처리한다는 것을 보였습니다.
이 논문의 저자들이 말한 것처럼 '이 결과가 제시하는 것은 시간과 돈을 알고리즘 개발에 쓰는것과 말뭉치 개발에 쓰는것 사이트 트레이드오프에 대해 다시 생각해봐야 한다는 것입니다.'
복잡한 문제에서 알고리즘보다 데이터가 더 중요하다는 이 생각은 2009년에 피터 노르빅등이 쓴 'The Unreasonable Effectiveness of Data'논문 때문에 더 유명해졌습니다. 하지만 기억할 점은 작거나 중간 규모의 데이터셋이 여전히 매우 흔하고, 훈련 데이터를 추가로 모으는 것이 항상 쉽거나 저렴한 일은 아니므로, 아직은 알고리즘을 무시하지 말아야 한다는 것입니다.
1.4.2 대표성 없는 훈련 데이터
일반화가 잘되려면 우리가 일반화하기 원하는 새로운 사례를 훈련 데이터가 잘 대표하는 것이 중요합니다. 이는 사례 기반 학습이나 모델 기반 학습 모두 마찬가지입니다.
예를 들어 앞서선형 모델을 훈련시키기 위해 사용한 나라의 집합에는 일부 나라가 빠져있어 대표성이 완벽하지 못합니다. 누락된 나라를 추가했을때 데이터가 어떻게 나타나는지 보여줍니다.
이 데이터에 선형 모델을 훈련시키면 실선으로 된 모델을 얻습니다. 반면 이전 모델은 점선으로 나타나 있습니다. 그림에서 알 수 있듯이 누락된 나라를 추가하면 모델이 크게 변경될 뿐만 아니라 이런 간단한 선형 모델은 잘 작도하지 않는다는 걸 확실히 보여줍니다. 매우 부유한 나라가 중간 정도의 나라보다 행복하지 않고, 반대로 일부 가나한 나라가 부유한 나라보다 행복한 것 같습니다.
대표성 없는 훈련 데이터를 사용했으므로 정확한 예측을 하지 못하는, 특히 매우 가난하거나 부유한 나라에서 잘못 예측하는 모델을 훈련시켰습니다.
일반화하려는 사례들을 대표하는 훈련 세트를 사용하는 것이 매우 중요하지만, 이게 생각보다 어려울 때가 많습니다. 샘플이 작으면 샘플링 잡음sampling noise(즉, 우연에 의한 대표성 없는 데이터)이 생기고, 매우 큰 샘플도 표본 추출 방법이 잘못되면 대표성을 띠지 못할 수 있습니다. 이를 샘플링 편향sampling bias이라고 합니다.
유명한 샘플링 편향 사례
아마도 샘플링 편향에 대한 가장 유명한 사례는 랜던과 루즈벨트가 경쟁했던 1936년 미국 대통령 선거에서 Literary Digest잡지사가 천만 명에게 우편물을 보내 수행한 대규모 여론조사일 것입니다. 240만 명의 응답을 받았고 랜던이 선거에서 57% 득표를 얻을 것이라고 높은 신뢰도로 예측했습니다.
하지만 루즈벨트가 62% 득표로 당선되었습니다. 문제는 Literary Digest의 샘플링 방법에 있었습니다.
- 첫째, 여론조사용 주소를 얻기 위해 전화번호부, 자사의 구독자 명부, 클럽 회원 명부등을 사용했습니다. 이런 명부는 모두 공화당(따라서 랜던)에 투표할 가능성이 높은 부유한 계층에 편중된 경향이 있습니다.
- 둘째, 우편물 수신자 중 25%미만의 사람이 응답했습니다. 이른 정치에 관심 없는 사람, Literary Digest를 싫어하느 사람과 다른 중요한 그룹을 제외시킴으로써 역시 표본을 편형되게 만들었습니다. 특히 이러한 종류의 샘플링 편향을 비응답 편향nonresponse bias이라고 합니다.
다른 예로 펑크 음악 비디올르 분휴하는 시스템을 만든다고 가정합시다. 이를 위한 훈련 세트를 유투브에서 '펑크 음악'을 검색해 마련할 수 있습니다. 하지만 이는 유투브 검색 엔진이 결괏값으로 유투브 내의 모든 펑크 음알그 대표하는 동영상을 반환한다는 가정하는 것입니다. 현실에서는 검색 결과가 인기 음악가들로 편중될 가능성이 큽니다. 그렇다면 어떻게 대량의 훈련 세트를 구할 수 있을까요?
1.4.3 낮은 품질의 데이터
훈련 데이터가 에러, 이상치outlier, 잡음(예를 들면 성능이 낮은 측정 장치 때문에)으로 가득하다면 머신러닝 시스템이 내재된 패턴을 찾기 어려워 잘 작동하지 않을 것입니다. 그렇기 때문에 훈련 데이터 정제에 시간을 투자할 만한 가치는 충분합니다. 사실 대부분의 데이터 과학자가 데이터 정제에 많은 시간을 쓰고 있습니다. 예를 들어보겠습니다.
- 일부 샘플이 이상치라는 게 명학하면 그것히 그긋들을 무시하거나 수종으로 잘못된 것을 고치는 것이 좋습니다.
- 일부 샘플에 특성 몇 개가 빠져있다면(예를 들면 고객 중 5%가 나이를 기록하지 않음), 이 특성을 모두 무시할지, 이 샘플을 무시할지, 빠진 값을 채울지(예를 들면 평균 나이로), 또는 이 특성을 넣은 모델과 제외한 모델을 따로 훈련시킬 것인지 등을 정해야 합니다.
1.4.4 관련 없는 특성
속담에도 있듯이 엉터리가 들어가면 엉터리가 나옵니다garbage in, garbage out. 훈련 데이터에 관련없는 특성이 적고 관련 있는 특성이 충분해야 시스템이 학습할 수 있을 것입니다. 성공적인 머신러닝 프로젝트의 핵심 요소는 훈련에 사용할 좋은 특성들을 찾는 것 입니다. 이 과정을 특성공학feature engineering이라 하며 다음 작업을 포함합니다.
- 특성 선택feature selection: 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택합니다.
- 특성 추출(feature extraction): 특성을 결합하여 더 유용한 특성을 만듭니다(앞서 본 것처럼 차원 축소 알고리즘을 사용할 수 있습니다.)
- 새로운 데이터를 수집해 새 특성을 만듭니다.
지금까지 나쁜 데이터의 사례를 살펴보았고 이제 나쁜 알고리즘의 예를 몇 가지 살펴보겠습니다.
1.4.5 훈련 데이터 과대적합
해외여행 중 택시운전사가 내 물건을 후쳤다고 가정합시다. 아마도 그 나라의 모든 택시운전사를 도둑이라고 생각할 수도 있습니다. 사람은 종종 과도하게 일반화를 하지만 주의하지 않으면 기계도 똑같은 함정에 빠질 수 있습니다. 머신러닝에서는 이를 과대적합(overfitting)이라고 합니다. 이는 모델이 훈현 데이터에 너무 잘 맞지만 일반성이 떨어진다는 뜻입니다.
[그림 1-22]는 고차원의 다항 회귀 모델이 삶의 만족도 훈련 데이터에 크게 과대적합된 사례를 보여줍니다. 간단한 선형 모델보다 이 모델이 훈련 데이터에 더 잘 맞는다라도 실제로 이 예측을 믿기는 힘든니다.
심층 신경망 같은 복잡한 모델은 데이터에서 미묘한 패턴을 감지할 수 있지만, 훈련 세트에 잡음이 많거나 데이터셋이 너무 작으면(샘플링 잡음이 발생하므로) 잡음이 섞인 패턴을 감지하게 됩니다. 당연히 이런 패턴은 새로운 샘플에 일반화되지 못합니다. 예를 들어 삶의 만족도 모델에 나라 이름 같은 관련 없는 특성을 많이 추가한다고 합시다. 이 경우 복잡한 모델이 이름에 'w'가 들어간 나라들의 삶의 만족도가 7보다 크다는 패턴을 감지할지 모릅니다. 뉴질랜드New Zealand(7.3), 노르웨이Norway(7.4), 스웨덴Sweden(7.2), 스위스Switzerland(7.5)가 여기에 속합니다. 이 W-만족도 규칙을 르완다Rewanda나 잠바브웨Zimbabwe에 일반화하면 얼마나 신뢰할 수 있을까요? 확실히 이 패턴은 우연히 훈련 데이터에서 찾은 것이지만 이 패턴이 진짜인지 잡음데이터로 인한 것인지 모델이 구분해낼 방법은 없습니다.
CAUTION_ 과대적합은 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 일어납니다. 해결 방법은 다음과 같습니다.
- 파라미터 수가 적은 모델을 선택하거나(예를 들면 고차원 다항 모델보다 선형 모델), 훈련 데이터에 있는 특성 수를 줄이거나, 모델에 제약을 가하여 단순화시킵니다.
- 훈련 데이터를 더 많이 모읍니다.
- 훈련 데이터의 잡음을 줄입니다(예를 들면 오류 데이터 수정과 이상치 제거).
모델을 단순하게 하고 과대적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것을 규제regularization라고 합니다. 예를 들어 앞서 만든 선형 모델은 두 개의 파라미터 @0과 @1을 가지고 있습니다. 이는 훈련 데이터에 모델을 맞추기 위한 두 개의 자유도degree of freedom를 학습 할고리즘에 부여합니다. 모델은 직석읜 절편(@0)과 기울기(@1)를 조절할 수 있습니다. 우리가 @1=0이 되도록 강제하면 알고리즘에 한 개의 자유도만 남게 되고 데이터에 적절하게 맞춰지기 힘들것 입니다. 즉, 할 수 있는 것이 훈련 데이터에 가능한 한 가깝게 되도록 직선을 올리거나 내리는 것이 전부이므로 결국 평균 근거가 됩니다. 진짜 아주 간단한 모델이네요! 알고리즘 @1을 수정하도록 허락되는 작은 값을 유지시키면 학습 알고리즘이 자유도 1과 2 사이의 적절한 어딘가에 위치할 것입니다. 이 자유도 2인 모델보다는 단순하고 자유도 1인 모델보다는 복잡한 모델을 만듭니다. 데이터에 왁변히 맞추는 것과 일반화를 위해 단순한 모델을 유지하는 것 사이의 올바른 균형을 찾는것이 좋습니다.
[그림 1-23]에 세 가지 모델이 있습니다. 점선은 나라 몇 개가 빠진 채로 훈련한 모델이고 파선은 모든 나라를 포함시켜 훈련한 두 번째 모델이며 실선은 첫 번째 모델과 같은 데이터에 규제를 적용해 만든 선형 모델입니다. 규제가 모델의 기울기를 더 작게 만들어 훈련 데이터에는 덜 맞지만 새로운 샘플에는 더 잘 일반화됩니다.
학습하는 동안 적용할 규제의 양은 하이퍼파라미터hyperparameter가 결정합니다. 하이퍼파라미터는 (모델이 아니라) 학습 알고리즘의 파라미터입니다. 그래서 학습 알고리즘으로부터 영향을 받지 않으며, 훈련 전에 미리 지정되고, 훈련하는 동안에는 상수로 남아 있습니다. 규제 하이퍼 파라미터를 매운 큰 값으로 지정하면 (기울기가 0에 가까운) 거의 평면한 모델을 얻게 됩니다. 그러면 학습 알고리즘이 훈련 데이터에 과대적합될 가능성은 거의 없겠지만 좋은 모델을 찾지 못합니다. 머신러닝 시스템을 구축할 때 하이퍼파라미터 튜닝은 매우 중요한 과정입니다(다음 장에서 자세한 예를 보겠습니다).
1.4.6 훈련 데이터 과소적합
이미 짐작했겠지만 과소적합underfitting은 과대적합의 반대입니다. 이는 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 일어납니다. 옐르 들어 삶의 만족도에 대한 선형 모델은 과소적합되기 쉽습니다. 현실은 이 모델보다 더 복잡하므로 훈련 샘플에서조차도 부정확한 예측을 만들 것입니다.
이 문제를 해결하는 주요 기법은 다음과 같습니다.
- 파라미터가 더 많은 강력한 모델을 선택합니다.
- 학습 알고리즘에 더 좋은 특성을 제고합니다(특성 엔지니어링).
- 모델의 제약을 줄입니다(예를 들면 규제 하이퍼라라미터를 감소시킵니다).
1.4.7 한걸음 물러서서
지금까지 여러분은 벌써 머신러닝에 관해 많은 것을 배웠습니다. 그러나 많은 개념을 한꺼번에 다루다 보니 정리가 제대로 되지 않았을 것입니다. 한걸음 물러서서 큰 그림을 보겠습니다.
- 머신러닝은 명시적인 규칙을 코딩하지 않고 기계가 데이터로부터 학습하여 어떤 작업을 더 잘하도록 만드는 것입니다.
- 여러 종륭의 머신러닝 시스템이 있습니다. 지도 학습과 비지도 학습, 배치 학습과 오라인 학습, 사례 기간 학습과 모델 기반 학습 등입니다.
- 머신러닝 프로젝트에서는 훈련 세트에 데이터를 모아 학습 알고리즘에 주입합니다. 학습 알고리즘이 모델 기반이면 훈련 세트에 모델을 맞추기 위해 파라미터를 조정하고(즉, 훈련 세트에서 좋은 예측을 만들기 위해). 새로운 데이터에서도 좋은 예측을 만들거라 기대합니다. 알고리즘이 사례 기반이면 샘플을 기억하는 것이 학습이고 새오룬 샘플에 일반화하기 위해 유사도 측정을 사용합니다.
- 훈련 세트가 너무 작거나, 대표성이 없는 데이터이거나, 잡음이 많고 관련 없는 특성으로 오염되어 있다면 시스템이 잘 작동하지 않습니다(엉터리가 들어가면 엉터리가 나옵니다). 마지막으로, 모델이 너무 단순하거나(과소적합된 경우) 너무 복잡하지 않아야 합니다(과대적합된 경우).
마지막으로 다루어야 할 중요한 주제가 하나 있습니다. 모델을 학습시켰다 해서 새로운 샘플에 일반화되길 그냥 바라기만 해서는 안 됩니다. 모델을 평가하고 필요하면 상세하게 튜닝해야 합니다. 어떻게 하는지 살펴보겠습니다.
댓글 없음:
댓글 쓰기