Skip to main content

‘머신러닝’ 기초 지식 톺아보기

About 1 minDevOpsAIMachine LearningArticle(s)blogyozm.wishket.comaimachine-learning

‘머신러닝’ 기초 지식 톺아보기 관련

AI > Article(s)

Article(s)

‘머신러닝’ 기초 지식 톺아보기 | 요즘IT
인공지능(AI)과 머신러닝(ML) 기술의 급속한 발전은 소프트웨어 개발 프로젝트에 큰 변화를 불러오고 있습니다. 이러한 변화는 개발자들에게 새로운 숙제를 안겨주는 동시에 많은 기회를 제공할 것으로 보입니다. 즉, 앞으로는 머신러닝을 이해하고 활용할 수 있는 역량이 개발자의 경쟁력을 높이는 핵심 요소가 될 것입니다. 이번 글에서는 머신러닝의 기본 개념과 어떤 종류의 머신러닝이 있는지 살펴보고, 전반적인 머신러닝 개발 프로세스와 활용 사례를 알아보겠습니다.

인공지능(AI)과 머신러닝(ML) 기술의 급속한 발전은 소프트웨어 개발 프로젝트에 큰 변화를 불러오고 있습니다. 이러한 변화는 개발자들에게 새로운 숙제를 안겨주는 동시에 많은 기회를 제공할 것으로 보입니다. 즉, 앞으로는 머신러닝을 이해하고 활용할 수 있는 역량이 개발자의 경쟁력을 높이는 핵심 요소가 될 것입니다. 이번 글에서는 머신러닝의 기본 개념과 어떤 종류의 머신러닝이 있는지 살펴보고, 전반적인 머신러닝 개발 프로세스와 활용 사례를 알아보겠습니다.


머신러닝의 기본 개념

1) 머신러닝이란?

머신러닝(Machine-Learning)이란 컴퓨터가 데이터로부터 패턴을 학습하여, 명시적인 프로그래밍이 없이 어떤 예측이나 분류 작업을 수행하는 것을 말합니다. 이를 위해 의사결정 트리나 인공 신경망 같은 다양한 머신러닝 모델(Machine learning models)이 사용됩니다. 이러한 머신러닝 모델은 내재된 알고리즘을 통해 훈련 데이터(Training Data)를 학습하여, 새로운 데이터에 관한 결과를 도출하게 됩니다.

머신러닝 프로세스 <출처: mapendo.co>
머신러닝 프로세스 <출처: mapendo.co>

2) 인공지능, 머신러닝, 딥러닝 개념 정리

인공지능(AI), 머신러닝(ML), 딥러닝(Deep Learning)은 서로 연관되어 있지만 개념적인 차이가 있습니다. 인공지능은 인간의 지능을 모방하는 기술을 총칭하며, 3가지 개념 중 가장 큰 범위를 가집니다. 반면, 머신러닝은 인공지능을 구현하는 방법론 중 하나입니다. 머신러닝 외에 인공지능을 구현하는 방법으로 규칙 기반, 논리 기반, 에이전트 기반 접근법 등이 있습니다.

마지막으로 딥러닝은 머신러닝의 한 종류입니다. 딥러닝은 인공 신경망을 기반으로 한 심층 학습 기술로서 전통적인 머신러닝 기법에 비해 대규모의 데이터를 처리할 수 있으며, 이미지 인식, 음성 인식, 자연어 처리 등에서 널리 사용되고 있습니다.

인공지능, 머신러닝, 딥러닝 관계 <출처: 작가>
인공지능, 머신러닝, 딥러닝 관계 <출처: 작가>

머신러닝의 분류와 유형

머신러닝은 크게 지도 학습, 비지도 학습, 강화 학습으로 분류할 수 있습니다. 여기에 더해 지도 학습과 비지도 학습의 중간 형태인 준지도 학습(Semi-supervised Learning)을 또 하나의 머신러닝 유형으로 분류하기도 합니다.

