
【철저 해설】 문과생도 이해할 수 있다! 머신러닝 입문하기
요약
머신러닝의 기초 개념부터 생성 AI의 최신 연구 흐름까지 비전공자도 이해할 수 있도록 쉽게 설명합니다. 데이터 학습 원리, 손실 함수, 최적화, 뉴럴 네트워크 등 핵심 개념을 다룹니다.
핵심 포인트
- 머신러닝은 데이터로부터 모델이 스스로 경계를 조정하며 학습하는 기술입니다.
- 전통적인 프로그래밍과 달리 인간이 규칙을 직접 작성하지 않고 데이터의 경향성을 학습합니다.
- AI, 머신러닝, 딥러닝, 생성 AI는 서로 포함 관계를 가진 개념입니다.
- 데이터의 품질은 모델의 성능과 직결되는 매우 중요한 요소입니다.
안녕하세요, 전직 완전 문과(고리분)인 miruky입니다.
머신러닝 (Machine Learning)이라고 하면 "으악" 하고 거부 반응을 보이던 반년 전의 제가 있었습니다. 대학교에서 CS (Computer Science)를 전공하는 사람들의 영역이라는 멋대로의 이미지와, 복잡한 수식이 무한히 나올 것이라는 선입견이 있었기 때문입니다. 하지만 막상 배워보니, 확실히 대학교·대학원의 학술 레벨에서는 그럴지도 모르겠지만, 사실 입문 부분에서는 그렇게 복잡한 수식 없이도 이해할 수 있습니다.
이 기사에서는 머신러닝의 전체상부터 생성 AI (Generative AI)의 최신 연구까지, 배우기 시작하는 단계에서도 이해할 수 있도록 정리합니다. 수식도 조금 사용하지만, 중학교 수학의 문자와 일차함수를 떠올릴 수 있다면 다룰 수 있도록, 식의 의미를 일본어로 되돌리며 진행하겠습니다.
그럼, 머신러닝의 세계로 가봅시다!
- 머신러닝의 전체상
- 데이터 다루는 법
- 학습의 종류
- 예측을 식으로 확인하기
- 손실 함수 (Loss Function)
- 최적화 (Optimization)
- 분류 (Classification)의 사고방식
- 평가 지표 (Evaluation Metrics)
- 일반화 (Generalization)와 과적합 (Overfitting)
- 대표적인 모델
- 뉴럴 네트워크 (Neural Network)
- Transformer와 생성 AI
- 현재의 생성 AI로 이어지는 연구의 흐름
- 공부하는 법
일반적인 프로그램에서는 인간이 규칙을 작성합니다. 예를 들어, 점수가 80점 이상이면 합격, 80점 미만이면 불합격과 같은 규칙을 코드로 만듭니다.
머신러닝에서는 처음부터 규칙을 전부 작성하지 않습니다. 과거의 데이터를 전달하여 모델 (Model)이 경향을 학습하게 합니다. 월세 예측이라면 역에서의 거리, 넓이, 건축 연수, 층수 등을 보고 월세를 예측하는 식이나 판단의 경계를 모델이 조정한다는 뜻입니다.
여기서 말하는 '배운다'는 인간처럼 의미를 이해하는 것과는 조금 다르다고 이해해 주시면 좋겠습니다. 모델은 입력과 정답의 관계를 수치로서 조정합니다. 거칠게 말하자면, 예측이 틀리면 조금 고치고, 또 틀리면 조금 고치는 작업을 몇 번이고 반복합니다. 이 부분은 기계답지요.
예를 들어, 메일이 스팸 메일인지 아닌지를 판정하는 일반적인 프로그램을 생각하면, 인간이 "이 단어가 포함되어 있으면 스팸 메일", "이 발신인이면 위험"과 같은 조건이나 규칙을 작성합니다. 조건이 적을 때는 대응할 수 있지만, 실제 메일은 표현이 바뀌고, 발신인도 바뀌며, 정상적인 메일에도 비슷한 단어가 들어갑니다. 규칙이 늘어날수록 인간이 유지보수하는 부담은 커집니다.
머신러닝에서는 스팸 메일과 일반 메일의 예를 많이 전달하여 모델이 경계를 조정하게 합니다. 인간은 "어떤 단어를 얼마나 무겁게 다룰 것인가"를 전부 수작업으로 작성하는 일은 거의 없을 것입니다. 대개 직관으로 분류하니까요. 기계는 데이터로부터 스팸 메일다움을 나타내는 숫자의 조합을 만듭니다.
물론 머신러닝이라고 해서 무엇이든 자동으로 해결할 수 있는 것은 아닙니다. 데이터의 품질이 나쁘면 모델도 나쁜 경향을 배웁니다. 입력과 정답의 관계가 약한 문제에서는 아무리 고도의 모델을 사용해도 한계가 있습니다. 머신러닝은 규칙 작성을 전부 없애는 기술이 아니라, 데이터로부터 조정할 수 있는 부분을 모델에게 맡기는 기술입니다.
여기서 용어의 정의입니다만, 사실 AI, 머신러닝, 딥러닝 (Deep Learning), 생성 AI는 같은 것이 아닙니다. 각각 범위의 넓이가 다릅니다.
| 용어 | 대략적인 의미 |
|---|---|
| AI | 인간의 지적 작업을 기계로 다루는 넓은 분야 |
| ... |
딥러닝은 머신러닝의 일부이며, 생성 AI의 대부분은 딥러닝을 토대로 하고 있습니다. 지금의 대규모 언어 모델 (LLM)도 갑자기 다른 세계에서 온 기술이 아니라 머신러닝의 연장선상에 있습니다. 대학교에서 CS, 특히 머신러닝을 전공하셨던 분들이 자주 말씀하시는데, 바로 그 말이 맞습니다.
머신러닝에는 인간처럼 장단점이 있습니다. 머신러닝이 잘하는 것은 과거 데이터에 포함된 경향을 사용하여 유사한 상황에 대해 예측하는 것입니다. 상품 수요 예측, 이미지 분류, 이상 탐지, 문장 분류, 추천 (Recommendation), 음성 인식처럼 많은 사례로부터 패턴을 찾는 문제에 적합합니다. 이는 이미지하기 쉬울 것이라 생각합니다.
반면, 과거 데이터에 없는 상황, 데이터 수집 방식이 바뀐 상황, 정답 자체가 애매한 상황은 취약합니다. 예를 들어, 과거의 매출 데이터만으로 갑작스러운 법 개정, 재해, SNS에서의 급격한 유행을 정확히 예측하는 것은 어려워집니다. 모델은 미래를 알고 있는 것이 아니라, 어디까지나 학습 시의 데이터에서 찾아낸 관계를 사용합니다.
또 하나 중요한 점은 머신러닝의 출력은 판단 재료일 뿐, 반드시 최종 판단 그 자체는 아니라는 점입니다. 의료, 금융, 채용, 보안처럼 영향력이 큰 장면에서는 예측값뿐만 아니라 어떤 데이터로 학습했는지, 어느 정도 틀리는지, 틀렸을 경우에 어떤 일이 일어나는지까지 엄중하게 확인합니다.
머신러닝 입문에서는 모델 (Model), 알고리즘 (Algorithm), 파라미터 (Parameter)라는 용어가 자주 등장합니다. 비슷한 상황에서 사용되지만, 역할은 다릅니다. 일반적인 용어의 이미지와는 조금 괴리가 있는 용어도 있을 수 있으니 주의가 필요합니다.
| 용어 | 의미 | 월세 예측의 예 |
|---|---|---|
| 모델 (Model) | 입력으로부터 예측을 내놓는 메커니즘 | 월세를 예측하는 식 |
| ... | ... |
모델은 예측을 내놓는 본체입니다. 선형 회귀 (Linear Regression)라면, 입력에 가중치를 곱해 더하는 식이 모델입니다. 결정 트리 (Decision Tree)라면, 조건 분기의 나무 구조가 모델입니다. 신경망 (Neural Network)이라면, 수많은 가중치를 가진 층 (Layer)들의 집합이 모델입니다.
알고리즘은 그 모델을 어떻게 만들지, 어떻게 조정할지에 대한 절차입니다. 예를 들어 경사 하강법 (Gradient Descent)은 손실 (Loss)이 작아지는 방향으로 파라미터를 움직이는 알고리즘입니다.
파라미터는 상상하기 쉽겠지만, 학습을 통해 변하는 숫자입니다. 월세 예측에서 넓이의 가중치, 역과의 거리 가중치, 건축 연수 가중치 등이 이에 해당합니다. 반면, 학습률 (Learning Rate)이나 결정 트리의 최대 깊이와 같이 인간이 사전에 결정하는 값은 하이퍼파라미터 (Hyperparameter)라고 합니다. 이 부분의 용어들은 매우 중요하므로 이번 기회에 꼭 기억해 두시기 바랍니다.
머신러닝에서는 입력으로 사용하는 정보를 특징량 (Feature), 예측하고 싶은 정답을 라벨 (Label)이라고 부릅니다. 월세 예측이라면, 입력에 사용하는 정보인 넓이, 역으로부터의 거리, 건축 연수가 특징량이고, 정답인 월세가 라벨입니다.
이 표에서는 넓이, 역으로부터의 거리, 건축 연수를 보고 월세를 예측합니다. 모델은 넓을수록 월세가 올라간다, 역에 가까울수록 월세가 올라간다, 건축 연수가 오래될수록 월세가 내려간다와 같은 경향을 수치로서 학습합니다.
단, 데이터에 들어있지 않은 정보는 기본적으로 배울 수 없습니다. 일조량, 치안, 인테리어의 깨끗함, 주변 소음 등이 월세에 영향을 미친다면, 그것들도 특징량으로 포함시키는 편이 예측이 안정적입니다.
데이터를 표 (Table)로 생각할 경우, 1행이 하나의 사례, 1열이 하나의 항목입니다. 매물 A, 매물 B, 매물 C가 행이고, 넓이, 역으로부터의 거리, 건축 연수가 열입니다. 머신러닝에서는 이 표 중에서 예측에 사용하는 열을 특징량으로, 맞추고자 하는 열을 라벨로 취급합니다.
이 관점은 이미지나 문장에서도 마찬가지입니다. 이미지 분류 (Image Classification)에서는 이미지 1장이 1행에 해당하며, 라벨은 개, 고양이, 자동차 등의 카테고리입니다. 문장 분류 (Text Classification)에서는 문장 1개가 1행에 해당하며, 라벨은 스팸 메일, 문의 유형, 감정 등이 됩니다.
데이터는 학습용과 확인용으로 나누는 것이 중요합니다. 전부 학습에 사용해 버리면, 모델이 기출문제를 통째로 암기하고 있는 것인지, 새로운 문제에도 대응할 수 있는 것인지 판단할 수 없습니다.
| 데이터 | 역할 |
|---|---|
| 학습 데이터 (Training Data) | 모델을 조정하기 위해 사용 |
| ... | ... |
테스트 데이터 (Test Data)는 시험 본방과 유사한 취급이라고 생각하십시오. 모델을 계속 보면서 수정하다 보면, 테스트에 맞춘 조정이 되어 버립니다. 실무에서도 성능이 좋아 보이는 수치를 만드는 것보다, 미지의 데이터(Unseen Data)에서 얼마나 벗어나는지를 솔직하게 측정하는 것이 중요합니다. 이 부분이 중요하면서도 어렵습니다.
그렇다고는 해도, 현실의 데이터는 그대로는 학습에 사용할 수 없는 경우가 많습니다. 빈칸이 있거나, 표기 불일치가 있거나, 수치 단위가 섞여 있거나, 카테고리명이 제각각이거나, 이상치 (Outlier)가 들어있는 등의 상태에서 시작합니다. 즉, 데이터가 지저분한 것이죠.
| 작업 | 수행 내용 |
|---|---|
| 결측치 처리 (Missing Value Imputation) | 빈칸을 채우거나, 행 또는 열을 제외함 |
| ... | ... |
특히 주의해야 할 것은 데이터 누수 (Data Leakage)입니다. 이는 본래라면 예측 시점에는 알 수 없어야 할 정보가 학습 데이터에 섞여 들어가는 상태를 말합니다. 예를 들어 탈퇴 예측에서, 탈퇴 후에야 알 수 있는 항목을 특징량에 넣으면 학습 시의 성적은 높게 보이지만, 실전(Production)에서는 사용할 수 없습니다.
머신러닝에서는 모델 선택만큼이나 데이터를 만드는 방법이 중요합니다. 모델이 똑똑해 보여도 미래의 정보를 몰래 훔쳐본 것에 불과하다면, 실무에서는 도움이 되지 않을 것이라는 점은 상상하기 어렵지 않을 것입니다.
특징량 설계 (Feature Engineering)는 모델에 전달할 정보를 어떻게 만들 것인가 하는 작업입니다. 같은 원본 데이터라도 특징량을 어떻게 만드느냐에 따라 성능은 크게 달라집니다. 월세 예측이라면 역으로부터의 거리 그 자체뿐만 아니라, 인근 역의 노선 수, 건축 연수를 신축/준신축/구축과 같은 구분으로 변환하기, 넓이와 역 거리를 조합한 특징량을 만들기 등의 기법을 사용할 수 있습니다.
반복해서 설명드리고 있는 것처럼, 특징량 설계 시에는 모델에 정답을 직접 전달해서는 안 됩니다. 탈퇴 예측에서 탈퇴일이나 해지 사유와 같이 탈퇴 후에야 알 수 있는 정보를 넣으면 학습 시의 점수만 높아집니다. 이것이 바로 방금 등장한 데이터 누수입니다.
또한, 특징량 (Feature)은 많다고 해서 무조건 좋은 것은 아니며, 관계가 옅은 특징량이 늘어나면 모델이 우연한 관계까지 포착할 수 있습니다. 학습 데이터에서는 잘 보이는 것처럼 보이지만, 미지의 데이터에서 벗어난다면 특징량을 만드는 방법을 의심해 보는 것이 정석입니다.
머신러닝 (Machine Learning)에서 다루는 데이터에는 몇 가지 유형이 있습니다. 수치 데이터는 그대로 사용할 수 있는 경우가 많지만, 카테고리, 텍스트, 이미지는 모델에 전달하기 전에 숫자로 변환합니다.
| 데이터 종류 | 예 | 변환 방식 |
|---|---|---|
| 수치 | 연령, 가격, 거리 | 표준화 (Standardization)나 이상치 확인을 수행 |
| ... |
카테고리 데이터의 경우, A 플랜, B 플랜, C 플랜을 단순히 1, 2, 3으로 대체하면 모델이 "C는 A보다 크다"라고 착각할 수 있습니다. 플랜 이름에 대소 관계가 없다면, 원-핫 인코딩 (one-hot encoding)처럼 카테고리마다 별도의 열을 만드는 방법이 후보가 됩니다.
원-핫 인코딩 (one-hot encoding)은 카테고리의 수만큼 열을 준비하여, 해당하는 것에만 1을 부여하고 나머지는 0으로 만드는 변환입니다. 플랜 A, B, C라면 A 플랜용 열, B 플랜용 열, C 플랜용 열을 만들어, A 플랜인 사람은 A 열만 1이고 나머지는 0인 형태로 만듭니다. 이렇게 하면 숫자의 대소 관계가 그대로 순위로 변하지 않으므로, 모델이 C는 A보다 크다고 착각하지 않게 됩니다.
텍스트나 이미지에서는 변환이 더욱 중요해집니다. 문장은 토큰 (Token)이나 임베딩 (Embedding)으로 변환하고, 이미지는 픽셀 값이나 신경망 (Neural Network)의 중간 표현으로 다룹니다. 어떤 변환을 사용하느냐에 따라 모델이 파악할 수 있는 정보가 달라집니다.
복습하자면, 레이블 (Label)은 예측하고 싶은 정답이었습니다. 하지만 현실의 데이터에서는 레이블 그 자체를 어떻게 정의할지가 어려울 때가 있습니다.
탈퇴 예측이라면, 며칠 이내에 해지해야 탈퇴로 간주할 것인지를 결정해야 합니다. 구매 예측이라면, 클릭을 구매 대신 사용해도 되는지, 실제 구매만을 볼 것인지에 따라 의미가 달라집니다. 문의 분류라면, 담당자마다 카테고리를 붙이는 방식이 다를 수 있습니다.
레이블의 기준이 흔들리면 모델은 흔들리는 답을 배웁니다. 모델의 정밀도가 올라가지 않을 때, 알고리즘보다 레이블의 정의나 부여 방식에 원인이 있는 경우도 있습니다. 머신러닝에서는 정답 데이터를 만드는 작업도 설계의 일부에 포함됩니다.
이 부분은 들어본 적이 있는 분들도 많으실 겁니다. 지도 학습 (Supervised Learning)은 입력과 정답 세트로부터 배우는 방법입니다. 매출 예측, 임대료 예측, 이미지 분류, 스팸 메일 판정 등에서 자주 사용됩니다. 교사로부터 입력과 정답을 세트로 배우는 이미지를 가지면 지도 학습을 기억하기 쉬울 것입니다.
| 태스크 (Task) | 입력 | 정답 |
|---|---|---|
| 임대료 예측 | 넓이, 역과의 거리, 건축 연수 | 임대료 |
| ... |
정답이 수치라면 회귀 (Regression), 정답이 카테고리라면 분류 (Classification)입니다. 임대료나 매출 같은 수치를 예측하는 것이 회귀이며, 스팸 메일인지 일반 메일인지를 나누는 것이 분류입니다.
회귀란, 요컨대 수치 그 자체를 맞추려는 태스크라고 생각하시면 됩니다. 임대료가 9만 엔인지 11만 엔인지, 다음 달 매출이 100만 엔인지 120만 엔인지와 같은 연속적인 양을 예측합니다. 반면 분류는 개인지 고양이인지, 스팸 메일인지 일반 메일인지와 같이 어떤 그룹에 속하는지를 맞히는 태스크입니다. 같은 지도 학습이라도 답이 숫자인지 그룹 이름인지에 따라 명칭이 달라진다는 점만 파악해 두셔도 충분합니다.
지도 학습은 정답이 있기 때문에 평가 기준을 만들 수 있는 반면, 정답 데이터를 만드는 비용이 발생합니다. 이미지에 개, 고양이, 자동차 레이블을 붙이는 작업, 문의 문장에 카테고리를 붙이는 작업, 음성에 전사 (Transcription)를 붙이는 작업은 인간의 판단이 필요합니다.
또한, 지도 학습은 과거의 정답에 강하게 의존하는 특징이 있습니다. 과거의 판단이 편향되어 있다면 그 편향도 함께 배워버린다는 로직입니다. 채용, 심사, 신용 평가와 같이 인간의 판단 이력을 사용하는 경우에는 과거 데이터가 정말로 바람직한 판단을 나타내고 있는지 확인하는 것이 필수적입니다.
비지도 학습 (Unsupervised Learning)은 정답 레이블 없이 데이터의 구조를 찾는 방법입니다. 고객을 유사한 구매 경향에 따라 나누거나, 문장을 유사한 테마별로 묶거나, 이상 데이터를 찾는 등의 용도가 있습니다. 앞서 말한 방식과 달리 교사가 없으며, 미리 정답을 알려주지 않는다는 점을 기억해 주세요.
대표적인 예는 클러스터링 (Clustering)입니다. 클러스터링에서는 데이터 간의 유사성을 바탕으로 그룹을 만듭니다. 인간이 사전에 "이 사람은 A 그룹, 이 사람은 B 그룹"이라고 정답을 주지 않아도, 모델이 유사한 것끼리 묶어줍니다.
비지도 학습 (Unsupervised Learning)에서는 결과의 해석이 중요합니다. 클러스터가 3개로 나뉘었다고 해서, 그것이 업무상 의미 있는 3가지 분류라고 단정할 수는 없습니다. 구매 경향 클러스터라면, 각 그룹에 어떤 상품을 사는 사람이 많은지, 연령이나 지역에 편중이 있는지 등을 인간이 확인합니다.
차원 축소 (Dimension Reduction) 또한 비지도 학습의 대표적인 예입니다. 수많은 특성량 (Feature)을 정보를 최대한 보존하면서 적은 수의 축으로 요약합니다. 고차원 데이터를 시각화하거나 정보의 중복을 줄일 때 사용됩니다.
참고로 차원 축소란, 수많은 열 (특성량)을 의미를 최대한 남기면서 적은 수의 축으로 다시 정리하는 작업입니다. 예를 들어 수학, 물리, 화학, 국어, 사회, 영어의 6개 과목 점수가 있을 때, 이과 성향인지 문과 성향인지라는 하나의 축과, 전반적으로 잘하는지 못하는지라는 하나의 축, 이렇게 두 개 정도만으로도 대략적인 경향을 파악할 수 있는 경우가 있습니다. 6개의 열을 2개의 열로 줄여도 중요한 차이는 남는다는 것이 차원 축소의 이미지입니다. 열이 줄어들면 그래프로 그려서 살펴보기 쉬워지며, 방법과 데이터에 따라서는 유사한 정보의 중복이나 노이즈를 줄일 수 있는 경우도 있습니다. 다만, 중요한 정보까지 잃을 수도 있기 때문에 줄인다고 해서 반드시 좋아지는 것은 아닙니다.
여기서부터 조금 복잡해질까요? 강화학습 (Reinforcement Learning)은 행동한 결과로 얻는 보상 (Reward)을 바탕으로 더 나은 행동을 배우는 방법입니다. 게임 AI, 로봇 제어, 광고 송출, 추천, 그리고 최근에는 대규모 언어 모델 (LLM)의 추론 능력을 높이는 연구에서도 사용됩니다. '보상을 준다'는 것이 키워드입니다.
강화학습에서는 정답이 처음부터 표에 나열되어 있지 않을 수도 있습니다. 어떤 행동을 선택하고, 결과를 받아들이고, 다음 행동을 바꿉니다. 테스트 채점이라기보다는, 여러 번 시도하면서 보상이 늘어나는 방향으로 움직이는 이미지입니다. '손!'이라고 했을 때 강아지가 손을 내밀면 간식 (보상)을 주는 이미지와 같습니다. 강아지는 주인이 '손!'이라고 했을 때 오른손을 주인의 손 위에 올리면 간식을 준다는 것을 학습합니다. 바로 이런 느낌입니다.
강화학습에서는 에이전트 (Agent), 상태 (State), 행동 (Action), 보상 (Reward), 정책 (Policy)이라는 용어가 자주 등장합니다. 조금 복잡하지만, 용어적으로 정리하자면 에이전트는 행동하는 주체, 상태는 현재의 상황, 행동은 선택할 수 있는 조작, 보상은 결과에 대한 점수, 정책은 어떤 상태에서 어떤 행동을 선택할지에 대한 규칙입니다.
| 용어 | 의미 | 게임의 예 |
|---|---|---|
| 에이전트 | 행동하는 주체 | 플레이어 AI |
| ... |
강화학습이 어려운 이유는, 즉각적으로 좋은 보상으로 이어지는 행동이 장기적으로는 나쁜 경우가 있기 때문입니다. 눈앞의 점수만 챙기면 나중에 패배한다거나, 탐색 (Exploration)을 하지 않으면 좋은 수를 발견할 수 없다는 등의 문제가 있습니다. 최근의 추론 모델에서도 강화학습은 답변의 검증이나 사고 과정의 개선과 관련이 있습니다.
최근의 대규모 언어 모델을 이해하는 데 있어서 자기지도 학습 (Self-Supervised Learning)도 중요합니다. 이는 인간이 하나하나 정답 라벨 (Label)을 붙이지 않아도, 데이터의 일부를 정답으로 사용하는 방법입니다. 스스로를 교사로 삼기 때문에 '자기지도'라고 부르는 것입니다.
문장이라면, 그때까지의 문장을 통해 다음 문장을 예측하거나, 문장 중 일부를 가리고 앞뒤 문맥을 통해 복원하는 방식으로 학습할 수 있습니다. 원래의 문장 그 자체에서 문제와 답을 만들 수 있기 때문에, 방대한 텍스트를 사용한 사전 학습 (Pre-training)과 궁합이 좋습니다. 여기서 '아!' 하고 무언가 떠오른 분도 계시지 않을까요? 맞습니다, 토큰 (Token)의 구조입니다. 토큰은 문장을 나눈 작은 단위로, 자세한 내용은 12장에서 다루겠지만 지금 짚고 넘어가야 할 점은 문장 그 자체에서 다음에 올 단어를 맞히는 문제를 만들고 있다는 점입니다. 이처럼 답을 굳이 따로 준비하지 않아도 데이터 스스로 문제와 답을 만들 수 있는 구조가 이후 대규모 언어 모델의 토대가 됩니다.
이 방법을 사용하면 인간이 붙인 정답 라벨에만 의존하지 않고, 대량의 데이터로부터 표현 (Representation)을 배울 수 있습니다. 대규모 언어 모델은 이러한 사전 학습을 통해 언어의 패턴을 익히고, 그 후에 지시 응답이나 대화에 맞게 조정 (Fine-tuning)을 받습니다.
자기지도 학습은 라벨 생성 비용을 낮출 뿐만 아니라, 범용적인 표현을 만들기 위해서도 사용됩니다. 문장이라면 단어 간의 관계나 문맥을 배웁니다. 이미지라면 일부를 가리고 복원하거나, 같은 이미지를 변환한 것끼리 가깝게 만드는 등의 방법이 있습니다.
이 단계에서 만들어진 표현은 이후의 태스크 (Task)에서 사용할 수 있습니다. 예를 들어, 사전 학습된 언어 모델을 토대로 질의 분류, 요약, 채팅 응답, 코드 생성 등으로 조정합니다. 대규모 모델의 강점은 특정 태스크만을 배우는 것이 아니라, 넓은 데이터로부터 표현을 만들어낸 뒤 용도에 맞게 조정한다는 점에 있다고 생각하시면 됩니다.
머신러닝의 입구는 일차함수에서 시작합니다. 중학교 수학에서 나오는 식입니다.
$$
y = ax + b
$$
이 식에서 x는 입력, y는 예측 결과입니다. a는 기울기, b는 절편입니다. 참 정겹네요.
월세 예측에서 넓이만 본다면, 예를 들어 다음과 같이 쓸 수 있습니다.
$$
\text{월세} = a \times \text{넓이} + b
$$
만약 a = 0.2, b = 3이라면, 넓이가 30㎡일 때 월세는 다음과 같이 됩니다.
$$0.2 \times 30 + 3 = 9$$
이 경우, 예측 월세는 9만 엔입니다. 실제로는 넓이만으로는 부족하기 때문에, 역과의 거리나 건축 연수도 포함합니다.
$$
\text{월세} = a \times \text{넓이} + b \times \text{역과의 거리} + c \times \text{건축 연수} + d
$$
문자가 늘어나도 하고 있는 일은 같습니다. 입력값에 가중치 (Weight)를 곱해 더하고, 마지막에 조정용 값을 더합니다.
여기서 넓이, 역과의 거리, 건축 연수는 특징량 (Feature)입니다. a, b, c는 각각의 특징량을 얼마나 중요하게 다룰지를 결정하는 숫자입니다. d는 전체를 상하로 움직이는 조정역입니다.
예를 들어, 넓이의 가중치가 큰 모델은 넓이를 월세에 강하게 반영합니다. 역과의 거리 가중치가 마이너스라면, 역에서 멀어질수록 월세를 낮추는 방향으로 작동합니다. 건축 연수의 가중치가 마이너스라면, 오래된 매물일수록 월세를 낮추는 방향입니다. 이렇게 이미지화하면 꽤 이해가 잘 되지 않나요?
선형 모델 (Linear Model)은 단순하지만, 처음에 배울 가치는 매우 높다고 생각합니다. 예측이 어떻게 만들어지는지 식으로 확인할 수 있고, 가중치의 부호를 통해 특징량의 영향도 확인할 수 있습니다. 복잡한 모델로 나아가기 전에 선형 모델로 개념을 잡으면 손실 함수 (Loss Function)나 최적화 (Optimization)도 이해하기 쉬워지기 때문에 소개해 드렸습니다.
식 안의 a, b, c, d처럼 학습을 통해 조정되는 숫자를 파라미터 (Parameter)라고 부릅니다. 머신러닝 (Machine Learning)의 학습이란, 이 파라미터를 좋은 값에 가깝게 만드는 작업입니다.
사람이 "넓이는 월세에 강하게 영향을 주니까 가중치는 크게, 건축 연수는 오래될수록 월세를 낮추니까 가중치는 마이너스로"라며 일일이 정하는 것은 매우 힘든 일입니다. 그래서 과거 데이터를 사용하여 모델이 스스로 조정하게 합니다.
앞서 언급했듯이, 파라미터 (Parameter)와 하이퍼파라미터 (Hyperparameter)는 혼동하지 않는 것이 좋은 용어입니다. 파라미터는 학습을 통해 모델이 조정하는 숫자입니다. 하이퍼파라미터는 사람이 학습 전에 결정하는 설정입니다.
| 종류 | 결정 주체 | 예시 |
|---|---|---|
| 파라미터 | 학습을 통해 결정됨 | 가중치 (Weight), 절편 (Intercept), 신경망 (Neural Network)의 가중치 |
| 하이퍼파라미터 | 사람이 설정함 | 학습률 (Learning Rate), 에포크 (Epoch) 수, 트리의 깊이 (Tree Depth) |
모델의 성능이 좋지 않을 때, 파라미터를 직접 손으로 수정하는 일은 별로 없습니다. 대신 특징량을 바꾸거나, 학습 데이터를 재검토하거나, 모델을 바꾸거나, 하이퍼파라미터를 바꾸는 방식으로 개선합니다.
선형 모델에서는 가중치의 부호를 보면 특징량이 예측에 어느 방향으로 작용하고 있는지 확인할 수 있습니다. 넓이의 가중치가 플러스라면 넓을수록 월세가 올라가는 방향입니다. 역에서의 거리 가중치가 마이너스라면 역에서 멀어질수록 월세가 내려가는 방향입니다.
단, 가중치의 크기를 그대로 비교하는 것은 위험할 수 있습니다. 넓이는 ㎡, 역과의 거리는 분, 건축 연수는 년과 같이 단위가 다르기 때문입니다. 100점 만점의 시험과 5단계 평가 설문조사를 같은 비중으로 비교할 수 없는 것과 같습니다.
따라서 수치의 스케일 (Scale)을 맞추는 표준화 (Standardization)가 사용됩니다. 표준화에서는 평균으로부터 얼마나 떨어져 있는지를 기준으로 수치를 변환합니다. 표준화를 하면 모델이 특정 단위의 크기에 휘둘리지 않게 됩니다.
여기서 중요한 것은 표준화 계산도 학습 데이터만으로 수행해야 한다는 점입니다. 테스트 데이터까지 포함하여 평균이나 표준 편차를 계산하면, 테스트 데이터의 정보가 학습 측으로 누설 (Data Leakage)됩니다.
가중치를 해석할 때는 상관관계 (Correlation)와 인과관계 (Causality)도 구분해야 합니다. 역에 가까운 매물일수록 월세가 높은 경향이 있더라도, 모델의 가중치만 보고 "역과의 거리가 월세를 올리고 내리는 원인이다"라고 단정할 수는 없습니다. 실제로는 역 앞에 상업 시설이 많다거나, 인기 지역이 역 주변에 집중되어 있다거나, 건축 연수나 구조의 분포가 다르다는 등의 다른 요인이 얽혀 있습니다.
머신러닝 모델은 데이터 내의 관계를 학습합니다. 인과관계를 증명하려면 실험 설계나 통계적인 검증이 별도로 필요합니다. 모델의 계수 (Coefficient)는 강력한 단서가 되지만, 그대로 원인이라고 부르지 않는 것이 좋다고 생각합니다.
회귀 (Regression)에서는 정답과 예측의 차이를 잔차 (Residual)라고 부릅니다. '잔차'라는 말, 멋지지 않나요?
$$
\text{잔차} = \text{정답} - \text{예측}
$$
월세의 정답이 10만 엔이고 예측이 9만 엔이라면, 잔차는 1만 엔입니다. 정답이 10만 엔이고 예측이 12만 엔이라면, 잔차는 마이너스 2만 엔입니다.
잔차를 보면 모델이 어느 방향으로 벗어나고 있는지 알 수 있습니다. 전체적으로 잔차가 플러스라면 모델이 낮게 예측하고 있을 가능성이 있습니다. 반대로 잔차가 마이너스 쪽으로 치우친다면 높게 예측하고 있을 가능성이 있습니다.
잔차를 확인하는 것은 모델 개선의 입구가 됩니다. 특정 지역만 벗어나거나, 건축 연수가 오래된 매물만 벗어나거나, 임대료가 높은 매물만 벗어나는 등의 경향이 있다면 특징량 (Feature)이나 모델을 재검토합니다.
모델의 예측이 얼마나 벗어났는지를 측정하는 숫자가 손실 (Loss)입니다. 손실이 작을수록 예측이 정답에 가깝다고 판단합니다. 반대로 손실이 크다면 정답에서 멀다는 뜻입니다.
예를 들어, 실제 임대료가 10만 엔인데 예측이 8만 엔이라면 차이는 2만 엔입니다. 예측이 12만 엔이라도 차이는 2만 엔입니다. 둘 다 벗어난 정도는 같기 때문에, 차이를 그대로 더하면 플러스와 마이너스가 서로 상쇄되어 버립니다.
그래서 차이를 제곱합니다.
$$ (정답 - 예측)^2 $$
차이가 2라면 제곱해서 4입니다. 차이가 5라면 25입니다. 크게 벗어난 예측일수록 더 강하게 벌칙을 주는 형태가 됩니다.
손실 함수 (Loss Function)를 사용하는 이유는 모델의 좋고 나쁨을 하나의 숫자로 비교하기 위해서입니다. 예측이 100건 있을 때, 한 건 한 건의 벗어난 정도를 살펴보는 것만으로는 어떤 모델이 좋은지 판단하기 어려워집니다. 손실을 계산하면 모델 A의 손실은 10, 모델 B의 손실은 6, 하는 식으로 비교할 수 있습니다.
단, 손실이 작다고 해서 항상 좋은 모델인 것은 아닙니다. 학습 데이터 (Training Data)에서만 손실이 작다면 과적합 (Overfitting)되어 있을 가능성이 있습니다. 과적합이란 학습에 사용한 데이터의 정답을 거의 통째로 암기해 버려서, 처음 보는 데이터에는 약해지는 상태를 말합니다. 시험 전에 기출문제 정답만 외웠다가, 본 시험에서 문제가 조금만 비틀려 나와도 손을 못 대는 그런 느낌이죠. 자세한 내용은 9장에서 다룰 것이므로, 지금은 학습 데이터에서의 손실이 작다는 것만 믿어서는 안 된다는 점만 짚고 넘어가세요. 정말로 확인하고 싶은 것은 학습에 사용하지 않은 데이터에서 손실이 작은지 여부입니다.
너무 겁먹으실 필요는 없습니다. 이 평균 제곱 오차 (Mean Squared Error)는 회귀 (Regression)에서 자주 사용하는 손실 함수로, 영어로는 Mean Squared Error, 줄여서 MSE라고 합니다. 여기서부터 MSE라고 부릅니다.
$$ MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2 $$
'우와' 하는 느낌이 드실 텐데, 이해합니다. 이 식만 보면 갑자기 어려워 보이지만 의미는 단순합니다.
먼저 익숙하지 않은 (오랜만에 보는?) $\Sigma$ 부터 살펴봅시다. 이것은 시그마 (Sigma)라고 읽으며, 오른쪽에 나열된 것들을 전부 더하라는 의미의 기호입니다. $\Sigma$ 아래의 $i=1$과 위의 $n$은 1번부터 $n$번까지 순서대로라는 지시로, 요컨대 1번째, 2번째, 3번째... 이렇게 모든 항목을 하나씩 더해 나가는 것뿐입니다. 학급 전체 학생의 시험 점수를 위에서부터 순서대로 더하는 작업, 그 작업을 기호 한 글자로 요약한 것이라고 생각하세요.
| 기호 | 의미 |
|---|---|
n | 데이터의 수 |
y_i | $i$번째 정답 |
ŷ_i | $i$번째 예측 |
Σ | 전부 더함 |
즉, 예측과 정답의 차이를 제곱하여 전부 더한 뒤, 데이터 수로 나눕니다. 평균 점수를 구할 때 합계 점수를 인원수로 나누는 것과 같습니다.
작은 예로 확인해 보겠습니다. 정답이 10, 12, 8이고, 예측이 9, 10, 9라고 가정합니다.
차이를 제곱하기 때문에 플러스와 마이너스는 상쇄되지 않습니다. 또한, 큰 오차가 강하게 반영됩니다. 이는 장점이기도 하지만 주의할 점이기도 합니다. 큰 오차를 강력하게 피하고 싶다면 MSE가 적합하지만, 이상치 (Outlier)에 강하게 끌려갈 수도 있다는 점을 이해하셨으리라 믿습니다.
분류 (Classification)에서는 평균 제곱 오차보다 교차 엔트로피 (Cross Entropy)가 자주 사용됩니다. 이름은 어렵지만, 예측 확률이 정답에서 얼마나 벗어나 있는지를 측정하는 것입니다. 엔트로피 (Entropy)란 거칠게 말하면 결과가 얼마나 예측 불가능한지, 즉 불확실성 (무질서도)을 나타내는 숫자입니다. 모든 눈이 비슷한 확률로 나오는 주사위처럼 어떤 눈이 나올지 예측하기 어려운 상태일수록 엔트로피는 크고, 거의 결과가 정해져 있는 상태일수록 작아집니다. 교차 엔트로피는 이 개념을 사용하여 모델의 예측 확률이 정답에 얼마나 가까운지를 손실로 만든 것입니다. 정답에 높은 확률을 맞히고 있다면 손실은 작고, 정답에서 벗어난 쪽으로 자신 있게 예측할수록 손실은 커집니다.
예를 들어, 정답이 고양이 이미지인데 모델이 고양이일 확률을 0.9라고 내놓았다면 상당히 좋은 예측입니다. 반대로 0.1이라고 내놓았다면, 정답에 대해 자신 있게 틀린 것이므로 크게 벌칙을 줍니다.
분류에서는 맞았는지 틀렸는지만 보는 것이 아니라, 얼마나 자신 있게 예측했는지도 봅니다. 교차 엔트로피는 그 자신감의 방향이 옳은지를 손실로서 다룹니다.
예를 들어, 정답이 고양이 이미지일 때 모델 A는 고양이 0.51, 개 0.49로 예측하고, 모델 B는 고양이 0.99, 개 0.01로 예측했다고 가정해 봅시다. 둘 다 최종적인 분류는 고양이로 정답이지만, 모델 B가 정답 카테고리에 대해 더 강한 확률을 내놓았습니다. 교차 엔트로피 (Cross-Entropy)에서는 이 차이도 손실 (Loss)에 반영됩니다.
반대로, 정답이 고양이인데 개 0.99로 예측한 경우에는 크게 벌점을 받습니다. 자신만만하게 틀리는 것은 분류 모델 (Classification Model)에서 위험하기 때문입니다. 의료나 부정 탐지 (Fraud Detection) 분야에서는 확률의 처리가 운영 판단과 직결됩니다.
손실 함수 (Loss Function)는 모델에게 무엇을 좋은 예측으로 취급하게 할지를 결정합니다. 회귀 (Regression)에서 평균 제곱 오차 (MSE)를 사용하면, 크게 벗어난 예측에 대해 강한 벌점을 부여합니다. 분류에서 교차 엔트로피를 사용하면, 정답 카테고리에 높은 확률을 내놓을 것을 요구합니다.
이 부분을 잘못 설정하면, 모델은 악의 없이 다른 방향으로 최적화 (Optimization)됩니다. 예를 들어, 부정 탐지에서 정확도 (Accuracy)만을 최대화하면, 대부분을 정상으로 판정하는 모델이 높은 점수를 받을 수도 있습니다. 현장에서 원하는 것은 부정을 놓치지 않는 것인데, 손실이나 평가가 그 부분을 반영하지 못하는 상태가 되는 것입니다.
손실 함수는 업무상 어떤 실수를 무겁게 볼 것인지를 인간이 수식으로 번역한 것이라고 할 수 있습니다. 손실 함수 자체가 목적을 알아서 읽어주는 것이 아니라, 무엇을 틀리면 곤란한지, 어떤 실수가 치명적인지, 어느 정도의 오차까지 허용할 수 있는지를 인간이 고민하여 그에 맞는 손실 함수나 평가 지표 (Evaluation Metric)를 선택해야 합니다.
손실 함수와 평가 지표는 비슷해 보이지만 역할이 다릅니다. 손실 함수는 학습 중에 모델을 조정하기 위한 숫자입니다.
여기서 등장한 평가 지표는 학습 후에 모델의 좋고 나쁨을 판단하기 위한 숫자입니다. 학습이 끝난 모델의 성적표 같은 것으로, 테스트가 끝난 후에 몇 점이었는지, 어디를 틀렸는지를 인간이 확인하는 그 감각과 비슷하다고 생각하시면 됩니다.
| 항목 | 사용하는 상황 | 예시 |
|---|---|---|
| 손실 함수 | 학습 중 | MSE, 교차 엔트로피 |
| 평가 지표 | 평가 시 | 정확도, F1, MAE, RMSE |
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기