반응형
오늘 배운 내용
오늘은 교재 1,2장을 읽으며 크게 ML 학습 방법론, ML 아키텍처, MLOps 3가지를 배웠다.
1. ML 학습 방법론
ML 학습 방법론의 종류는?
1. 지도학습
- 입력 데이터와 레이블의 관계를 학습한다.
- 훈련 데이터: 입력 데이터 & 레이블
- Regression, Classification
2. 비지도학습
- 레이블을 훈련 데이터로 쓰지 않는다.
- 군집화
- K-means, DBSCAN
- 이상치 탐지
- 이상치 탐지(Outlier) - 횡단면 데이터
- 이상 탐지(Anormaly) - 시계열 데이터
- 차원 축소
- PCA, T-SNE
3. 준지도학습
- 레이블이 없는/있는 데이터 모두 활용해 학습한다.
- 많은 데이터 중 레이블이 있는 데이터는 적을 때 사용한다.
- 명확하게 레이블을 나눌 수 있는 시스템을 구축할 때 사용한다.
- 평활도(Smoothness) 가정 - 특징이 비슷한 데이터는 같은 레이블을 가질 가능성이 높다.
- 저밀도(Low-density) 가정 - 데이터의 확률 밀도가 높은 곳에는 결정 경계(Decision Boundary)가 생기지 않는다.
- 다양체(Manifold) 가정 - 고차원 공간의 데이터를 잘 표현하는 저차원 공간이 존재한다.
4. 자기지도학습
- 레이블 없이 학습 데이터 자체에서 신호를 만들어 학습하는 방법
- 데이터가 스스로 레이블을 만들어주는 학습
- Pre-training(사전학습)에 주로 사용한다.
- 표현 학습(Representation Learning)에 강점을 가진다.
5. 강화학습
- 행동주의
- 모든 동물은 학습 능력을 갖고 있으며 어떤 행동을 수행했을 때 보상이 주어진다면 그 행동의 발생 빈도가 높아진다.
- 구성 요소
- 환경 - 학습을 진행하는 공간 또는 배경
- 에이전트 - 환경과 상호작용하는 프로그램
- 상태 - 환경에서 에이전트의 상황
- 행동 - 주어진 환경의 상태에서 에이전트의 행동
- 보상 - 현재 환경의 상태에서 에이전트가 어떤 행동을 했을 때 제공되는 것
- 정책 - 에이전트가 보상을 최대화하기 위해 행동하는 알고리즘
언어모델을 학습하는 방법 두 가지
1. 지도학습
- 일반적인 언어 지식을 학습하는 Pre-training(LM 학습)과 달리 Fine-tuning은 특정 문제에서의 성능을 최적화하는 과정이다.
- Fine-tuning 단계에서는 입력 데이터와 레이블의 쌍이 필요한데, 이 때 지도학습을 활용한다.
2. 자기지도학습
- Pre-training 단계에서는 모든 학습 신호가 데이터 자체에서 생성되므로 레이블이 필요 없다.
- 대표 기법
- Masked Language Modeling (MLM)
- 문장 중 일부 단어를 Mask 해서 모델이 맞히도록 학습한다.
- ex) BERT
- Autoregressive Language Modeling (ARLM)
- 앞 단어를 보고 다음 단어를 예측한다.
- ex) GPT
- Masked Language Modeling (MLM)
- 이런 방식으로 언어 이해, 언어 생성 능력을 모델에 미리 학습시키는 것이 Pre-training.
그렇다면 ChatGPT에 적용된 기법은?
1. Pre-training (자기지도학습)
- GPT 계열 모델처럼 Autoregressive LM 사용한다.
2. Supervised Fine-tuning (지도학습)
- 사람이 작성한 질문-답변 데이터로 학습한다.
3. Reinforcement Learning with Human Feedback (RLHF, 강화학습)
- 인간 피드백을 기반으로 모델 출력을 평가하고, 보상(reward)을 통해 학습한다.
- 답변이 지루하거나 부적절할 수 있다는 것이 기존의 단순 지도학습 기반 모델.
- 적은 수의 레이블인 인간 평가 데이터를 보상 모델로 학습시켜 대규모 생성 결과의 평가가 가능해졌다.
- 모델 출력 → 보상 모델 점수 → 정책(Policy)을 강화학습 방식으로 업데이트 했다.
요약하자면,
대규모 자기지도학습으로 언어 능력 습득 → 지도학습으로 자연스러운 답변 학습 → RLHF로 답변의 품질을 높임.
2. 머신러닝 아키텍처
데이터 준비
- 데이터를 수집하고, 수집된 Raw data를 학습에 적합하게 준비하는 단계이며, ML 파이프라인에 있어서 가장 중요한 단계라고 할 수 있다.
- 데이터 수집, 정제, 레이블링, 분석 및 시각화 단계로 나뉜다.
- 데이터 수집
- 머신러닝 시스템에 필요한 데이터를 모으는 프로세스
- 아래의 사항을 고려한 후 최대한 많은 데이터를 확보해 데이터 레이크(Data Lake)를 구축한다.
- 데이터의 사용 가능성
- 개인 정보 포함 여부
- 데이터 수집 비용
- 데이터 정제
- 데이터의 품질을 위해 오류를 수정하고, 누락된 데이터를 채우고, 불필요한 데이터는 삭제한다.
- 일관성과 무결성을 유지한 채 정제한 후, 데이터베이스나 데이터 웨어하우스(Data Warehouse)를 구축해 관리한다.
- 데이터 레이블링
- 정제된 원시 데이터를 식별하고 데이터 가공 도구를 활용해 하나 이상의 정보를 태깅(tagging)하는 과정
- 분석 및 시각화
- 탐색적 데이터 분석(EDA)를 통해 데이터의 특성 및 분포를 확인하고 시각화를 진행한다.
- 이 과정에서 이상치 식별, 상관관계 및 편향 분석, 가설 수립 및 변경, 데이터 패턴 등을 확인할 수 있다.
모델링
- 다양한 알고리즘 기법들을 적용해 특정 유형의 패턴을 인식하도록 학습된 시스템을 구축하는 것을 의미한다.
- 피처 엔지니어링, 모델 설계, 모델 학습 단계로 나뉜다.
- 피처 엔지니어링
- 머신러닝 모델 학습에 포함될 변수나 특징을 추출하고 변환하는 작업이다.
- 대표적인 방법:
- Feature Selection - 학습에 활용할 데이터만 선별하는 과정
- Feature Sampling - 선별된 데이터의 분포를 균등 분포로 추출하거나 계층적 샘플링 등으로 추출하는 방법
- Feature Transformation - 샘플링된 데이터를 숫자형 데이터로 변환하는 과정
- Feature Extraction - 피처를 더 작은 차원으로 축소하면서 원래 데이터의 속성을 유지하도록 변환하는 과정
- Feature Construction - 기존 피처를 활용해 새로운 피처를 생성하는 과정
- 모델 설계
- 현재 구축하려는 시스템에 적합한 알고리즘이나 모델을 설계하고 구현하는 단계
- 피처 엔지니어링을 통해 생성된 데이터 중 어떠한 필드를 input과 output으로 활용할지 선택하며 어떤 인공 신경망의 구조를 시스템에 활용할지 정한다.
- 손실 함수와 하이퍼파라미터 등을 정의하고 모델 학습을 진행한다.
- 모델 학습
- 최적의 모델을 선정하고 학습을 통해 최적화된 파라미터를 찾아내는 과정
- 예측값이 피처 엔지니어링에서 생성된 출력값(output)과 동일하거나 유사한 값이 될 수 있도록 파라미터를 업데이트한다.
모델 평가
- 머신러닝 아키텍처에 있어서 가장 중요한 단계
- 모델 평가를 통해 모델의 성능을 점검한다.
- 유의미한 성능이 나올 때까지 데이터 준비부터 모델링까지 반복 수행한다.
- 모델 검증
- 모델의 성능을 파악하고 서비스 목적에 부합한지 판단하는 단계
- 온라인 환경에서는 A/B test,
- 오프라인 환경에서는 피처 엔지니어링 과정에서 나눈 test 데이터로 평가한다.
- 성능 개선
- 데이터 중심 개선
- 데이터의 수나 피처의 수를 늘려서 학습 데이터를 개선한다.
- 모델 중심 개선
- 인공 신경망의 구조를 변경하거나 파라미터를 확장해 모델의 성능을 끌어올리는 과정
- 하이퍼파라미터 최적화
- 데이터 중심 개선
모델 배포
- 머신러닝 시스템을 상용화하거나 서비스화하는 단계로 모델 서빙(Model Serving) 과정을 의미한다.
- 모델 서빙이란 머신러닝 모델의 예측값을 사용자에게 제공하는 것을 의미한다.
예측값을 제공하는 방법:
- 배치(Batch) 인퍼런스
- 내부 서비스망에 배포하는 방법
- 입력 데이터를 배치로 묶어 한 번에 추론하는 방법을 의미한다.
- 배치 특성상 대규모 요청사항을 수월하게 처리할 수 있다.
- 일정 주기마다 처리된 결과는 보통 데이터베이스에 적재해 사용자에게 제공한다.
- 사용자에게 직접 제공되지는 않는다.
- 그래서 시스템이나 인프라 구조가 덜 복잡하다.
- 다음 주기가 도래하기 전까지 신규 데이터를 처리할 수 없기 때문에 실시간으로 예측값이 제공되지 않는다.
- 온라인 인퍼런스
- AWS, Azure 등과 같은 클라우드 환경을 배포하는 방법
- 클라우드 환경이나 내부 서버 망에서 RESTful API 기반으로 요청이 올 때마다 즉시 예측값을 제공한다. → 실시간 인퍼런스라고도 불린다.
- 일정 시간 이하의 응답 시간을 보장해야 하며, Provisioning까지 신경 써야 한다.
- 유저에게 직접 제공되기 때문에 모니터링과 서비스 장애에 즉각 대응해야 한다.
- 에지(Edge) 인퍼런스
- 로봇, 컴퓨터, 핸드폰에 배포하는 방법
- 내부 환경이 아닌 하드웨어에 배포돼 추론하는 방법이다.
- 인프라를 크게 요구하진 않지만 디바이스의 종류나 버전에 따라 다르므로 복잡한 버전 관리 방법이 요구된다.
- 디바이스마다 예측값이 다를 수 있어서 모델을 객관적으로 평가하기 어렵다.
3. MLOps
MLOps란?
- 머신러닝의 지속적 배포 및 자동화 파이프라인
- 머신러닝 아키텍처의 전반적인 통합을 의미한다.
- 주요 목적:
- 지속적 통합(Continuous Integration, CI): ML 모델의 코드 변경 사항을 빌드하고 테스트하는 프로세스를 자동화한다.
- 지속적 서비스 제공(Continuous Delivery, CD): 모델의 변경 사항을 프로덕션 환경에 배포하는 프로세스를 자동화한다.
- 지속적 학습(Continuous Training, CT): 새로운 데이터로 학습하여 만들어낸 새로운 ML 모델을 배포하는 프로세스를 자동화한다.
- 프로그래밍형 인프라(Infrastructure as Code, IaC): ML 모델의 인프라 구성을 코드로 관리해 자동으로 구축, 관리, 프로비저닝한다.
- 지속적인 모니터링(Continuous Monitoring): 프로덕션 환경에서 발생할 수 있는 문제와 배포된 ML 모델의 성능을 모니터링한다.
- 데이터 관리(Data management): ML 모델을 학습하는 데 사용되는 데이터를 관리하고 테스트 데이터세트에 대한 모델의 성능을 검증한다.
- 장점:
- ML 모델 개발 속도를 빠르게 할 수 있다.
- 프로세스를 간소화해 서비스 또는 기능 배포에 걸리는 시간을 단축한다.
- ML 모델 확장에 있어서도 유동적으로 대응할 수 있다.
MLOps Level
MLOps Lv.0: 수동 프로세스
- 수동, 스크립트 기반, 양방향 프로세스
- 데이터 분석, 데이터 준비, 모델 학습, 모델 검증을 포함한 모든 단계가 수동이다.
- ML과 작업 간 연결 해제
- 이 프로세스는 모델을 만드는 데이터 과학자와 모델을 예측 서비스로 제공하는 엔지니어를 분리한다.
- 학습-서빙 편향 발생 가능