머신러닝 분류 <출처: 작가>
머신러닝 분류 <출처: 작가>

1) 지도 학습(Supervised Learning)

지도 학습은 레이블(Label)이 있는 훈련 데이터를 사용하여 모델을 학습시키는 방법입니다. 즉, 입력 데이터와 그에 해당하는 정답(레이블)을 머신러닝 모델에 제공하여, 입력 데이터와 정답 간의 관계를 학습시키는 것입니다. 이렇게 학습된 모델은 새로운 데이터에 대해 정답을 예측할 수 있게 됩니다.

머신러닝 지도 학습 <출처: 작가>
머신러닝 지도 학습 <출처: 작가>

지도 학습에서 다루는 문제 유형으로는 분류(Classification)와 회귀(Regression)가 있습니다. 분류는 입력 데이터를 미리 정의된 범주 중 하나로 분류하는 것이고, 회귀는 연속적인 값을 예측하는 것입니다. 분류 문제의 대표적인 예로는 이미지 분류, 스팸 메일 탐지 등이 있고, 회귀 문제의 예로는 주식이나 주택 가격 예측 등이 있습니다.

2) 비지도 학습(Unsupervised Learning)

비지도 학습은 레이블이 없는 데이터를 사용하여 데이터에 내재된 구조나 패턴을 발견하는 방법입니다. 비지도 학습에서는 알고리즘이 스스로 데이터의 특성을 파악하고, 유의미한 그룹이나 표현을 찾아냅니다. 비지도 학습에서 다루는 문제 유형으로는 클러스터링(Clustering)과 차원 축소(Dimensionality Reduction) 등이 있습니다.

비지도 학습의 클러스터링 예시 <출처: UMass Boston Applied ML>
비지도 학습의 클러스터링 예시 <출처: UMass Boston Applied ML>

클러스터링은 비지도 학습의 주요 문제 유형이자, 기법의 하나로서 유사한 특성을 가진 데이터들을 그룹화하는 것을 말합니다. 클러스터링의 대표적인 예로는 유사한 특성을 가진 방문자 그룹 식별, 유사한 이미지를 모으는 이미지 세그멘테이션, 유사한 내용의 문서를 그룹화하는 문서 클러스터링 등이 있습니다.

3) 강화 학습(Reinforcement Learning)

강화 학습은 에이전트(Agent)가 환경(Environment)과 상호작용 하면서 보상(Reward)을 최대화하는 방향으로 학습하는 머신러닝 기법을 말합니다. 여기서 에이전트란 행동을 수행하는 주체를 의미하며, 사람 대신 업무를 처리하는 일종의 인공지능을 말합니다.

강화 학습의 개념 <출처: 작가>
강화 학습의 개념 <출처: 작가>

강화 학습에서 에이전트는 환경의 상태를 관찰(Observation)하고, 행동(Action)을 수행하면서 보상(또는 페널티)을 받게 됩니다. 이러한 에이전트의 목표는 장기적인 관점에서 누적 보상을 최대화하는 것입니다. 강화 학습은 현재 게임 AI, 로봇 제어, 자율 주행 등의 분야에서 활발히 사용되고 있습니다.


머신러닝 개발 프로세스

머신러닝 개발 프로세스는 일반적으로 1) 데이터 수집과 전처리, 2) 모델 선택 및 학습, 3) 모델 평가 및 검증, 4) 모델 배포와 유지보수의 단계로 이루어집니다. 먼저 해결하고자 하는 문제를 명확히 정의하고, 문제 해결에 필요한 데이터를 수집하고 전처리합니다. 이후 데이터 특성에 맞는 머신러닝 알고리즘을 선택하고 학습시킨 후, 학습된 모델의 성능을 평가하고 검증합니다. 최종적으로 검증된 모델을 실제 환경에 배포하고 유지 보수하는 과정을 거치게 됩니다.

<출처: 작가>
<출처: 작가>

1) 데이터 수집과 전처리

