UNLV

[UNLV] - 분류 알고리즘과 TinyML(5일차)

빡성 2026. 2. 11. 07:07

1. 수업 개요: 분류 알고리즘과 고급 머신러닝 기법

이번 수업은 머신러닝의 핵심인 분류(Classification) 알고리즘과 고급 머신러닝 기법들을 다뤘다. 분류는 머신러닝에서 가장 널리 사용되는 작업 중 하나다.

수업은 두 부분으로 나뉘었다. PART 1에서는 분류 알고리즘의 기본 개념과 주요 알고리즘들(Decision Tree, Random Forest, SVM, MLP)을 상세히 배웠고, PART 2에서는 앙상블 학습, 전이 학습, 강화 학습, TinyML 등 고급 기법들을 다뤘다.

특히 중요한 것은 "알고리즘을 선택할 때는 정확도뿐만 아니라 임베디드 시스템의 제약 조건도 고려해야 한다"는 점이었다. 드론이나 IoT 센서처럼 자원이 제한된 환경에서는 TinyML 같은 경량화 기법이 필수적이다.

2. 분류(Classification)의 정의 및 기초

분류의 정의는 다음과 같다. 분류는 모델이 레이블이 지정된 예시(Labeled examples)를 기반으로 입력을 여러 개의 이산적인 범주(Classes) 중 하나로 할당하는 방법을 배우는 지도 학습(Supervised Learning) 작업이다.

분류의 구성 요소:

  • 학습(Training): 레이블이 있는 데이터(Labeled Data)를 모델에 입력하여 학습시킨다. 학습 데이터의 품질이 모델 성능을 결정한다.
  • 예측(Prediction): 학습된 모델에 테스트 데이터(Test Data)를 넣어 결과(예: 고양이, 개)를 출력한다.

분류의 목표는 입력 특성(X)에서 클래스 레이블(y)로의 매핑을 학습하는 것이다. 이 매핑을 잘 학습하면 새로운 데이터에 대해서도 정확한 예측을 할 수 있다.

분류의 응용 분야는 매우 다양하다:

  • 인간 활동 인식(IMU): 센서 데이터로 걷기, 뛰기, 앉기 등을 분류
  • 제스처 인식: 손 동작을 인식하여 명령으로 변환
  • 결함 감지: 제조 공정에서 불량품을 자동으로 감지
  • 오디오/이미지 분류: 음성 인식, 사진 분류 등

"분류는 우리 일상생활에서 가장 많이 접하는 머신러닝 작업"이라고 하셨다. 스팸 메일 필터, 얼굴 인식, 자동 번역 등 모두 분류 문제다.

3. 분류 파이프라인: 데이터 수집부터 배포까지

분류 모델을 만들 때는 체계적인 파이프라인이 필요하다. 각 단계를 소홀히 하면 모델 성능이 크게 떨어진다.

1단계: 데이터 수집

센서, 로그, 데이터셋 등을 활용하여 데이터를 수집한다. 데이터의 양과 질이 모델 성능을 결정한다. 특히 레이블링이 정확해야 한다.

2단계: 특성 추출(Feature Extraction)

원시 데이터에서 의미 있는 특성을 추출한다. 방법:

  • 통계적 방식: 평균, 분산, 최대값, 최소값 등
  • 스펙트럼 방식: 주파수 도메인 분석 (FFT 등)
  • 임베딩 방식: 딥러닝을 통한 자동 특성 추출

3단계: 데이터 분할

훈련/검증/테스트 세트로 나눈다. 테스트 세트는 모델 학습이 완전히 끝난 후에만 사용해야 한다. 테스트 세트를 학습 과정에서 사용하면 과적합이 발생할 수 있다.

4단계: 모델 학습

하이퍼파라미터 선택 및 튜닝을 통해 모델을 학습시킨다. 하이퍼파라미터 튜닝은 검증 세트를 사용하여 수행한다.

5단계: 평가 및 배포

성능 지표를 확인한 후 에지(Edge)나 클라우드에 배포한다. 임베디드 시스템에서는 에지 배포가 중요하다. 네트워크 연결 없이도 동작해야 하기 때문이다.

4. 의사결정 나무와 랜덤 포레스트

의사결정 나무 (Decision Tree, DT)"임베디드 시스템에 가장 적합한 알고리즘"이라고 중요한 알고리즘이다.