MLOps Lv.1: ML 파이프라인 자동화
- ML 파이프라인을 자동화하여 모델을 지속적으로 학습시키는 것
- 모델 예측 서비스를 지속적으로 제공할 수 있다.
- 빠른 실험
- 단계 간 전환은 자동으로 이루어지므로 실험을 빠르게 반복하고, 전체 파이프라인을 프로덕션으로 더 빠르게 이동할 수 있다.
- 프로덕션 단계에서 모델의 CT
- 새로운 데이터를 사용하여 모델이 프로덕션 단계에서 자동으로 학습한다.
- 모델의 지속적 배포
- 새 데이터로 학습된 새 모델에 예측 서비스를 지속적으로 배포한다.
- 파이프라인 배포
- 학습된 모델을 예측 서비스로 제공하기 위해 자동으로 반복 실행되는 전체 학습 파이프라인을 배포한다.

MLOps Lv.2: CI/CD 파이프라인 자동화
- 개발 및 실험
- 새 ML 알고리즘과 실험 단계가 조정되는 새 모델링을 반복적으로 시도한다.
- 이 단계의 출력은 ML 파이프라인 단계의 소스 코드이며, 소스 코드는 소스 저장소로 푸시된다.
- 파이프라인 지속적 통합
- 소스 코드를 빌드하고 다양한 테스트를 실행한다.
- 이 단계의 출력은 이후 단계에서 배포될 파이프라인 구성요소(패키지, 실행 파일, 아티팩트)
- 파이프라인 지속적 배포
- CI 단계에서 생성된 아티팩트를 대상 환경에 배포한다.
- 이 단계의 출력은 모델의 새 구현이 포함되는, 배포된 파이프라인
- 자동화된 트리거
- 파이프라인은 일정 또는 트리거에 대한 응답에 따라 프로덕션 단계에서 자동으로 실행된다.
- 이 단계의 출력은 모델 레지스트리로 푸시되는 학습된 모델
- 모델 지속적 배포
- 학습된 모델을 예측의 예측 서비스로 제공한다.
- 이 단계의 출력은 배포된 모델 예측 서비스
- 모니터링
- 실시간 데이터를 기반으로 모델 성능의 통계를 수집한다.
- 이 단계의 출력은 파이프라인을 실행하거나 새 실험 주기를 실행하는 트리거

느낀 점, 어려웠던 점
지도학습, 비지도학습만 알고 있다가 준지도학습, 자기지도학습, 강화학습을 처음 접해봤는데, 강화학습의 매커니즘이 특히 흥미로웠다. 술래잡기에 강화학습을 적용한 사례도 봤는데 에이전트들이 보상을 통해 스스로 학습해서 게임을 이기는 법을 터득하는 게 재밌어 보였다.
MLOps도 개념만 대략 알고 있었는데 이번에 확실히 알게 되었다.
반응형