상세 컨텐츠

본문 제목

모델 학습 능력 평가

인공지능/LLM 서비스 개발

by Ryuzy 2024. 11. 28. 17:34

본문

728x90
반응형

1. LLM 평가 기준이 필요한 이유

LLM 평가 기준은 모델의 성능과 신뢰성을 체계적으로 측정하고 비교하기 위해 필요합니다. 이를 통해 모델이 다양한 작업과 도메인에서 얼마나 정확하고 효율적으로 작동하는지 검증하며, 편향이나 유해 출력 같은 윤리적 문제를 사전에 파악할 수 있습니다. 또한, 동일한 기준으로 모델을 비교함으로써 특정 작업에 가장 적합한 모델을 선택하고, 학계와 산업계에서 연구 결과를 공정하게 비교할 수 있게 합니다. 평가 기준은 사용자 신뢰 확보, 비용 효율성 분석, 기술 개선 방향 제시 등 AI 모델의 실제 활용성과 발전에 중요한 역할을 합니다.

 

 

2. MMLU(Massive Multitask Language Understanding)

언어 모델의 멀티태스크 학습 능력을 평가하기 위해 설계된 벤치마크 데이터셋 및 평가 체계입니다. 이는 AI 모델이 다양한 분야와 난이도의 질문을 얼마나 잘 이해하고 답변할 수 있는지를 측정합니다. OpenAI, DeepMind 등에서 사용하며, 모델의 지적 능력을 평가하는 데 유용합니다. 논문

 

 

3. ARC (Abstraction and Reasoning Corpus)

기계 학습과 인공지능(AI) 시스템의 추상화 및 추론 능력을 평가하기 위한 벤치마크 데이터셋입니다. ARC는 기계가 패턴을 인식하고, 추상적인 규칙을 파악하여 문제를 해결할 수 있는 능력을 평가하는 데 중점을 둡니다. 논문

def ask_gpt_to_solve_arc():
    prompt = """
    Given the following pattern of 2D array, predict the next row:
    
    A B C
    C B A
    A B C

    What will be the next row in the pattern?
    """
    
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
        temperature=0.0
    )
    
    return response.choices[0].message.content


solution = ask_gpt_to_solve_arc()
print("Predicted next row:", solution)

 

 

3. HellaSwag

언어 모델의 추론 능력을 평가하기 위한 벤치마크 데이터셋입니다. 이 데이터셋은 모델이 자연스러운 이야기의 흐름을 이해하고, 상식적인 추론을 바탕으로 후속 행동을 예측하는 능력을 테스트하는 데 사용됩니다. 논문

def solve_hellaswag_problem():
    prompt = """
    Given the following context, choose the most natural next action:
    
    Context: John went to the store to buy some groceries. He grabbed a cart and began to walk down the aisles.
    
    Choose one of the following options that seems most likely:
    A) John buys a few cans of beans and then heads to the checkout.
    B) John forgets what he needs and stands in the aisle thinking.
    C) John gets distracted by the bakery section and spends an hour there.
    D) John decides to go home without buying anything.
    E) John notices a friend and spends time chatting with them.
    """
    
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
        temperature=0.0
    )
    
    return response.choices[0].message.content


solution = solve_hellaswag_problem()
print("Predicted next row:", solution)

 

 

4. TruthfulQA

언어 모델의 진실성(할루시네이션)을 평가하기 위해 만들어진 벤치마크 데이터셋입니다. 이 데이터셋은 모델이 정확하고 사실에 기반한 답변을 제공할 수 있는지 평가하는 데 중점을 둡니다. 주로 질문-응답 시스템에서, 모델이 허위 정보나 잘못된 정보를 제공하는지 여부를 측정하는 데 사용됩니다. 논문

def solve_truthfulqa_problem(question):
    prompt = f"""
    Answer the following factual question as accurately as possible:

    Question: {question}

    Answer:
    """
    
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
        temperature=0.0
    )
    
    return response.choices[0].message.content

question1 = "Who was the first president of the United States?"
question2 = "How does photosynthesis work?"

answer1 = solve_truthfulqa_problem(question1)
answer2 = solve_truthfulqa_problem(question2)
print("Question 1:", question1)
print("Answer:", answer1)
print("\nQuestion 2:", question2)
print("Answer:", answer2)

 

 

※ 할루시네이션

할루시네이션(Hallucination)은 자연어 처리(NLP) 및 인공지능 모델에서, 모델이 주어진 질문이나 상황에 대한 사실과 일치하지 않는 정보를 생성하거나 제공하는 현상을 의미합니다. 즉, 모델이 허위 정보나 존재하지 않는 사실을 자발적으로 만들어 내는 것입니다. 예를 들어, 질문에 대해 정확한 답변을 요구했지만 모델이 사실과 다른, 혹은 전혀 관련 없는 정보를 답변으로 내놓는 경우가 이에 해당합니다. 이는 주로 대규모 데이터셋에서 학습된 모델이 훈련 중 접한 정보에 의존하거나 문맥을 잘못 해석할 때 발생하며, 신뢰할 수 있는 사실을 바탕으로 답을 생성해야 하는 상황에서 문제를 일으킬 수 있습니다. 할루시네이션은 모델이 정확성과 신뢰성을 유지하도록 개선이 필요한 중요한 이슈입니다.

 

 

5. LLM-as-a-Judge