구조는 if-else 규칙을 사용한 트리 구조로, 특성 임계값을 기준으로 데이터를 분할한다. Decision Tree는 사람이 이해하기 쉽고, 시각화도 간단하다.

장점:

  • 이해와 시각화가 쉽다
  • 특성 스케일링이 불필요하다
  • 추론 속도가 빨라 임베디드에 적합하다

단점:

  • 노이즈 데이터에 과적합(Overfitting)되기 쉽다
  • 작은 변화에도 불안정하다

Decision Tree의 단점을 보완하기 위해 랜덤 포레스트를 사용한다.

랜덤 포레스트 (Random Forest, RF)는 여러 의사결정 나무의 앙상블 모델이다.

방식은 무작위 데이터/특성 서브셋으로 개별 나무를 학습시킨 뒤 다수결(Majority voting)로 최종 결정한다. 각 나무는 서로 다른 데이터와 특성을 보기 때문에, 전체적으로는 안정적인 예측을 한다.

장점:

  • 높은 정확도
  • 과적합 감소
  • 센서 데이터에 효과적

하지만 랜덤 포레스트는 여러 나무를 실행해야 하므로, Decision Tree보다 전력 소비가 크다. 임베디드 시스템에서는 상황에 따라 선택해야 한다.

5. 서포트 벡터 머신과 다층 퍼셉트론

서포트 벡터 머신 (Support Vector Machine, SVM)은 클래스 간 마진(Margin)을 최대화하는 최적의 분리 초평면(Hyperplane)을 찾는 알고리즘이다.

커널(Kernel) 종류:

  • 선형(Linear): 선형으로 분리 가능한 데이터에 사용
  • 다항식(Polynomial): 다항식 경계를 만듦
  • RBF(가우시안): 가장 널리 사용되는 커널, 복잡한 비선형 경계를 만들 수 있음

장점:

  • 작은 데이터셋과 고차원에서 강력한 성능

단점:

  • 파라미터 튜닝에 민감하다
  • 계산 비용이 커 실시간 임베디드에는 덜 적합하다

SVM은 정확도는 높지만, 드론처럼 빠른 반응이 필요한 시스템에는 적합하지 않다.

다층 퍼셉트론 (Multi-Layer Perceptron, MLP NN)은 입력층, 은닉층, 출력층으로 구성된 완전 연결 순전파 신경망이다.

특징은 비선형 결정 경계를 학습하며 딥러닝의 기초가 된다. MLP는 복잡한 패턴을 학습할 수 있지만, 은닉층이 많아지면 계산 비용이 크게 증가한다.

임베디드 시스템에서는 경량화된 MLP나 Tiny DNN을 사용해야 한다.

6. 학습 및 평가 전략: 오차 역전파와 교차 검증

오차 역전파 (Backpropagation)는 신경망 학습의 핵심 알고리즘이다. 과정:

  1. 순전파(Forward Propagation): 입력 데이터가 네트워크를 통과하여 예측값을 생성
  2. 오차 계산: 실제 값과 예측값의 차이를 계산
  3. 역전파(Backward Propagation): 가중치가 오차에 기여하는 정도를 계산
  4. 경사 하강법: 계산된 기울기를 사용하여 가중치를 업데이트

역전파는 연쇄 법칙(Chain Rule)을 사용하여 각 가중치의 기여도를 계산한다. 이 과정을 반복하면서 모델이 점진적으로 정확도를 향상시킨다.

교차 검증(Cross Validation)은 모델의 일반화 성능을 평가하는 방법이다.

홀드아웃(Holdout)은 데이터를 단순히 훈련(70-80%)과 테스트(20-30%)로 나눈다. 홀드아웃은 간단하지만, 데이터가 적을 때는 신뢰도가 떨어진다.

K-폴드(K-Fold)는 데이터를 K개로 나누어 교대로 검증에 사용하여 신뢰도를 높인다. K-Fold는 모든 데이터를 훈련과 검증에 사용하므로, 데이터 활용도가 높다. 특히 데이터가 부족한 경우에 유용하다.

