ML 문제 프레이밍하기

예측 ML 또는 생성형 AI 접근 방식을 사용하여 문제가 가장 잘 해결되는지 확인했다면 문제를 ML 관점에서 구성할 준비가 되었습니다. 다음과 같은 작업을 완료하여 ML 측면에서 문제를 프레이밍합니다.

  • 이상적인 결과와 모델의 목표를 정의합니다.
  • 모델의 출력을 식별합니다.
  • 성공 측정항목을 정의합니다.

이상적인 결과 및 모델의 목표 정의

ML 모델과 관계없이 이상적인 결과는 무엇인가요? 다시 말하면, 제품 또는 기능이 수행하기를 원하는 정확한 작업이 무엇인가요? 이는 이전에 목표 명시 섹션에서 정의한 문과 동일합니다.

모델이 수행할 작업을 명시적으로 정의하여 모델의 목표를 이상적인 결과에 연결합니다. 다음 표는 가상의 앱에 대한 이상적인 결과와 모델의 목표를 설명합니다.

이상적인 결과 모델의 목표
날씨 앱 지역의 강수량을 6시간 단위로 계산합니다. 특정 지역의 6시간 강수량을 예측합니다.
패션 앱 다양한 셔츠 디자인을 만들어 보세요. 텍스트와 이미지에서 세 가지 유형의 셔츠 디자인을 생성합니다. 여기서 텍스트는 스타일과 색상을 명시하고 이미지는 셔츠의 유형 (티셔츠, 버튼업, 폴로)입니다.
동영상 앱 유용한 동영상을 추천합니다. 사용자가 동영상을 클릭할지 예측합니다.
메일 앱 스팸을 감지합니다. 이메일이 스팸인지 여부를 예측합니다.
금융 앱 여러 뉴스 매체의 금융 정보를 요약합니다. 지난 7일간의 주요 금융 트렌드에 대한 50단어 요약을 생성합니다.
지도 앱 이동 시간을 계산합니다. 두 지점 사이를 이동하는 데 걸리는 시간을 예측합니다.
뱅킹 앱 허위 거래를 식별합니다. 카드 소지자의 거래 여부를 예측합니다.
식당 앱 레스토랑의 메뉴로 요리를 식별합니다. 음식점의 유형을 예측합니다.
전자상거래 앱 회사 제품에 대한 고객 지원 답장을 작성합니다. 감정 분석 및 조직의 기술 자료를 사용하여 답장을 생성합니다.

필요한 출력 식별

모델 유형은 문제의 구체적인 컨텍스트와 제약 조건에 따라 달라집니다. 모델의 출력은 이상적인 결과에 정의된 작업을 달성해야 합니다. 따라서 첫 번째 질문은 '문제를 해결하려면 어떤 유형의 출력이 필요한가?'입니다.

무언가를 분류하거나 숫자 예측을 해야 하는 경우 예측 ML을 사용할 수 있습니다. 새로운 콘텐츠를 생성하거나 자연어 이해와 관련된 출력을 생성해야 하는 경우 생성형 AI를 사용할 수 있습니다.

다음 표에는 예측 ML 및 생성형 AI 출력이 나와 있습니다.

표 1. 예측 ML
ML 시스템 출력 예
분류 바이너리 이메일을 스팸 또는 스팸 아님으로 분류합니다.
멀티클래스 단일 라벨 이미지에서 동물을 분류합니다.
멀티클래스 멀티 라벨 이미지의 모든 동물을 분류합니다.
숫자 단차원 회귀 동영상의 조회수를 예측합니다.
다차원 회귀 개인의 혈압, 심박수, 콜레스테롤 수치를 예측합니다.
표 2. 생성형 AI
모델 유형 출력 예
텍스트
기사를 요약합니다.

고객 리뷰에 답글 달기

문서를 영어에서 중국어로 번역합니다.

제품 설명을 작성합니다.

법률 문서를 분석합니다.
이미지
마케팅 이미지 생성

사진에 시각 효과를 적용할 수 있습니다.

제품 디자인 변형을 생성합니다.
오디오
특정 억양으로 대화를 생성합니다.

재즈와 같이 특정 장르의 짧은 음악작품을 생성합니다.
동영상
사실적인 동영상을 생성합니다.

