지난 블로그 게시물에서는 머신 러닝 수명 주기를 관리하는 오픈 소스 플랫폼인 MLflow를
쉽게 시작할 수 있는 방법을 설명했습니다. 특히 MLflow 및 PyCharm을 사용하여 간단한
Keras/TensorFlow 모델을 설명했습니다.
이번에는 이진 분류 Keras 네트워크 모델을 살펴봅니다.
MLflow의 추적 APIs사용하여 기준 모델과 실험 모 델 간의 실행에서 학습 및 유효성 검사중에
메트릭(정확도 및 손실)을 추적합니다. 이전과 마찬가지로 PyCharm 및 localhost를 사용하여
모든 Experiment실행합니다.
이진 분류는 특히 감정 분류의 경우 결과를 두 개의 고유한 클래스로 분류하려는
일반적인 머신 러닝 문제입니다. 이 예에서는 감정을 표현하는 일반적인 단어가 있는지
리뷰의 텍스트 콘텐츠를 검사하여 영화 리뷰를 "긍정적" 또는 "부정적" 리뷰로 분류합니다.
주로 François Chollet의 " Deep Learning with Python" 에서 차용한 Keras 네트워크
예제 코드는 MLFlow 프로젝트 로 구성되고 MLflow 추적 API 를 통합하여,
parameter 메트릭 및 아티팩트를 기록하도록 모듈화 및 수정 되었습니다.
인터넷 영화 데이터베이스(IMDB)는 Keras와 함께 패키지로 제공됩니다.
50,000편의 인기 영화 세트로, 교육용 리뷰 25,000개와 검증용 리뷰 25,000개로 나뉘며
"긍정적"과 "부정적" 감정이 고르게 분포되어 있습니다.
이 데이터 세트를 사용하여 모델을 학습하고 유효성을 검사 합니다.
간단한 데이터 준비를 통해 이 데이터를 Keras 신경망 모델이 처리할 수 있도록
numpy 배열로 텐서로 변환할 수 있습니다.
(데이터를 읽고 준비하기 위한 코드는 모듈에 있습니다: data_utils_nn.py.)
두 개의 Keras 신경망 모델(기준선 및 실험적)을 만들고 데이터세트에서 학습합니다.
기준 모델은 일정하게 유지되지만 Experiment 결과를 비교하기 위해 서로 다른
튜닝 parameter 및 손실 함수를 제공하여 두 가지 실험 모델을 합니다.
여기서 MLflow의 추적 구성 요소는 무수히 많은 튜닝 parameter 중 모델에서
최상의 메트릭을 생성하는 것을 평가하는 데 큰 도움이 됩니다.
먼저 기준 모델을 살펴보겠습니다.
François의 코드 예제는 이진 분류를 위해 이 Keras 네트워크 아키텍처 선택을 사용합니다.
다이어그램에 표시된 대로 숨겨진 레이어 1개(16단위), 입력 계층 1개(16단위) 및
출력 계층 1개(1단위)의 세 가지 조밀한 레이어