일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- hyperclovaX
- TRANSFORMER
- GPT-4
- Stable Diffusion
- KoGPT
- SearchGPT
- AIVLE
- KT
- nlp
- 생성형
- 네이버
- GPT4
- deeplearning
- AI
- GPT-3.5
- 딥러닝
- ChatGPT
- Meta
- SKT
- LLaMA
- OpenAI
- 생성형 AI
- ML
- 3기
- generative
- LLM
- gpt
- 인공지능
- naver
- Today
- Total
Ttoro_Tech
[한국철도999_5위]_AIFactory_철도 인공지능 대회 본문
https://aifactory.space/task/2511/overview
2023 제1회 철도 인공지능 경진대회
열차 주행 안전성 진단을 위한 탈선계수 예측 모델 개발 경진대회를 개최합니다!
aifactory.space
AIVLE SCHOOL을 마치고
- KT AIVLE SCHOOL을 마치고 8월에 참가한 두번째 데이터 분석 대회이다.
- AI FACTORY는 이전 AIVLE SCHOOL 3기때도 여러번 팀을 결성하여 참가했던 경험이 있고,
- 특히 이번에는 쉽게 접할 수 없는 철도 데이터를 분석할 수 있는 기회라 참가하게 되었다.
한국철도999 팀
- AIVLE SCHOOL을 수료하고 이후에 아침마다 수료생분들과 모여 취업준비를 하는 모임에서 해당 대회에 참가를 희망하는 팀원들(총 4인)을 모집하였다.
- 팀원들은 모두 AIVLE SCHOOL을 수료했기 때문에 데이터 분석 경험도 많고, 또 새로운 데이터를 만나도 다양한 시각으로 분석해낼 수 있는 능력을 갖췄기 때문에 즐겁게 협력하며 대회에 참가했던 것 같다.
- 특히 처음 회의에서 "팀명을 무엇으로 할까요?" 라고 했을때, 바로 한국철도 999(은하철도999패러디)로 결정되었던 것도 재밌는 추억이었다.
대회 주제
열차의 주행 안정성 진단에 사용되는 ‘탈선계수’를 보다 높은 정확도로 예측할 수 있는
인공지능 모델을 개발하는 것
https://www.yna.co.kr/view/AKR20230120066500063
작년 KTX 연착 57%, 11∼12월 집중…영등포역 탈선사고 등 영향 | 연합뉴스
(세종=연합뉴스) 이은파 기자 = 지난해 발생한 KTX 열차 연착의 절반 이상이 11∼12월에 집중된 것으로 나타났다.
www.yna.co.kr
많이는 발생하지 않지만 발생할 경우 물리적 피해와 심각하면 인명피해까지 나올 수 있는 탈선과 관련된 문제이다.
처음 데이터를 받았을 땐,
- 이걸 어떻게 분석해야하지?
- 이게 무슨 의미이지?
- 이게 어떤 수치를 나타내는거지?
라는 팀내에 다수 의견이었다.
특히 탈선계수가 어떻게 계산되는지도 모를 뿐더러 곡선과 직선의 column 수도 다르고, Feature 역시 직선, 곡선이 달라 많은 어려움이 있었던 것 같다.
데이터 분석
제공된 데이터 중 중요 데이터는
- Damper별 차량이 3km 구간을 지나면서 측정된 데이터
- 직선 선로의 데이터(3km)
- 곡선 선로의 데이터(3km)
등이 제공되었고, 특히 주목해야할 점은 직선 선로의 column과 곡선 선로의 column 정보가 다르다는 점이다.
또한 데이터를 살펴보면 damper별로 탈선 계수가 2.5km 구간은 제공되며, 나머지 0.5km 구간을 예측하는 것이 목표이다.
이에 우리는 탈선 계수를 damper별로 시각화를 해봤으며
다음과 같이 Damper별로 차이가 나는 것을 확인할 수 있었다.
여기서 Damper는 먼저 댐퍼란 진동 에너지를 흡수해 안정성을 높이는 부품을 말하는데요. 철도차량의 진동을 감소시키는 현수장치에 장착된 댐퍼가 진동을 감쇄하고 승차감을 높이는 것입니다. 현대로템은 여기서 한 단계 더 나아가 차량의 주행정보를 센서로 감지해 적극적으로 진동을 줄이는 능동현수장치를 개발하기도 했습니다.
[참고] 현대로템 https://blog.hyundai-rotem.co.kr/452
여기에 주목하여 Damper의 정보는 중요하다는 것을 확인할 수 있었고 가장 집중적으로 다뤘던 정보이다.
- 다음으로 직선 선로와 선로 데이터의 column 정보 차이였다.
- 위와 같이 두 데이터의 제공되는 Feature가 달랐기 때문에 모델을 직선 예측 모델과 곡선 예측 모델을 나눠서 해야함을 확인할 수 있었다.
- 마지막으로 단순히 제공된 데이터만 가지고 모델을 학습시켰을때 일정 이하로는 최적의 Loss가 구해지지 않은 것을 보고 새로운 Feature를 찾는 과정이 필요했다.
- 정말 다양한 Feature를 만들기 위해 다양한 정보와 도메인에 대해 조사를 했으며 그 중 가장 먼저 큰 효과를 보인 Feature만 예시만 이후에 작성하고자 한다.
데이터 전처리
- 먼저 Damper의 특징을 넣기위해 Damper라는 Category 데이터를 추가한 후
one-hot 인코딩을 통해 정보를 추가하였다.
- 다음으로 위에서 분석한 데이터를 통해 다양한 새로운 Feature를 계산해 추가하였고 그 중 가장 처음 좋은 성능이 나오는데 도움이 된 Feature 하나만 작성하고자 한다.
총 가속도
- 주어진 데이터를 보면 대부분이 가속도와 관련된 데이터였는데, 특히 위치 별로 가속도의 수치가 측정된 것을 확인할 수 있었다.
- 우리 팀은 여기서 각 위치에 측정되는 가속도의 데이터를 합치면 각 위치의 총 가속도의 합이 여러 가속도로 나누는 것보다 더 높은 정확도의 가중치를 줄 수 있지 않을까라는 생각으로 총 가속도를 구하였다.
- 처음 해당 column을 넣었을때 이전 시도에서 뚫지 못했던 WMAPE public 점수 100을 넘게 되었으며, 이후 실험에도 필수적으로 넣게 되었던 것 같다.
- 이외에도 다양한 변수를 실험을 통해 데이터를 분석했으며, 최종 두 모델 모두 61개의 feature를 사용하는 모델을 만들게 되었다.
- 마지막으로 직선 선로의 정보와 곡선 선로의 정보를 거리에 맞게 추가하였다.
- 여기서 주목해야할 점은 제공된 Train 데이터는 구간에 따른 센서 데이터로 어느 정도 Scaling이 되어 있는 데이터였다는 점이다. 따라서 선로 데이터를 추가할 때 이후 Feature별 값의 차이가 발생하므로 정확한 Loss를 계산하기 위해 Standard Scaling 처리를 해줬다.
모델링
- 이번 대회 조건 중 하나인 이전 데이터를 보고 다음 데이터를 예측하는 문제로, 타임라인은 주어지지 않았지만, 거리(Distance)를 하나의 시계열로 보고 분석하는 것이 목표였다.
- 그리하여 우리 팀은 먼저 시계열 데이터 분석 모델들을 조사하고 각자 모델을 설계하여 실험하고 결과에 대해 공유하였다.
- 그 중 가장 높은 성능을 보인 1D-CNN + LSTM 모델을 사용하게 되었고 각자 최적의 Loss를 찾기 위해 다양한 Parameter Tunning을 시도하였다.
1D-CNN + LSTM 모델
- 기존에 다른 대회에서도 시계열 데이터를 분석할때 자주 사용해와서 Base 모델 설명은 아래의 링크로 대신하고자 한다.
[LG Aimers 3기]_온라인 채널 제품 판매량 예측 AI 온라인 해커톤
https://dacon.io/competitions/official/236129/overview/description 온라인 채널 제품 판매량 예측 AI 온라인 해커톤 - DACON 분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다. dacon.io LG Ai
ttoro.tistory.com
- 이번 대회에서 주목할 HyperParameter는 Optimizer와 Activation Function이다.
SeLU
- ELU 활성화 함수의 변종
- self-normalization을 유도하는 활성화 함수
- 평균과 분산이 0으로 수렴
- 음수가 입력되어도 업데이트 가능
처음에 ReLU 함수를 통해 실험했지만 ReLU의 경우 음수의 값이 나오면 Gradient가 업데이트 되지 않는다는 점에서 음의 값에서도 업데이트 될 수 있도록 해당 함수를 사용하였다.
Nadam
- NAG + Adam
- Adam에 적용한 모멘텀 기법을 NAG로 변경
- Adam보다 더 빠르고 정확하게 전역 최소값을 찾을 수 있음
Adam은 기존의 위치에서 Gradient를 업데이트(adam은 모멘텀을 반영하지 않는 Gradient를 업데이트) 를 하고,
Nadam은 Momentum을 계산한 다음 위치이에서 Gradient를 업데이트 (최소 Loss를 찾을때 벗어나는 것을 방지)를 한다는 점에서 다음과 같이 Optimizer를 변경해주었다.
- 마지막으로 Loss는 Score WMAPE를 계산해야하므로 MAE를 사용하여 최적의 Loss를 찾고자 했다.
학습
- 학습셋을 어떻게 만들 것인가가 정말 어려운 결정이었다.
- 특히 시계열 데이터의 경우 앞의 얼마만큼의 데이터를 보고 다음 얼마만큼을 예측할 것인가? 라는 질문이 매우 중요했으며, 구간을 다르게 할때마다 더 좋거나 더 나쁘게 결과가 나오는 것을 다양한 실험을 통해 확인할 수 있었다.
- 처음에는 500m, 250m, 125m 등 앞구간을 통해 뒤의 500m를 한번에 예측하는 방식도 실험해보았고,
- 앞의 짧은 구간을 통해 뒤의 0.25m 구간을 예측하는 등 끊임 없이 모델을 돌려보고 실험 노트를 작성하면서 최적의 Loss를 찾고자 노력했다.
- 최종적으로 우리는 앞의 7m 구간을 보고 뒤의 0.25m의 탈선계수를 예측하며 이를 다음 예측 데이터로 넣어 다시 예측하는 slicing 형태로 모델을 학습시켰다.
- Validation 셋의 경우 전체 셋의 10%, 5% 등 다양하게 나눠 실험을 진행했으며 뒤의 500개(125m)를 사용하는 것이 모델 학습에 많은 도움이 되었다.
결과 (Result)
먼저 내용을 정리하면
- 이전 7m(28 rows)를 보고 다음 0.25m의 탈선계수를 예측하는 모델을 작성하였고, 그 다음 0.25m는 예측된 값을 포함한 7m를 바탕으로 예측하게 되었다.
- 한번에 500m를 예측하는 모델을 먼저 시도하였으나 오차가 너무 컸기 때문에 다음과 같은 방식을 채택하였다.
- activation을 relu, swish, selu, 그리고 optimizer를 SGD, Adam, Nadam로 변경하여 성능을 측정한 결과, activation=’selu’, optimizer=’Nadam’일 때 성능이 가장 좋았다.
기대 효과
- 추후 선로 데이터를 포함하지 않고 damper 별 데이터만 가지고 모델을 만들 경우 하나의 모델로 다음 구간의 탈선계수를 예측할 수 있는 모델을 개발할 수 있을 것으로 기대된다.
- 구간을 7m 간격으로 두었지만 다양한 실험을 통해 더욱 최적화된 구간을 구할 필요가 있어 보인다. (3m와 10m로 실험한 결과 7m보다 오차가 컸음)
- 열차의 실제 속력 칼럼 추가, 기차 폭, 곡선 저항 등 추가적인 데이터가 주어진다면 오차를 더 줄일 수 있을 것으로 기대된다.
- 각 모델마다 총 61 columns 넣어 학습하였기 때문에, column을 줄이는 방법을 찾아 모델 경량화를 도전해볼 수 있다.
마무리
- 최종적으로 약 78점의 Private Score를 휙득하면서 5위를 차지하게 되었다.
- 처음 130점에서 100점만 넘겨보자는 얘기가 엊그제 같은데 최종 결과를 보니 매우 뿌듯했다.
- 특히 마지막날 치열한 점수 경쟁으로 5위를 차지하고 있기 힘들었는데, 팀원분이 코드 상에 큰 실수를 잡아주는 덕분에 좋은 결과를 낼 수 있었다.
- (DataFrame 전처리하는 과정에서 Distance를 빼고 모델을 학습했어야 했는데 reset_index(drop=True)를 빼먹은 것)
- 이러한 실수는 정말 계속된 실험에서 코드를 자세하게 살펴보지 않으면 찾지 못할 실수인데 팀원께서 찾아 알려주셔서 마지막에 수정한 결과 Loss가 더욱 감소하는 것을 확인할 수 있었다.(정말 지금 생각해도 아찔하다,,,,)
- 이번 대회를 통해 쉽게 접해볼 수 없는 기차 데이터를 살펴보면서 인사이트도 넓힐 수 있었고 특히 무더운 8월 한달 동안 혼자서 진행했으면 어려웠을 대회가 팀원들과 매주 아침마다 회의를 통해 새로 찾은 사실을 공유하고 풀리지 않는 원인에 대해 토론했던게 너무나도 소중한 경험이었다.
- 또한 이번 대회를 마지막으로 8월이 끝났지만 최종 본선까지 진출해 9월까지 팀원들과 함께 자료 정리와 발표 준비를 하면서 장려상을 수상할 수 있었고 다양한 질문을 받으면서 다시 한번 모델을 점검해볼 수 있는 너무나도 값진 경험이었다.
- 마지막으로 더운 8월 한달동안 평일/주말 관계없이 계속 실험하면서 대회에 도전해준 한국철도999팀원들에게 감사하다는 말로 마치고자 한다.
https://www.newspim.com/news/view/20230925000911
"열차 탈선 AI로 잡는다" 철도인공지능경진대회 성료
[서울=뉴스핌] 이동훈 기자 = 철도에 인공지능(AI)를 도입해 탈선을 방지하기 위한 기술 경진대회가 성공리에 마쳤다. 25일 한국철도기술연구원에 따르면 지난 21일 '2023 철도 인공지능 경진대회'
newspim.com
'Data Projects' 카테고리의 다른 글
[LG Aimers 3기]_온라인 채널 제품 판매량 예측 AI 온라인 해커톤 (0) | 2023.08.31 |
---|---|
[AIVLE_3기]_16주차_Dacon_도배 하자 유형 분류 AI 경진대회 (0) | 2023.05.24 |
[AIVLE_3기]_15주차_AI_SPARK_CHALLENGE(2탄) (0) | 2023.05.09 |
[AIVLE_3기]_12주차_AI_SPARK_CHALLENGE (0) | 2023.04.18 |