2023년 1월 17일 AIxBookathon 대회에 참여하게되었다.
인공지능 모델을 활용하여, 주어진 키워드를 주제로 수필을 작성
하는 대회이다.
작년에도 참여했다가 예선탈락했었는데, 이번 예선때는 문제 답지를 거의 광기로 적어서..^_^.. 붙은 것 같다.
예선합격부터 본선까지의 과정을 적어보려한다.
'우리가 안붙으면 도대체 누가 붙어'싶을 정도로 답안을 작성했지만,
막상 결과나올때 엄청떨렸다.
총 몇팀이 었는지는 기억안나는데, 사람은 몇 백명 됐던 거 같다.
그 중 15팀만이 본선에 진출하였다.
우리팀 이름은 작가님마감언제돼요?
이다.
붙어서 기분최고!😆
붙자마자 바로 데이터 수집에 들어갔다.
제공해주는 모델 내부를 수정하기 어려웠기에, 데이터 싸움이라는 생각이 들어 데이터를 왕창 수집하기로 하였다.
NLP는 데이터와 전처리 싸움이 아닌가..!
독후감 데이터(기본 제공) 2000-2022 신춘문예 수상작
남산백일장 수상작
글틴 수필
Brunch 수필
책사랑 주부수필 수상작
한국산문 작가협회 수필 공모전
보령_의사수필 수상작
동서식품 수필 수상작
수필.net
추천수필
신현식의 수필세상
문학광장
다르마칼리지
성균색
많이도 모았다..
사실 저거보다 많았는데 눈으로 보고 영 아닌 건 직접 걸렀다.
그리고 기본으로 제공하는 독후감도 있었는데, 위험 단어(종교, 정치, 성차별..)들을 포함하는 글들이 꽤 많아서 눈으로 직접보고 싹 다 걸렀더니, 20%도 안남았다.
(여담인데 이걸 그대로 학습에 넣은 팀들이 꽤 많아보였다. 모델이 뱉어낸 결과에 아슬아슬한 단어가 좀 눈에 띄었다.)
기본 제공 데이터 제외 총 15종류, 13,829개의 데이터를 수집하였다.
데이터를 수집하는 것 만큼 중요한 것이 바로 데이터 전처리이다.
- 중복, 결측 데이터 제거
- 데이터 정규화
- 맞춤법 검사
- 구어체 제거 및 종결어미 통일
- 혐오, 차별, 정치 등 관련 데이터 제거
KLUE
에서 사용한 전처리 기법을 사용하였으며, 추가로 인간 전처리(4번, 5번)도 아주 빡세게 했다.
팀원이 3명이었는데, 이 때 만큼은 팀원이 많았어도 좋겠다는 생각이 들었다.
3번 맞춤법 검사는 네이버에서 제공하는 py-hanspell을 사용하였다.
역시 네이버👍
그런데 py-hanspell 단점이 굉장히 오래 걸린다는 것이다..
그래서 python parallel을 사용하여 엄청나게 병렬병렬하게 돌렸다😁
드디어 본선이 시작되었다. 본선 전날까지도 모델보다는 데이터에 더 신경을 많이 쓴 것 같다.
수필을 작성할 주제 키워드가 발표되었다!
담대라니...
저번 주제들은 그래도 충분히 내용이 상상가능했는데, '담대'는 너무 막막했다..
하지만 우리가 누구인가..!
멋있어 보이는 주제를 만들어냈다!
다산 정약용 선생님의 철학을 인용하였다.
"아침에 햇살을 받는 곳이 저녁에 먼저 그늘지고, 일찍 꽃 피면, 지는 것도 빠르다."
정양용 선생님의 철학은 절망을 맞닥뜨려도, 좌절하지 않고, 받아들이는 법에 대하여 이야기하고 있다. 따라서 우리가 전하고자 하는 교훈은 다음과 같다.
✏️ 소란한 세상에서 담대하게 자신을 잃지 않는 법
: 두렵지만, 소신있고, 담대하게
를 주제로 소제목을 기승전결로 4개 잡아보았다.
1. 변화와 두려움 속의 나
2. 나에 대한 고찰과 깨달음
3. 꺠달음을 통해 생긴 유연한 소신
4. 빠르게 변화하는 현대 사회에서 내가 가져야 할 담대한 자세
소주제 별로 transfer learning을 진행하기 위하여 우리 주제에 맞는 데이터들을 선정하기로 하였다.
먼저 키워드를 선정하였다.
공통 키워드: 확신 | 장담 | 중심 | 소신 | 감히 | 믿음
소주제1: (시대 & 변화) | 두려움
소주제2: 자신 & (성찰 | 고찰)
소주제3: 소신 | 극복 | 유연
소주제4: 성공 | 자신감 | 소신 | 나
팀원이 만든 JSearch로 Query를 논리 연산자를 활용하여 데이터를 수집하였다.
JSearch는 문장 색인과 토큰 역색인을 활용한 자체 제작 데이터셋 구성 툴이다.
드디어 학습이 시작되었다!
사용한 모델은 SKT/kogpt2-base-v2
이다.
미리 수집해둔 모든 데이터로 1차적으로 진행하고,
브런치 사이트에서 주제와 관련된 공통 키워드로 뽑아낸 데이터들로 2차 fine-tuning을 진행하였다.
소주제 별로 구성해둔 데이터를 이용하여 transfer learning을 진행하였다.
결과적으로 4개의 소주제 모델을 생성하였다.
top-p 샘플링 방식을 사용하였고, 팀원(사실내가)이 만든 jiN-best 샘플링을 사용하였다.
TF-IDF와 Pororo similarity를 활용한 자체 제작 샘플링 툴이다.
저렇게 열심히 샘플링을 진행하고, 마지막엔 우리들 눈을 거쳐 총 13,539자의 수필을 만들어냈다.
다음은 모델이 만들어낸 문장 중 하나이다.
그렇게 되면 나만의 인생관이 정립되고, 그것이 나를 위한 길이 되고, 나아가 진정한 사람이 되는 길을 만들어 나갈 수도 있을거라 생각한다.
대회 며칠 전부터 잠을 제대로 못잤더니 팀원들 다들 제정신이 아니었다.
글자는 하나도 안 읽히고 모델은 이상한 말을 내뱉고..
prompt로 주는 문장도 굉장히 중요하다는 것을 알았다.
이래서 팀원구성에 문과 분들도 계신다는 것을 깨달았다.
모델을 아무리 잘 만들어도, 공대생들이 그 특유의 인문학적 감성을 따라가기가 힘들었다.🥲
그리고 1등으로 결과물을 제출했는데, 원래 공식 제출시간보다 1시간 일찍 제출해버려서 제출이 안 됐었다... 열심히 쉬다가 마감 1분 전에 발견해서 심장이 멎는 줄 알았다....
그래도 무사히 발표도 잘 마치고, 최종적으로 🏆장려상🏆을 받을 수 있었다.
보통 팀원들이 5명정도 됐는데, 3명이서 최고의 효율을 뽑아낸 것 같다.😋
팀원들도 너무 수고 많았고, 정말 죽이 척척잘맞는 최고의 팀플이었다.
그리고 넘 재밋었다.ㅎ
그리고 아마 여태까지 해커톤에 모니터를 들고오는 팀은 아무도 없었을 것이다...ㅋㅋ
모니터 덕분에 최고의 효율을 낼 수 있었을 지도..*
작가님마감언제돼요?
수고많았습니다!! 짱짱
저 후리스 아직도 애용중
정말 고생 많으셨네요 ! 멋져요 !!