Jump to content

작업이 잘 안될 때 점검해볼 만한 몇 가지


CLOVA Studio 관리자2

Recommended Posts

품질을 높일 수 있는 작은 차이

하이퍼클로바 스튜디오로 작업을 하다 보면 기대하던 결과가 나오지 않을 때가 있어요.

특히, 분류, 교정처럼 정답을 알 수 있는 작업의 경우 더욱 그렇죠.

"예제를 넣었는데도 왜 그럴까요?"

kermit.jpg.2a963c9691903e606e2b26832c9eede4.jpg

 

우선 Instruction이 적절했는지 점검해볼 필요가 있습니다.

Prompt는 선생님이 학생에게 알려주듯이 문법적인 오류나, 설명의 오류 없이 구체적이고 정확하게 작성을 하는 것이 좋습니다.

제가 하이퍼클로바를 다루면서 얻은 비결은 예제를 무조건 많이 넣어주기보다는

모델이 패턴을 파악할 수 있도록 알려주는 게 효과적이었다는 것입니다.

다음은 입력값을 다양한 특징으로 분류하는 작업입니다.

0a7056be-7b56-1b46-817b-de0ff53a1c6d.thumb.png.d3c3bf7a68101abb50e22111fc1666f2.png

▲ 돈까스 카레 (보통 맛)을 입력 후 실행하면, 메뉴명: 돈까스 카레, 맵기: 보통 맛으로 분류를 합니다.

그런데 S 사이즈라고도 출력을 했는데, 이건 입력값에 없는 정보죠.

 

 이 경우에 사이즈는 (없음)이라고 수정을 하여 모델에게 알려줍니다.

"너 이럴 땐 이렇게 해야 하는 거야"라고 알려주듯이 말이죠.

0a7056be-7b56-1b46-817b-de11336822b5.png.7cae9448abfc90f95638f15d38e33930.png

 

▼ 이제 잘 되는지 확인하기 위해 "돈까스 카레 (매운 맛)"이라고 작성합니다.

메뉴명과 맵기 분류를 잘하고, 사이즈 또한 (없음)으로 잘 표시하네요.

0a7056be-7b56-1b46-817b-de12df3b27f7.png.00bc4e1c6b1eb57442bf0392ceea7450.png

 

하나 더 해볼까요?

▼ "마라 라멘 전혀 안 매운맛"이라고 입력하니, 기대하던 결과대로 분류해 내었습니다.

0a7056be-7b56-1b46-817b-de14700629c5.png.4db41b5581c2dbedc869cd9a79950afe.png

 

다음 예제로 넘어가보겠습니다.

쇼핑 플랫폼에서 상품명들은 길고 복잡하게 만들어진 경우가 많아서, 

상품명을 한눈에 알기 쉽게 심플하게 교정할 필요성이 있을 수 있죠.

먼저 길고 복잡한 상품명과 그것을 교정한 예제를 넣고 돌리면, 대부분 잘되는 것을 확인했습니다.

0a7056be-7b56-1b46-817b-de27aff977d7.thumb.png.9277c870c38a95783bf6a2ae9b4a781f.png

▲ 그런데 여기 "순화고플러스 화고 무농약 표고버섯 녹각영지버섯진액 건강즙"이라는 상품이 있습니다.

이 상품은 표고버섯이 아니라, 건강즙이죠.

그런데 아무리 돌려도 "순화고플러스 표고버섯"이라고만 생성하더라고요.

Temperature를 조절하여도 결과는 달라지지 않았습니다.

 

도대체 어떤 상품이길래 교정을 못 하는 것일까?

상품명을 자세히 살펴보았습니다.

...무농약 표고버섯 + ...버섯진액 건강즙

수식을 하는 말과 수식을 받는 말 두 개가 동시에 나열하는 그런 특징을 가지고 있었습니다.

좀 까다로운 상품명입니다.

 

▼ "소스킹 이천 무농약 마늘 남도종 마늘액 소스"를 라고 비슷한 패턴으로 예제를 하나 추가해 보았습니다.

이걸 교정하면 "소스킹 마늘 소스"겠죠.

이제 결과가 어떻게 달라졌을까요?

"순화고플러스 표고버섯 엑기스"라고 교정을 해냅니다.

0a7056be-7b56-1b46-817b-de2860f47c3d.thumb.png.b2429d94911cc7dca0e59457155491ad.png

우리는 이것이 표고버섯이 아니라 '건강즙'이라는 걸 알 수 있지만,

AI는 판단하기 어려웠을 거예요.

원하는 결과가 나오지 않을 때는 예제를 다시 점검해보고 모델에게 정확히 가르쳐주세요.

한가지 팁을 더 알려드릴게요.

예제를 뒤에 나열식으로 열거하는 것보다는 설명과 예제를 어우러질 수 있도록 하는 방법이 효과적일 수도 있습니다.

 

아래 논문에서 4.3 Task specification by demonstration 챕터를 봐주세요.

Reynolds,Laria & McDonell, Kyle. Prompt Programming for Large Language Models: Beyond the Few-Shot Paradigm. (2021). https://arxiv.org/abs/2102.07350

 

▼ 길고 어려운 상품명을 이해하기 쉬운 상품명으로 교정합니다. 라는 설명을 예제들 앞에 추가했습니다.