동영상을 분석하고 시각 효과를 적용합니다.
멀티모달 텍스트 캡션이 있는 동영상과 같이 여러 유형의 출력을 생성합니다.

분류

분류 모델은 입력 데이터가 속한 카테고리(예: 입력을 A, B 또는 C 중 하나로 분류해야 하는지 여부)를 예측합니다.

분류 모델은 예측을 수행합니다.

그림 1. 예측을 수행하는 분류 모델

모델의 예측을 기반으로 앱에서 결정을 내릴 수 있습니다. 예를 들어 예측이 카테고리 A이면 X를 실행하고, 카테고리 B이면 Y를, 예측이 카테고리 C이면 Z를 수행합니다. 경우에 따라 예측은 앱의 출력일 수 있습니다.

제품 코드는 모델의 출력을 사용하여 결정을 내립니다.

그림 2. 결정을 내리기 위해 제품 코드에서 사용되는 분류 모델의 출력

회귀

회귀 모델은 숫자 값을 예측합니다.

회귀 모델이 예측을 수행하는 중입니다.

그림 3. 숫자 예측을 하는 회귀 모델입니다.

모델의 예측을 기반으로 앱에서 결정을 내릴 수 있습니다. 예를 들어 예측이 A 범위 내에 있으면 X를 실행하고, 예측이 범위 B 내에 있으면 Y를, 예측이 C 범위 내에 있으면 Z를 실행합니다. 경우에 따라 예측은 앱의 출력일 수도 있습니다.

제품 코드는 모델의 출력을 사용하여 결정을 내립니다.

그림 4. 결정을 내리기 위해 제품 코드에서 사용되는 회귀 모델의 출력입니다.

다음 상황을 살펴보세요.

예상 인기도를 기준으로 동영상을 캐시하려고 합니다. 즉, 모델에서 동영상이 인기를 끌 것으로 예측할 경우 사용자에게 신속하게 제공해야 합니다. 이렇게 하려면 더 효과적이고 비용이 많이 드는 캐시를 사용합니다. 다른 동영상에서는 다른 캐시를 사용합니다. 캐싱 기준은 다음과 같습니다.

  • 동영상의 조회수가 50회를 넘을 것으로 예상되면 비용이 많이 드는 캐시를 사용합니다.
  • 동영상의 조회수가 30~50회 사이일 것으로 예상되면 저렴한 캐시를 사용합니다.
  • 동영상의 조회수가 30회 미만일 것으로 예상되면 동영상을 캐시하지 않습니다.

숫자 값, 즉 조회수를 예측하기 때문에 회귀 모델이 올바른 접근 방식이라고 생각합니다. 그러나 회귀 모델을 학습시키면 동영상 조회수가 30인 동영상의 예측 값이 28, 32일 때 동일한 손실이 발생한다는 것을 알게 됩니다. 즉, 예측이 28과 32면 앱의 동작은 매우 다르지만 모델은 두 예측이 모두 양호하다고 간주합니다.

학습 중인 모델 및 손실 평가

그림 5. 회귀 모델 학습

회귀 모델은 제품 정의 기준을 인식하지 못합니다. 따라서 회귀 모델 예측의 작은 차이로 인해 앱의 동작이 크게 바뀌는 경우에는 분류 모델 구현을 고려해야 합니다.

이 시나리오에서는 분류 모델이 32보다 28이라는 예측에서 더 높은 손실을 생성하기 때문에 분류 모델은 올바른 동작을 생성합니다. 어떤 의미에서 분류 모델은 기본적으로 임곗값을 생성합니다.

이 시나리오에서는 두 가지 중요한 사항을 강조합니다.

  • 결정을 예측합니다. 가능한 경우 앱에서 취할 결정을 예측합니다. 동영상 예에서 분류 모델은 동영상을 분류한 카테고리가 '캐시 없음', '저렴한 캐시', '고비용 캐시'인지 여부를 예측합니다. 모델에서 앱 동작을 숨기면 앱에서 잘못된 동작이 발생할 수 있습니다.

  • 문제의 제약 조건을 이해합니다. 앱이 다양한 임곗값에 따라 서로 다른 작업을 실행하는 경우 이러한 임곗값이 고정되었거나 동적인지 확인합니다.

    • 동적 기준점: 임곗값이 동적인 경우 회귀 모델을 사용하고 앱 코드에서 임곗값 한도를 설정합니다. 이렇게 하면 모델이 합리적인 예측을 하도록 하면서 임곗값을 쉽게 업데이트할 수 있습니다.
    • 고정 임곗값: 임곗값이 고정되면 분류 모델을 사용하고 임곗값 한도를 기준으로 데이터 세트에 라벨을 지정합니다.

    일반적으로 대부분의 캐시 프로비저닝은 동적이며 기준점은 시간이 지남에 따라 변경됩니다. 따라서 이는 특히 캐싱 문제이므로 회귀 모델이 가장 적합합니다. 그러나 많은 문제에서 임곗값이 고정되므로 분류 모델이 최상의 솔루션이 됩니다.

