profile image

L o a d i n g . . .

728x90

ChatGPT의 등장으로 또 한 번 IT에 지각변동이 일어나고 있습니다. 개발자가 쉽게 대체되지는 않겠지만 개인적으로 AI 시대에 뒤처지는 개발자는 대체될 가능성이 높다고 생각합니다. AI 모델을 직접 개발하는 것은 제 목표가 아닙니다. 애플리케이션에 이미 개발된 AI를 활용하거나 AI를 입맛에 맞게 fine tuning 할 수 있는 능력을 키우는 게 제 목표입니다. "AI 시대에서 개발자로 살아남기" 시리즈를 통해 AI 모델을 활용해서 어떻게 애플리케이션을 개발하고 fine tuning을 하는데 필요한 지식을 공유하고자 합니다. 이 시리즈에서는 원리를 학습하고 응용하는 방법을 배우는 전통적인 학습 순서보다는 이 둘을 적절히 번갈아가며 AI를 응용할 수 있는 능력을 키우려고 합니다.

비즈니스 목표와 AI

비즈니스 문제를 어떻게 정의하는지에 따라 해결방법은 천차만별입니다. 만약 개발자가 AI에 대한 이해가 있으면 비즈니스 문제를 해결할 수 있는 또 다른 방법을 제시할 수 있습니다(이 부분이 AI에 익숙하지 못한 다른 개발자들과 구분될 수 있는 경쟁력이라고 생각합니다). 따라서 이번 포스팅에서는 비즈니스 문제를 AI로 해결할 수 있는지 여부를 판단하는 안목을 키우는데 방법을 공유합니다.
우선 비즈니스로 해결하고자 하는 문제와 목표를 정의합니다. 이후 목표를 달성하기 위해 머신러닝이 적합한지 생각해 봅니다. 대다수의 비즈니스 문제를 해결하는 데 있어 머신러닝이 최선의 선택이 아닐 수 있다는 점을 명심해야 합니다.
머신러닝을 선택했다면 모델을 트레이닝하기 전에 휴리스틱 방법으로 우선 비즈니스 문제에 접근해 봅니다. 휴리스틱 방법으로의 접근은 비즈니스 문제를 어느 정도 해결할 수 있는 간단한 모델을(머신러닝을 활용하지 않은) 만들어 보는 것을 의미합니다. 휴리스틱 방법을 통해 비즈니스 문제를 어느 정도 해결할 수 있는지, 그리고 머신러닝을 활용하면 얼마나 개선할 수 있는지 예상해 봅니다. 또한 머신러닝에 필요한 시간과 금전적인 부분도 함께 고려해야 합니다.
문제 해결의 방법으로 머신러닝을 선택했다면 필요한 데이터가 존재하는지 확인합니다. 머신러닝 모델을 학습시키기 위해 필요한 데이터는 다음과 같은 특성이 존재해야 합니다.

  • 데이터의 양은 풍부해야 합니다.
  • 데이터는 일관되고 안정적이어야 합니다.
  • 데이터의 출처가 믿을 수 있어야 합니다.
  • 데이터가 모델 학습에 필요한 형태여야 합니다.
  • 데이터의 정확도가 높아야 합니다.
  • 데이터는 해결하고자 하는 비즈니스 문제가 존재하는 환경을 반영해야 합니다.
  • 데이터는 "predictive power"를 가져야 합니다. 머신러닝 모델의 목표는 정확한 예측이기 때문에 모델 학습에 사용되는 데이터는 예측하는 기능을 학습시키기 위해 충분한 "predictive power"가 필요합니다.

Checklist

□ 비즈니스 문제를 정의
□ 비즈니스 문제를 머신러닝으로 해결하는 것이 최선인지 판단
□ 모델 학습을 위해 양질의 데이터가 있는지 확인

 

문제를 머신러닝 용어로 정의하기

비즈니스 문제를 머신러닝을 활용해 해결하기로 결정됐다면 그다음으로 비즈니스 문제를 머신러닝 용어로 정의하는 과정이 필요합니다.

이상적인 결과를 정의하기

