본문 바로가기
ML.DL

[머신러닝 딥러닝 문제해결 전략] 문제해결 프로세스 및 체크리스트

by 권미정 2022. 9. 12.

<머신러닝 딥러닝 문제해결 전략> 3장 정리

 


 

3장의 목표머신러닝과 딥러닝, 두 가지 성격의 대회를 정복하는 일반적인 프로세스를 알아보고, 프로세스의 각 단계에서 확인해야 할 체크리스트를 정리하는 것이다. 머신러닝 프로세스와 체크리스트는 이 책의 2부 대회에서, 딥러닝 프로세스와 체크리스트는 3부 대회에서 활용할 수 있다. 이 책 전반에서 반복 숙달할 것이기 때문에, 지금은 전체적인 흐름을 기억해두면 좋을 것이다!

 

 

1. 머신러닝 문제해결 프로세스

대회에 따라 세부 내용은 조금씩 다를 수 있지만 큰 흐름과 구조는 대부분 비슷하다. 표로 정리해보자!

 

① 문제(경진대회) 이해

문제 이해 경진대회의 배경과 목적을 이해해야 한다. 어떤 데이터를 활용해서 어떤 값을 예측해야 하는지, 회귀 문제인지 분류 문제인지, 어떻게 접근해야 하는지 등 다양한 사항을 확인한다. 경진대회 소개 페이지 내용을 숙지하는 게 우선이고, 토론 내용을 읽어보는 것도 좋다.
평가지표 파악 경진대회 평가지표를 확인한다. 같은 모델을 사용하더라도 평가지표에 따라 등수가 달라질 수 있기 때문에 중요하다.

② 탐색적 데이터 분석

데이터 구조 탐색 주어진 데이터의 구조를 훑어보거나 통계를 구해본다.
데이터 시각화 막대 그래프, 박스플롯, 포인트플롯, 바이올린플롯, 산점도, 히트맵, 파이 차트 등 다양한 그래프를 활용해 데이터 전반을 깊이 있게 살펴본다. 이 과정에서 어떤 피처(특성)가 중요한지, 피처끼리 어떻게 조합해서 새로운 피처를 만들지, 어떤 점을 주의해서 모델링할지 등의 인사이트를 얻을 수 있다.

③ 베이스라인 모델

모델 훈련 및 성능 검증 간단한 모델을 생성하고 훈련하여 성능을 확인한다.
기본적인 머신러닝 파이프라인, 즉 뼈대를 만드는 것이다. 필요에 따라 간단한 피처 엔지니어링을 수행하기도 한다. 훈련 시에는 훈련 데이터를 활용한다.
결과 예측 및 제출 앞에서 훈련한 모델을 활용해, 결과를 예측해서 제출한다.
예측 시에는 테스트 데이터를 활용한다.
베이스라인 모델의 예측 결과를 제출하는 이유는 다음 단계에서 성능 개선을 한 후 비교해보기 위해서이다.

④ 성능 개선

피처 엔지니어링
(특성 공학)
이상치 제거, 결측값 처리, 데이터 인코딩, 피처 스케일링, 파생 피처(변수) 생성, 피처 제거 및 선택 등을 수행한다.
불필요한 피처는 삭제하고 필요한 피처는 남겨두거나 변환해야 한다.
타깃값 예측에 도움되는 새로운 피처를 만들기도 하는데, 이때는 주어진 피처를 결합하거나 변형해야 하기 때문에 창의력이 필요하다.
또한 이상치나 결측값은 적절히 처리해주고, 필요하면 인코딩이나 스케일링도 해준다.
피처 엔지니어링은 모델 성능 향상에 큰 영향을 주는 작업이다. 보통 탐색적 데이터 분석 뒤에 하지만, 주어진 데이터에 따라 언제 하는지는 다르다.
하이퍼파라미터
최적화
모델의 최적 하이퍼파라미터를 찾는 작업이다.
모델마다 다양한 하이퍼파라미터를 가지고 있는데, 이 값의 범위는 제각각이다. 우리는 그중 모델 성능을 가장 좋게 만드는 값을 찾아야 하는데, 모든 경우의 수를 따져서 찾는 건 불가능하기에 가능한 범위 내에서 최선의 하이퍼파라미터 값을 찾는 게 중요하다.
하이퍼파라미터 최적화 기법으로는 그리드서치, 랜덤서치, 베이지안 최적화 등이 있다.
성능 검증 훈련된 모델의 일반화 성능(훈련할 때 접하지 못한 새로운 데이터에 대한 예측 성능)을 평가한다.
주로 훈련 데이터와 검증 데이터를 나눈 다음, 훈련 데이터로 훈련시키고 검증 데이터로 성능을 평가한다. 이를 통해 훈련이 제대로 됐는지 파악 가능하다.
성능이 좋지 않다면 2~3단계부터 다시 수행해야 하기도 한다.
성능 평가에 교차 검증 기법을 이용하기도 하는데, 이것은 훈련 데이터를 여러 그룹으로 나누어 일부는 훈련 시 사용하고, 일부는 검증 시 사용해서 모델 성능을 측정하는 기법이다.
결과 예측 및 제출 성능이 개선된 모델을 활용해 최종 결과를 예측하고 제출한다.
결과는 여러 가지를 제출할 수 있고, 그중에서 프라이빗 성능이 가장 좋을 거라고 예상하는 최종 버전 2개를 선택할 수 있다. 그러면 캐글이 둘 중 더 높은 프라이빗 점수를 택하여 순위를 매긴다.

 

 

2. 머신러닝 문제해결 체크리스트

위 링크는 이 책의 신백균 저자가 작성한 머신러닝 문제해결 체크리스트로, 프로세스의 각 단계에서 챙겨야 할 사항들을 중심으로 정리한 표다. 이를 토대로 여러 문제를 풀어보면서 체크리스트를 더 풍성하게 가꿔보자!

