머신러닝은 소프트웨어가 예시나 피드백에서 패턴을 학습하고, 학습한 패턴을 사용해 이전에 본 적 없는 사례에 대해 유용한 예측, 결정 또는 출력을 생성하도록 만드는 방법입니다. 머신러닝은 인공지능의 한 가지 접근법이지, 모든 AI를 뜻하는 동의어는 아닙니다.
중요한 단어는 패턴이 아닙니다. 중요한 단어는 유용한입니다. 데이터셋에는 무수히 많은 규칙성이 들어 있습니다. 머신러닝 시스템에는 정의된 작업과, 어떤 규칙성이 그 작업에 도움이 되는지 판단하는 방법이 필요합니다.
기본 개념
스팸 필터를 만든다고 상상해 보세요.
일반적인 규칙 기반 프로그래밍을 사용한다면 "메시지에 이 문구가 포함되어 있고 링크가 세 개보다 많으면 스팸으로 표시한다"와 같은 지침을 작성할 수 있습니다. 스팸 발송자는 표현을 바꾸고, 정상적인 메시지도 때로는 규칙에 걸리며, 규칙 목록은 유지 관리하기 어려워집니다.
머신러닝에서는 사람들이 검토한 스팸 이메일과 정상 이메일의 예시를 제공합니다. 또한 모델의 종류와 오류를 판단할 점수를 선택합니다. 그러면 학습 알고리즘이 모델을 조정하여 그 출력이 검토된 예시와 더 잘 일치하도록 합니다.
결과물은 여전히 소프트웨어입니다. 차이는 그 동작의 일부가 어디에서 비롯되는가에 있습니다. 프로그래머는 학습 절차와 그 범위를 작성하고, 학습 과정은 그 범위 안의 여러 설정을 결정합니다.
따라서 익숙한 표현인 "명시적으로 프로그래밍하지 않아도"는 오해를 불러일으킬 수 있습니다. 시스템은 프로그래밍되어 있지만, 모든 결정 규칙이 사례별로 일일이 작성되어 있는 것은 아닙니다.
학습의 의미
머신러닝 문제를 알아보는 유용한 방법은 다음 네 가지 요소를 확인하는 것입니다.
- 작업. 시스템은 무엇을 해야 하나요? 이메일 분류, 배송 시간 추정, 유사한 고객 그룹화, 행동 선택 등이 그 예입니다.
- 경험. 시스템은 어떤 정보에서 학습할 수 있나요? 레이블이 있는 예시, 레이블이 없는 관측값, 과거 상호작용 또는 시행착오에서 얻은 보상일 수 있습니다.
- 성공의 척도. 어떤 결과가 다른 결과보다 나은 이유는 무엇인가요? 예측 오류, 그룹화의 품질 또는 누적 보상일 수 있습니다.
- 조정 가능한 부분을 가진 모델. 학습 과정이 탐색할 수 있는 가능한 규칙의 범위는 어디까지인가요?
경험이 선택한 척도를 개선하는 방향으로 조정 가능한 부분을 바꾸면 학습이 일어납니다. 학습이 끝난 결과를 모델이라고 합니다. 새로운 사례에 이 모델을 사용하는 일은 모델을 학습하는 일과 별개입니다.
이 구분은 중요합니다. 배포된 대부분의 모델은 새로운 요청이 들어올 때마다 자동으로 학습하지 않습니다. 누군가 다시 학습 또는 업데이트 과정을 실행하기 전까지 학습된 설정은 그대로 유지됩니다.
머신러닝의 작동 방식
세부 사항은 다르지만 일반적인 프로젝트는 다음 순환 과정을 따릅니다.
- 작업과 실제 세계에서 중요한 결과를 정의합니다.
- 모델이 사용될 조건을 대표하는 예시를 수집하고 준비합니다.
- 입력을 어떻게 표현할지, 어떤 형태의 모델을 허용할지 선택합니다.
- 목표를 정의합니다. 후보 모델을 수치로 평가하는 방법입니다.
- 더 나은 목표 점수를 내는 설정을 탐색하는 학습 알고리즘을 실행합니다.
- 선택을 내리는 데 사용할 별도의 데이터와, 새로운 사례에서의 성능을 추정하기 위한 손대지 않은 테스트 세트를 사용합니다.
- 학습된 모델을 배포하고 동작을 모니터링하며, 데이터나 요구사항이 바뀌면 재학습하거나 교체합니다.
흐름은 다음과 같습니다.
historical examples + a success measure
|
v
learning algorithm
adjusts model settings
|
v
trained model <----- held-out examples test generalization
|
new input
|
v
prediction, decision, or output학습 알고리즘과 학습된 모델은 같은 것이 아닙니다. 알고리즘은 적합화 과정이고, 모델은 새로운 입력을 처리하는 적합화 결과입니다.
많은 지도학습 모델에서 적합화는 반복적인 수정 과정입니다. 모델은 학습 예시에 대해 예측을 내립니다. 손실 함수는 그 오류를 하나의 수치로 바꿉니다. 최적화 방법은 손실을 줄이도록 모델의 설정을 변경합니다. 이 과정을 반복하면 학습 데이터에 대한 성능이 향상될 수 있습니다.
학습 손실을 낮추는 것이 최종 목표는 아닙니다. 모델이 학습 예시의 세부 사항을 암기하고 새로운 사례에서 실패할 수 있기 때문입니다. 이를 과적합이라고 합니다. 머신러닝은 모델이 일반화할 때 성공합니다. 즉, 모델이 처리하도록 설계된 조건에서 추출된 새롭고 관련성 있는 사례에 대해 잘 작동해야 합니다.
따라서 평가 데이터는 학습에서 제외해야 합니다. 테스트 예시가 특성 선택, 전처리 또는 반복적인 모델 선택에 영향을 주면 정보가 경계를 넘어 누출된 것입니다. 그러면 점수가 모델의 실제 성능보다 좋아 보일 수 있습니다.
예시: 스팸 필터
사람들이 검토한 이메일 1,000개가 있다고 가정해 보겠습니다. 스팸 500개와 정상 이메일 500개입니다.
모델링 결정을 내리기 전에 이메일 200개를 따로 떼어 둡니다. 이것이 테스트 세트입니다. 나머지 800개는 학습 자료입니다. 각 메시지에 대해 시스템은 포함된 단어, 링크 수, 발신자가 이전에 등장한 적이 있는지와 같은 신호를 표현할 수 있습니다.
처음에는 모델의 조정 가능한 설정이 유용하지 않습니다. 학습 중에 학습기는 각 학습 예시의 레이블을 예측하고 오류를 측정한 다음 설정을 변경합니다. 많은 스팸 메시지와 연관된 문구는 영향력이 커질 수 있습니다. 알려진 발신자는 점수를 정상 메일 쪽으로 이끌 수 있습니다. 이는 보편적인 규칙이 아니라 학습된 연관성입니다.
학습과 모델 선택이 끝나면 손대지 않은 이메일 200개에 대해 최종 모델을 한 번 평가합니다. 결과가 다음과 같다고 가정해 보겠습니다.
- 스팸 메시지 90개를 정확하게 차단
- 정상 메시지 94개를 정확하게 허용
- 놓친 스팸 메시지 10개
- 잘못 차단한 정상 메시지 6개
200개 중 184개를 정확하게 분류했으므로, 이 예시 테스트에서의 정확도는 92%입니다.
하지만 이 수치만으로 분석이 끝나지는 않습니다. 정상 이메일 6개를 차단하는 비용이 스팸 10개를 놓치는 비용보다 클 수 있습니다. 정상 메시지를 더 적게 차단하고 스팸을 더 많이 놓치는 대신, 결정 임계값을 바꿀 수도 있습니다. 적절한 절충은 데이터만이 아니라 작업의 목적에서 결정됩니다.
이제 새 이메일이 도착해 스팸 점수 0.82를 받았다고 해 보겠습니다. 이 점수를 생성하는 것은 학습된 모델을 사용하는 일입니다. 모델이 그 이메일에서 반드시 학습하는 것은 아닙니다. 이후 사람들이 새 메시지를 검토한다면, 그 검토 결과는 향후 학습 과정의 경험이 될 수 있습니다.
92%라는 결과도 조건부입니다. 테스트 세트가 충분히 크고 미래의 이메일을 잘 대표하는 경우에만 미래 성능을 추정합니다. 언어, 발신자 또는 공격 방식이 바뀌면 어제의 모델은 덜 유용해질 수 있습니다.
모델이 학습 신호를 받는 주요 방식
머신러닝의 범주들은 서로 겹치지만, 다음 세 가지 광범위한 학습 설정이 유용합니다.
- 지도학습은 스팸 또는 정상으로 레이블이 지정된 이메일처럼 원하는 답과 짝지어진 예시를 사용합니다.
- 비지도학습은 각 예시에 대해 제공된 정답이 없으며, 유사한 항목을 그룹화하는 것처럼 구조를 드러내는 목표를 대신 최적화합니다.
- 강화학습은 환경에서 취한 행동에 따른 보상이나 벌점을 사용합니다. 한 행동이 다음에 일어날 일에 영향을 미치는 경우가 많습니다.
다른 명칭은 학습 방식의 혼합이나 다른 차원을 설명합니다. 준지도학습은 레이블이 있는 예시와 레이블이 없는 예시를 결합합니다. 자기지도학습은 데이터 자체에서 학습 대상을 구성합니다. 생성 모델은 새로운 샘플을 생성하도록 학습하지만, 둘 이상의 학습 설정으로 학습될 수 있습니다.
이러한 범주는 시스템을 설명하기 위한 도구이지, 모든 출처가 동일하게 사용하는 엄격한 구분은 아닙니다.
머신러닝이 중요한 이유
머신러닝은 원하는 동작을 완전한 규칙 집합으로 표현하는 것보다 시연하거나 측정하는 일이 더 쉬울 때 유용합니다.
음파와 단어를 연결하는 모든 규칙을 작성하는 것보다 음성 예시에 레이블을 지정하는 일이 쉽습니다. 교통, 날씨, 도로 공사, 시간대 사이의 모든 상호작용을 직접 코드로 작성하는 것보다 이동 시간을 기록하는 일이 쉽습니다. 짧은 체크리스트만으로 깔끔하게 구분할 수 없는 경우에도 사기 거래와 정상 거래의 예시를 수집할 수 있습니다.
학습이 인간의 작업을 없애는 것은 아닙니다. 작업의 성격을 바꿀 뿐입니다. 사람은 무엇을 예측할지, 누구의 데이터가 반영될지, 어떤 오류가 중요한지, 출력 결과를 사용하기에 충분히 안전한지를 결정합니다. 또한 주변 소프트웨어를 유지 관리하고 배포 후 어떤 일이 일어나는지 모니터링합니다.
일반적인 규칙이 명확하고 안정적이며 검증하기 쉽다면 머신러닝은 적합하지 않을 수 있습니다. 명시적인 법적 규칙에 따른 세금 계산은 머신러닝을 사용할 수 있다는 이유만으로 통계적 추측이 되어서는 안 됩니다.
흔한 오해
모델은 사람처럼 학습한다
"학습"은 경험에 따른 측정 가능한 변화를 뜻합니다. 의식, 이해 또는 인간의 학습 과정까지 의미하는 것은 아닙니다. 모델은 입력이 무엇을 의미하는지 알지 못한 채 하나의 좁은 작업에서 더 정확해질 수 있습니다.
데이터가 모델에 모든 것을 가르친다
데이터만으로 작업, 목표, 표현 방식 또는 허용 가능한 오류가 결정되지는 않습니다. 모든 학습 시스템에는 어떤 패턴을 찾고 선호할 수 있는지에 대한 가정이 들어 있습니다. 이러한 선택이 결과를 형성합니다.
학습 성능이 좋으면 모델이 제대로 작동한다
모델은 학습 자료를 암기할 수 있습니다. 적절히 분리되고 대표성을 갖춘 데이터에서의 성능이 재사용 가능한 것을 학습했는지 판단하는 더 나은 시험입니다.
데이터가 많으면 항상 문제가 해결된다
관련성이 높고 정확하게 측정된 데이터가 더 많으면 도움이 될 수 있습니다. 중복되거나 편향되었거나 잘못 레이블이 지정되었거나 오래되었거나 관련성이 없는 데이터가 많아지면 잘못된 동작이 강화될 수 있습니다. 양과 함께 범위와 품질도 중요합니다.
예측이 원인을 설명한다
모델은 두 신호가 함께 변한다는 사실을 발견하고 한 신호를 사용해 다른 신호를 예측할 수 있습니다. 그렇다고 한 신호를 바꾸면 다른 신호가 변한다는 뜻은 아닙니다. 인과관계에 대한 주장은 대개 더 강한 가정이나 통제된 실험이 필요합니다.
AI와 머신러닝은 서로 바꿔 쓸 수 있다
머신러닝은 AI 시스템을 만드는 주요 방법이지만, 규칙, 탐색, 계획 및 기타 기법으로도 AI라고 부르는 동작을 만들 수 있습니다. 현대의 제품은 학습된 모델과 상당한 비학습 소프트웨어를 결합할 수 있습니다.
머신러닝이 AI 시스템에 들어가는 방식
머신러닝은 학습된 모델을 생성하거나 업데이트하는 과정입니다. 모델은 하나의 구성 요소일 뿐입니다. 애플리케이션은 모델 주변에 데이터 수집, 인터페이스, 비즈니스 규칙, 안전 점검, 저장소 및 모니터링을 추가합니다.
신경망은 가능한 모델 설계 중 하나이지, 머신러닝의 다른 이름이 아닙니다. 학습은 학습 과정이 모델을 적합화하는 단계입니다. 추론은 학습된 모델이 새로운 입력을 처리하는 단계입니다. 이러한 요소를 분리하면 제품에 대한 주장을 더 쉽게 평가할 수 있습니다.
다음 단계
머신러닝 모델로 널리 사용되는 한 가지 종류를 알아보려면 신경망이란 무엇인가요?를 읽어 보세요. 그런 다음 적합화 과정은 AI에서 학습이란 무엇인가요?에서, 학습된 모델을 사용할 때 일어나는 일은 AI에서 추론이란 무엇인가요?에서 읽어 보세요.