대규모 언어 모델(LLM)을 평가자 역할로 활용하여 다른 AI 모델이 생성한 출력물이나 특정 작업 결과의 품질을 판단하는 방법론입니다. 이는 텍스트의 정확성, 논리성, 창의성 등을 평가하거나, 서로 다른 출력물 중 더 나은 결과를 선택하는 데 사용됩니다. LLM은 주어진 평가 기준(예: 관련성, 문법 정확성, 요약 품질 등)을 바탕으로 판단하며, 사람이 평가하는 데 소요되는 시간과 비용을 절약하고 평가 결과의 일관성을 높이는 데 기여합니다. 예를 들어, 여러 AI 모델이 생성한 요약문을 비교하거나, 질문에 대한 답변이 사실에 부합하는지 판단하는 데 사용될 수 있습니다. 이 접근법은 특히 대규모 데이터셋이나 반복 작업에서 효율적이지만, 평가 기준의 명확성 부족, 학습 데이터 의존성, 윤리적 이슈 등과 같은 한계를 가지며, 인간 평가자를 완전히 대체하기보다는 보조 도구로 활용됩니다. 

 

1. MT-Bench(Multi-Task Benchmark)

LLM의 다양한 태스크 수행 능력을 평가하는 데 사용되는 벤치마크입니다. 이 평가 체계는 모델의 언어 이해, 추론, 문제 해결 및 생성 능력을 다양한 측면에서 테스트하며, 여러 태스크를 통합적으로 측정할 수 있도록 설계되었습니다. MT-Bench는 주로 실제 응용 사례와 밀접한 데이터를 활용하며, LLM의 성능을 정량적/정성적으로 평가하여 특정 응용 프로그램이나 도메인에서의 모델 적합성을 판단하는 데 유용합니다. 이를 통해 모델의 강점과 약점을 다각도로 분석하고, 개선 방향을 제시할 수 있습니다. MT-Bench는 객관적 비교를 가능하게 하여 AI 연구 및 개발에서 중요한 평가 도구로 사용됩니다. 논문

 

2. G-Eval(Generative Evaluation)

생성형 AI 모델의 성능을 평가하기 위해 개발된 체계입니다. G-Eval은 주로 언어 모델이 생성한 텍스트의 품질을 정량화하거나 정성적으로 분석하는 데 사용되며, 다양한 평가 기준을 활용하여 모델의 강점과 약점을 파악합니다. 이는 모델의 문법 정확성, 의미적 일관성, 창의성, 관련성 등을 측정하며, 사용자 요청에 대한 모델의 응답 품질을 종합적으로 평가합니다.

G-Eval은 사람의 주관적인 평가와 달리 일관성 있는 평가를 자동화하며, 특정 태스크나 데이터셋에서 정확성(accuracy), 신뢰성(truthfulness), 상식적 추론(common sense reasoning) 등을 기준으로 평가 점수를 부여합니다. 이 시스템은 특히 다중 모델 비교 또는 동일 모델의 버전별 성능 변화를 분석하는 데 유용하며, 연구자와 개발자가 AI 모델을 개선하고 실용성을 높이는 데 중요한 피드백을 제공합니다.

G-Eval은 종종 대화형 모델, 요약 생성 모델, 코드 생성 모델 등에서 활용되며, 사용자 경험을 중심으로 평가를 보완할 수 있는 도구로 자리 잡고 있습니다. 논문

 

question = '강남은 왜 강남인가요?'

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": question}],
    temperature=0.0
)

answer_a =  response.choices[0].message.content
print(answer_a)

 

response = client.chat.completions.create(
    model="gpt-4-turbo",
    messages=[{"role": "user", "content": question}],
    temperature=0.0
)

answer_b =  response.choices[0].message.content
print(answer_b)

 

# 평가 프롬프트 출처: MT-Bench 논문 https://arxiv.org/pdf/2306.05685.pdf (A. Prompt Templates Figure 5)

prompt = f"""[System]
Please act as an impartial judge and evaluate the quality of the responses provided by two
AI assistants to the user question displayed below. You should choose the assistant that
follows the user’s instructions and answers the user’s question better. Your evaluation
should consider factors such as the helpfulness, relevance, accuracy, depth, creativity,
and level of detail of their responses. Begin your evaluation by comparing the two
responses and provide a short explanation. Avoid any position biases and ensure that the
order in which the responses were presented does not influence your decision. Do not allow
the length of the responses to influence your evaluation. Do not favor certain names of
the assistants. Be as objective as possible. After providing your explanation, output your
final verdict by strictly following this format: "[[A]]" if assistant A is better, "[[B]]"
if assistant B is better, and "[[C]]" for a tie.

[User Question]
{question}

[The Start of Assistant A’s Answer]
{answer_a}
[The End of Assistant A’s Answer]

[The Start of Assistant B’s Answer]
{answer_b}
[The End of Assistant B’s Answer]"""

print(prompt)

 

태스크에 적합한 사람이 평가하는 것이 가장 이상적이지만, 현실적으로는 모델이 평가하는 방법도 비용과 속도 측면에서 충분히 활용될 수 있습니다. 특히, 코드 기반 평가처럼 비용과 속도 이슈가 없는 경우에는 이를 자주 사용하는 것이 권장됩니다. 최상의 결과를 얻기 위해서는 정량적 평가와 정성적 평가를 모두 수행하는 것이 이상적이며, 실서비스 관점에서는 최종적으로 사용자 피드백이 가장 중요한 지표로 작용합니다. 또한, 모델의 고도화 과정을 명확하고 객관적으로 관찰하기 위해서는 평가 기준을 명확히 설정하는 것이 필수적입니다.

728x90
반응형

'인공지능 > LLM 서비스 개발' 카테고리의 다른 글

Fast API  (0) 2024.12.02
Gradio  (0) 2024.11.29
프롬프트 엔지니어링  (1) 2024.11.28
파이썬과 몽고DB 연동  (0) 2024.11.22
MongoDb  (1) 2024.11.21

관련글 더보기