본문 바로가기
IT 둘러보기

퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter

by 날고싶은커피향 2023. 2. 27.

퍼시스턴트 세그먼트 트리는 딥러닝 모델 중 하나로, 데이터셋과 입력값만을 가지고 학습해서 결과를 도출하는 비지도학습(Unsupervised learning)입니다. 이 방법은 이미지 분류나 텍스트 분류 등 다양한 분야에서 활용되고 있으며, 특히 자율주행 자동차에서도 많이 쓰이는 기법입니다. 최근들어 많은 기업들이 AI 기술을 접목하기 위해 노력하고 있고, 이를 위한 여러가지 시도들을 하고 있습니다. 하지만 이러한 인공지능 알고리즘 자체만으로는 큰 의미가 없습니다. 실제로 어떻게 적용하느냐가 더욱 중요한데요, 이번 글에서는 실제 사례를 통해서 어떤 식으로 해당 문제를 해결했는지 알아보고자 합니다.

딥러닝이란 무엇인가요?
딥러닝은 인간의 뇌 구조를 모방한 기계학습방법이에요. 컴퓨터에게 사람처럼 생각하게 하는거죠. 예를 들어 고양이 사진을 보여주면 고양이라는걸 인식하게끔 만드는 거죠. 우리가 직접 가르쳐주지 않아도 스스로 배우는 방식인 셈이죠. 이렇게 만들어진 신경망 네트워크를 ‘딥러닝’이라고 불러요. 그리고 수많은 층으로 구성되어있는 만큼 깊은 수준의 정보처리가 가능하다는 특징이 있죠.

비지도학습이랑 무슨 차이가 있나요?
비지도학습은 말 그대로 정답이 정해져있지 않은 데이터로부터 답을 찾아내는 과정이에요. 즉, 주어진 데이터 안에서 규칙성을 발견하거나 새로운 패턴을 찾아낼 수 있도록 도와주는것이죠. 반면 지도학습은 정답이 이미 주어져있어요. 그래서 머신러닝 엔지니어들은 먼저 해답을 알려주고 거기에 맞게끔 훈련시키는 작업을 하죠. 만약 제대로 된 답변을 내놓지 못한다면 다시 처음부터 반복해야 해요. 시간이 오래 걸리고 에너지 소모도 크죠. 따라서 대부분의 경우엔 미리 정해진 답안을 이용한답니다.

어떤식으로 진행되는건가요?
예를 들어 설명해볼게요. 저는 현재 미국 뉴욕시 맨하탄 지역 내 아파트 단지 위치정보를 알고 싶어요. 구글맵스 같은 곳에서 쉽게 찾을 수 있지만, 제가 원하는건 그런 단순한 정보가 아니에요. 각 건물마다 몇 세대가 있는지, 엘리베이터 개수는 몇개인지, 주차장은 얼마나 넓은지 등등 구체적인 정보가 필요하거든요. 이럴 때 쓰는 게 바로 퍼시스턴트 세그먼트 트리라는 딥러닝 모델이에요. 우선 모든 자료를 수집해야겠죠? 일단 Google Maps API를 이용해서 전체 맵을 다운받아요. 이후 Github 사이트에서 제공하는 오픈소스 라이브러리인 Keras를 설치하면 돼요. 이제 본격적으로 프로젝트를 시작해볼까요? 첫 번째 단계는 각각의 노드별로 이름을 지어주는 일이에요. 특정 구역을 나타내는 노드는 “아파트”, “주차장”, “엘리베이터”등으로 구분했어요. 두 번째 단계는 위 그림처럼 레이어를 쌓아가는 건데요, 이때 주의할 점은 다른 노드와의 연결관계를 고려해야 한다는 거예요. 서로 관련성이 높은 노드끼리 묶어서 계층구조를 만들어줘야 나중에 불필요한 연산을 줄일 수 있거든요. 마지막으로 최종 결과물을 출력하려면 output_dir 폴더에 저장하세요. 그러면 다음과 같이 완성된답니다.

 지금까지 퍼시스턴트 세그먼트 트리를 이용해서 간단한 예시를 살펴봤는데요, 여러분도 각자 관심있는 주제를 정해서 직접 코드를 짜보는 건 어떨까요? 물론 혼자서는 어려울 수 있으니 주변 친구들과 함께 협업하면서 공부한다면 훨씬 재미있게 배울 수 있을 거예요.

반응형