하나 알아둘 점은, 현업에서의 머신러닝 문제는 대체로 경진대회보다 훨씬 복잡하고 결과를 얻은 후에도 끊임없이 개선하고 새로운 요구사항에 대응해야 하기 때문에, 체크리스트는 실무보다는 경진대회나 토이 프로젝트 등에 더 적합하다. 실무에서는 초기 기획이나 설계 단계에 참고하거나, 중간에 문제가 잘 풀리지 않을 때 잊은 건 없는지 확인해보는 용도로 활용해보자.

 

 

3. 딥러닝 문제해결 프로세스

이번에는 캐글 경진대회 중 이미지 분류 딥러닝 대회의 일반적인 프로세스를 정리해보자. 머신러닝 문제해결 프로세스와 다른 부분은 보라색 음영으로 표시했다.

 

① 문제(경진대회) 이해

문제 이해 경진대회의 배경과 목적을 이해해야 한다. 어떤 데이터를 활용해서 어떤 값을 예측해야 하는지, 회귀 문제인지 분류 문제인지, 어떻게 접근해야 하는지 등 다양한 사항을 확인한다. 경진대회 소개 페이지 내용을 숙지하는 게 우선이고, 토론 내용을 읽어보는 것도 좋다.
평가지표 파악 경진대회 평가지표를 확인한다. 같은 모델을 사용하더라도 평가지표에 따라 등수가 달라질 수 있기 때문에 중요하다.

② 탐색적 데이터 분석

데이터 구조 탐색 주어진 데이터의 구조를 훑어본다. 학습하고 예측할 데이터가 이미지이므로, 대체로 다수의 이미지 파일과 약간의 메타데이터가 주어질 것이다.
데이터 시각화 타깃값 분포를 시각화하거나 이미지 데이터를 출력하자. 타깃값 분포를 통해서는 불균형 여부를 판단하고, 이미지 데이터를 출력해서는 앞으로 어떤 이미지를 훈련할지 확인할 수 있다.
데이터 수가 충분한지 살펴보자. 너무 적다면 뒤에서 데이터를 더욱 증강해야 할 것이다.
캐글에서는 대체로 잘 정제된 데이터를 주지만, 실전에서는 이미지 품질이 제각각인 경우가 많다. 주어진 이미지를 실제로 살펴보고 활용할 수 없는 수준의 데이터는 버리거나 재활용할 수 있는 방안을 찾아야 한다.
추가적인 데이터가 있다면 적절히 시각화해 어떤 방향으로 모델링할지 인사이트를 얻을 수 있다.

③ 베이스라인 모델

환경 설정 결과를 재현할 수 있게 시드값을 고정하고, 딥러닝 모델을 빠르게 훈련하도록 GPU 장비로 설정한다.
데이터 준비 사용할 딥러닝 프레임워크에 맞춰 데이터를 준비한다. 예를 들어, 파이토치의 경우 전용 데이터셋 클래스와 데이터 로더를 생성하는데 이때 배치 크기를 조정할 수 있고 이미지 변환기를 전달해 데이터 증강도 할 수 있다.
모델 훈련 및 성능 검증 간단한 모델을 생성하고 훈련하여 성능을 확인한다.
기본적인 딥러닝 파이프라인, 즉 뼈대를 만든다. 신경망 모델을 직접 설계할 수도 있고, 사전 훈련 모델을 불러와 사용할 수도 있다.
모델 훈련 전에 손실 함수와 옵티마이저를 설정해야 한다.
결과 예측 및 제출 앞에서 훈련한 모델을 활용해, 결과를 예측해서 제출한다.
예측 시에는 테스트 데이터를 활용한다.
베이스라인 모델의 예측 결과를 제출하는 이유는 다음 단계에서 성능 개선을 한 후 비교해보기 위해서다.

④ 성능 개선

성능 개선 기법 적용 1. 더 다양한 이미지 변환기를 활용해 데이터 증강을 적극적으로 해보기
2. 옵티마이저와 스케줄러를 새롭게 설정하기
3. 예측 단계에서 수행하는 테스트 단계 데이터 증강(TTA), 레이블 스무딩을 적용하기
4. 몇 가지 하이퍼파라미터를 조정하거나 모델끼리 앙상블해서 성능을 끌어올리기
성능 검증 훈련된 모델의 일반화 성능을 평가한다.
주로 훈련 데이터와 검증 데이터를 나눈 다음, 훈련 데이터로 훈련시키고 검증 데이터로 성능을 평가한다. 이를 통해 훈련이 제대로 됐는지 파악 가능하다.
성능이 좋지 않다면 2~3단계부터 다시 수행해야 하기도 한다.
결과 예측 및 제출 성능이 개선된 모델을 활용해 최종 결과를 예측하고 제출한다.
결과는 여러 가지를 제출할 수 있고, 그중에서 프라이빗 성능이 가장 좋을 거라고 예상하는 최종 버전 2개를 선택할 수 있다. 그러면 캐글이 둘 중 더 높은 프라이빗 점수를 택하여 순위를 매긴다.

 

4. 딥러닝 문제해결 체크리스트

위 링크는 이 책의 신백균 저자가 작성한 딥러닝 문제해결 체크리스트로, 프로세스의 각 단계에서 챙겨야 할 사항들을 중심으로 정리한 표다. 이를 토대로 여러 문제를 풀어보면서 체크리스트를 더 풍성하게 가꿔보자!

 

 

이렇게 머신러닝, 딥러닝 문제해결 프로세스와 체크리스트를 정리해보았다. 다음에는 이 프로세스를 따라 여러 경진대회를 정복해보자!

댓글