평가 지표:

  • 정확도(Accuracy): 전체 중 맞게 예측한 비율
  • 정밀도(Precision): 양성으로 예측한 것 중 실제 양성인 비율
  • 재현율(Recall): 실제 양성 중 양성으로 예측한 비율
  • F1-Score: 정밀도와 재현율의 조화 평균
  • 혼동 행렬(Confusion Matrix): 예측 결과를 표로 정리
  • ROC-AUC: 분류 모델의 성능을 평가하는 곡선
  • Log Loss: 확률 예측의 정확도를 평가

"드론처럼 안전이 중요한 시스템에서는 재현율이 정확도보다 더 중요하다"다. 장애물을 놓치면 충돌로 이어질 수 있기 때문이다.

7. 과적합과 과소적합: Bias와 Variance

과적합과 과소적합은 머신러닝에서 가장 중요한 개념 중 하나다.

과소적합 (Underfitting, High Bias):

모델이 너무 단순하여 훈련/테스트 정확도 모두 낮다. 과소적합은 모델이 데이터의 패턴을 제대로 학습하지 못한 상태다.

해결 방법:

  • 모델 복잡도를 높인다 (은닉층 추가, 특성 추가 등)
  • 학습률을 조정한다
  • 더 많은 데이터를 수집한다

과적합 (Overfitting, High Variance):

훈련 데이터는 완벽하나 새 데이터에 실패한다. 과적합은 모델이 훈련 데이터를 암기한 상태다. 특정 조명이나 배경에서만 학습된 드론 AI는 다른 장소에서 비행할 때 실패할 확률이 높다.

해결 방법:

  • 모델 단순화 (은닉층 감소, 특성 선택 등)
  • 규제(L1/L2) 적용
  • 데이터 증강 (Data Augmentation): 다양한 조명, 배경에서 데이터 수집
  • 드롭아웃(Dropout) 사용

"과적합과 과소적합 사이의 균형을 찾는 것이 머신러닝의 핵심"이였다. 이를 위해 교차 검증을 통해 모델의 일반화 성능을 확인해야 한다.

8. 앙상블 학습: 여러 모델의 힘

앙상블 학습 (Ensemble Learning)은 여러 개의 모델(기본 학습기)을 결합하여 단일 모델보다 더 높은 예측 정확도를 얻는 기법이다.

앙상블은 집단지성의 원리다. 여러 모델의 의견을 종합하면 단일 모델보다 더 안정적이고 정확한 예측을 할 수 있다.

장점:

  • 분산(Variance) 감소
  • 편향(Bias) 감소
  • 과적합 감소
  • 모델의 일반화 및 견고성(Robustness) 개선

주요 방법:

배깅 (Bagging):

훈련 데이터의 서로 다른 하위 집합으로 모델을 학습시켜 평균을 내거나 다수결로 예측한다. 대표적인 예가 랜덤 포레스트다. "배깅은 분산을 줄이는 데 효과적"이였다.

부스팅 (Boosting):

이전 모델의 예측 결과에 따라 훈련 세트를 수정하며 순차적으로 학습한다. 약한 학습기를 강한 학습기로 만드는 기법이다. "부스팅은 편향을 줄이는 데 효과적"이였다.

스태킹 (Stacking):

서로 다른 모델들의 예측 결과를 메타 학습기(Meta-Learner)의 입력으로 사용하여 최종 결과를 도출한다. "스태킹은 여러 모델의 장점을 결합하는 고급 기법"이였다.

하지만 "앙상블은 여러 모델을 실행해야 하므로, 임베디드 시스템에서는 전력 소비가 크다"다. 상황에 따라 단일 모델이 더 적합할 수 있다.

9. 전이 학습과 강화 학습

전이 학습 (Transfer Learning)은 한 작업이나 데이터셋에서 학습된 모델을 관련 있는 다른 작업에 재사용하거나 적응시키는 기술이다.

"전이 학습은 데이터가 부족한 상황에서 매우 유용하다"다. 예를 들어, ImageNet에서 학습된 모델을 의료 이미지 분류에 적용할 수 있다.

장점:

  • 데이터가 부족한 작업에서 성능 향상
  • 학습 시간과 계산 비용 감소
  • 모델 수렴 속도 향상

"전이 학습은 특히 컴퓨터 비전 분야에서 널리 사용된다"다. 사전 학습된 CNN 모델의 하위 레이어는 일반적인 특징을 추출하고, 상위 레이어만 새로운 작업에 맞게 재학습한다.

