본문 바로가기

카테고리 없음

뛰어난 AI를 위해 반복해야 할 테스트

 

여러분 챗봇 많이 쓰시죠?

대표적인 초거대 챗봇 ChatGPT, 이제는 너무나도 많이 쓰고 계시는 것 같아요

요즘 쇼핑몰 앱 같은 것들 보면 대부분 챗봇을 이용하는데요

일반적인 서비스 앱보다 e커머스 앱이 챗봇 점유율이 엄청 높은 것 같더라구요..!

이 챗봇들의 역할은 보통 고객 상담, 반품, 배송 상담들을 대체하는 경우가 많았습니다.

뭐 여러 이유가 있겠지만

고객센터 직원 여러 명 고용해서 하나하나 응대하는 것보다

속도도 훨씬 빠르고 생각보다 정확해서 많이 쓰는 거겠죠?

간편한 듯 간편하지 않은(?) 문의사항들도 자연스럽게 대응할 수 있으니까요..!

구매확정 후 반품신청을 원한다는 고객이 생긴다면 어떨까요...

음....일단 저는 대응 못해도 챗봇은 뭐든 대응을 해주니까요....

그저 빛...

특히 민원이나 상담 관련 초기 대응은 챗봇이 최고더라구요

거대 언어 모델의 사용 의도 자체가 인간처럼 생각하고 대화할 수 있게 만들었으니까요..!

다만 뭐든지 완벽할 수는 없을 테니, 분명 천재 같아 보이는 챗봇이라고 해도 실수하는 부분이 분명히 있겠죠?

한 가지 재미있는 예시를 가지고 왔는데요,

"세종대왕 맥북 던짐 사건"이라고 검색하시면 기사가 하나 뜹니다.

세종대왕님께서 한글 문서 작성이 멈춰 분노하셔서 담당자와 맥북 프로를 던져버리신(...) 사건이라고 지피티씨가 설명하더라구요

이거 참 난처하네요....

아무튼 지피티씨도 이런 실수를 저지르시는데

지피티는 여러 챗봇 모델들의 친척 개념이라 다른 챗봇이라고 해도 당연히 위험도가 어느 정도 있겠죠??

여러 상황에서 언어 모델들은 확률적 방식으로 텍스트를 생성한다고 합니다.

즉, 주어진 입력에 대해 가장 그럴듯한 응답을 선택하는데, 이 과정에서 문맥에 맞지 않는 정보나 허구적인 내용을 생성할 가능성이 존재한다는 것이죠.

예를 들어, 사용자가 제공한 정보나 질문에 대해 모델이 과거에 학습한 데이터를 바탕으로 연관된 응답을 생성하다 보면, 실제 사실에 근거하지 않은 이야기나 허위 정보를 덧붙일 수 있다고 합니다..!

세종대왕 맥북 사유만 해도... 뭔가 멘트가 그럴싸 하긴 한데 절대 있을 수 없는 내용이잖아요...

아무튼...

그렇다면 챗봇 검증 로직은 대략적으로 어떻게 될까요?

무작정 테스트 케이스를 하나 만들어볼까요?

<TestCase1. 주제 파악력 및 항목 적절성>

나 : 주문 상태 알려줘

ChatBot : 네. 상품의 주문 상태를 알려드리겠습니다. 현재 상품은 "업체 출고 중"입니다.

해당 테스트케이스는 잘 동작했을까요?

맞을 수도 있고, 아닐 수도 있어요!

질문자가 주문한 상품이 한 가지일 경우나, 해당 질문 이전에 상품 번호 조회를 챗봇에게 요청했었다면 이는 챗봇이 올바른 답변을 내놓았다고 볼 수 있죠.

그렇지만 위 같은 과정이 없었다면? 주문번호 조회를 먼저 요청하는 게 기본 요구사항에 더 정확한 답변이었을 거예요.

이 질문 전에는 챗봇이 어떤 상품의 배송 정보를 조회했을지 예측할 수 없거든요!

챗봇의 앱 적응률(앱에서 결함 없이 잘 동작하는지)을 일반적인 매뉴얼 테스트로 판단하기에는 무리가 있어 보이지 않나요?

챗봇을 적용할 앱 주제에 맞게 강화 학습하면 이런 오류를 잡기가 더 힘든 부분도 있습니다.

어쨌는 챗봇은 물리적 오류가 나지 않으며, 출처 없는 자료를 내놓지는 않습니다.

그래서 기능적 결함을 찾기에는 굉장히 애매한 부분이 있죠.

그래서, 해당 답변이 결함인지 아닌지가 아닌, AI가 올바른 Prediction(에측)을 수행하였는지 판단해야 합니다. 이는 성능 검증에 더 가깝다고 볼 수 있어요.

이 AI 성능 검증은 '결함임' - '결함 아님'으로 갈리지 않을뿐더러, 보통 지표에 따른 점수로 표기합니다!

챗봇은 "반환값"(사용자가 질문하면 무조건 응답을 함)이 있기 때문에 해당 지표들을 "반환값"의 정확도로 측정하고, "반환값"과 예상 정답의 유사도를 비교하여 정확도 계산을 진행하게 되는 것이죠.

챗GPT 같은 초거대 AI는 훨씬 더 복잡한 로직으로 검증을 수행해야겠지만, 보통 AI 모델들은 빼놓을 수 없는 테스트 방법이죠!

테스트를 1000번 한다면, 해당 지표가 나온 개수를 취합하고 정확도를 계산할 수 있는 겁니다..!

- TP(True Positive) : 900번 예측

- FP(False Positive) : 10번 예측

- FN(False Negative) : 30번 예측

- TN(True Negative) : 60번 예측

예측값 지표에 따른 정확도 계산법

- 정밀도(Precision): 0.989 (98.9%)

- 재현율(Recall): 0.968 (96.8%)

- F1 스코어: 0.978 (97.8%)

위는 아주 대표적인 테스트 방식일 뿐이에요.

요즘엔 대부분의 AI가 강화학습(특정 주제에 더 강력한 성능을 보일 수 있게 AI를 튜닝함)을 하는데, 보편적인 지표만 사용하지 않고 융합하여 테스트해야 학습 데이터의 정확도를 더 올릴 수 있겠죠?

챗봇포함 기능을 출시한다고 가정했을 때, 좀 더 다양한 테스트를 시도해야 할 거예요.

질문에 오타나 문법 오류를 일부러 포함시키고 질문하였을 때 오타를 예상하여 올바를 답변을 내놓는지 확인하는 노이즈 입력 테스트, 모델의 강건성을 검증하기 위해 새로운 질문이나 생성되지 않은 데이터를 입력하여 모델의 응답 일관선을 평가하는 어댑티브 테스트,,,,

그마저도 아니면 유능한 LLM모델 API를 불러와서 GPT 기반 모델의 테스트를 도와주는 테스트 도구(OpenAI Eval 등)를 사용해서 테스트를 진행할 수도 있습니다..!

저는 AI는 입문보다 심화가 훨씬 더 어렵다고 생각해요.

AI를 사용하려고 도입하는 건 어렵지 않을지라도, 또 입맛에 맞게 학습시키는 건 많이 까다롭기도 하구요.

그래도 배워두면 어디든 활용할 수 있다고 생각합니다..!