unify : "uni"하게 하다.
magnify : "magn~"하게 하다.
nullify : "null" 하게 하다.
그럼 "wisdom"ify 는? 똑똑하게 하다? 현명하게 하다?
당신에게 지혜를 주겠노라.
연못에서 튀어나온 산신령이 내뱉을 것 같은 대사로 상징되는 "wisdomify"는 내가 참여하고 있는 프로젝트이다.
이 프로젝트가 무엇이냐고?
속담 역사전이라고 한다.
역사전? history exhibition? 아니, "역" 사전, 그러니까 "reverse dictionary"
사과라는 단어를 생각해보자. 사과를 사전에 검색한다면,
"박과의 한해살이 덩굴풀. 줄기는 덩굴손으로 다른 물건을 감고 올라간다. 잎...",
"자기의 잘못을 인정하고 용서를 빎." 등의 정의가 나올 것이다.
그렇다면, "뉴턴이 중력을 발견하게 해준 빨간 과일은?" 하고 질문했을 때 "사과" 라고 답을 주는 것은?
이것이 역사전이다.
이는 하나의 과학적 사실과, 그리고 이를 구상하고, 구현하고, 실험한 논문 덕에 시작된 프로젝트이다.
tip of the tongue
Tip of the tongue (also known as TOT or lethologica) is the phenomenon of failing to retrieve a
word or term from memory, combined with partial recall and the feeling that retrieval is imminent.
즉, 머리에 있고, 분명히 알고! 들으면 바로 아~ 할 그런 단어! 이 단어가 떠오르지 않는 현상이다.
anterior cingulate cortex 라는 부분이 tip of the tongue 의 상황에 놓였을 때 활성화 된다고 하는데(자세힌 모른다.), 그럼 이를 뇌를 본 따자고 제안됐던 인공 신경망에 대입한다면? reverse dictionary가 될 것이다.
tip of the tongue : https://en.wikipedia.org/wiki/Tip_of_the_tongue
이 프로젝트를 하자고 제안했던 스터디에서 만난 유빈님은 교육과 인공지능의 융합을 꿈꾸는 - 그러니까 인공지능을 가르친다는 게 아니라, 인공지능으로 교육의 가치를 구현하고 싶어하는- 멋진 분이다. 이런 과학적인 사실에 아이디어가 기반을 둔다면, 더 당당하게, 논리적으로 모델을 구성할 수 있을 것이라고 말한 그 날 난 너무 설레었다.
"내가 뭐라고?"
"내가 이런 짱 멋진 사람이랑 프로젝트를?"
"자연어 처리는 한 번도 안 해본 내가?"
이런 고민을 들은 그는 그에 대한 나의 인식을 저버리지 않고
"재밌게 할 수 있고, 주변에서 가장 적합한 사람이 용택님이라 생각했습니다. ㅎㅎ"
라고 답 주었다.
항상 유빈님을 볼 때마다 기억이 안 나서가 아니라, 조금 민망하다는 다른 이유로 tip of the tongue를 겪곤 하는데, 몰래 해보자면
"정말 이런 멋진 프로젝트에 절 껴줘서 고맙고, 늘 존경하고, 열씨미 하겠습니다 =^)"
주변에 멋진 사람들이 "어이 자네, 뭐 하나 같이 해보지 않겠는가?" 하고 데려가는 포지션이 돼버린 것 같아 자신 없지만, 따라가서 열심히 해보려 한다. 내가 보지 못 한 날 봐준 고마운 사람들.
BERT Based Reverse Dictionary
BERT for reverse dictionary : https://arxiv.org/abs/2009.14790
버트? 그거 완전 노랭이 파인애플 머리 엘모 친구 아니냐?
아니다.
BERT 는 "Bidirectional Encoder Representation from Transformer"라는 어떤 자연어 처리 모델의 약자이다.
"하, 논문까지 쓴 사람들이 유치하네. 그럼 어디 엘모도 있겠다?"
있다.
ELMo 는 "Embedding from Language Model"이다.
https://arxiv.org/pdf/1802.05365.pdf
사실 BERT의 경우 "Bidrectional"하냐는 말에 의문을 품는 사람들이 있다. 정확히 말하면 기존의 Bidirectional과는 다르긴 하지만.. 그래도 기존 모델은 왼쪽에서 오른 쪽으로, 오른 쪽에서 왼 쪽으로 밖에 순회하지 못 했다면 BERT는 양 쪽의 맥락을 모두 사용해 임베딩을 뽑아낼 수 있으니까. 하지만 저런 엄청나게 귀여운 논문 제목이 있다면, 그리고 한 시대를 풍미할 논문을 뽑아냈다면? 그런 작은 논란이라도 어떠랴. 나라도 못 참았을 것 같다. 개발자들은 어떤 면에서 겁나 유치한 것 같다 ㅋㅋ.
다시 본론으로 돌아와서, 간단히 요약하면 Masked Language Model을 사용해 속담의 sequence를 예측하는 작업이라 할 수 있다. 지금은 속담에 적용하고 있지만, 팀원들과, 다른 분들과 이야기 해보니 다양한 도메인에 적용될 수 있다는 생각이 들었다.
마침 우리 프로젝트는 게임 회사인 스마일게이트의 지원을 받고 있는데,
"과연 게임 회사에서 역사전을 어떻게 사용할 수 있을까요?"
"욕설 필터링에 쓸 수 있지 않을까요?ㅋㅋ 예를 들면 '^^ㅣ발'이라고 검색했을 때 '그 욕'을 뱉게 해주는 그런 사전을 만들면 욕설 필터링에 도움이 될 것 같아요"
"오 맞네요, 게임 상황을 넣어줘도 재밌을 것 같아요 ㅋㅋ"
"어떻게요?"
"예를 들면 롤에서 완전 밀리고 있을 때, 우리 팀이 혼자서 펜타킬을 따고 나왔을 때 저 욕은 상대방을 비하하는 게 아니라 정말 놀랐다는 의미의 칭찬이자 감탄사일 수 있으니까요, 게임 점수나 전후 맥락을 같이 넣어주면 억울하게 제재 당하는 사람이 줄지 않을까요 ㅋㅋ"
이런 대화도 했었는데, 참 재밌었다 ㅎㅎ
그래서, wisdomify가 뭐야?
빙빙 돌려 말해 미안합니다.
아무튼, 속담 역사전이라는 것을 만들고 있다.
현재는 데이터가 적고 모델의 개선이 많이 필요해 10개의 속담으로만 학습을 시켜 후보군이 미약하다.
이렇게 10개의 속담 중 하나에 어울리는 속담을 넣으면 가장 유사한 의미를 가지는 속담을 내뱉(어야 하)는 언어 모델이다.
현재는 아쉬운 성능을 보이지만, 이번 주에 제안된 여러 가지 실험들을 거치고 나면 유의미한 발전을 거둘 수 있을 것 같다.
wisdomify 깃허브 : https://github.com/wisdomify/wisdomify
테스트해보고 싶다면, 아래 페이지에 접속해 그럴싸한 문장을 입력해보면 된다.
사실 아직 거의 다 안 될 것이다. 발전하는 모습을 기대해주시면 감사하겠다!
wisdomify 데모 페이지 : https://issue-25-wisdomify-eubinecto.endpoint.ainize.ai/search
"사이드"프로젝트라는 이름과 다르게, 퇴사를 결심한 이유에는 여기에 더 집중하고 싶은 것도 있다.
부모님 몰래.. 하는 퇴사라 조금 긴장 되지만, 자신 있게 말할 수 있다. 이 프로젝트를 진행하며 배우고 고민하는 부분이 회사에서 하는 일보다는 나에게 100만배는 건설적일 것이라고.
본격적으로 시작한 지는 이제 3주인데, 그 사이에 참 배운 것이 많다.
"논문도 하나의 제안일 뿐이니 절대 신뢰하지 말자"라던가,
"내가 하고 싶은 일이 있어도 팀원과 align을 맞추고 여유가 날 때 하자",
"라이브러리가 시키는대로 틀을 만들고 나면 나머진 document따라서 빈칸 채우는 작업 뿐이다"와 같은 것들.
본격적인 모델 개선이 이루어지기 시작한 지금, 처음으로 연구라는 것을 시작한 기분이 들어 무척 기쁘다.
이런 기회를 준 유빈님, 하루종일 개발만 하는 것 같은 종윤님, 멋진 자리를 내어주고 훌륭한 동료들의 모임의 장을 마련해준 스마일게이트, 아무 것도 모르지만 정말 멋진 거 한다면서 치켜세워주는 친구들. 모두에게 고맙고 과분하다.
이런 벅차는 기분을 늘 느끼면서 일하고 싶다. 언젠가 나도 누군가를 그런 가슴 설레이는 프로젝트로 이끌 수 있기를.
댓글 영역