다른 예를 살펴보겠습니다. 사용자에게 앞으로 6시간 동안 강수량이 어느 정도인지 알려주는 날씨 앱을 빌드하는 경우 precipitation_amount. 라벨을 예측하는 회귀 모델을 사용할 수 있습니다.

이상적인 결과 이상적인 라벨
향후 6시간 동안 거주 지역에 예상되는 강수량을 알립니다. precipitation_amount

날씨 앱 예시에서는 라벨이 이상적인 결과를 직접 처리합니다. 그러나 경우에 따라 이상적인 결과와 라벨 간에 일대일 관계가 명확하지 않을 수 있습니다. 예를 들어 동영상 앱에서는 유용한 동영상을 추천하는 것이 이상적입니다. 하지만 데이터 세트에 useful_to_user.라는 라벨이 없습니다.

이상적인 결과 이상적인 라벨
유용한 동영상을 추천합니다. ?

프록시 라벨을 찾아야 합니다.

프록시 라벨

프록시 라벨은 데이터 세트에 없는 라벨을 대체합니다. 프록시 라벨은 예측할 항목을 직접 측정할 수 없을 때 필요합니다. 동영상 앱에서는 사용자가 동영상을 유용하게 생각할지 직접 측정할 수 없습니다. 데이터 세트에 useful 기능이 있고 사용자가 유용하다고 생각하는 모든 동영상을 표시했다면 좋겠지만 데이터 세트가 없기 때문에 유용성을 대체하는 프록시 라벨이 필요합니다.

유용성에 대한 프록시 라벨은 사용자가 동영상을 공유하거나 좋아할지 여부일 수 있습니다.

이상적인 결과 프록시 라벨
유용한 동영상을 추천합니다. shared OR liked

프록시 라벨은 예측하려는 항목을 직접 측정하지 않으므로 주의해야 합니다. 예를 들어 다음 표에는 유용한 동영상 추천의 잠재적 프록시 라벨과 관련된 문제가 요약되어 있습니다.

프록시 라벨 문제
사용자가 '좋아요' 버튼을 클릭할지 예측합니다. 대부분의 사용자는 절대 '좋아요'를 클릭하지 않습니다.
동영상이 인기를 끌지 여부를 예측합니다. 맞춤설정되지 않음. 일부 사용자는 인기 동영상을 좋아하지 않을 수 있습니다.
사용자가 동영상을 공유할지 여부를 예측합니다. 일부 사용자는 동영상을 공유하지 않습니다. 사람들은 동영상이 좋지 않아 동영상을 공유하는 경우도 있습니다.
사용자가 재생을 클릭할지 예측합니다. 클릭베이트를 극대화합니다.
시청자가 동영상을 시청하는 시간을 예측합니다. 짧은 동영상보다 긴 동영상을 선호합니다.
사용자가 동영상을 몇 번 다시 볼지 예측합니다. 재시청이 불가능한 동영상 장르보다 '재시청 가능한' 동영상을 선호합니다.

프록시 라벨이 이상적인 결과를 완벽하게 대체할 수는 없습니다. 모두 잠재적인 문제를 겪을 것입니다. 사용 사례에서 문제가 가장 적은 항목을 선택하세요.

이해도 확인

한 회사에서 건강 및 웰빙 앱에 ML을 사용하여 사람들의 몸을 나아지게 하려고 합니다. 목표를 달성하려면 프록시 라벨을 사용해야 할 것 같나요?
예, 회사에서 프록시 라벨을 찾아야 합니다. 행복과 웰빙과 같은 카테고리는 직접 측정할 수 없습니다. 대신 주당 운동 시간이나 취미 또는 친구와 함께 보내는 시간과 같은 다른 기능과 관련하여 근사치를 계산해야 합니다.
아니요, 회사는 프록시 라벨을 사용할 필요가 없습니다. 행복과 웰빙은 직접 측정할 수 있습니다.