머신러닝 프로젝트는 문제 정의가 완료된 후 데이터 수집 및 전처리 단계로 시작합니다. 데이터는 다양한 소스로부터 수집될 수 있으며, 이렇게 수집된 데이터는 해결하고자 하는 문제를 풀 수 있도록 정제합니다. 이처럼 데이터를 정제하는 것을 데이터 전처리(Data Preprocessing)라고 합니다. 이 과정에서는 데이터를 학습 데이터(Training Data)와 검증 데이터(Validation Data), 테스트 데이터(Test Data) 등으로 분할하고, 결측값 처리, 이상치 제거, 특징 스케일링, 데이터 정규화 및 증강 등의 작업을 수행하게 됩니다.

데이터 전처리 예시 <출처: 작가>
데이터 전처리 예시 <출처: 작가>

2) 모델 선택 및 학습

데이터 수집과 전처리가 완료되면 이제 적절한 머신러닝 알고리즘을 선택해야 합니다. 머신러닝 알고리즘에는 선형 회귀(Linear Regression), 로지스틱 회귀(Logistic Regression), 의사결정 트리(Decision Tree), 서포트 벡터 머신(SVM), 합성곱 신경망(CNN) 등 다양한 알고리즘이 있습니다.

이제 선택된 알고리즘을 학습 데이터로 학습시켜 모델을 생성합니다. 이 단계에서는 하이퍼파라미터 조정을 통해 모델의 성능을 최적화하는 작업을 하게 됩니다. 참고로 여기서 하이퍼파라미터((Hyperparmeter)란 모델의 구조나 학습 과정을 제어하는 각종 변수들을 의미합니다.

CNN 하이퍼파라미터 예시 <출처: 작가>
CNN 하이퍼파라미터 예시 <출처: 작가>

3) 모델 평가 및 검증

머신러닝 모델 학습이 완료되면, 이제 모델의 성능을 평가하고 검증하는 단계를 거치게 됩니다. 분류 문제의 경우에는 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1 스코어 등의 평가 지표를 사용하고, 회귀 문제의 경우 평균 제곱 오차(Mean Squared Error), 평균 절대 오차(Mean Absolute Error), R 제곱(R-squared) 등의 지표를 사용하여 모델을 평가합니다.

모델 손실 검증 그래프 예시 <출처: 작가>
모델 손실 검증 그래프 예시 <출처: 작가>

또한 교차 검증(Cross-Validation)을 통해 모델의 안정성과 일반화 능력을 평가하며, 이러한 모델 평가 결과를 바탕으로 점진적으로 모델을 개선하고 재학습하는 과정을 반복합니다.

4) 모델 배포 및 유지보수

머신러닝 개발 프로세스의 마지막 단계는 검증된 모델을 실제 환경에 배포하고 운영하는 단계입니다. 배포 단계에서는 머신러닝 모델을 웹 서비스나 소프트웨어 프로덕트에 통합하고 실시간 및 배치 처리를 수행합니다. 모델 배포 후에는 모델의 성능을 지속적으로 모니터링하고, 새로운 데이터에 대한 예측 품질을 관리합니다. 이후 필요에 따라 데이터 수집 및 전처리 작업과 학습을 다시 진행하면서 모델을 업데이트하게 됩니다.


머신러닝 활용 사례

사실 머신러닝은 이미 오래전부터 사용되어 왔습니다. 대표적인 예가 1990년대부터 사용되기 시작한 이메일 스팸 필터(Email spam filter)입니다. 이메일 스팸 필터는 이메일의 내용, 발신자, 제목 등의 특징을 분석하여 스팸 메일을 자동으로 분류하는 시스템을 말합니다. 초기에는 규칙 기반 방식이 주로 사용되었지만, 머신러닝 알고리즘의 발전으로 현재는 더욱 정교하고 효과적인 스팸 필터링이 가능해졌습니다. 이후 머신러닝 기술이 더욱 발전하면서 각종 추천 시스템과 이상 탐지 및 부정행위 감지, 자연어 처리와 감성 분석, 컴퓨터 비전과 이미지 인식 등 다양한 분야에서 머신러닝이 활용되고 있습니다.

