23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
안녕하세요! 저희는 SKT AI Fellowship 5기 07번 과제를 맡게 된 ‘자연어쩔티비내리는호남선’ 팀 입니다 😁
이번 포스트에서는 8월 24일 진행되었던 중간발표 세션에서 발표했던 저희 팀의 연구 주제와 진행 상황에 대해 설명드리겠습니다!
문서에서 주제를 추출하는 과제는 중요하지만 주제의 변화를 추적하는 시도는 이제껏 시도된 적이 없었습니다.
예를 들어, 하나의 세션에서 LLM기반 인공지능과 대화할 때 첫 대화에 대한 주제만 반영되는 한계가 존재하고,
신문기사에서는 문단에 따라 논지가 바뀌는 경우가 생기며, 온라인 게시판은 한 게시판에 여러 주제의 게시글이 올라오는 경우가 대부분입니다.
이에, 저희는 LLM기반 인공지능 대화 주제를 종합한 ChatTopicNet을 구축하여 채팅, 신문기사, 온라인 게시판 등에서 나타나는 주제의 이동, 확대, 축소를 추적하는 과제를 수행하고자 합니다.
먼저, 대화형 데이터셋에 대한 개별 토픽 및 클러스터링 과정을 수행하였습니다.
한국어에 특화된 instruction dataset인 KULLM데이터셋을 수집하여 각 대화 데이터셋에 대한 토픽을 추출하였습니다.
다음으로 LLM을 통해 추출한 토픽에 대한 클러스터링을 진행하였고 구축한 데이터셋을 생성형 모델에 학습시켜 이후 데모에서 활용할 토픽 생성모델을 개발하였습니다.
ChatGPT API를 통해 추출한 토픽을 병합한 데이터셋은 위와 같습니다.
ChatGPT에 입력한 문자열은 query, 생성한 주제는 topic 태그를 통해 구분하였고, topic의 적절성을 평가하기 위해
요약과제에서 주로 사용하는 평가지표인 rouge와 임베딩 기반 유사도 점수 SimCSE를 계산하여 데이터셋에 추가하였습니다.
그리고, rouge 스코어와 임베딩 점수를 정성적으로 분석하여 최적의 조합을 찾아 기준에 미달되는 데이터는 제거하였습니다.
이에 정제된 데이터의 결과는 두 점수의 조합인 harmonic과 조합 결과 승인된 데이터인지 확인하는 confirm태그가 추가 되어있는 것을 확인하실 수 있습니다.
이후 confirm 태그에서 좋은 결과만을 가진 데이터를 클러스터링에 활용했습니다.
먼저, 생성 토픽들에 대해 더 좋은 임베딩 방법론을 탐색하기 위해 koSimCSE와 kodiffCSE를 사용하여 각 토픽을 768차원의 벡터로 변환했습니다.
클러스터링을 진행하는데 있어, 다차원의 데이터는 차원의 저주에 빠질 위험이 있습니다.
따라서 UMAP을 통해 차원축소를 진행한 뒤 함께 사용하였을 때 약 75%의 성능향상이 있다고 연구된 군집화 알고리즘인 HDBCSAN을 사용하여 클러스터링을 수행했습니다.
각 라이브러리의 하이퍼파라미터는 최적의 조합을 찾기 위해 실험을 진행했습니다. 군집평가 지표인 실루엣 계수를 활용하여, 기준점인 0.25미만의 데이터는 삭제했습니다.
KosimCSE와 KodiffCSE으로 임베딩한 벡터들에 대한 클러스터링을 진행했습니다.
위 과정에서 그리드서치를 통해 미달되는 군집과 데이터 수가 가장 적은 최적 조합을 찾아내었습니다.
그 결과 UMAP의 n_neighbors, distance, dim과, HDBSCAN에서는 군집간 최소거리에 대한 적절한 파라미터 값을 찾을 수 있었습니다.
저희의 과제는 보다 다양한 토픽들의 군집을 만들고, 일관된 토픽을 가진 군집을 만드는 것을 목적으로 합니다.
이러한 목적에서 KosimCSE보다 KodiffCSE로 임베딩하여 클러스터링을 진행한 결과가 총군집 수가 더 많고, 실루엣스코어 기준 미달 군집과 데이터 수가 적어 더욱 좋은 성능을 낸 것을 알 수 있었습니다.
이 단계에서는 앞서 생성한 토픽 클러스터에 대해 ChatGPT-4 API를 통해 상위 토픽 생성 및 클러스터 평가를 진행했습니다.
ChatGPT에 줄 Prompt는 MLM (Masked Language Modeling) 스타일로 구성했으며, 각 클러스터의 원소들을 제시하고,
이에 대한 상위 토픽과 상위 토픽 적합성 점수를 채워 넣는 형태으로 구성했습니다.
점수는 1 ~ 10점의 범위로, 10점은 클러스터 내의 텍스트들이 모두 유사성을 가진 경우, 7~9점은 클러스터 내의 70~90% 텍스트들이 서로 유사한 경우 등으로 설정했으며,
이러한 평가 기준도 Prompt에 포함시켰습니다.
그 결과 아래 그림과 같이, 토픽 적합성 점수가 높을 수록 ‘다양한 물품의 활용방법’과 같이 포괄적인 토픽을 가지고,
점수가 낮은 경우 ‘투자와 과학’과 같이 포괄적이지 않은 토픽으로 설정된 것을 관찰했습니다.
위 단계에서 저희는 비슷한 종류의 토픽들을 상위 토픽이라는 대표 단어로 나타내었습니다.
이후에는 개발과정에서 클러스터와 상위 토픽을 종합하여 토픽-상위 토픽으로 이루어진 간선을 만들어 그래프를 구축합니다.
정점에는 토픽들의 집합이, 간선에는 토픽-상위 토픽의 관계가 속합니다.
또한, 벡터 유사도에 기반한 유사 토픽 검색을 위해, 토픽을 적절한 텍스트 인코더에 넣어 새로운 단어 벡터 공간을 구축합니다.
실제 사용 시에는 자연어 대화나 글로부터 추출한 토픽을 텍스트 인코더를 사용해 동일한 벡터 공간에 사영시키고, 가장 유사한 토픽을 기준 토픽으로 활용하여 토픽 추적에 활용할 예정입니다.
다음으로 저희 팀이 개발한 서비스가 실제로 어떻게 활용될 수 있는지, 데모 프로그램을 제작하려고 합니다.
저희 프로그램은 실시간 대화나 문장 이상 단위의 주제 추적이 가능하므로, ChatGPT와 유사한 인터페이스의 데모 프로그램과 신문 기사 단위의 주제 추적 프로그램을 각각 예시로 보여드리겠습니다.
사용자가 질문을 입력하면 LLM을 통해 사용자 질문에 대한 응답을 생성합니다.
위 대화에 대해 토픽 생성모델이 최초 토픽을 생성한 뒤, 이후의 대화에서는 ChatTopicNet을 활용하여 변화하는 토픽의 이동, 병합, 축소를 추적해 나갈 것입니다.
본 예시는 최종 발표 때 Gradio나 Flask를 활용해서 실제로 시연할 예정입니다.
먼저 자신이 선택한 기사에 대해 개별 토픽을 제공합니다.
주제를 추적하는 부분에서는 토픽 생성모델을 통해 처음 선택한 기사의 주제를 보여준 뒤, 이후 선택한 기사에 대해서는 ChatTopicNet을 통해 토픽의 이동, 병합, 축소를 추적해 나갈 것입니다.
이 외의 경우에도, ChatTopicNet은 문서를 주제에 따라 세분화하여 코퍼스의 검색 시스템으로 활용할 수 있고,
기사나 발화 단위가 아닌, 문단 등의 다양한 단위에서의 실시간 주제 추적도 가능하므로 활용성이 무궁무진하다고 할 수 있습니다.
현재 토픽 추출에 사용된 데이터셋 수집과 클러스터링 및 상위토픽 추출을 완료했습니다.
앞으로는 구축한 클러스터를 종합하여 ChatTopicNet을 구축하고, 대화 주제 추적 알고리즘을 개발하는 것을 목표로 진행해나갈 예정입니다.
데모구현과 성능평가 또한 진행하려합니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.