생성

대부분의 경우 자체 생성 모델은 방대한 양의 학습 데이터와 컴퓨팅 리소스가 필요하므로 학습하지 않습니다. 대신 선행 학습된 생성 모델을 맞춤설정합니다. 생성 모델을 통해 원하는 출력을 생성하려면 다음 기법 중 하나 이상을 사용해야 할 수 있습니다.

  • 증류. 더 큰 모델의 작은 버전을 만들려면 작은 모델을 학습시키는 데 사용하는 큰 모델에서 라벨이 지정된 합성 데이터 세트를 생성합니다. 생성 모델은 일반적으로 규모가 크고 메모리, 전기와 같은 상당한 리소스를 소비합니다. 정제를 통해 더 작고 리소스 사용량이 적은 모델이 더 큰 모델의 성능을 대략적으로 계산할 수 있습니다.

  • 미세 조정 또는 매개변수 효율적인 조정. 특정 작업에서 모델의 성능을 향상시키려면 생성할 출력 유형의 예시가 포함된 데이터 세트에서 모델을 추가로 학습시켜야 합니다.

  • 프롬프트 엔지니어링. 모델이 특정 작업을 수행하거나 특정 형식으로 출력을 생성하도록 하려면 모델에 실행할 작업을 지시하거나 출력 형식을 지정하는 방법을 설명합니다. 즉, 프롬프트에는 작업 수행 방법에 대한 자연어 안내 또는 원하는 출력으로 예시가 포함될 수 있습니다.

    예를 들어 기사에 관한 짧은 요약을 원하는 경우 다음을 입력할 수 있습니다.

    Produce 100-word summaries for each article.
    

    모델이 특정 읽기 수준에 맞는 텍스트를 생성하도록 하려면 다음을 입력하면 됩니다.

    All the output should be at a reading level for a 12-year-old.
    

    모델이 특정 형식으로 출력을 제공하도록 하려면 출력 형식을 지정하는 방법(예: '테이블의 결과 형식 지정')을 설명하거나 예를 들어 작업을 보여줄 수 있습니다. 예를 들어 다음을 입력할 수 있습니다.

    Translate words from English to Spanish.
    
    English: Car
    Spanish: Auto
    
    English: Airplane
    Spanish: Avión
    
    English: Home
    Spanish:______
    

정제 및 미세 조정은 모델의 매개변수를 업데이트합니다. 프롬프트 엔지니어링은 모델의 매개변수를 업데이트하지 않습니다. 대신 프롬프트 엔지니어링은 모델이 프롬프트의 맥락에서 원하는 출력을 생성하는 방법을 학습하는 데 도움이 됩니다.

예를 들어 모델의 요약이 사람이 생성한 요약과 유사하거나 사람이 모델의 요약을 양호로 평가하는 등 생성 모델의 출력을 알려진 값과 비교하여 평가하기 위해 테스트 데이터 세트가 필요한 경우도 있습니다.

생성형 AI는 분류 또는 회귀와 같은 예측 ML 솔루션을 구현하는 데도 사용할 수 있습니다. 예를 들어 대규모 언어 모델 (LLM)은 자연어에 대한 깊은 지식으로 인해 특정 태스크에 대해 학습된 예측 ML보다 텍스트 분류 태스크를 더 잘 수행하는 경우가 많습니다.

성공 측정항목 정의

ML 구현의 성공 여부를 결정하는 데 사용할 측정항목을 정의합니다. 성공 측정항목은 참여도 또는 사용자가 유용하다고 생각되는 동영상 시청과 같은 적절한 조치를 취하도록 돕는 등 관심 있는 분야를 정의합니다. 성공 측정항목은 정확도, 정밀도, 재현율 또는 AUC와 같은 모델의 평가 측정항목과 다릅니다.

예를 들어 날씨 앱의 성공 및 실패 측정항목은 다음과 같이 정의될 수 있습니다.

성공 '비 올까?' 기능을 여는 빈도가 이전보다 50% 증가했습니다.
실패 사용자가 '비 올까?' 기능을 여는 빈도가 전보다 낮아졌습니다.

