keras만 사용하다가 pytorch를 사용할 때 autograd를 사용하는 것이 익숙하지 않아서 고역이다. pytorch에서는 tensor에 대한 자동미분을 loss.backward()같은 기능을 이용해서 해주게 되는데 supervised learning같은 신경망을 학습할때에는 그렇게 신경쓰지않고 예제에 있는대로 가져다 써도 괜찮았다. 그러나 신경망 업데이트 타이밍이 알고리즘마다 제각각인 강화학습을 사용할때 autograd에 대한 이해를 잘해놓지 않으니 코딩할 때마다 매번 혼란에 빠진다. 오늘은 헷갈려서 시간을 쓴부분에 대한 정리. Pytorch를 이용한 REINFORCE 알고리즘을 구현할때 손실함수를 아래처럼 정의하고 써야했다. $$ loss = -\sum_{t=0}^{T}(log \pi (u_{t..
요즘 가장 관심있는 주제는 human-aware, crowd-robot interaction에 대한 navigation이다. 처음에는 사람 군중 속에서 움직이는 로봇의 네비게이션에 관심이 있었는데, 이게 바로 툭 튀어나온 개념은 아니다. 일단 내가 알기로는 2가지 개념이 합쳐져있는데 non communicatable한 agent들이 있을 때 그 녀석들이 어떻게 하면 부딪히지 않고(Collision avoidance)잘 움직이게 하는 연구 사람의 움직임에 대한 연구를 기반으로 네비게이션을 진행하는 연구(Social force 등등) 크게 이 2가지가 결합된 것으로 보인다. 물론 이 두가지도 세부적으로 들어가면 온갖 개념들의 혼합체이다. 머신 러닝을 기반으로 진행하는 연구들은 이제 저것들에서 더욱 나아가서 ..
# 요즘 자주 읽는 논문들이 대체로 로봇 주변의 상황을 LSTM같은 신경망으로 인코딩 한 후에 그 latent space에서 강화학습을 하게되는 방식을 사용하는 것들이었다. 나는 왜 raw 데이터를 바로 쓰지않고 encoding 과정을 거치는지, 그리고 그게 어떻게 상황을 encoding 할 수 있는 것인지에 대해 잘 와닿지 않았는데, CS 285의 Model based learning에 관한 강의를 들으면서 많은 이해를 할 수 있었다. state encoding이 필요한 이유를 처음부터 설명하려면 강의 전체를 완전히 복기해도 모자를 정도로 길어지고, 강의 정리를 위한 시리즈는 현재 준비 중이기 때문에 오늘 포스팅은 결론적인 측면, 그리고 추상적 이해 관점에서 많이 서술하게 될 것 이다. 해당 강의가 궁..
원래는 Data Driven Control이란 개념이 존재하는 지에대해 알아보던중 신기하게도 정말 그런 개념이 있었고 관련 강의 영상을 찍은사람이 있다는 사실을 알게되었다. 학부시절 시스템 해석이나 신호및 시스템같은 시스템을 해석하고 분석하기위한 과목들은 들었지만 실제로 제어하기위한 과목은 들은 적이 없어 공부해보기위해 Steven L. Brunton이란 분의 강의를 들어보기로 했다. 워싱턴 대학의 교수이며 데이터를 통해 제어시스템을 모델링하는 연구를 하시는 분 같았고 홈페이지를 들어가보니 수학공식을 이용한 예술작품을 그리는 것도 좋아하는 것 같았다. 아무튼 이 Control Bootcamp 강의는 고전 시스템 부터 현대 최적제어까지의 내용들을 다루며, 굉장히 딥하게는 들어가지 않지만 수학적으로나 개념적..
모션플래닝과 관련된 여러가지 알고리즘들이 존재한다. 알고리즘들은 아주 간단한 planning 문제를 해결하는 것에서 시작하여 점점 발전하여왔다. 각 알고리즘에 관련된 학습을 하면서 간단한 예제들을 만들어보면 이해를 하는데에 도움이 되지 않을까 싶어 알아보려고 한다. 저차원의 문제들은 Configuration space에 grid(격자)를 그려 계산하는 grid based 알고리즘과 $C_{free}^{}$안의 연결성이나 모양을 계산하는 geometric algorithm 방식으로 해결할 수 있다. 복잡한 제한조건을 가진 고차원 시스템의 정확한 motion planning은 computationally intractable하다. intractable하다는 뜻은 이론적으로 해결될 수 있으나, 실제로 해결하려..
오늘은 모션 플래닝의 용어들을 간단한 개념을 곁들여서 알아보자. 저번 시간에 얘기했듯이 모션플래닝은 로봇이 어디부터 어디까지 가고싶다는 추상적인 명령을 인풋으로 받아들였을때, 어떻게 갈 것인지 로봇의 동작을 자동으로 생성하는 알고리즘이다. 예를 들면, 내방에가서 노트북좀 가져다 줘 라는 명령을 로봇에게 내렸을 때(추상적 명령) 그것을 수행하기 위해 로봇은 각 관절을 어떤식으로 움직여서 장애물을 회피하며 임무를 수행할 지 계획을 만들어야한다. 이제 모션플래닝에 대한 공부를 하기전에 필요한 개념과 용어들을 알아보자. 1. 개념 가장 기본적인 motion planning 문제는 시작상태(start configuration)인 S에서부터 목표 상태(goal configuration)인 G지점 까지 이미 알고있는..