[AIFactory] 그래프 러닝 및 해커톤 후기

반응형

AIFactory

 

 

Contents

     

    1. 대회

    대회 링크: https://aifactory.space/competition/detail/2106

    그래프 러닝 및 해커톤

    이번에 AIFactory에서 그래프 러닝 및 해커톤이란 대회를 진행했습니다. 저는 부스트캠프의 같은 조원들과 함께 참여해보자고 제안했고, 다들 좋다고해주셔서 맛보기로 2일 정도만 참가했습니다. 대회는 

     

    2. 대회 프로세스

    1) 데이터셋과 태스크

    데이터셋과 태스크

    데이터는 C,H,O,N,F로 구성된 134k의 small organic molecules 데이터입니다. 노드(원자) 피쳐와 엣지(본드)피쳐로 이루어져있고 원자는 5개 (H, C, O, N, F)로 구성되어있습니다. 이런 원자 데이터로부터 mu(Dipole moment;쌍극자 힘)을 예측하는 대회입니다. 그래프 데이터라는 생소한 데이터를 다뤄보는 대회였습니다. 1개의 데이터를 시각화해보면 아래와 같습니다.

    데이터 시각화

     

    2) 진행사항

    먼저 팀원과 함께 해당 대회의 baseline 코드를 읽으며 이해했습니다. 다음으로는 베이스라인의 코드 해설 유튜브 영상을 같이 보고 토론했습니다. (링크: https://www.youtube.com/watch?v=dtEh06xstIo) 그 후, 각자 데이터 EDA를 해보며 인사이트를 공유했습니다. 대회에서 공유된 노트북중에 성능이 가장 좋았던 노트북을 가져와서 기존 베이스라인과 어떻게 다른지, 어떤 부분을 업데이트 하였는지 같이 학습했습니다. 먼저 기존 baseline 코드의 모델에선 dgl의 GraphConv Layer만 사용했는데 이 레이어를 SageConv로 변환하니 성능이 올라갔습니다. SageConv의 가장 큰 특징은 "Inductive Representation Learning on Large Graphs" 라고 합니다. 즉, 큰 그래프에 대해 표현들을 귀납적으로 학습하는 방식입니다. 주어진 원자는 최대 29개였습니다. 그래프가 비교적 크기때문에 성능이 올라간 것으로 판단됩니다. 다음으로 Baseline에서는 주어진 원자의 원자 번호 피처만 임베딩 벡터로 활용하고 있었습니다. 그래서 여기에 x, y, z 좌표를 추가해주니 성능이 올라갔습니다. 그 다음 제가 세웠던 가설은 엣지(본드)정보를 아무도 학습에 사용하지 않았는데, 쌍극자 힘에 Bond 피처는 유의미하게 적용되지 않을까? 였습니다. 그래서, SageConv 내부 forward함수를 공부한 뒤에 엣지 정보를 추가하여 학습하도록 코드를 짰습니다. 그런데 성능이 거의 개선되지 않았습니다. 오히려 아주 약소하게 성능이 떨어지는 느낌을 받았습니다. 이것은 연구해보고 부스트캠프 멘토님께 질문들 드렸는데, 화학 분자에서 결합은 원자가 갖는 특성이기 때문에 따로 edge에서 피처로 갖기보단 원자에서 피처로 갖는게 성능이 올라가는 것처럼 보인다고 말씀해주셨습니다. 생각해보니 화학시간에 원자 번호에 따라 전자 구름이 형성되고, 전자 개수에 따라 Bond가 형성되니 원자의 특성인것도 이해가 되었습니다.

     

    🌝 엣지 피쳐 추가 및 SageConv 수정

    공유된 노트북에서는 아무도 시도하지 않았던 엣지 피쳐 추가 및 SageConv를 수정한 코드입니다.

    엣지 피쳐 추가 (디버깅 모드)

     

    3. 후기

    토론에서 제공된 가장 성능이 좋은 코드에 여러가지 가설과 검증을 통해 성능을 약간 더 개선하였고, 그 결과 54개 팀(197명의 참가자) 중, 7위를 하게되었습니다. 8trilion salary의 의미는 부스트캠프에서 저희 조 이름이 연봉 8조여서 거기서 따왔습니다. 

     

    읽어주셔서 감사합니다.

    다음에 더욱 참신하고 재미있는 글로 찾아오겠습니다.

     

    Reference)
    1. AIFactory 이미지: http://af-class.space/task/search.do
    2. 데이터 시각화 코드: https://aifactory.space/competition/2106/discussion/34
    반응형

    댓글

    Designed by JB FACTORY