첫 번째 단계는 개발하고자 하는 머신러닝 모델의 이상적인 결과를 정의하는 것입니다. 예를 들어 저희가 스팸 메일을 식별할 수 있는 모델을 만든다고 가정하면 모델의 이상적인 결과는 스팸 메일을 식별하는 것입니다. 그다음 어떤 유형의 모델을 만들 것인지 고민해야 합니다. 대표적으로는 classification 모델과 regression 모델이 존재합니다.

  • Classification model: 분류 모형(classification model)은 입력 데이터가 어떤 범주에 속하는지 예측합니다. 분류 결과에 따라 애플리케이션에서 목적에 맞는 결괏값을 내려주도록 개발할 수 있습니다.

Classification Model

  • Regression model: 회귀 모형(regression model)은 입력 데이터를 숫자 선에 배치할 위치를 예측합니다. 예측된 값의 위치에 따라 애플리케이션이 목적에 맞는 결괏값을 내려주도록 개발할 수 있습니다.

Regression Model

만약 입력값의 결과를 분류하는 기준이 정적이라면 라벨(label)을 활용한 분류 모형을 활용하고 입력값의 결과를 분류하는 기준이 동적이면 회귀 모형을 활용해야 합니다.

모델 아웃풋 정의

다음 단계에서는 첫 번째 단계에서 정의한 이상적인 결과를 도출할 수 있도록 모델의 아웃풋을 정의합니다. 회귀 모형을 사용한다면 모델이 예측한 숫자값이 이상적인 결과를 도출하는 데 사용될 수 있어야 하고 분류 모형을 사용한다면 분류 결과가 이상적인 결과를 도출하는 데 사용될 수 있어야 합니다.

Classification Model Flowchart
Regression Model Flowchart

모델의 성공 지표 정의

마지막으로 모델의 성공 지표를 정의합니다. 예를 들어 유튜브 비디오 추천 모델을 만든다고 가정했을 때 "유저가 사이트에서 보내는 평균 시간이 20% 증가"라는 성공 지표를 정의할 수 있습니다. 만약 20% 이상 시간이 증가했다면 성공이고 20% 미만이면 실패로 간주할 수 있습니다. 지표를 설정했으면 모델을 개발하는 과정에서 지속적으로 모델의 성능을 측정합니다. 측정값을 토대로 해당 모델을 계속 고도화할지 결정합니다. 모델을 고도화할지 여부를 결정하는데 다음과 같은 모델의 특성을 참고합니다.

  • Not good enough, but continue: 모델은 실제 유저가 사용할 수 있는 수준이 아니지만 고도화할 가치가 있습니다.
  • Good enough, and continue: 모델은 실제 유저가 사용할 수 있는 수준이고 더 고도화가 가능합니다.
  • Good enough, but can't be made better: 모델은 실제 유저가 사용할 수 있는 수준이며 충분히 고도화된 상태입니다.
  • Not good enough, and never be: 모델은 실제 유저가 사용할 수 있는 수준이 아니며 고도화할 가치가 없습니다.

Checklist

□ 머신러닝 모델의 이상적인 결과를 정의 (모델 유형 결정)
□ 모델의 아웃풋 정의
□ 모델의 성공 지표 정의

실습

https://developers.google.com/machine-learning/problem-framing/try-it/framing-exercise

 

직접 해보기: 프레이밍     |  Machine Learning  |  Google Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 직접 해보기: 프레이밍 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이

developers.google.com

https://developers.google.com/machine-learning/problem-framing/try-it/formulate-exercise

 

직접 해보기: 공식화     |  Machine Learning  |  Google Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 직접 해보기: 공식화 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 섹

developers.google.com

 

모델 구현

모델의 구현은 처음부터 모델을 개발하는 방식과 어느 정도 훈련된 모델(pre-trained model)을 사용하는 방식이 있습니다. Pre-trained 모델을 활용할 수 있는 대표적인 사이트는 다음과 같습니다.
https://www.tensorflow.org/hub

 

TensorFlow Hub

TensorFlow Hub는 미세 조정할 준비가 되어 있고 어디에서나 배포할 수 있는 훈련된 기계 학습 모델의 저장소입니다. 몇 줄의 코드로 BERT 및 Faster R-CNN과 같은 훈련된 모델을 재사용할 수 있습니다.

www.tensorflow.org

 

마무리 

이번 포스팅에서는 머신러닝 모델을 개발하기 전에 고민해 볼 사항들에 대해 살펴봤습니다. 다음 포스팅에는 머신러닝 모델 개발에 필요한 최소한의 지식을 살펴보겠습니다. 

 

참조

https://developers.google.com/machine-learning/problem-framing/ml-framing

728x90
복사했습니다!