1.1 디자인 패턴이란?
각 패턴은 우리 환경에서 반복해서 발생하는 문제와 그 문제에 대한 솔루션의 핵심을 설명한다.
1.3 머신러닝 용어
머신러닝 실무는 소프트웨어 엔지니어링, 데이터 분석, DevOps, 통계와 같은 여러 전문 분야로 나뉜다.
1.3.1 모델과 프레임워크
머신러닝은 데이터에서 학습하는 모델을 구축하는 프로세스다. 이는 프로그램의 동작 방식을 알려주는 명시적인 규칙을 작성하는 기존의 프로그래밍과는 대조적이다.
머신러닝 모델은 데이터에서 패턴을 학습하는 알고리즘이다. ㅅ
문제를 해결할 때 더 많은 변수를 추가하고 예외적인 케이스를 처리하다 보면 코드는 복잡해진다. 대신 과거 데이터를 기반으로 비용을 추정하는 모델을 학습할 수 있다.
머신러닝 모델은 근본적으로 수학적 함수이므로 수치 소프트웨어 패키지를 사용하면 처음부터 구현할 수 있다.
입력층과 출력층만 있는 신경망은 선혀 ㅇ모델로 불리는 머신러닝의 일종이다. 선형 모델은 선형 함수를 사용하여 데이터에서 학습한 패턴을 나타낸다.
결정 트리는 데이터를 사용하여 다양한 분기를 가진 경로의 집합을 만드는 머신러닝 모델이다.
클러스터링 모델은 데이터 내의 부분 집합 간의 유사성을 찾고 식별된 패턴을 사용하여 클러스터로 데이터를 그룹화한다.
1.3.2 데이터와 특징 가공
데이터는 모든 머신러닝 문제의 핵심이다.
데이터셋이란 머신러닝 모델의 학습, 검증, 테스트에 사용되는 데이터를 의미한다.
대부분의 데이터는 학습 데이터로 학습 프로세스 중에 모델에 제공되는 데이터다.
검증 데이터는 학습 데이터셋에 포함되지 않는 데이터로서 각 학습 에폭이 완료된 후 모델의 성능을 평가하는 데 사용되는 데이터, 검증 데이터에 대한 모델의 성능을 바탕으로 학습을 중지할 시기를 결정하고, 하이퍼파라미터를 선택한다.
테스트 데이터는 학습 과정에서 전혀 사용되지 않는 데이터로 학습이 끝난 모델의 성능을 평가하는 데 사용된다.
모델 학습에 사용하는 데이터는 모델의 종류에 따라 다양한 형태를 취할 수 있다. 구조화된 데이터는 수치 데이터와 범주 데이터로 이뤄진다.
수치 데이터는 보통 머신러닝 모델의 입력으로 직접 투입할 수 있지만, 다른 데이터는 모델로 입력하기 위해 다양한 데이터 전처리가 필요하다. 전처리 단계에서는 보통 수칫값을 조정하거나 수치가 아닌 데이터를 모델에서 이해할 수 있는 수치 형식으로 변환하는 작업을 하게 된다.
전처리를 특징 가공 feature engineering 이라고 부른다.
인스턴스 instance 는 예측을 위해 모델로 보내는 데이터 항목이다. 인스턴스에 대한 특징이 주어지면 모델은 예측값을 계산한다. 이를 위해 모델은 인스턴스와 라벨을 갖춘 학습 예제로 학습을 진행한다.
데이터셋을 조립하고 모델의 특징을 결정한 후에는 데이터 검증 data validation 을 진행한다. 데이터에 대한 통계를 계산하고, 스키마를 이해, 데이터셋을 평가하여 데이터에 내재된 문제를 식별하는 과정,
데이터에 대한 다양한 통계를 평가하면 데이터셋에 각 특징의 균형 잡힌 표현이 포함되었는지 알 수 있다.
더 많은 데이터를 수집할 수 없을 때 데이터 균형을 이해하면 모델을 설계하는 데 도움이 된다.
1.3.3 머신러닝의 과정
일반적인 머신러닝 워크플로의 첫 번째 단계는 학습, 학습 데이터를 모델에 전달하여 패턴을 식별하는 방법을 학습시키는 과정,
다음으로 학습 데이터셋에 속하지 않는 데이터로 모델의 성능을 확인하는 것, 이를 모델 평가라고 한다.
학습과 평가를 여러 번 실행하여 특징 가공을 추가로 수행하고 모델의 아키텍처를 조정할 수 있다.
이후 모델의 성능에 만족했다면 서빙(모델의 제공)
모델에 새 데이터를 전송하고 출력을 사용하는 프로세스를 예측이라고 한다. 예측은 아직 배포되지 않은 로컬 모델에서 예측값을 생성하는 것은 물론, 배포된 모델에서 예측값을 가져오는 것 모두를 의미한다.
배포된 모델의 예측에는 온라인 예측과 배치 예측의 두 가지가 있다.
예측이라는 단어는 미래 가치를 추정하는경우에 적합한 말이다. 분류 문제의 경우엔 추론 inference 의 용어를 사용,
학습 데이터 수집, 특징 가공, 학습, 모델 평가 프로세스는 프로덕션 파이프라인과 별도로 처리하는 경우가 많다. 이렇게 별도로 처리할 때에는 모델의 새 버전을 학습시키기에 충분한 추가 데이터가 있다고 결정할 때마다 모델을 다시 평가한다. 반면, 이와 같은 과정을 프로덕션 파이프라인 내에서 소화하는 경우에는 새로운 데이터를 지속적으로 수집할 수 있어야 하며 학습 또는 예측을 위해 모델로 보내기 전에 데이터를 전처리해야 한다. 이를 스트리밍 이라고 한다.
스트리밍 데이터를 처리하려면 특징 가공, 학습, 평가, 예측을 수행학 위해 여러 단계에 걸친 시스템이 피룡하다. 이러한 시스템을 머신러닝 파이프라인이라고 부른다.
1.4 머신러닝의 문제
머신러닝 디자인 패턴이 필요한 이유? ML 시스템을 구축하는 프로세스 내에는 ML 설계에 영향을 미치는 다양한 문제가 존재, 이러한 문제를 이해
1.4.1 데이터의 품질
머신러닝 모델은 학습에 사용되는 데이터만큼만 신뢰할 수 있다.
데이터의 정확도 accuary 는 학습 데이터 특징의 정확도와 해당 특징에 해당하는 실측 라벨의 정확도를 모두 가리킨다. 데이터의 출처와 데이터 수집 과정에 존재할 수 있는 오류에 대해 이해하면 특징의 정확성을 보장할 수 있다.
데이터 라벨의 정확도는 특징의 정확도만큼 중요,
데이터 완전성 completeness 을 높이기 위해서는 학습 데이터에 가가 라벨의 다양한 표현이 포함되도록 해야 한다.
데이터 일관성 consistency 작업 절차에 대한 표준이 필요,
데이터 적시성 timeliness 사건이 발생한 시점과 데이터베이스에 추가된 시점 사이의 지연 시간
1.4.2 재현성
일반적인 프로그래밍에서 프로그램의 출력은 재현 가능하다.
반면 머신러닝 모델에는 근본적으로 무작위성이 내재되어 있다. 처음 학습시킬 때 가중치는 임의의 값으로 초기화된다. 모델이 학습을 반복하면 가중치는 특정한 값으로 수렴된다.
ㅈㅐ현성 문제를 해결하기 위해 동일한 무작위성이 적용되도록 시드값을 설정
재현성은 머신러닝 프레임워크의 종속성에도 영향을 받는다.
모델 학습의 환경의 영향ㅇ도 받는다. 데이터, 모델의 병렬 처리와 같은 배포 전략을 통한 가속으로 인해 재ㅐ현성 문제가 발생할 수 있다.
1.4.3 데이터 드리프트
머신러닝 모델은 일반적으로 입력과 출력 간의 정적인 관계를 나타내지만, 데이터는 시간의 흐름에 따라 크게 바뀔 수 있다.
머신러닝 모델이 입력과 출력 간의 관계를 유지할 수 있는지와 모델 예측이 사용 중인 환경을 정확하게 반영하는지에 대한 문제를 표현하는 용어가 바로 데이터 드리프트다.
과거엔 스마트폰이라는 단어가 없었음
1.4.4 확장
확장 문제는 일반적인 머신러닝 워크플로의 여러 단계에 걸쳐 있다. 데이터 수집과 전처리, 학습과 서빙 모두에서 확장 문제가 발생할 수 있다.
머신러닝 모델을 위한 데이터를 수집하고 준비할 때는 데이터셋의 크기에 따라 필요한 도구가 결정된다.
데이터 엔지니어의 경우, 수백만개의 행이 있는 데이터셋을 처리하도록 확장할 수 있는 데이터 파이프라인을 구축할 일이 많다.
모델을 학습시킬 때는 ML 엔지니어가 특정 학습 작업에 필요한 인프라를 결정해야 한다. 데이터셍의 유형과 크기에 따라 모델 학습에 많은 시간과 계산 비용이 들 수 있으며 ML 워크로드를 위해 특별히 설꼐된 인프라가 필요할 수 있다.
모델을 서빙할 때는 상황이 완전히 달라진다. 데이터 과학자들을 위해 모델 프로토 타입에서 예측을 가져오는 인프라와 매시간 수백만 건의 예측 요청을 받는 프로덕션 모델을 위한 인프라는 완전히 다르다.
1.4.5 다양한 목표
서로 다른 요구 사항의 균형을 맞추는 데에느 ㄴ어려움이 따른다.
데이터 과학자는 요구사항을 모델의 맥락으로 변환할 수 있다.
'머신러닝 디자인 패터' 카테고리의 다른 글
3.1 디자인 패턴 5 : 리프레이밍 (0) | 2023.06.30 |
---|---|
2.3 디자인 패턴 2: 임베딩 (0) | 2023.06.30 |
2.2 디자인 패턴 1: 특징 해시 (0) | 2023.06.29 |
2.1 간단한 데이터 표현 (0) | 2023.06.29 |
2. 데이터 표현 디자인 패턴 (0) | 2023.06.29 |