강화 학습 (Reinforcement Learning)은 에이전트(Agent)가 환경(Environment)과 상호작용하며 보상(Reward)을 최대화하기 위해 행동(Action)을 결정하는 법을 배우는 방식이다.

특징은 시행착오(Trial and error)를 통해 특정 결정을 내리도록 훈련되며, 성공적인 결과의 시퀀스를 강화한다. "강화 학습은 게임 AI, 로봇 제어, 자율주행 등에 사용된다"다.

도구로는 OpenAI Gym, TensorFlow Agents, PyTorch RL 등이 있다. "강화 학습은 많은 시행착오가 필요하므로, 실제 드론이나 로봇에 적용할 때는 시뮬레이션을 먼저 사용한다"다.

10. 연합 학습과 스트리밍 머신러닝

연합 학습 (Federated Learning)은 로컬 데이터를 직접 교환하지 않고, 분산된 여러 장치에서 모델을 학습시키는 방식이다.

"연합 학습은 프라이버시를 보호하면서도 모델을 학습할 수 있는 기법"이였다. 개인 정보가 포함된 데이터를 서버로 전송하지 않고도 학습이 가능하다.

유형:

  • 수직적: 특징 보완
  • 수평적: 지리적/시간적 협업
  • 전이: 도메인 지식 전이
  • 크로스 사일로: 기관 간 협업
  • 하이브리드: 여러 방식의 결합

"연합 학습은 스마트폰, IoT 센서 등 여러 장치에서 데이터를 수집할 때 유용하다"다.

스트리밍 및 온라인 머신러닝 (Streaming & Online ML):

스트리밍 분석은 실시간으로 연속적으로 흐르는 데이터를 분석하여 통찰을 추출하는 과정이다. "센서 데이터나 로그 데이터는 스트리밍 형태로 들어온다"다.

온라인 ML은 새로운 데이터가 들어올 때마다 모델을 실시간으로 업데이트하고 개선하는 방식이다. "온라인 ML은 데이터 분포가 시간에 따라 변할 때 유용하다"다.

주요 과제:

  • 지연 시간(Latency): 실시간 처리를 위한 빠른 응답
  • 확장성: 대량의 데이터 처리
  • 데이터 품질: 노이즈와 이상치 처리
  • 개념 드리프트(Concept Drift): 시간에 따른 데이터 분포 변화 대응

"드론이나 IoT 센서처럼 실시간으로 데이터가 들어오는 시스템에서는 스트리밍 ML이 필수적"이였다.

11. AutoML과 TinyML: 자동화와 임베디드 머신러닝

AutoML (Automated Machine Learning)은 데이터 전처리, 특징 공학, 모델 선택, 하이퍼파라미터 튜닝 등 모델 개발의 전 과정을 자동화하는 도구다.

"AutoML은 머신러닝 전문가가 아닌 사람도 모델을 만들 수 있게 해준다"다. 하지만 "AutoML도 완벽하지 않으므로, 결과를 검증하고 필요하면 수동으로 조정해야 한다"다.

ST Microelectronics의 AutoML (NanoEdge AI Studio):

STM32 마이크로컨트롤러용 모델 생성을 최적화하며, 데이터 수집부터 온디바이스 학습까지 자동화한다. NanoEdge AI Studio는 임베디드 시스템에 특화된 AutoML 도구다.

TinyML 및 임베디드 머신러닝 알고리즘:

정의는 자원이 제한된 에지 장치에 가볍고 특수화된 모델을 배포하는 것이다. "TinyML은 IoT 센서, 웨어러블 기기, 드론 등에 필수적"이였다.

사용 가능 알고리즘:

  • 선형 모델(Logistic Regression 등)
  • 얕은 의사결정 나무/랜덤 포레스트
  • 소규모 신경망(Tiny DNN)
  • 1D/2D CNN
  • RNN/GRU

프레임워크:

  • TensorFlow Lite for Microcontrollers
  • Edge Impulse
  • CMSIS-NN
  • Arduino ML

응용 분야:

  • 호출어 감지(Wake-word)
  • 제스처 인식
  • 진동 모니터링
  • 대기질 추정
  • 예측 보전

"TinyML은 앞으로 더욱 중요해질 것"이였다. 에지 컴퓨팅이 발전하면서, 클라우드 없이도 AI를 실행할 수 있는 기기가 늘어나고 있기 때문이다.

12. 실습: IMU 데이터로 분류 모델 학습하기

