머신러닝의 작업 플로우(Workflow)
- 인공지능 및 데이터과학/머신러닝 및 딥러닝
- 2021. 5. 24.
머신러닝(딥러닝 포함)의 작업에 대해서 아직 많은 사람들이 어떤 부분들이 중요한지 모르며, 간혹 자신의 역할이 매우 작은것이라 생각해서 업무를 비하하는 사람들이 많다.
특히, 데이터 전처리의 경우 "전처리"라는 명칭 때문에 자신의 작업은 사소하고, 마치 축구에서 수비수의 역할과 같다 생각해서 일을 그만두고 모델러로 전향하는 경우가 많은데 정말 잘못된 생각이라 말을 하고 싶다.
머신러닝의 작업 플로우
데이터 수집 (Data Acquisition)
데이터 수집 이전에 데이터 설계, 데이터의 분석 등이 전제되어야 하겠지만 그 부분을 배제하고 개발단으로 설명을 하자면 제일 먼저 데이터를 수집해야 될 것이다.
자연어처리(NLP)의 경우 말뭉치를 만든다던지, 분석을 위한 기본 데이터(Raw Data) 뿐만 아니라 코드 데이터, 음성, 영상 데이터 이 모든 것들을 내리는 것을 의미한다. 데이터를 내리기 위해서 ETL 등의 작업등을 수행하거나 JDBC와 같은 라이브러리를 활용하여 직접 DB에 접근하여 내리기도 하며, Open API나 웹크롤러 등을 활용하여 외부 데이터를 끌어오기도 한다.
점검, 탐색(Inspection, Exploration)
데이터를 수집했다면 해당 데이터가 어떤지 점검하고 파악을 하는 단계이며 이를 EDA(Exploratory Data Analysis, 탐색적 데이터 분석) 이라고 한다. 데이터의 구조 등과 분포 등을 확인하여 앞으로 어떻게 전처리를 해야 할지 혹은 데이터를 추가로 수집해야 될지 등을 고민하며, 보편적으로 통계 기법과 데이터 시각화(visualization)를 활용하여 진행한다.
전처리, 정제 작업 (Preprocessing, Cleaning)
위에서 언급한대로 가장 많은 시간을 투자해야 하는 작업이며, 이를 고도화하는 것이 핵심이기도 한 것이 전처리 작업이다. 올바른 데이터가 올바른 결과로 나오기 때문에 가장 중요한 단계이며 모델의 성능을 끌어올리는데 모델의 설계에만 치중하는 사람들은 올바른 머신러닝 엔지니어가 될 수 없다.
학습 및 모델 생성 (Trainining, Modeling)
전처리가 끝난 데이터를 기반으로 학습을 진행한다. 학습을 할 때 Train, Test, Validation용으로 나누며 진행을 하고 학습이 완료되면 Model을 생성한다. 이전 작업들은 머신러닝 혹은 딥러닝 개발자가 코드를 짜지 않아도 진행이 가능하지만 이 단계에는 모델을 전문적으로 생성하는 사람들이 작업을 진행한다.
모델 평가(Model Evaluation)
테스트 결과를 통해 노드와 레이어 및 옵티마이저, 활성화 함수, 드롭아웃 등을 변경하면서 반복적인 테스트를 진행하여 최적화된 파라미터를 찾는다.
모델에서 더이상 성능의 개선이 되지 않고, 최종 모델 결과가 만족적이지 않을 경우 다시 이전 단계로 가서 더 사용할 Feature는 없는지 혹은 데이터의 전처리를 변경할지 등을 판단한다. 최종 모델이 만족스러우면 다음 단계로 진행하게 된다.
배포 (Deploy)
모든 작업이 완료되면 만들어진 모델을 실제 운영서버에 배포를 한다. 모델을 직접 액세스해서 Batch 성으로 분석하여 사용 하는 방법도 있지만 Flusk나 Django와 같은 Python 라이브러리 등의 웹 및 API 라이브러리를 사용하여 웹에 띄워서 사용하는 방법도 있다.
서비스를 운영하다가 데이터가 늘어나거나 컬럼등이 변경되어 성능이 떨어지거나, 교체를 해야 될 경우 수집부터 배포까지의 과정을 다시 진행하여 배포하게 된다.
'인공지능 및 데이터과학 > 머신러닝 및 딥러닝' 카테고리의 다른 글
[머신러닝] 옵티마이저(Optimizer)란? (0) | 2021.06.05 |
---|---|
[딥러닝] 순환신경망(RNN)과 LSTM, GRU (0) | 2021.06.01 |
코사인 유사도 (Cosine Similarity) 개념과 Python으로 구현 (0) | 2021.03.26 |
[Java] 직접 구현해본 나이브 베이즈 분류기 #2 (코드포함) (0) | 2020.12.24 |
[Java] 직접 구현해본 나이브 베이즈 분류기 #1 (0) | 2020.12.22 |