1) 추천 시스템 개발

추천 시스템은 사용자의 행동 데이터를 학습하여 개인 맞춤형 제품이나 서비스를 제안하는 시스템을 말합니다. 추천 시스템은 보통 온라인 쇼핑이나 스트리밍 서비스, 소셜 미디어 플랫폼 등에서 사용됩니다. 추천 시스템 개발은 소규모 시스템의 경우에는 대체로 전통적인 지도 학습 방식을 적용하며, 대규모 시스템인 경우 클러스터링이나 딥러닝 기법을 적용하여 개발합니다.

2) 이상 탐지 및 부정행위 감지

머신러닝은 각종 데이터에서 정상 패턴과 이상 패턴을 구분하는 데 활용되기도 합니다. 이상 탐지(Anomaly Detection)는 데이터에서 비정상적인 패턴을 식별하고 경고를 발생시키는 머신러닝 기술입니다. 주로 신용 카드 거래 내역 중 수상한 거래를 탐지하거나 네트워크 침입 탐지, 제조 공정에서의 불량품 탐지 등에 사용됩니다. 또한 머신러닝은 부정행위 패턴을 학습하여 사전에 예방하는 데에도 활용됩니다. 대표적인 예로 온라인 게임의 부정행위 탐지, 보험 사기 감지 등을 들 수 있습니다.

3) 자연어 처리와 감성 분석

머신러닝이 활용되는 중요한 분야 중 하나가 바로 자연어 처리(Natural Language Processing) 분야입니다. 머신러닝 모델은 자연어 처리 기술을 통해 문서를 분류하거나, 기계 번역, 문장 요약 등의 작업을 수행할 수 있습니다. 이를 통해 사용자 리뷰나 소셜 미디어 댓글을 분석하여 텍스트에 내포된 감정이나 의견을 파악하는 감성 분석(Sentiment Analysis)을 수행하기도 합니다. 최근에는 대화형 AI 시스템, 챗봇, 가상 어시스턴트 등에서 자연어 처리와 감성 분석이 핵심 기술로 자리 잡고 있습니다.

4) 컴퓨터 비전과 이미지 인식

머신러닝 기법의 하나인 딥러닝 기술이 발전하면서 이미지와 동영상 데이터에서 유의미한 정보를 추출하는 컴퓨터 비전(Computer Vision) 기술이 급속히 발전했습니다. 컴퓨터 비전은 객체 검출(Object Detection), 이미지 분류(Image Classification), 얼굴 인식(Face Recognition), 행동 인식(Activity Recognition) 등의 작업을 수행할 수 있으며, 의료 영상 진단, 자율 주행 차량, 스마트 감시 시스템, 증강 현실 등 다양한 분야에서 활용되고 있습니다.


마치며

지금까지 머신러닝의 기본 개념과 분류를 살펴보고, 전반적인 개발 프로세스와 활용 사례에 대해 알아봤습니다. 이번 글에서 다룬 내용은 그야말로 머신러닝의 가장 기본이 되는 부분이며, 앞으로 머신러닝 기술을 공부하면서 계속 접하게 되는 내용일 것입니다.

본격적인 머신러닝 공부를 시작하게 되면, 다양한 머신러닝 알고리즘과 텐서플로우(TensorFlow), 파이토치(PyTorch)와 같은 머신러닝 라이브러리 및 프레임워크, 각종 통계와 수학, 데이터 처리 방법 등을 배워야 합니다. 만약 이제 막 처음 머신러닝에 입문하고자 하는 개발자라면 제가 이전에 블로그에 작성한 open in new window을 참고해 보셔도 좋습니다. 앞으로 머신러닝 기술에 관한 기초를 익히고 실제 프로젝트에서 적용해 봄으로써, 개발자로서의 역량을 한 단계 끌어올리는 계기가 되길 바랍니다.


이찬희 (MarkiiimarK)
Never Stop Learning.