실습에서는 M5Stack에서 수집한 IMU 센서 데이터를 사용하여 여러 분류 알고리즘을 학습하고 비교했다.

데이터 준비:

정적 상태, 짧은 진동, 긴 진동 등 세 가지 동작 패턴의 IMU 데이터를 수집했다. 각 데이터셋은 가속도(ax, ay, az), 자이로(gx, gy, gz), 오일러 각(roll, pitch, yaw)을 포함한다. 다양한 동작 패턴의 데이터를 수집하는 것이 모델 성능을 결정한다.

특성 추출:

시계열 데이터를 윈도우 단위로 나누어 통계적 특성(평균, 표준편차, 최소값, 최대값, 평균 제곱)을 추출했다. 1초 윈도우(100 샘플)를 0.5초씩 이동하면서 특성을 추출한다. 이렇게 하면 시간적 패턴을 포착할 수 있다.

모델 학습 및 비교:

여러 분류 알고리즘을 학습하고 성능을 비교했다:

  • Decision Tree: 가장 간단하고 빠른 모델. Decision Tree는 임베디드 시스템에 가장 적합하다.
  • Random Forest: 여러 Decision Tree의 앙상블. 정확도가 높지만 메모리 사용량이 크다.
  • SVM: 정확도는 높지만 실시간 성능이 떨어진다.
  • MLP (Multi-Layer Perceptron): 신경망 기반 모델. 복잡한 패턴을 학습할 수 있지만 계산량이 크다.

양자화(Quantization):

학습된 모델을 양자화하여 메모리 사용량을 줄이는 실습도 했다. 32비트 부동소수점을 8비트 정수로 변환하여 메모리를 1/4로 줄였다. "양자화는 TinyML의 핵심 기법"이였다.

평가 지표:

정확도, 정밀도, 재현율, F1-Score, 혼동 행렬 등을 계산하여 모델 성능을 평가했다. "드론처럼 안전이 중요한 시스템에서는 재현율이 정확도보다 더 중요하다"다.

실습을 통해 이론으로 다룬 알고리즘들을 실제 데이터에 적용하고, 각 알고리즘의 장단점을 직접 경험할 수 있었다. 특히 Decision Tree가 임베디드 시스템에 적합한 이유를 구체적으로 이해할 수 있었다.

13. 정리

이번 수업을 통해 분류 알고리즘의 기본 개념부터 고급 머신러닝 기법까지 폭넓게 배울 수 있었다.

수업의 핵심 내용을 정리하면:

  • 분류는 지도 학습의 핵심: 레이블이 있는 데이터로 학습하여 새로운 데이터를 분류한다.
  • 알고리즘 선택의 기준: 정확도뿐만 아니라 임베디드 시스템의 제약 조건(전력, 메모리, 계산 속도)도 고려해야 한다.
  • Decision Tree는 임베디드에 최적: 이해하기 쉽고, 추론 속도가 빠르며, 특성 스케일링이 불필요하다.
  • 앙상블은 정확도를 높이지만 전력 소비가 크다: 상황에 따라 단일 모델이 더 적합할 수 있다.
  • 과적합과 과소적합의 균형: 교차 검증을 통해 모델의 일반화 성능을 확인해야 한다.
  • TinyML은 에지 컴퓨팅의 핵심: 자원이 제한된 장치에서도 AI를 실행할 수 있게 해준다.

특히 중요한 "알고리즘을 선택할 때는 정확도뿐만 아니라 임베디드 시스템의 제약 조건도 고려해야 한다"는 점이 인상 깊었다. 드론이나 IoT 센서처럼 자원이 제한된 환경에서는 TinyML 같은 경량화 기법이 필수적이다.

또한 과적합과 과소적합의 개념, 그리고 교차 검증을 통한 모델 평가 방법을 이해한 것은 앞으로 모델을 개발할 때 매우 유용할 것이다.

이 수업에서 다룬 내용은 앞으로 드론이나 IoT 센서에 AI를 적용할 때 매우 유용할 것이다. 특히 Decision Tree, Random Forest, TinyML 등의 개념을 이해한 것은 실무에서 큰 도움이 될 것 같다.

다음 수업에서는 실제로 Python으로 분류 모델을 구현하고, 드론에 적용하는 실습을 진행할 예정이다. 기대가 된다.