비슷한 패턴의 예제를 넣지 않았는데도, 원하는 결과를 만들어냈습니다.

0a7056be-7b56-1b46-817b-df55c5cc2804.thumb.png.cd7476fcb3866783518b4d92e2c91ed1.png

 

아래는 영수증 메뉴명을 복구해보는 예제입니다.

0a7056be-7b56-1b46-817b-de1574092b74.thumb.png.fb346a31973376122f235db3968bd0a0.png

▲ "울릉도 오징어 파..."라는 메뉴가 있다고 칩시다.

이건 '파전'을 말하는 것일까요? 아니면 '파스타'를 말하는 것일까요?

이런 건 인간 두뇌로도 판단하기가 어렵습니다. 🤔

0a7056be-7b56-1b46-817b-e1a7d8c46715.jpg.8739f00cd55d0b95e9701e24090e9fde.jpg

▼ 식당명을 "사당 주막"이라고 넣어보았습니다.

"울릉도 오징어 파전"이라고 복구를 하네요.

0a7056be-7b56-1b46-817b-de18e079392c.png.33d2149bb796f19c968ba6f4bf579a65.png

▼ 이번엔 식당명을 "뽀모도로 파스타"라고 적어보았습니다.

"울릉도 오징어 파스타"라고 복구를 하네요.

0a7056be-7b56-1b46-817b-de1e66fa3db5.png.8ebbb327ad5511236be7ef1fdcc7c4a9.png

 

식당 이름이 메뉴를 판단하기에 최적의 데이터가 아닐 수도 있습니다.

어쨌든 중요한 건, 모델이 판단을 할 수 있도록 힌트를 주어야 한다는 것입니다.

이상, 작업이 잘 안될 때 점검해볼 만한 내용이었습니다.

이 작은 차이를 익혀보세요!

em_1.jpg.7cc0c5dde5568caf043caa06c6db1c14.jpg

링크 복사
다른 사이트에 공유하기

  • 2 weeks later...

]

안녕하세요, 리스트를 주면 그 리스트 내부에서 가장 유사한 음식을 선택하는 작업을 하고 싶은데 잘 안되네요.

괄호 안에서 선택하는 말을 잘 이해하지 못하는 걸까요?

스크린샷 2022-03-11 오후 5.26.20.png

링크 복사
다른 사이트에 공유하기

안녕하세요, 클로바 스튜디오 담당자입니다.

@김지수님, 말씀주신 작업에 대해서 저도 클로바 스튜디오에서 시도해보았습니다.

1. 괄호 안에 후보군을 넣는 것 보다는, 다른 줄로 구분하는 것이 예제가 좀 더 명확한거 같습니다.

▼ 이 경우 성능이 더 좋았습니다. Temperature는 0~0.15 사이로 하였습니다.

875778658_temp.thumb.png.534436eabeb229551a0557829535a966.png

▼ 재실행시 오답인 경우도 간혹 있었지만, 예제를 조금 더 추가하였더니, 아래와 같이 성공 수행하였습니다.

Top P는 1, Temperature는 0.13, Repetition penalty는 10으로 설정하였습니다.

1390917860_.thumb.png.24cd30141f59380d9d36250e45a1e74d.png

▼ '유사한 음식'이라는 정의가 좀 모호할 수도 있겠다는 생각이 들었습니다.

① 입력하신 예제를 보면 닭도리탕의 후보군 중에 '찜닭', '닭볶음탕'이 있었는데요.

국립국어원을 살펴보면 닭도리탕, 닭볶음탕은 동일한 음식, 또는 논란이 있는 어원으로 나옵니다.

매운맛을 기준으로 유사하다고 해야할까요? 또는 '닭'이라는 재료를 기준으로 유사하다고 해야할까요? 

② 건새우아욱국의 후보군을 보면 '새우볶음', '새우튀김', '아욱국'...이 존재하는데 , 유사한 음식을 뽑기가 애매합니다.

'새우'를 기준으로 보면 '새우볶음','새우튀김'이 선택되어야 할 것 같고, '아욱'을 기준으로 보면 '아욱국'이 선택되어야할 듯 합니다.

이를 아래와 같이 '재료'라는 필드를 두게 되면 성능이 좀 더 향상된 것을 정성적으로 확인하였습니다.

어떤 '재료'를 기준으로 뽑아달라고 모델에게 힌트를 주는 것이죠.

1008343507_.thumb.png.8f41892f8ec6d8c5ae8eefc6fb9b9032.png

 

위 작업들은 프롬프트를 수정해가면서 기대결과에 가장 근접한 프롬프트를 탐색하는 과정입니다.

일정 수준까지의 기대수준에 도달하면, 성능을 더욱 높일 수 있는 구현 방안에 대한 논의도 이어갈 수 있을 듯 합니다.

 

2. "영어 엔진을 사용할때 제시문을 영어/한글 둘 중 어느것으로 줘도 상관이 없나요?"에 대해 답변드립니다.

영어 엔진 사용 시 한글 지시문을 넣으면, 성능이 많이 떨어질 수 있습니다. 

 

감사합니다.

  • Like 1
링크 복사
다른 사이트에 공유하기

게시글 및 댓글을 작성하려면 로그인 해주세요.



로그인
×
×
  • Create New...