한솔데코 시즌3 AI 경진대회: 2

MS·2025년 2월 22일

가설 1. Retriever는 성능에 큰 영향을 미칠 것이다

  • 현재 ko-sbert-nli, bge-m3, bge-m3(sentence search, lexical search 동일 가중 평균) 3가지 모델로 검색된 재발방지대책을 그대로 정답으로 낸 결과, 3모델 전부 소수점 두 번째 자리까지 똑같았다.
  • OOM 이슈로 colbert, reranker를 적용해보지는 않았지만 아마 이걸 적용한다해도 큰 점수 향상은 없을 것이라 생각된다.
  • 그렇다면, Retriever의 검색 문서 수를 조정해봐야 한다.

가설 2. 검색된 정답을 여러 개 보낼 수록 성능이 올라갈 것이다

  • ko-sbert-nli만 사용하여 검색된 정답을 연결해서 그대로 제출한 결과는 아래와 같다.
    top-1 : 0.428
    top-3 : 0.482
    top-5 : 0.484
    top-10 : 0.481
  • 결과는 놀라웠다. 단지, 검색 문서를 2개 늘리는 것만으로도 점수가 엄청 올랐다. 하지만, 5개, 10개로 늘린다해도 점수가 증가하지는 않았다.
  • 여기서 한가지 의문이 들었는데, top-10이면 10가지 대책을 그대로 이어붙인 것이기 때문에 똑같은 단어 포함, 정답 단어 포함, 적절하지 않은 단어가 포함되는 등 노이즈가 낄텐데도 top-3와 점수에 큰 차이는 없었다.
  • 그 원인을 찾기 위해서는 훈련 데이터를 직접 분석해봐야 한다.

가설 3. 인적사고, 작업프로세스 등과 같은 범주에 따라서 등장 빈도가 높은 단어가 있을 것이다

  • 일단 주어진 x 데이터 중 범주형 데이터의 분포를 살펴보았는데, 대부분의 날씨가 "맑음"이라던가, "공동주택"에서 대부분의 공사가 이루어졌다던가 분포의 편향성이 굉장히 심했다.

  • 그래서 상대적으로 분포가 고르면서 재발방지대책에 영향을 끼칠 만한 변수를 휴리스틱하게 인적사고, 작업프로세스 2가지로 선정하였다.

  • 결과는 그냥 "피식"

  • 훈련 데이터의 2/3에서 재발방지대책으로 "안전교육"이라는 단어가 사용되었다.

  • 이외에도 "안전관리", "안전사고", "사고사례" 단어가 빈번히 사용되었다.

  • 뭔가 실마리가 잡힌다.

  • 이 대회의 핵심은 "특정 x열의 특정 범주에서만 사용하는 특수한 키워드를 얼마나 잘 뽑아내고, 이 키워드를 재발방지대책에 녹여낼 수 있느냐" 아닐까?

  • 작업프로세스가 타설작업인 경우에 "콘크리트"라는 단어가 전체적인 빈도는 적지만, 다른 경우에 비해선 압도적으로 많이 쓰인다.

  • 인적사고가 넘어짐인 경우에도 "정리정돈"이라는 단어가 자주 쓰이는 것을 볼 수 있다.

어떻게 접근해야 하는가?

  • x 열 단위로 검색 해야 할 필요성이 있다. 일단, 재발방지대책과 관련있는 x열부터 추리는 게 중요할듯.
    예) 인적사고가 넘어짐인 경우 정리정돈, 이동통로, 특별안전교육, 위험요소 등의 단어나, 해당 단어를 사용한 문장을 가져온다
  • 단어 또는 문장을 가져올 때 주의할 점은 전체적으로 많이 사용되는 단어는 철저하게 배제해야 한다 (전체 단어 분포에서 상위 n개는 제거하는 식으로)
    예) 안전교육, 안전관리, 안전사고, 사고사례 등.. TF-IDF처럼 특정 문서에서만 자주 등장하는 단어만 가져오는 게 중요하다
  • 그리고 이렇게 가져온 단어나 문장이 중요하기 때문에 이것들을 꼭 사용하게끔 프롬프트 엔지니어링까지 해야 한다.
  • Test dataset으로 검색된 질문에 대한 x와 Text x에 대한 각 열의 값의 일치여부도 확인해보는 것도 성능 향상에 큰 도움이 될듯
profile
한 걸음씩 꾸준하게

0개의 댓글