동영상 앱 측정항목은 다음과 같이 정의될 수 있습니다.

성공 사용자는 사이트에 머무는 시간이 평균 20% 더 깁니다.
실패 사용자가 평균적으로 사이트에 머무는 시간은 이전보다 짧습니다.

야심 찬 성공 측정항목을 정의하는 것이 좋습니다. 하지만 높은 포부는 성공과 실패 사이에 격차를 일으킬 수 있습니다. 예를 들어 사용자가 사이트에 머무는 시간이 이전보다 평균 10% 늘었다고 해도 성공도 실패도 아닙니다. 정의되지 않은 격차가 중요한 것은 아닙니다.

성공의 정의에 더 가까이 가거나 넘어갈 수 있는 모델의 성능이 중요합니다. 예를 들어 모델의 성능을 분석할 때는 다음과 같은 질문을 고려하세요. 모델을 개선하면 정의된 성공 기준에 더 가까워질 수 있을까요? 예를 들어 모델의 평가 측정항목은 훌륭하지만 성공 기준에 가까워지지 않을 수 있습니다. 즉, 완벽한 모델이라도 정의된 성공 기준을 충족하지 않을 수 있습니다. 반면 모델의 평가 측정항목은 낮지만 성공 기준에 가까워질 수 있으므로 모델을 개선하면 성공에 한 걸음 더 가까워질 수 있습니다.

다음은 모델을 개선할 가치가 있는지 판단할 때 고려해야 하는 측정기준입니다.

  • 충분하지 않지만 계속 진행하세요. 이 모델을 프로덕션 환경에서는 사용하면 안 되지만 시간이 지남에 따라 크게 개선될 수 있습니다.

  • 계속하세요. 이 모델은 프로덕션 환경에서 사용할 수 있으며, 더 개선될 수 있습니다.

  • 충분히 좋아하지만 더 나아질 수는 없다. 모델이 프로덕션 환경에 있지만 최대한 양호한 것일 수 있습니다.

  • 아직은 충분하지 않으며 앞으로도 그럴 것입니다. 모델을 프로덕션 환경에서 사용해서는 안 되며 아무리 많은 학습으로도 모델을 얻을 수 없습니다.

모델 향상을 결정할 때 엔지니어링 시간 및 컴퓨팅 비용과 같은 리소스 증가가 모델의 예측 개선의 타당성을 재평가해야 합니다.

성공 및 실패 측정항목을 정의한 후에는 측정 빈도를 결정해야 합니다. 예를 들어 시스템을 구현한 지 6일, 6주, 6개월이 지난 후 성공 측정항목을 측정할 수 있습니다.

실패 측정항목을 분석할 때는 시스템의 실패 이유를 파악해 보세요. 예를 들어 모델은 사용자가 클릭할 동영상을 예측할 수 있지만 사용자 참여도가 떨어지는 클릭베이트 제목을 추천하기 시작할 수 있습니다. 날씨 앱의 예에서는 모델이 비가 올 때를 정확하게 예측할 수 있지만 지역이 너무 넓습니다.

이해도 확인

패션 회사가 의류 판매를 더 많이 하려고 합니다. 누군가가 ML을 사용하여 회사에서 제조해야 할 옷을 결정하라고 제안합니다. 이 모델에서는 어떤 종류의 옷이 패션에 좋은지 판단하도록 모델을 학습시킬 수 있다고 생각합니다. 모델을 학습시킨 후 카탈로그에 적용하여 어떤 옷을 만들지 결정하려고 합니다.

문제를 ML 측면에서 어떻게 구성해야 할까요?

이상적인 결과: 제조할 제품을 결정합니다.

모델의 목표: 어떤 의류 제품이 패션에 있는지 예측합니다.

모델 출력: 이진 분류, in_fashion, not_in_fashion

성공 측정항목: 제조된 의류의 70% 이상 판매

이상적인 결과: 주문할 원단 및 소모품의 양을 판단합니다.

모델의 목표: 제조할 각 상품의 양을 예측합니다.

모델 출력: 이진 분류, make, do_not_make

성공 측정항목: 제조된 의류의 70% 이상 판매

이상적인 결과는 주문할 원단과 공급품의 양을 결정하는 것이 아닙니다. 상품을 제조해야 하는지를 결정하기 위해서입니다. 따라서 모델의 목표가 잘못된 목표를 다룹니다.