공공데이터 활용 수력 댐 강우예측 AI 경진대회

알고리즘 | 정형 | 회귀 | 강우예측 | MAE/CSI

  • moneyIcon 상금 : 총 1,100만원
  • 579명 마감

 

Private 1st 솔루션 아이디어

2020.12.11 17:05 9,806 조회

데이콘에서 답변을 받았는데, 일단 올려도 된다 합니다. 코드는 공개될 예정이라고 하니 설명만 조금 써 보았습니다.


  1. 모델 구조

간단히 그림그리면, 생각했던 모델 구조는 위와 같습니다.



학습은 10 Fold CV를 수행했고, Early Stopping을 걸어서 얻은 Fold 별 Best Model 10개의 단순 평균을 얻어서 제출했습니다.

기존에 Public 에서 1등하고 있었던 0.5003 점수도 이 구조의 단일 모델이었습니다. 그래서 평균모델의 Public 점수가 훨씬 안좋았지만, 나름의 소신?을 갖고 선택할 수 있었습니다.



그냥 UNet만 사용하다가 ConvLSTM2D를 추가하게 된 이유는 다음과 같습니다. 


  • Conv 층의 필터끼리는 Dense Layer 와 비슷하게 연산된다. -> 이렇게 되면 시계열 순서가 담고있던 의미가 섞이게 될 것입니다. 이를 어떻게든 해결해보고 싶었습니다.
  • (예전에 어떤 블로그에서 읽었던 글인데, 기억이 안나요 죄송합니다.) 신경망은 Sparse 할 수록 성능이 좋다, 인셉션이 성능이 좋았던 이유. 라고 설명을 해 주셨었는데, 지금도 Sparse가 어떤 의미인지 완벽히 이해하지 못하고 있지만, 인셉션 구조의 그림? 이 생각이 나서 이런식의 디자인이 나름의 인셉션 역할을 하지 않을까 라고 생각했습니다. 
  • ConvLSTM2D층 한개짜리 모델의 결과를 시각화 해 보았더니, 생각보다 성능이 좋아 보였다. -> 아주 개인적으로는 구름이 대충 '어디에 있는지' 정도는 층 하나로도 잘 잡아내는 듯 했습니다. 하지만 구름 모양의 세부적인 모양 디테일이나 그 값을 잘 잡아내지 못했기 때문에 점수가 잘 나오지 않았다고 생각했습니다. 그래서 ConvLSTM 구조로 모양을 잡고, UNet 구조로 디테일을 잡아서 합치면 어떨까? 하는 생각에 이렇게 만들게 되었습니다. 




정말 너무 힘든 대회였습니다. 제출할 때마다 Public LB 비율은 30%씩이나 되는데 점수는 오락가락 하고 있고, 모델 하나 만들어서 제출하는 시간은 너무 오래 걸리고, 컴퓨터는 이러다가 불날 것 같았고... 하지만 운이 잘 따라주었다고 생각합니다. 저는 여전히 부족한게 너무 많아서... 아직은 실력에 비해서 Over Prized(?) 된 것 같습니다. 그래도 상은 감사히 받고, 상값은 앞으로 더 열심히 해서 갚도록 하겠습니다. 


블로그에도 글을 올렸는데, 약간의 설명을 추가했습니다. https://jamm-notnull.tistory.com/19?category=842550

로그인이 필요합니다
0 / 1000
최정명
2020.12.11 18:21

좋은 아이디어네요 !

datamaster
2020.12.14 14:06

좋은 아이디어 감사합니다 ㅎㅎ

재야의 숨은 초보
2020.12.24 10:11

공유 감사드립니다 ~! 저는 LB 점수가 너무 큰 폭으로 변해서 shake-up을 어느 정도 예상하고 있었는데도, 일반화된 모델이 아니라 LB에 오버피팅된 모델을 제출했었어요. 소신을 갖고  LB 점수가 더 낮은 모델을 제출하다니 강단 있는 모습 멋있으십니다 ! ㅎㅎ

Ynot
2021.01.13 04:09

멋진 모델구조네요! 감사합니다