UNIST 랩요정들의 LG AI Hackathon 3위 이야기
지난 9월 1일부터 10월 9일 까지 진행된 LG 사이언스파크 주최 분자구조 이미지 SMILES 변환 AI 경진대회에서 UNIST 산업공학과 & 인공지능대학원 소속 랩요정들 팀이 547팀이 참여한 가운데 최종 3위 (Top 0.6%) 를 수상하였습니다. 본 페이지에서는 랩요정들 팀의 구성원들 이야기를 들어보기 위해 인터뷰를 진행하였습니다.
1. 랩요정들 자기 소개 부탁 드려요!
김예진 (UNIST 산업공학과 석사과정)
yejinkim@unist.ac.kr저는 산업공학과 대학원 석사과정 중인 김예진 입니다. 랩요정들 팀을 만들어서 이번 해커톤에 참여하게 되었습니다. 저는 데이터마이닝 연구실에서 이정혜 교수님 지도하에 의료인공지능과 연합학습(Federated Learning)에 대한 연구를 진행하고 있습니다. 특히 개인정보가 분산된 환경에서 그래프 기반의 표현학습 (Graph-based Representation Learning)을 활용한 알고리즘 개발에 큰 관심을 가지고 있습니다. 연구실 졸업 후 제 역량을 잘 활용하여 훌륭한 데이터 과학자가 되고 싶습니다.
김재호 (UNIST 인공지능대학원 석박사통합과정)
kjh3690@unist.ac.kr저는 인공지능대학원 석박사 통합과정에 재학 중인 김재호입니다. 산업에 있는 문제를 직접 해결해보고 싶다는 생각에 학부는 산업공학과 컴퓨터공학을 전공했습니다. 현재 이정혜 교수님 지도하에 의료인공지능과 차등정보보호(Differential Privacy) 기술에 대해 연구를 진행하고 있습니다. 연구실에서 폐암 진단용 인공지능 모델 학습 프로젝트를 진행해 본적이 있으며, 지금은 서울성모병원과 함께 백혈병 약물 추천 프로젝트를 맡아서 진행하고 있습니다.
양홍준 (UNIST 인공지능대학원 석사과정)
hj42@unist.ac.kr저는 인공지능대학원 석사과정에 재학 중인 양홍준입니다. 프로그래밍과 개발을 좋아해서 학부는 컴퓨터공학과를 나왔고, 현재 Learning Intelligent Machine 연구실에서 강화학습 프로젝트 팀의 리더를 맡고 있습니다. 멀티-암드 밴딧(Multi-armed Bandit) 문제처럼 다양한 상황에서 인공지능이 최적화된 의사결정을 내려야 하는 문제를 해결하는데 관심이 많습니다. 평소 Ray 같은 Scalable 기계학습 시스템을 이용하여 대용량 데이터에서 Deep Learning 모델을 분산 학습하는 방법들을 꾸준히 공부하고 있습니다. 연구실 졸업 후 Industry 에 진출하여 협업 잘 하는 기계학습 엔지니어가 되는 것이 꿈입니다.
저는 데이터마이닝 랩에서 연구를 진행하고 있는 임동철입니다. 현재 산업공학과에 재학 중이고 이정혜 교수님 지도 아래에서 인공지능을 활용한 순차적 데이터 분석(Sequential Data Analysis)과 그래프 표현 학습(Graph representation learning)에 관해 연구하고 있습니다. 현재 항만물류 물동량 분석을 위해 국가간 관계를 그래프로 표현하고, 이를 순차적인 데이터로 구성하여 물동량을 예측하는 프로젝트를 진행하고 있습니다. 졸업 후에는 진행한 연구를 실제 산업 및 시장에 적용해보고 싶습니다.
2. 분자구조 이미지 SMILES 변환 AI 경진대회란?
다들 수업 시간 때 한 번쯤은 분자구조에 대한 그림을 본 적이 있을 거라고 생각해요. 예를 들어 물 분자에는 수소 원자 2개, 산소 원자가 1개 이렇게 그림으로 나타내져 있는 걸 분자구조 이미지라고 하는데 해당 이미지를 H2O 라는 분자로 표현하는 걸 분자식이라고 합니다.
이렇게 분자식 말고도 다른 방식으로 표현하는 여러 가지 방법들이 있는데 그중에서도 많이 사용되는 방법들 중 하나가 바로 SMILES (Simplified Molecular Input Line Entry System)입니다. 기존의 분자식보다 컴퓨터에서 다루기 편한 표현 방법이라서 최근에 신약 연구나 약물 재창출(drug repositioning) 연구에서 자주 사용됩니다. 저희가 참여한 대회는 이렇게 분자구조 이미지를 보고 해당 이미지에 대응하는 SMILES 표현식을 잘 유추하는 인공지능 모델을 개발하는 게 목표였습니다.
오른쪽 그림과 같이 단일 분자구조에 대해 여러개의 SMILES 표현식이 존재합니다. 따라서 정답지의 표현식을 얼마나 정확히 예측했는지 평가하는 정확도(accuracy) 가 아닌, 모델이 예측한 SMILES 표현식과 정답지의 SMILES 표현식이 얼마나 유사한지 측정하는 Tanimoto similarity 를 사용해 모델의 성능을 평가했습니다. Tanimoto similarity 는 IoU (Intersection over Union) 와 동일한 개념으로, 두 표현식 사이의 교집합 크기를 합집합의 크기로 나눈 것으로 계산됩니다. 만일 두 집합이 동일하면 1의 값을 가지고, 공통 원소가 하나도 존재하지 않으면 0의 값을 지니게 됩니다.
실제 대회에서 테스트 데이터셋은 총 20,000 개의 분자구조 이미지로 이루어져 있으며, 각각의 분자 구조 이미지에 대응하는 SMILES 표현식을 예측하고, 예측된 표현식과 정답 표현식의 Tanimoto similarity 를 통해 모델의 예측력을 평가하였습니다.
3. 챌린지 참가 계기와 목표
(Q1) 다들 어떤 계기로 대회에 참가하게 됐나요?
예진: 올해 여름 연구실에서 제가 맡아서 진행했던 프로젝트 중 하나가 혼합 가스 시료에 사용된 단일 가스 종류를 예측하는 프로젝트였습니다. 해당 프로젝트를 진행하기에 앞서 여러 논문들을 읽었는데, 그때 제 관심을 끌었던 논문이 바로 분자 화합물 데이터를 통한 냄새 예측에 관한 것이었습니다. 분자 화합물을 그래프로 표현한 뒤, 그래프 기반의 학습 모델인 Graph Convolutional Network 을 통해 본 화합물의 물성을 예측한다는 것이 무척이나 흥미로워 꼭 한번 도전해보고 싶었으나, 당시에는 학습 시킬 데이터를 구하는 것이 쉽지 않아 실제로 구현을 해보지 못해 무척이나 아쉬웠습니다. 그런데 때 마침, 분자구조 데이터를 활용하는 이번 해커톤을 알게 되었습니다. 이번 해커톤의 목표 자체가 분자의 물성을 예측하는 것은 아니었지만, 분자 구조 이미지를 이용한다는 것 자체만으로 도전을 해보고 싶다는 마음을 불러일으켰습니다. 이전에는 한 번도 해커톤에 참여해본 적이 없던 터라 여러 걱정들이 앞섰으나, 그런 걱정들 보다도 평소 관심 있던 주제에 도전한다는 설렘이 커 당장에 뜻이 맞는 친구들을 모아 본격적으로 해커톤에 참여하였습니다!
홍준: 저는 예진 누나의 권유를 통해 해당 대회를 알게 되었습니다. 평소 다양한 기계학습 문제 및 해결방법에 관심이 많았는데. 해당 대회에서, 제가 경험해보지 못한 분야의 문제를 마주한다는 부분이 매력적이었습니다. 이번 대회는 바로 옆 이정혜 교수님 데이터 마이닝 연구실의 학생들과 협업하게 되었는데, 저희 연구실 생활을 하며 배웠던 Collaborative Engineering 을 새로운 사람들과 실현해 보고 싶었습니다. 평소 서로의 연구주제나, 방법론에 관련한 이야기를 나누었기 때문에 실제로 협업을 한다면 각자가 가진 장점이 시너지가 되어 좋은 결과를 이끌 수 있을 것이라는 믿음이 있었습니다. 마지막으로, 해당 해커톤의 주제가 인공지능 대학원의 수업 시간에 배운 모든 기계학습 방법론을 적절하게 사용해야 풀 수 있는 문제라고 판단했습니다. 그래서 실제 기업에서 사용하는 데이터에 배운 지식들을 잘 적용해서 문제를 해결해보고 싶은 마음이 컸습니다.
재호: SMILES 를 처음 알게 된 건 올해 초입니다. UNIST 에서 미국 UC 버클리대학교에서 진행하는 창업캠프를 보내줬었는데 이때 저희 팀에서 낸 아이디어가 약물재창출 관련 내용이었습니다. 당시 자료조사를 하면서 SMILES 에 대해서 처음 알게 됐고 이번에 관련 대회가 올라왔다고 해서 관심을 가지게 됐습니다. 또한 기존에는 시퀀스 데이터를 다뤄본 적이 없었는데 해당 대회를 통해서 경험해보고자 했습니다.
동철: 이전에 동면을 유도하는 물질을 활용하여 심정지 상황에서 골든타임을 확장하는 프로젝트를 진행한 적이 있었습니다. 프로젝트 실현을 위한 가장 핵심적인 일은 3-아이오도타이로나민이라는 화합물의 대량 생산이었습니다. 여러 한계로 인해 프로젝트는 계속할 수 없었지만 저는 기계학습을 통해서 이러한 문제를 해결해 볼 수 있지 않을까 지속적으로 고민하고 있었습니다. 그러던 중 인공지능을 활용하여 분자구조 이미지를 식별하는 이번 대회를 알게 되었고 그동안 고민했던 문제를 해결할 수 있는 단서를 얻을 수 있을 것이라는 기대감에 대회를 참가하게 되었습니다. 또한 UNIST에서 연구 중인 훌륭한 연구자분들과 함께 협업을 할 수 있는 좋은 기회라고 생각이 들었습니다. 대회를 참여하면서 이미지 분석에 대해 많이 배울 수 있고, 그동안 배운 기계학습 방법론을 실제 문제에 적용해보고 저의 강점을 통해 팀에 기여하고자 하는 기대감도 있었습니다. 실제로 대회를 진행하면서 유능한 연구자분들과 함께 하면서 제가 기대했던 것 이상으로 더 많은 부분을 배울 수 있는 좋은 기회가 되었습니다.
(Q2) 대회에서 이루고자 했던 목표가 있다면?
예진: (팀을 꾸린 장본인으로서…) 이번 대회에서 가장 우선순위를 두었던 목표는 한 달여간의 대회 기간 동안 다 함께 즐겁게 임하는 것이었습니다. 리더보드 상위권에 랭크되어 있는 팀들 중에 랩요정들 팀이 총 4명의 팀원으로 구성되어 가장 많은 인원을 보유한 팀이었는데요, 사실 저희도 이 네 명의 조합으로 팀을 꾸려본 적은 처음이었습니다. 심지어 대회 초반에는 서로 잘 몰라 어색한 친구들도 있었습니다 ㅎㅎ 상황이 이렇다 보니 협업에 대한 걱정이 좀 되기도 하였는데 정말 걱정이 무색하게 저희 모두 ‘무사히’ 를 넘어서 ‘즐겁게’ 해커톤을 마무리하였습니다. 저희 랩 요정들 팀은 철저히 역할 분담을 하면서도 중요한 의사 결정은 다 같이 모여 반드시 디스커션을 하는 과정을 거쳤는데, 각자의 역할을 게을리하지 않고 서로를 존중하는 태도를 잃지 않은 덕에 좋았던 분위기도 끝까지 유지하고 더불어 좋은 성과도 얻게 된 것 같습니다. 아직은 어설프고 배워나가야 할 것이 많은 네 명이 모여 이렇게 재밌고 즐겁게 해커톤을 마무리하였다는 것이 이번 대회에서 3등을 수상한 것만큼이나 뜻깊게 느껴집니다. 애초 목표로 삼았던 다 함께 즐겁게 참여하는 것도 이루고 수상의 영광도 누리게 되었으니 이번 해커톤 목표는 톡톡히 이루었다고 봐도 좋을 것 같습니다! ㅎㅎ (아직도 첫 제출 후, 일등을 찍고 넷이 얼싸안고 기뻐하던 모습이 생생합니다 ㅜㅜ)
재호: 두 가지 목표가 있었던 것 같아요. 첫 번째는 제가 하고 있는 공부와 연구에 도움이 되도록 모델을 공부해보고 이해해보자였습니다. 강의자료로만 공부해왔던 Recurrent Neural Network이나 Long Short-Term Memory (LSTM)이 실제로 어떻게 쓰이고 해당 모델에 들어가는 데이터 셋은 어떤 상태로 준비돼야 하는지 이런 테크니컬 한 부분을 알아가고 싶었습니다. 이번 대회를 통해 시퀀스 관련 모델을 만져볼 수 있었고 생각하지도 못했던 어텐션 모델까지 직접 짜보고 이해할 수 있는 시간을 가질 수 있어 좋았던 것 같습니다. 두 번째는 팀원끼리의 협업 능력 향상입니다. 사실 이런 리더보드 대회는 팀원들끼리의 업무 분배와 협업하는 능력이 중요합니다. 대회를 통해 협업하는 방법을 배우고 효율적으로 대회에 참여하는 방법을 배울 수 있을 거라 생각했고, 실제로도 Git 과 Notion을 사용하면서 이런 부분에 대한 이해도가 커진 것 같습니다.
동철 : 새로운 분야에 대한 도전하고 거기에서 마주하는 한계를 극복하는 것을 좋아하는데 이번 대회에서 많이 다뤄보지 않은 이미지 데이터 분석에 도전해보고 싶었습니다. 대회를 진행할 때 복잡한 분자구조에도 강건한 모델을 만들고 일반화(Generalization) 성능을 향상시키기 위해서 더 많은 데이터를 학습하고자 했는데 데이터가 대용량이어서 처리하는데 많은 시간이 소요되어 분석하는데 어려움이 있었습니다. 연산 비용을 줄이기 위해 데이터의 분포를 고려하여 샘플링하고 병렬 처리로 데이터를 생성하였습니다. 중간중간 어려움이 있었지만 함께하는 분들과 잘 논의하고 해결하며 이미지 데이터 분석에 대한 도전이라는 목표를 잘 마친 것 같습니다. 또 다른 목표 중에 하나는 UNIST 와 연구실의 우수한 데이터분석 역량을 알리는 것이었습니다. 좋은 결과를 거두어 위의 목표에 조금이라도 공헌할 수 있어서 기쁘게 생각합니다
홍준: 첫 번째 목표는 무엇보다도 주어진 문제에 대한 해결 방법을 저희 팀이 제시하는 것이었습니다. 수업 시간에 머리로만 익힌 딥러닝 방법들을 적극적으로 구현해보고 성능을 테스트하는 데 있어 많은 실험들을 수행해봤습니다. 직접 구현한 모델로 처음 제출에서 1등을 했던 순간에는 너무나 뿌듯했습니다.
두 번째 목표는 과정에 관한 것입니다. 저 혼자 진행하는 프로젝트가 아닌 만큼 다른 사람들과 효과적으로 소통하면서 프로젝트를 진행하고 싶었습니다. 평소 연구실에서 사용하던 Notion 이나 Git 과 같은 협업 툴을 사용해서 프로젝트를 진행해 볼 좋은 기회라고 생각했고, 팀원끼리 정한 규칙에 맞추어 각자의 진행사항을 최대한 기록하며 프로젝트를 진행하도록 조율하였습니다. 결과적으로 커뮤니케이션 비용을 줄이고 팀원 각자의 역할을 한눈에 보며 프로젝트를 진행하게 되어 서로 효율적으로 일을 할 수 있지 않았나 생각됩니다. 최종 3위라는 가시적인 결과가 남길 수 있게 되어서 매우 뿌듯하지만, 개인적으로 이루고자 했던 두 가지 목표를 이루게 되어 더욱 뜻깊은 해커톤이었다고 생각합니다. 추가로 깔끔하게 정리된 Git repository 와 저희 팀의 자취가 담긴 Notion 페이지를 볼 때마다 너무 뿌듯합니다!
4. 랩요정들이 사용한 방법은 무엇인가요?
데이터 생성 및 샘플링
기계학습에 있어 적절한 데이터 사용은 무척 중요합니다. 저희 랩요정들은 모델의 일반화 성능을 향상시키면서도 효율적으로 모델을 학습 시킬 수 있도록 데이터를 마련하는 단계부터 많은 공을 들였습니다. 첫 번째 단계로 기존에 주어진 데이터보다 더욱 긴 표현식의 데이터를 생성하였습니다. 대회에서 제공한 학습 데이터에는 표현식의 길이가 70자를 넘어가는 데이터는 포함되지 않았고, 학습 데이터만으로는 더욱 길고 복잡한 표현식을 포함하는 테스트 데이터를 제대로 맞추는 것이 어렵다고 판단했습니다. 이에 Pubchem 에서 제공하는 다양한 길이의 SMILES 데이터를 활용하여 학습을 위한 300 x 300 크기의 분자구조 이미지를 추가적으로 1억개 정도 생성하였습니다. 데이터의 분포를 확인한 결과, 표현식의 길이가 100 이하인 데이터의 비중은 약 95% (106,595,711개) 였습니다. 이는 대다수의 데이터를 커버하는 수준이라 판단했고, 최종적으로는 길이가 100 이하인 데이터만을 집중해서 생성하였습니다.
한정적인 서버와 시간의 제약으로 효율적으로 데이터를 생성하는 것이 필수적이었으며, 이를 위해 연구실에서 (주로 학회 데드라인 직전에) 사용했던 방법으로 전체 데이터를 서버의 가용 코어 개수에 맞추어 여러 개의 그룹으로 분할한 뒤 병렬 처리를 통해 가용 코어를 동시에 돌려 데이터를 생성하였습니다.
해당 코드는 쉘 스크립트를 통해 여러 개의 파이썬 스크립트를 동시에 실행하는 멀티프로세싱 방식으로 구현하였습니다. 파이썬의 멀티프로세스나 멀티스레드 라이브러리 대신 이와 같은 방식을 선택한 이유는 단순 반복에 해당하는 작업을 구현하는 것에 있어 해당 방식이 병렬 처리를 더욱 손쉽게 다룰 수 있기 때문입니다. 더불어 저희는 앞서 나눈 각각의 그룹대로 데이터 생성이 가능하도록 파이썬 라이브러리인 click 을 이용하였습니다. 이를 통해 파이썬 스크립트 실행 옵션을 간단히 변경하는 것이 가능하여 쉽고 간편하게 그룹별 데이터 생성을 할 수 있었습니다.
학습 데이터 생성에 이은 두번째 단계는 데이터 샘플링 단계였습니다. 앞서 길이가 100 이하인 데이터만을 생성하였다 하더라도 여전히 많은 양의 데이터였기에 모두 학습에 사용하는 것은 불가능하였습니다. 따라서 균등분포(uniform distribution)를 따르도록 각 표현식 길이 별로 35,000개의 데이터를 랜덤 샘플링 하는 것으로 최종 결정하였습니다. 추후 실제 학습에 사용될 데이터는 학습 시간을 고려하여 앞선 분포로부터 다시 한번 랜덤 샘플링을 진행하였습니다. 그 결과로 대회에서 제공받은 데이터셋과 위와 같은 방식으로 생성된 데이터셋 2개를 모델 학습에 사용하였습니다.
데이터 전처리
일반적인 표현식 모델에 맞춰 모델에 바로 들어갈 수 있도록 데이터를 전처리 시켰습니다. 먼저 이미지넷에서 사전 학습된(pre-trained) 모델을 사용하고자 이미지넷 세팅에 맞게 이미지의 리사이즈와 정규화를 진행했습니다. 여기서 주의를 해야 할 점이 어떤 라이브러리를 이용해 리사이즈를 진행하느냐에 따라 데이터의 값이 바뀐다는 점입니다. 특정 라이브러리의 경우 리사이즈를 진행하면 데이터의 값이 0과 1사이로 바뀌어서 나오는 경우가 있었습니다 (대회 후반부에 직접 생성한 데이터를 이용해 학습하고자 했는데 해당 문제를 늦게 찾아내 애를 먹은 기억이 있습니다). 표현식의 경우 SMILES 데이터셋에서 나올만한 Token 들을 모두 고려해서 Token 딕셔너리를 구성했습니다. 이후 이미지 파일은 hdf5 파일로, token 파일들은 json 파일로 저장을 해 학습과정에서 바로 불러올 수 있게끔 준비했습니다.
모델 학습
모델로는 이미지 캡셔닝 방법 중 하나인 Show, Attend and Tell (ICML 2015) 방법을 사용했습니다. 이미지 캡셔닝이란 어떤 이미지를 보고 해당 이미지를 설명할 수 있는 문장을 만들어내는 방법입니다. 예를 들어 인공지능이 어떤 이미지를 보고 "강아지가 공원에서 뛰어놀고 있습니다" 라고 설명할 수 있는 것처럼 저희도 분자구조 이미지를 가지고 해당분자구조에 대응하는 문장을 만들어내고자 했습니다.
저희 모델의 구조는 크게 세 파트로 나뉩니다. 이미지를 인식하고 해당 이미지에서 필요한 특성(feature)들을 뽑아내는 Encoder 파트, 학습하는 과정에서 이미지의 어떤 부분을 집중해서 봐야 할지 알려주는 Attention 파트, 그리고 Encoder 와 Attention에서 알려준 정보를 가지고 알맞은 Token 을 순차적으로 내뱉는 Decoder 부분이 있습니다. 아래 그림은 모델의 전체 구조를 보여줍니다. 각 Decoder에서 LSTM cell 은 token 벡터를 출력합니다. 저희는 예측한 token 벡터와 정답 레이블의 원-핫(one-hot) 벡터 사이의 Cross-Entropy 손실함수를 사용하여 모델을 학습했습니다. Tesla V100 GPU 3유닛을 사용하였고, 대회에서 제공한 700,000 개의 학습 데이터셋을 기준으로, 1 에폭당 2시간이 소요되었습니다. 학습을 진행하면서 10~12 에폭 사이 동안 과적합(overfitting)이 발생하여 검증 데이터셋을 활용해 early stopping 을 적용하였습니다. 기타 Hyperparameter 등은 저희가 공개한 Git repository 를 참고하면 자세히 알 수 있습니다.
Encoder Network
Encoder 네트워크는 256 x 256 사이즈의 RGB 이미지를 입력으로 받아서 14 x 14 크기의 2048 채널을 가지는 이미지로 인코딩합니다. 각각의 encoded 이미지는 원본 이미지를 표현할 수 있는 유용한 feature를 담고 있다고 볼 수 있습니다. 네트워크 구조를 어떻게 구성하느냐에 따라 encoder의 성능이 차이가 납니다. 저희는 새로운 네트워크 구조를 제시하기 보다는 이미지넷 분류 문제에서 좋은 성능을 보였던 모델을 사용했고, 해당 네트워크를 계속 변경해 보면서 성능을 향상시켰습니다. Top-1 error 와 Top-5 error를 기준으로 EfficientNet-B0, ResNeXt-101-32x8d, WideResNet-101-2, ResNet-152 네개의 모델을 선택하였습니다. 처음에는 EfficientNet 계열의 모델들을 사용했는데 생각보다 성능이 잘 안 나와서 ResNet 계열 모델 위주로 학습을 진행했습니다. 아무래도 이미지넷에서 학습된 파라미터를 사용하다 보니 분자구조 이미지에 알맞은 정보들을 잡아내지 못할 거라 생각했습니다. 기존에 학습이 된 레이어를 바탕으로 분자구조 이미지를 추가로 학습시켜 Fine-Tuning 을 하였습니다. Fine-tuning은 모델의 전체 레이어에서 앞단의 5개의 레이어를 제외한 네트워크의 파라미터를 업데이트하여 이루어졌습니다.
Attention Network
기존의 Show and Tell (CVPR 2015) 모델과 Show, Attend and Tell 모델의 가장 큰 차이점은 Attention 네트워크의 존재입니다. Attention 은 Encoder 자체가 이미지의 특정 부분에 더 집중을 할 수 있게 도와줍니다. 처음에 언급했던 “강아지가 공원에서 뛰어놀고 있습니다" 라는 예시를 가지고 설명을 하자면 만약 t 시점에서 강아지라는 단어를 예측해야 한다면 Attention 네트워크는 이미지에서 강아지가 있는 부분에 집중할 수 있도록 하는 가중치를 학습할 것입니다. 어떻게 보면 분자구조 이미지는 규칙이 담겨있는 이미지입니다. 원소가 있고 각 원소마다 연결되어 있는 결합 구조를 순차적으로 풀어나가야 하나의 SMILES 표현식을 만들 수 있습니다. 이에 저희는 매 시점마다 Encoder 가 집중을 해야 하는 부분이 달라야 한다고 생각했고 Attention 네트워크가 이 문제를 해결해 줄 수 있다고 생각했습니다.
Attention 네트워크에서는 두 개의 입력을 받습니다. 하나는 Encoder 에서 나온 이미지 feature 벡터를 받고 다른 하나는 Decoder 의 hidden 벡터를 받습니다. 해당 벡터들을 미리 설정한 Attention 차원에 맞춰주고 두 개의 벡터들을 서로 합쳐주는 작업을 진행합니다. 이후 이미지의 크기에 맞춰 다시 한번 벡터들을 줄여주는 작업을 하고 소프트맥스 레이어를 적용하여 각 token 마다 이미지의 어떤 부분에 집중을 해서 봐야 할지 학습을 하게 됩니다.
Decoder Network
Decoder 네트워크는 인코딩된 이미지에 Attention 네트워크의 가중치가 곱해진 벡터, 그리고 Decoder의 이전 Hidden state를 입력으로 받아, 다음 Hidden state를 출력으로 반환합니다. 출력된 Hidden state는 fully connected layer를 거쳐 token에 대한 확률 값으로 표현됩니다. Decoder 네트워크는 LSTM cell로 구성을 했습니다. SMILES 특성상 괄호가 열리면 뒤에서는 괄호가 닫혀야 하는데 이러한 장기적인 패턴을 고려하기 위해 LSTM cell이 적합하다고 판단을 했습니다.
Ensemble 방법
대부분의 리더보드 대회와 마찬가지로 저희는 대회 후반부부터 어떻게 하면 모델을 앙상블 시킬 수 있을까? 고민하기 시작했습니다. 다만 문제가 있었다면 일반적인 분류나 회귀 문제와는 다르게 이번 대회는 하나의 문장을 예측하는 문제였고 이에 적절한 앙상블 방법을 생각하기 어려웠습니다. 각 모델마다 서로 다른 문장을 뱉어내고 해당 문장의 길이도 모델마다 일치를 하지 않아 어떻게 하면 앙상블을 해볼까 고민하던 중 데이터마이닝 랩의 김경빈 연구원이 "모델 페어 기반으로 앙상블을 시도해볼 수 있지 않을까?" 아이디어를 주셔서 이에 착안하여 구현해보았습니다. 위의 그림을 토대로 설명하면,
모델 1, 2, 3 이 각각의 결과 1, 2, 3을 예측합니다.
이때 유사도를 비교하기 위해 각 결과들의 페어를 만들어주고, 각 페어마다 유사도를 측정합니다.
유사도가 100%일 경우: 두 모델의 예측값을 사용합니다.
유사도가 일치하지 않는 경우: 유사도가 가장 높은 페어에 속해있는 모델 순서대로 높은 점수를 부여합니다. 모델에 부여된 점수를 합산하여, 누적 점수가 가장 높은 모델의 결과를 선택합니다.
하나의 데이터에 대해서 서로 다른 모델들이 내놓은 예측치가 비슷한 유사도를 보이면 어느 정도 agreement 가 있는 게 아닐까라는 생각을 가졌습니다. 모델 구조의 설명을 위해 예시에서는 3개의 모델만 나타내었지만 저희는 앞서 학습한 8개의 단일 모델 중에서 성능이 가장 좋았던 5개의 모델을 활용하여 앙상블 모델을 구성하였습니다. 실제로 해당 앙상블 방법을 적용하니 단일 모델 최고 성능 97.2 점에서 앙상블 모델 99.6점까지 올릴 수 있었습니다.
GPU 멀티프로세싱
앙상블 기법을 사용하면 단일 모델을 사용했을 때 보다 높은 정확도를 얻을 수 있지만, 하나의 데이터 샘플에 대해 연산을 여러번 하기 때문에 결과 도출에 소요되는 시간이 증가하게 됩니다. 저희는 GPU 병렬처리 연산을 통해 위 문제점을 해결하였고, 1개의 데이터 샘플을 예측하는데 소요되는 시간을 0.4102초에서 0.1992초로 두 배 가까이 줄일 수 있었습니다. 평소 랩에서 사용하는 Ray (USENIX 2018) 라이브러리를 통해 GPU 병렬처리를 하였습니다.
Ray를 사용하기 위해서는 우선 병렬처리할 함수를 Ray Decorator로 wrapping 합니다. 그리고 해당 함수에 할당할 리소스 양을 정해줍니다. 저희는 앙상블을 위해 다섯 개의 모델을 하나의 GPU에서 병렬처리할 수 있도록 GPU의 개수를 0.2로 설정하였습니다. 그런 다음 ray.get 함수를 사용해서 해당 클래스에서 사용되는 함수를 remote를 통해 호출하면 GPU를 병렬처리할 수 있습니다. 저희는 예측 결과만 반환하도록 해당 함수를 설계하였기 때문에, 리스트 안에 예측 결과를 저장하도록 하였습니다.
5. 랩요정들의 Lab 을 소개해주세요!
Data Mining Lab (지도교수: 이정혜 교수님)
홈페이지: http://dm.unist.ac.kr/UNIST 산업공학과 & 인공지능대학원의 Data Mining 연구실에서는 개인정보보호가 가능한 기계 학습 (Privacy Preserving Machine Learning)과 연합 학습(Federated Learning)에 관련된 인공지능 이론 연구를 진행하고 있습니다. Data Mining 연구실에서는 민감한 개인 정보가 담긴 분산 데이터를 개인 정보 유출없이 활용 가능한 방법을 연구 중이며, 이러한 데이터를 다루기 위해 개인정보보호 및 보안 기술 등을 접목한 학습 방법에 대한 연구 또한 진행 중에 있습니다. 그리고 최근 2년 이내 10편 이상의 SCI급 논문이 게재(그 중 7편이 상위 10% 이내의 저널) 되는 등 그 공헌을 인정받고 있습니다.
특히나 저희 연구실은 딥러닝 기반의 표현 학습(Deep Learning-based Representation Learning)을 활용하여 의료, 제조 그리고 항만 분야에서 AI 응용 연구를 진행하고 있으며 이러한 다양한 산업 분야에서 가치 창출을 이끌어 내고자 합니다.
(AI + Natural Language Processing) Word2vec-based latent semantic analysis (W2V-LSA) for topic modeling: A study on blockchain technology trend analysis (Expert systems with applications 2020)
(AI + Healthcare) An efficient multivariate feature ranking method for gene selection in high-dimensional microarray data (Expert systems with applications 2020)
(Privacy Preserving Machine Learning) Secure and Differentially Private Logistic Regression for Horizontally Distributed Data (IEEE transactions on information forensics and security 2019)
(Federated Learning) Privacy-preserving patient similarity learning in a federated environment: development and analysis (JMIR medical informatics 2018)
(Federated Learning) Privacy-Preserving Predictive Modeling: Harmonization of Contextual Embeddings From Different Sources (JMIR medical informatics 2018)
Learning Intelligent Machine Lab (지도교수: 임성빈 교수님)
홈페이지: https://sites.google.com/view/sungbinUNIST 인공지능대학원의 LIM 연구실에서는 강화학습(Reinforcement Learning) 과 확률적 최적화(Stochastic Optimization) 알고리즘과 관련된 인공지능/기계학습 이론 연구를 진행하고 있습니다. LIM 연구실에서는 불확실성을 고려한 의사결정이나 데이터가 부족하거나 불완전한 상황에서 안정적으로 최적 정책 및 패턴을 학습하는 알고리즘을 개발하고 있으며, 고차원 데이터에서 딥러닝 기반 인과학습(Causal Learning) 문제도 연구하고 있습니다. LIM 연구실에서는 다음과 같이 기계학습 및 로보틱스 최우수 학회에 논문을 내고 있습니다.
(Stochastic Optimization) Optimal Algorithms for Stochastic Multi-Armed Bandits with Heavy Tailed Rewards (NeurIPS 2020)
(Reinforcement Learning) Generalized Tsallis Entropy Reinforcement Learning and Its Application to Soft Mobile Robots (RSS 2020)
(Machine Learning) Task Agnostic Robust Learning on Corrupt Outputs by Correlation-Guided Mixture Density Network (CVPR 2020)
(Stochastic Optimization) Monte Carlo Tree Search in continuous spaces using Voronoi optimistic optimization with regret bounds (AAAI 2020)
(Machine Learning) Fast AutoAugment (NeurIPS 2019)
LIM 연구실에서는 로보틱스, 의료 인공지능, 계산과학 분야에서 협력 연구를 진행하고 있으며 기업과 학계의 인공지능 활용에 대해 기술적 성장을 이끌어내고자 합니다.
6. 향후 연구 계획과 소감
예진: 첫 해커톤에 예상치 못하게 수상까지 하게 된 터라 시상식에 갈 때까지도 사실 크게 실감이 나지 않았습니다. 그런데 막상 시상식장에 도착하여, 저희 팀 발표를 끝마치고 나니 그간의 과정들이 스쳐 지나가며 뿌듯하고 벅찬 감정에 휩싸였습니다. 또한 1등과 2등 팀의 훌륭한 발표를 들으며 저 또한 틀에 갇히지 않고 다양한 방식을 시도할 줄 아는 연구자가 되어야겠다고 다짐하게 되었습니다. 이번 대회를 통해 저희 팀이 잘해왔던 부분들에 대해 스스로 칭찬하고, 부족했던 부분들에 대해서는 반성하며 더 나아갈 수 있는 계기가 되어 저희 모두에게 무척 뜻깊은 경험이 되었습니다.
앞으로의 연구는 이번 대회에서 느꼈던 바대로 기존의 방법론에 메이지 않고 유연한 자세로 다양한 아이디어를 연구에 접목시켜보려 합니다. 현재 제가 연구실에서 진행 중인 연구는 분산된 환경에 존재하는 데이터를 프라이버시 침해 없이 하나의 공간으로 모아 더 나은 학습을 가능케 하는 연합 학습에 관한 것인데, 저는 특히나 그래프 기반의 학습 방법을 적용시키려 합니다. 이러한 연구는 기존의 프레임 워크가 거의 존재하지 않기에 스스로 많은 아이디어를 내야만 하는 분야입니다. 이번 대회를 통해 얻었던 깨달음대로 기존 방법론들에 메이지 않고, 여러 재미있는 아이디어들을 접목시켜 본다면 분명 좋은 연구로 이어질 것이라 기대됩니다. 좋은 연구로 사회에 이바지할 수 있는 훌륭한 데이터 과학자가 될 수 있도록 앞으로도 최선을 다하겠습니다!
재호: 이번 대회를 통해서 많은 걸 보고 느꼈던 것 같습니다. 1, 2등 팀의 발표를 보면서 저렇게도 문제에 접근할 수 있겠구나 느꼈습니다. 저희 팀도 한 번쯤은 생각해봤던 문제 접근법들이었는데 그걸 실제로 구현하고 좋은 성능을 이끌어냈다는 점에서 감명이 깊었습니다. 덕분에 저도 앞으로 제 자신에 제한을 두지 않고 문제에 접근해보자는 자세를 가지게 된 것 같습니다. 향후 계획으로는 제가 하고 있는 의료 인공지능과 차등 정보보호 기술에 관한 연구를 계속 진행할 생각입니다. 지금은 서울 성모병원과 함께 백혈병 약물 추천 시스템을 만들고 있는데 이번에 대회를 통해서 배운 경험들을 잘 이용해 해당 프로젝트를 성공적으로 진행해나갔으면 합니다.
나중에 졸업을 하게 되면 실리콘밸리로 가고 싶고 의료 인공지능 분야에서의 창업을 생각하고 있습니다. 우리 학교의 Mission Statement 가 "인류의 삶에 공헌할 수 있는 세계적인 과학기술 선도대학" 입니다. 개인적으로 정말 좋아하는 말인데 나중에 제가 꼭 인류의 삶에 공헌할 수 있는 사업을 하거나 그런 역할을 할 수 있는 회사를 만들고 싶습니다. 그때까지 지켜봐 주세요~~!
홍준: 저는 장차 뛰어난 머신러닝 엔지니어가 되는게 꿈입니다. 개인적으로 이번 대회가 연구자로서도, 엔지니어로서도 많은 성장을 이루어내는 좋은 계기가 되었다고 생각합니다. 우승 팀의 문제 해결 방식을 보며 정답이라고 알려져 있는 방식을 답습하기보다 새로운 시각으로 문제를 효과적으로 해결할 수 있다는 사실을 온몸으로 느낄 수 있었고, 협업의 중요성을 배울 수 있는 계기가 되었습니다. 지도 교수님께서 특히 문서화를 항상 강조하셨는데, 돌이켜 보면 프로젝트를 진행하는 동안 논의가 필요한 부분이나, 막히는 부분이 생겼을 때 팀원들과 함께 정리해둔 자료들에서 해답을 찾곤 하였습니다.
저는 강화학습 분야 연구에 관심이 많고 Ray 같은 Scalable 기계학습 시스템을 이용하여 모델을 분산 학습하는 방법들을 꾸준히 공부하고 있습니다. 강화학습은 좋은 알고리즘을 사용하는 것도 중요하지만, 환경을 구성하고 주어진 환경에서 학습을 할 때 대규모의 분산 또는 병렬 처리를 하는 것 또한 중요합니다. 연구실에서 배운 병렬처리 기법들을 금번 해커톤에서 적용하면서 절실하게 느끼게 되었고, 더 많은 엔지니어링 스킬을 쌓는 것을 목표로 하게 되었습니다. 또한 아카데미에서 다루는 문제는 혼자의 힘으로 어느 정도 해결할 수 있지만, 기업 관점의 규모에서는 절대 혼자서 모든 문제를 해결할 수 있다고 생각되지 않습니다. 이때 요구되는 역량은 개개인의 뛰어난 문제해결 능력도 있겠지만, 무엇보다도 팀원들 간의 의사소통 능력이 중요하다는 사실을 이번 대회를 통해 절실히 깨달았습니다.
해커톤에 참여해보니 시간이 부족하다는 핑계를 대며 기술 부채를 쌓은 지난날을 반성하게 되었습니다. 자투리 시간을 잘 활용한다면 얼마든지 의미 있는 결과를 낼 수 있다고 생각하게 되었고 의미 있는 결과를 넘어서서 정말 좋은 경험을 할 수 있다는 것에 다른 친구들에게도 꼭 한 번씩 대회에 참여해보면 좋겠다는 말을 전하고 싶습니다!
동철: 연구실에서 여러 프로젝트를 진행하면서 지도 교수님께서는 핵심을 관철하는 문제정의가 무엇보다 중요하다고 하셨습니다. 저희 팀이 정의했던 문제 중 하나는 제공받은 데이터의 SMILES 길이가 한정적이기 때문에 보다 복잡한 분자구조에서는 강건한 모델의 성능을 기대하기 어렵다는 것이었습니다. 이는 대회의 핵심 평가항목 중 비공개 데이터셋에서 높은 점수를 받는데 결정적이기 때문에 더 다양한 길이의 SMILES 데이터를 생성하여 모델 학습에 포함하는 것이 중요하다고 판단하였습니다. 한정된 시간과 자원 안에서 방대한 양의 데이터를 생성하고 샘플링 하기 위해 효율적인 데이터 처리 방법을 많이 고민하였습니다. 진행 중에 어려움에 직면하기도 하였지만 팀원들과 적극적인 논의와 여러 시도를 통해 데이터의 분포를 고려하고 병렬처리를 진행하여 일반화 성능을 상승시킬 수 있었습니다. 명확한 문제 정의를 통해 분명한 방향성으로 빠르게 문제를 해결할 수 있었고 모델의 성능에서 좋은 결과가 나왔을 때 그 뿌듯함과 쾌감을 잊지 못할 것 같습니다.
확장 가능성에 대해서 고민할 때도 문제의 본질을 파악하는 것의 중요성을 다시 한번 느낄 수 있었습니다. 일반적으로 확장 가능성은 추상적으로 언급될 가능성이 높기 때문에 기업에 실증적으로 도움이 될 수 있는 확장 가능성을 제안하는 것이 더 높은 평가를 받을 수 있다고 생각하였습니다. 그래서 실제 LG 그룹에서 제공하고 있는 제품 및 서비스에 우리가 제안한 알고리즘을 접목하여 새로운 가치를 발굴할 수 있는 확장 가능성에 대해 제안하였습니다. 이러한 문제정의 과정에서 도출한 물성 예측을 통한 경제성 증대, 홈 트레이닝 서비스와 결합하여 고객만족도 향상, 스마트 모빌리티의 전자장치에 접목한 주행안전 보조시스템은 기업과 저희 팀 구성원 모두 만족스러웠던 좋은 결과였다고 생각합니다.
이번 대회를 진행하는 동안 느낀 점을 통해 추후에도 명확하게 문제의 본질을 파악하여 그 해결책을 연구하고 더 나아가 실제로 서비스와 제품에 적용할 수 있는 실증화까지 진행해보고 싶습니다. 그리고 이를 통해서 작은 변화를 만들고 이러한 작은 변화를 모아 산업과 연구에서 혁신을 가져오고 싶습니다. 앞서 이야기한 골든타임을 연장하는 프로젝트도 그중 하나가 되었으면 좋겠다는 바람이 있습니다!
지도 및 감수
이정혜 교수님
junghyelee@unist.ac.krUNIST 산업공학과 & 인공지능대학원 조교수
Principal Investigator of Data Mining Lab
Ph.D. in Industrial and Management Engineering, POSTECH
B.S., Industrial and Management Engineering, POSTECH
임성빈 교수님
sungbin@unist.ac.krUNIST 인공지능대학원 & 산업공학과 조교수
Principal Investigator of Learning Intelligent Machine Lab
Ph.D. in Mathematics, Korea University
B.S., Political Science & Mathematics, Korea University