확률론적 로보틱스 2장
2장 재귀 스테이트 추정
2.1 개요
확률론적 로보틱스의 핵심은 센서 데이터에서 현재의 스테이트를 어떻게 추정하는지에 있다.
센서를 통해서 얻는 변숭에 대한 정보는 일부만 확보할 수 있고 노이즈 때문에 측정 결과가 잘못된 상태일 때도 있다.
확률론적 스테이트 추정 알고리즘은 가능한 모든 스테이트상에서 빌리프 확률 분포를 계산한다.
2.2 확률의 기본 개념
$p(X=x)$
확률 변수 X의 값이 x일 확률을 의미한다.
$\sum_{x} p(X = x) = 1$ 이산형 확률은 모든 경우의 수에 대한 확률값을 합하면 1이 된다. 모든 확률값은 0보다 크거나 같은 값을 가진다.
책에서 소개하는 연속형 확률변수는 확률 밀도 함수를 포함하고 있다고 보면 된다.
가장 대표적인 확률 밀도 함수로 1차원 정규 분포 함수가 있다.
정규 분포의 확률 밀도 함수는 다음과 같은 가우시안 함수로 정의할 수 있다.
$p(x) = (2\pi \sigma^2)^{-\frac{1}{2}}exp{-\frac{1}{2}\frac{(x-\mu)^2}{\sigma^2}}$
x가 다차원 벡터일때, 벡터형 확률 변수에 대한 정규 분포를 다변량 전규분포라고 하고 다변량 정규 분포는 다음과 같이 형태의 확률 밀도 함수로 표현할 수 있다.
$p(x) = det(2\pi\sum)^{-\frac{1}{2}} exp {-\frac{1}{2}(x-\mu)^T \sum^{-1}(x-\mu)}$
$\mu$ : 평균벡터
$\sum$ : 공분산 행렬, 양의 준정부호 행렬이고, 대칭행렬의 성질을 지닌다.
$T$ : 전치 연산
이산형 확률 분포의 전체 합이 항상 최대 1인 것처럼, 확률 밀도 함수도 총함은 항상 1이다.
$\int p(x)dx = 1$
책에서는 다음 두 가지 가정을 전제로 한다.
- 모든 연속형 확률 변수는 측정 가능하다
- 모든 연속형 확률 분포는 실질적으로 밀도를 가지고 있다.
결합 확률 분포
$p(x,y)=p(X=x and Y = y)$
확률 변수 X가 x값을 갖고 있고 Y는 y값을 갖고 있을 때의 사건에 대한 확률
확률 변수 X,Y가 서로 독립일 경우 결합 확률 분포
$p(x,y)=p(x)p(y)$
확률 변수 Y 값이 y임을 이미 알고 있다는 조건하에서 확률 변수 X가 x값을 가질 확률을 계산한다고 하면 다음과 같이 표현할 수 있다.
$p(x | y)=p(X=x | Y=y)$ |
이 식을 조건부 확률이라고 한다.
$p(y)>0$ 라면 조건부 확률은 다음과 같이 정의할 수 있다.
$p(x | y) = \frac{p(x,y)}{p(y)}$ |
확률 변수 X와 Y가 서로 독립일 때 조건부 확률은 다음과 같다.
$p(x | y) = \frac{p(x)p(y)}{p(y)} = p(x)$ |
즉 확률변수 X와 Y가 서로 독립이면 Y는 확률변수 X에 아무 영향을 미치지 않는다. 이를 독립성, 조건부 독립이라고 한다.
전체 확률의 정리
다음과 같이 표본공간 S가 n개로 분할되어 있고 사건 A가 있을때 사건 A의 개수는 다음과 같습니다.
$n(A)=n(A\cap B_1)+n(A\cap B_2) \cdots +n(A\cap B_{n-1}) +n(A\cap B_n)$
물론 $n(A \cap B_n) = 0$ 이지만 식은 여전히 성립한다.
위 식을 전체 표본공간의 원소 수로 나눠주면
$\frac{n(A)}{n(S)}=\frac{n(A\cap B_1)}{n(S)}+\frac{n(A\cap B_2)}{n(S)}+\cdots+\frac{n(A\cap B_n)}{n(S)}$
확률로 나타내면
$P(A)=P(A \cap B_1)+P(A \cap B_2)+\cdots+P(A \cap B_{n-1})+P(A \cap B_n)$
이를 확률의 곱셈정리를 이용하면 다음과 같습니다.
$P(A) = P(A | B_1)P(B_1)+P(A | B_2)P(B_2)+\cdots+P(A | B_{n-1})P(B_{n-1})+P(A | B_n)P(B_n)$ |
$P(A)=\sum_B p(A | B)p(B)$ |
전체 확률의 정리는 다음과 같이 정리할 수 있습니다.
이산형 확률변수 : $p(x) = \sum_y p(x | y)p(y)$ |
연속형 확률변수 : $p(x) = \int p(x | y)p(y)dy$ |
또한 $p(x | y)$ 또는 $p(y)$ 가 0이라면 다른 값들에 관계 없이 $p(x | y)p(y)=0$ 입니다. |
베이즈 법칙
이산형 확률변수 :
$p(x | y)= \frac{p(y | x)p(x)}{p(y)}=\frac{p(y | x)p(x)}{\sum_{x^{‘}}p(y | x^{‘})p(x^{‘})}$ |
연속형 확률 변수 :
$p(x | y)= \frac{p(y | x)p(x)}{p(y)}=\frac{p(y | x)p(x)}{\int_{x^{‘}}p(y | x^{‘})p(x^{‘})dx^{‘}}$ |
y에서 추론하려는 정량적인 값이 x라면 확률 $p(x)$ 는 사전확률 분포이고, y는 데이터가 된다.
확률 $p(x | y)$는 X의 사후확률 분포라고 한다. |
베이즈 법칙은 사전확률 $p(x)$를 기반으로 한 역확률 $p(y | x)$를 이용해 사후확률 $p(x | y)$를 계산할 수 있는 방법을 제공한다. |
또한 베이즈 법칙에서 분모에 해당하는 $p(y)$는 x와는 무관하기 때문에 $p(x | y)$에서 모든 x값에 대해 동일하며 $p(y)^{-1}$ 을 베이즈 법칙에서 정규화 항이라고 하며 $\eta$라고 표시한다. |
정규화항은 최종 결과가 1로 정규화 되도록 사용한다.
변수 Z같은 임의의 확률 변수에 대해 조건부 베이즈 법칙이 완벽하게 적용가능하다.
예를들어 $Z=z$에 대해 조건부 베이즈 법칙을 계산하면 다음과 같다. ] $p(x|y,z)= \frac{p(y|x,z)p(x|z)}{p(y|z)}$
조건부 독립성
다음과 같은 관계를 조건부 독립성이라고 한다.
$p(x,y | z)=p(x | z)p(y | z)$ |
위 식은 다음과 동치입니다.
$p(x | z)=p(x | z,y)$ |
$p(y | z)=p(y | z,x)$ |
좀 더 개념적으로 살펴보면 다음과 같습니다.
$X_1,X_2$에게 GO 라는 명령을 내리는 Y가 있을 때 $X_1$ 가 Y가 관찰 하지 않더라도 $X_2$가 GO라는 명령을 수행하는 것을 보고 영향을 받을 수 있습니다.
하지만 $X_1$이 Y의 GO라는 명령을 관찰한다면 $X_2$에 영향을 받지 않고 GO라는 명령을 수행합니다.
즉 다음과 같다고 얘기할 수 있습니다. $p(X_1=GO|X_2=GO,Y(order)=go)$
$=p(X_1=GO | Y(order)=go)$ |
조건부 독립성은 절대 독립성을 포함하고 있지는 않다는 점에서 유의해야 합니다. 즉
$p(x,y | z)=p(x | z)p(y | z) \nRightarrow p(x,y | z)=p(x | z)p(y | z)$ |
하지만 특정한 경우에는 조건부 독립성과 절대 독립성이 일치하기도 한다.
2.3 로봇 환경의 인터랙션
환경 또는 월드는 내부 스테이트가 포함되어 있는 끊임없이 변화하는 시스템이라고 정의할 수 있다.
센서는 대부분 노이즈가 섞여 있어 바로 감지할 수 없는 경우가 대부분이라서 로봇은 로봇 환경의 스테이트를 고려하여 내부 빌리프를 유지한다.
2.3.1 스테이트
스테이트는 향후 영향을 끼칠 수 있는 로봇 환경과 로봇의 모든 관점을 모아놓은 것
변화가 일어나는 스테이트를 동적 스테이트
변화가 없는 스테이트를 정적 스테이트라고 한다.
이 책에서 사용될 시테이트 변수들
- 로봇 포즈 : 전역 좌표계를 기준으로 상대적 위치와 방향값으로 구성된다
- 로봇 조작 : 포즈에서 로봇의 액추에이터 관련 환경설정 변수가 포함되어 있다.
- 로봇 속도와 관절 속도 : 일반적으로 동적 스테이트로 사용된다. 공간을 따라 움직이는 리지드 로봇은 각 포즈 변수별로 하나씩 최대 6개의 속도 변수로 표현된다.
- 환경 내에 있는 주변 객체들의 위치 및 피처 : 확실하게 인식 가능한 관경 내에서 뚜렷하고 고정된 피처인 랜드마크의 형태를 띤다고 전제한다
- 움직이는 객체와 사람의 위치와 속도
스테이트 $x_t$가 미래를 대상으로 했을 때 가장 좋은 예측 결과 일 경우, 이를 완전하다 라고 한다. 다시말하면 완전성이란 미래를 더 정확하게 예측하기 위해 과거의 스테이트, 측정값 또는 제어에 대한 부가 지식을 더 필요로 하지 않는다는 것을 의미한다.
$x_t$를 통한 어떤 종속성도 없다면 $x_t$ 이전의 변수 중 어떤 것도 미래의 스테이트에 확률적으로 영향을 줄 수 없고 이러한 조건을 충족시키는 시간 프로세스를 마르코프 체인이라고 한다.
실제로는 가능한 모든 스테이트 변수중 작은 서브셋을 추출해서 구현한다. 이 스테이트를 불완전한 스테이트라고 한다.
2.3.2 환경 인터랙션
인터랙션
-
환경 센서 측정 : 로봇이 센서를 사용해 로봇 환경 스테이트의 정보를 얻는 프로세스를 인식이라고 한다.
-
제어액션 : 로봇 환경에 강제력을 적극적으로 가해서 변화가 일어나게 한다. 뒤에 나오는 예시처럼 로봇팔을 이용해서 문을 여는 것과 같은 조작
데이터
-
로봇 환경 측정 데이터 : 환경의 일시적 스테이트에 대한 정보를 제공한다. 카메라 이미지, 스캔결과 등이 있다. 시간 t에서 측정된 데이터는 $z_t$로 표시한다. 다음 수식은 시간 $t_1,t_2$ 에 대한 모든 측정 결과를 나타내고 있다. $z_{t_1:t_2}=z_{t_1},z_{t_1+1},z_{t_1+2},\cdots,z_{t_2}$
-
제어 데이터 : 로봇 환경의 스테이트 변화에 대한 정보를 전달한다. 예를 들어 5초간 초당 10cm의 속도로 전진한다면 로봇의 포즈는 실행 전보다 약 50cm앞에 가있을 거라는 사실을 알 수 있다. 즉 제어는 스테이트의 변화에 관한 정보를 전달한다. 제어 데이터는 $u_t$로 표현한다. 변수 $u_t$는 시간간격 $(t-1:t]$ 내에 있는 스테이트의 변화와 항상 일치한다. $u_{t_1:t_2}=u_{t_1},u_{t_1+1},u_{t_1+2},\cdots,u_{t_2}$
2.3.3 확률론적 생성 법칙
스테이트의 측정값의 단계적 변화는 확률론적 법칙에 의해 좌우된다. 스테이트의 단계적 변화 관점에서 확률론적 법칙을 확률 분포로 표현하면
$p(x_t | x_{0:t-1},z_{1:t-1},u_{1:t})$ |
여기서는 특별한 동기 없이 로봇이 먼저 제어 액션 $u_1$을 실행한 다음 측정값 $z_1$을 취하는 것으로 가정한다.
스테이트 x가 완전성을 만족할 경우, x에는 이전 단계에서 발생한 모든 내용이 집약되어 있다는 점이다. 즉 $x_{t-1}$은 이 시점까지의 모든 이전 단계의 제어 $u_{1:t-1}$ 과 측정 $z_{1:t-1}$의 유의미한 통계량이라고 할 수 있다.
$p(x_t | x_{0:t-1},z_{1:t-1},u_{1:t})=p(x_t | x_{t-1},u_t)$ |
또한 $x_t$가 완전성을 만족할 경우 다음과 같은 조건부 독립성을 가진다.
$p(z_t | x_{0:t},z_{1:t-1},u_{1:t})=p(z_t | x_t)$ |
2.3.4 빌리프 분포
빌리프는 로봇 환경의 스테이트에 대하 ㄴ로봇의 내부 지식을 반영한다.
스테이트가 바로 측정 될 수 없기 때문에 로봇은 데이터를 통해 추론해야 한다.
따라서 진짜 스테이트와 (진짜 스테이트라고 간주해서 얻은)내부 빌리프를 구분할 필요가 있다.
사용 가능한 데이터가 주어졋을 때 스테이트에 대한 사후확률을 빌리프 분포라고 정의할 수 있다.
사후확률 $bel(x_t)=p(x_t | z_{1:t},u_{1:t})$ |
때로는 제어를 실행한 직후에 $z_t$를 반영하기 전에 사후확률을 계산하는 것이 훨씬 효율적일 수도 있다. 이때 사후확률은 다음과 같이 표현한다
$\bar{bel}(x_t)=p(x_t | z_{1:t},u_{1:t})$ |
이와 같은 확률 분포를 확률론적 필터링 관점에서 예측 이라고 하기도 한다. 다시말헤 시간 t에서 측정값을 반영하기 전에 이전 스테이트의 사후확률을 근거로 시간 t에서의 스테이트를 예측한다는 것이다.
$\bar{bel}(x_t)$으로 부터 $bel(x_t)$를 계산하는 과정을 보정 또는 측정 업데이트 라고 한다.
2.4 베이즈 필터
2.4.1 베이즈 필터 알고리즘
베이즈 필터 알고리즘은 두 가지 단계가 포함되어 있습니다.
첫번째 단계는 3행에서 스테이트 $x_{t-1}$과 제어값 $u_t$를 가지고 생성된 앞 단계의 빌리프를 이용해 스테이트 $x_t$의 빌리프 계산을 통해서 가능합니다. 이 단계를 예측이라고 합니다.
두번째 단계를 측정업데이트라고 합니다. 4행에서 베이즈 필터 알고리즘은 빌리프 $\bar{bel}(x_t)$에 측정값 $z_t$가 나타날 확률을 곱합니다.
결과는 정규화 상수 $\eta$에 의해 정규화가 이루어져야합니다.
$x_0$의 값을 확실하게 알고있다면 빌리프는 그 값에 대한 모든 확률 질량을 중점으로 하고 나머지 확률값은 0으로 할당하는 포인트 질량 분포로 초기화 돼야한다.
2.4.2 예제
로봇이 문을 여는 예제를 생각해보자.
문에서 발생할 수 있는 두 가지 스테이트의 사전확률은 0.5로 동일하다.
센서에 노이즈가 있다고 가정하고 노이즈는 다음과 같은 조건부 확률을 따른다.
로봇은 문을 열 수 있는 매니퓰레이터를 사용한다고 가정한다.
시간이 t=1 일 때 로봇이 아무 제어 액션도 취하지 않았지만 문이 열려 있음을 감지 했다고 가정해보자.
사후 빌리프는 베이즈 필터를 통해 계산할 수 있으며 사용되는 입력값은 사전빌리프 $bel(X_0)$와 제엇값 $u_1=do_nothing$, 측정값 $sense_open$이다. 스테이트 공간은 유한하므로 적분 계산도 유한한 합을 결과로 리턴한다.
스테이트 변수 $X_1$에 대해 두 가지 가능한 값을 바꿔 넣을 수 있다.
$X_1$=is_open 이라고 가정하면 다음과 같은 결과를 얻는다.
마찬가지로 $X_1$= is_closed일 경우 다음과 같다.
빌리프 $\bar{bel}(x_t)$가 사전 빌리프 $bel(x_0)$와 같다는 건 사실 당연한 결과다.
액션 do_nothing이 월드의 스테이트에 아무 영향을 끼치지 않았기 때문이다.
하지만 측정값을 반영하면 빌리프 결과가 달라진다. 베이즈 필터 알고리즘의 4행에는 다음과 같은 속성이 포함되어 있다.
$X_1$이 is_open인 경우와 is_closed인 경우에 대해 다음과 같이 계산할 수 있다.
위의 결과를 이용해 정규화 변수 $\eta$를 다음과 같이 쉽게 계산할 수 있다.
$\eta = (0.3+0.1)^{-1}=2.5$
따라서 결과는 다음과 같다.
$u_2$=push, $z_2$=sense_open에 대해 결과는 다음과 같다.
$\bar{bel}(X_2=open) = p(X_2=open | U_2=push,X_1=open)bel(X_1=open)$ |
$+ p(X_2=open | U_2=push,X_1=close)bel(X_1=open)$ |
$=1 \cdot0.75+0.8 \cdot 0.25 = 0.95$
$\bar{bel}(X_2=close) = p(X_2=close | U_2=push,X_1=open)bel(X_1=open)$ |
$+ p(X_2=close | U_2=push,X_1=close)bel(X_1=close)$ |
$=0 \cdot0.75+0.2 \cdot 0.25 = 0.05$
그리고 정규화를 하면 다음과 같이 나온다.
위의 결과는 로봇이 0.983의 확률로 문이 열려 있다고 믿고 있음을 보여준다.