COMPLETE NOTES / SOURCE ORDER

전체 자료 이어 읽기

33개 노트의 수식과 전개식에 기호 설명과 단계별 해설을 더했습니다. 원래 순서대로 이어서 읽습니다.

♫ 전체 음성 듣기

NOTE 01 / 회전과 로보틱스

쿼터니언

Quaternion

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

물체가 어느 방향을 향하고 있는지 설명하려면, 회전의 크기뿐 아니라 회전축과 기준 좌표계도 함께 정해야 한다. 이 글에서는 이러한 회전을 네 성분으로 나타내는 쿼터니언을 살펴본다. 숫자 네 개를 별개의 각도로 보는 것이 아니라, 하나의 회전을 함께 표현하는 값으로 이해하는 것이 출발점이다.

기호를 먼저 읽기

q₁
이 글에서 첫 번째에 놓인 스칼라 성분
q₂, q₃, q₄
회전축 정보가 반영된 세 벡터 성분
r̂, θ
길이가 1인 회전축과 회전각
A, B, C
벡터를 나타내는 기준 좌표계의 이름
순서를 구별해야 하는 쿼터니언 곱
q*, ‖q‖
켤레와 쿼터니언의 크기

이 글의 흐름

먼저 회전축과 각도를 네 성분으로 옮긴다. 다음으로 길이 조건과 켤레를 확인하고, 곱셈을 통해 여러 회전을 연결한다. 마지막에는 같은 변환을 회전행렬로도 읽고, 시간에 따른 변화율로 확장한다.

네 성분에 하나의 회전을 담는다

이 글의 첫 번째 관심은 좌표계 A에서 본 좌표계 B의 방향이다. 위아래에 붙은 A와 B는 거듭제곱이나 곱셈이 아니라 좌표계의 관계를 구별하는 이름으로 읽는다. 같은 벡터라도 어느 좌표계의 성분인지에 따라 숫자가 달라질 수 있으므로, 먼저 기준을 정한다.

주제와 표기

Quaternion representation BAq^

YouTube에서 보기

A quaternion is a four-dimensional complex number

An arbitrary orientation of frame B relative to frame A

AfBf

The coordinate system {A} is rotated by θ relative to the Ar^ direction is called the coordinate system {B}, it is called the quaternion BAq^.

BAq^
원본 도해

회전축과 회전각을 먼저 정한다

회전축 r̂의 세 성분은 x·y·z 방향으로 얼마나 향하는지 나타낸다. 각도 θ는 이 축을 중심으로 얼마나 회전하는지를 나타낸다. 축의 길이를 1로 맞추는 이유는 회전축의 방향과 크기 정보를 분리하기 위해서이다.

A rotation of angle θ around an axis Ar^ defined in frame A

Ar^=(rxryrz)

Angle

θ

normalized four-dimensional vector

반각을 이용하여 쿼터니언을 만든다

먼저 θ를 2로 나누고, 그 반각의 코사인을 q₁에 넣는다. 나머지 세 성분은 회전축의 각 성분에 반각의 사인을 곱하여 구성한다. 이 부분에서는 벡터부 앞에 음의 부호를 사용하므로, 이후의 회전 변환도 같은 정의를 따라 읽어야 한다.

네 성분의 제곱합이 1이라는 다음 식은 단위 쿼터니언의 조건이다. 이는 네 성분이 서로 무관한 네 개의 회전각이 아니라, 하나의 길이 조건으로 연결되어 있음을 보여준다.

BAq^=(q1q2q3q4)=(cos[θ2]rxsin[θ2]rysin[θ2]rzsin[θ2])

the quaternion paramentrization obeys

q12+q22+q32+q42=1

hypercomplex numbers {i,j,k}

i, j, k의 곱에서는 순서가 중요하다

a는 실수 성분이고 b·c·d는 세 기저 i·j·k에 대응하는 계수이다. i², j², k²가 모두 −1이라는 규칙과 함께, ij와 ji의 부호가 반대라는 점을 확인한다. 따라서 일반적인 실수 곱셈처럼 앞뒤 순서를 바꾸어 정리하면 안 된다.

a+bi+cj+dk
i2=j2=k2=1
ij=ji=k
jk=kj=i
ki=ik=j

A quaternion conjugate

켤레와 연속 회전을 구별한다

켤레는 첫 성분을 유지하고 나머지 세 성분의 부호를 바꾼다. 단위 쿼터니언의 회전 문맥에서는 반대 방향의 변환을 연결하는 데 사용한다. 이어지는 곱셈 식은 A에서 B, 다시 C로 이어지는 관계를 하나로 묶은 것으로, 중간 좌표계와 곱의 순서를 함께 확인한다.

BAq^=ABq^=(q1q2q3q4)

A quaternion product ⊗

CAq^=CBq^BAq^
CAq^=BAq^CBq^

Hamilton rule

곱셈을 성분 계산으로 펼친다

Hamilton rule 아래의 전개는 추상적인 곱 기호를 네 성분의 계산으로 옮기는 구간이다. qₐ와 qᵦ의 성분을 정한 뒤, 제시된 행렬의 열과 행을 따라 곱하고 더한다. 행렬 표현과 최종 성분 표현이 같은 연산을 나타내는지 살펴보는 것이 핵심이며, 그림에만 있는 세부 항은 실제 식을 확인하며 따라간다.

수식

proof

b=(bxbybz)
수식
수식
qb=(b1b2b3b4)=(b1b)

qaqb

qaqb
=(a1a2a3a4)(b1b2b3b4)
=(a1a2a3a4)(b1I+(0bbT×b))
=(a1a2a3a4)(b1b2b3b4b2b1b4b3b3b4b1b2b4b3b2b1)
수식

Euler axis

회전축 표기와 반각의 부호를 확인한다

여기서는 Euler axis를 ê로 놓고 각 성분을 다시 적는다. 앞부분의 r̂ 표기와 달리 사인 항 앞의 부호가 달라 보이므로, 두 표현을 조건 확인 없이 같은 코드에 섞지 않는다. 반각 식에 ±가 나타나는 이유도 제곱한 값만으로 원래의 부호를 정할 수 없기 때문이다. 각도의 범위와 제곱근이 적용되는 범위를 함께 읽는다.

e^=(exeyez)

Vector's Elements

q1=cos[θ2]
q2=exsin[θ2]
q3=eysin[θ2]
q4=ezsin[θ2]

Half Angle Identities

sin[θ2]=±1cos[θ]2
cos[θ2]=±1+cos[θ]2

Choice of ± sign depends on the quadrant in which θ/2 lies .

Norm

크기와 역변환은 서로 다른 개념이다

노름은 네 성분을 각각 제곱하여 더한 뒤 제곱근을 취한 크기이다. 켤레는 성분의 부호만 바꾸므로 이 크기를 바꾸지 않는다. 역변환을 설명하는 식은 이 글의 단위 쿼터니언 조건과 함께 읽으며, 비단위 쿼터니언에 분모를 그대로 적용할 수 있다고 일반화하지 않는다.

|BAq^|=q12+q22+q32+q42
|BAq^|=|BAq^|

Inverse

BAq^1=BAq^|BAq^|

Quaternion BAq^

A three dimensional vector

3차원 벡터를 회전 계산에 넣는다

벡터의 x·y·z 성분 앞에 0을 붙이면 쿼터니언 곱에 넣을 수 있는 네 성분 형태가 된다. 이때 0은 새로운 공간축이 아니라 스칼라 성분을 비워 둔 것이다. q, 벡터, q*를 차례로 곱한 식은 회전 전후의 벡터 표현을 연결하며, 이어지는 식은 이 변환을 두 번 적용한 관계를 보여준다.

Aυ=(0AυxAυyAυz)
원본 도해
Bυ=BAq^AυBAq^
Cυ=CBq^BυCBq^
수식
CAq^=CBq^BAq^

회전행렬과 같은 좌표 변환을 비교한다

회전행렬 R을 벡터에 곱하는 표현도 앞에서 다룬 좌표 변환을 나타낸다. A→B→C를 차례로 적용한 식과 A→C를 한 번에 적용한 식을 비교하면, 연속 변환이 행렬의 곱으로 묶이는 이유를 이해할 수 있다. 어느 좌표계의 벡터가 입력되고 어느 좌표계로 나오는지를 먼저 읽는다.

Rotation MatrixABR

Bυ=ABRAυ
Cυ=BCRBυ
Cυ=ACRAυ=BCRABRAυ=BCRBυ
ACR=BCRABR
AER=VERAVR
BER=VERBVR
BER=VERAVRBAR=VERBVR=AERBAR

Derivative of Quaternion

회전의 변화율로 연결한다

q 위의 점은 시간에 대한 변화율을 뜻한다. 각속도 ω와 현재 쿼터니언의 곱으로 q가 얼마나 빠르게 변하는지 표현하는 식이다. 이 식 자체가 다음 시점의 자세는 아니며, 시간 간격에 대한 누적은 각속도 기반 자세 추정 문서에서 이어서 다룬다.

BAq^˙=12BAq^ω

정리하면

쿼터니언을 이해한다는 것은 네 숫자를 외우는 일이 아니라, 좌표계·성분 순서·회전 방향을 일관되게 연결하는 일이다. 같은 기호를 사용하더라도 정의가 달라지면 곱의 순서와 부호도 달라질 수 있다.

NOTE 02 / 회전과 로보틱스

회전행렬

Rotation Matrix

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

회전행렬은 한 좌표계에서 표현한 벡터를 다른 좌표계의 성분으로 바꾸는 관계를 행렬로 정리한 것이다. 이 글에서는 먼저 좌표축이 서로 수직이고 길이가 1이라는 조건을 확인한 뒤, 내적과 방향코사인을 이용해 행렬의 의미를 읽는다.

기호를 먼저 읽기

R
좌표계 사이의 회전 관계를 나타내는 행렬
Rᵀ
행과 열을 바꾼 전치행렬
R⁻¹
적용한 변환을 되돌리는 역행렬
I
벡터를 그대로 유지하는 단위행렬
x̂, ŷ, ẑ
각 좌표축 방향의 단위벡터
vᴬ, vᴮ
같은 벡터를 A·B 좌표계의 성분으로 나타낸 값

이 글의 흐름

축의 직교성과 길이를 확인하고, 각 축에 대한 투영으로 행렬 성분을 해석한다. 이어서 행렬 곱으로 좌표 변환을 연결하고, 전치와 역행렬의 관계를 확인한다.

행렬을 보기 전에 좌표축의 조건을 확인한다

이 문서는 회전행렬의 구조에서 시작한다. 이어지는 축의 내적이 0이라는 식은 서로 수직임을, 각 축의 노름이 1이라는 식은 길이를 통일했음을 나타낸다. 방향만 바꾸는 좌표계를 만들기 위해 두 조건을 함께 사용한다.

주제와 표기

Rotation Matrix representation ABR

수식

Orthogonal matrix

x^y^=0
y^z^=0
z^x^=0
|x^|=1
|y^|=1
|z^|=1

전치는 회전을 되돌리는 연산과 연결된다

RᵀR=I는 회전을 적용한 뒤 전치행렬을 적용하면 원래 표현으로 돌아온다는 뜻이다. 따라서 이 조건을 만족하는 회전행렬에서는 Rᵀ와 R⁻¹이 같다. 모든 행렬의 전치가 역행렬인 것은 아니므로, 앞의 직교 조건을 생략하지 않는다.

RTR=I

Transpose = Inverse

RT=R1
원본 도해

여러 좌표계를 거치는 변환을 묶는다

먼저 A 좌표계의 벡터를 B로 옮기고, 그 결과를 다시 C로 옮긴다. 두 식을 대입하면 중간 벡터 대신 두 회전행렬의 곱이 남는다. 벡터를 열로 두는 표현에서는 벡터 가까이에 있는 오른쪽 행렬부터 작용하므로, 식을 읽을 때에도 적용 순서를 구별한다.

Rotation MatrixABR

A three dimensional vector

Aυ=(0AυxAυyAυz)
원본 도해
Bυ=ABRAυ
Cυ=BCRBυ
Cυ=ACRAυ=BCRABRAυ=BCRBυ
ACR=BCRABR
AER=VERAVR
BER=VERBVR
BER=VERAVRBAR=VERBVR=AERBAR

Inner Product Space

내적은 두 방향이 얼마나 나란한지 보여준다

두 벡터의 내적을 각각의 길이로 나누면 크기의 영향을 없애고 방향 사이의 코사인만 남길 수 있다. 방향이 수직이면 코사인이 0이고 내적도 0이다. 분모에 두 벡터의 길이가 있으므로 영벡터에는 이 각도식을 적용하지 않는다.

xy=|x||y|cos[θ]
cos[θ]=xy|x||y|

Representation of orientation

벡터를 기준축의 합으로 표현한다

벡터 u를 세 기저벡터의 배수로 더하면 각 축 방향의 성분을 따로 볼 수 있다. 단위방향의 경우 방향코사인의 제곱합이 1이 된다. 이어지는 전개에서는 벡터의 크기를 분리하고 각 축으로의 투영을 정리하여 방향 성분을 얻는다.

수식
u=u1e1+u2e2+u3e3
a2+b2+c2=cos[α]2+cos[β]2+cos[γ]2=1
수식
|v|=vx2+vy2+vz2
수식
수식
수식
수식
=cos[α]ex+cos[β]ey+cos[γ]ez
=aex+bey+cez
수식

방향코사인으로 회전행렬의 성분을 읽는다

두 좌표계의 축이 이루는 각도를 내적으로 표현하면 행렬의 성분이 된다. 한 열 또는 한 행에 놓인 세 값은 특정 축이 다른 좌표계에서 어떻게 보이는지를 나타낸다. 다만 행·열의 의미는 이 문서에서 정한 변환 방향에 따라 읽어야 하며, 전치된 관계와 혼용하지 않는다.

The coordinate system {A} is rotated by θ relative to the Ar^ direction is called the coordinate system {B}, it is called the rotation matrix ABR.

수식

Rotation Matrix: Direction Cosine Matrix

수식

The coordinate system {A} is rotated by θ relative to theAr^ direction is called the coordinate system {B}, it is called the rotation matrixABR .

수식
수식

Properties of rotation matrix

같은 관계를 반대 방향에서 확인한다

A에 대한 B의 회전과 B에 대한 A의 회전은 서로 역관계이다. 각 좌표계의 축벡터를 나열한 뒤 왕복 변환을 대입하면 단위행렬 관계로 돌아간다. 계산 결과가 같은 벡터로 복원되는지 확인하는 것이 이 구간의 판단 기준이다.

ABR=BAR1=BART

Rotation matrix of coordinate system {B} with respect to coordinate system {A} : ABR

Rotation matrix of coordinate system {A} with respect to coordinate system {B} : BAR

x^A=(AxxAxyAxz);y^A=(AyxAyyAyz);z^A=(AzxAzyAzz);
x^B=(BxxBxyBxz);y^B=(ByxByyByz);z^B=(BzxBzyBzz);
수식
수식
{AP=ABRBPBP=BARAPAP=BARBP=ABRBARAPABRBAR=I
ABR=BAR1=BART

입력과 출력 좌표계를 문장으로 읽는다

마지막 식은 B에서 표현한 점의 성분을 A에서의 성분으로 옮기는 관계이다. 식 왼쪽은 얻고자 하는 표현이고, 오른쪽은 변환행렬과 이미 알고 있는 표현이다. 좌표계 이름을 먼저 읽은 다음 행렬의 각 성분을 확인하면 긴 전개도 목적을 잃지 않고 따라갈 수 있다.

AP=BARBP

Convert the {B} coordinate system component to the {A} coordinate system component
수식
수식

BAR : Transformation Matrix, Rotation matrix of coordinate system {B} relative to coordinate system {A}

정리하면

회전행렬의 숫자는 단순한 계수표가 아니라 좌표축 사이의 방향 관계이다. 행렬의 크기뿐 아니라 입력 벡터의 차원과 변환 방향까지 맞아야 같은 물리적 벡터를 일관되게 표현할 수 있다.

NOTE 03 / 회전과 로보틱스

오일러각

Euler Angles

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

오일러각은 세 축에 대한 회전을 순서대로 적용하여 자세를 나타낸다. 같은 세 각도를 사용하더라도 고정된 축을 기준으로 도는지, 앞의 회전과 함께 움직인 축을 기준으로 도는지에 따라 읽는 방식이 달라진다. 이 글은 그 차이를 먼저 구별한다.

기호를 먼저 읽기

φ, θ, ψ
이 문서의 Roll·Pitch·Yaw 각도
Rₓ, Rᵧ, R_z
각 축 주위의 회전행렬
rᵢⱼ
회전행렬의 i행 j열 성분
ArcTan[x,y]
원문에서 y/x의 각도를 구하는 두 인수 표기
x̂ᴮ, ŷᴮ, ẑᴮ
B 좌표계의 축을 나타내는 벡터

이 글의 흐름

이동 좌표계와 고정 좌표계를 구별한 뒤 Z·Y·X 회전의 행렬곱을 읽는다. 다음으로 행렬의 특정 성분에서 각도를 역으로 구하고, 축의 내적·외적 관계까지 살펴본다.

고정된 축과 함께 움직이는 축을 구별한다

이동 좌표계에서는 앞선 회전으로 바뀐 축을 다음 회전의 기준으로 삼는다. 고정 좌표계에서는 처음 정한 축을 계속 기준으로 삼는다. 원문이 두 경우의 행렬곱 순서를 따로 설명하는 이유는 이 기준이 서로 다르기 때문이다.

주제와 표기

Euler Angle (Roll φ x^B, Pitch θ y^B, Yaw ψ z^B, ZYX)

Euler Angle (Roll φ x^B, Pitch θ y^B, Yaw ψ z^B, ZYX) →Rotation MatrixBAR

Z-Y-X 오일러 각 (이동 좌표계)

수식

→모든 회전이 이동 좌표계에 대한 회전을 이용한 상대변환이므로 해당 변환행렬을 앞에서부터 순차적으로 곱한다.

원본 도해

Roll-Pitch-Yaw (고정 좌표계)

→고정기준좌표계{A}의 X축에 대해 φ만큼 회전 후 고정좌표계의 Y축에 대해 θ만큼 회전한 후,
고정좌표계의 Z축에 대해 ψ만틈 연속적으로 회전을 하여 특정방위를 나타내는 좌표계{B}를 얻는 방법

→모든 회전이 고정 기준 좌표계에 대한 회전을 이용한 절대변환이므로 해당 변환행렬을 뒤에서부터 앞으로 역순으로 곱한다.

원본 도해
BAR=Rz^[ψ]Ry^[θ]Rx^[ϕ]

축별 회전을 하나의 행렬로 묶는다

R_z, Rᵧ, Rₓ를 곱한 결과는 세 회전을 순차적으로 적용한 전체 변환이다. 행렬 성분을 펼치면 사인·코사인의 곱과 합이 나타나지만, 출발점은 세 개의 단순한 축별 회전이다. 이어지는 세 축벡터는 계산된 행렬의 열 성분을 나누어 적은 것이다.

수식
수식
x^B=(r11r21r31)
y^B=(r12r22r32)
z^B=(r13r23r33)

행렬에서 Roll·Pitch·Yaw를 다시 읽는다

r₃₂와 r₃₃처럼 짝을 이루는 성분으로 한 각도를 구하고, 다른 성분 조합으로 나머지 각도를 구한다. 먼저 제시된 θ의 범위를 확인해야 어느 각도 가지를 선택하는지 알 수 있다. 두 인수 ArcTan 표기는 일반적인 atan2 함수의 인수 순서와 자동으로 같다고 가정하지 않는다.

뒤의 다른 각도 구간은 부호 선택을 따로 다룬다. ArcSin의 주값만으로 모든 구간의 θ가 유일하게 복원되는 것으로 읽지 않고, 제시된 범위와 부호를 함께 확인한다.

Rotation Matrix BARRoll φx^B,Pitch θy^B,Yaw ψz^B

BAR=(r11r12r13r21r22r23r31r32r33)

→the three RPY angles are (θ∈(-π/2,π/2))

ϕ=ArcTan[r33,r32]
θ=ArcTan[r322+r332,r31]=arcsin[r31]
ψ=ArcTan[r11,r21]

→or (θ∈(π/2,3 π/2))

ϕ=ArcTan[r33,r32]
θ=ArcTan[r322+r332,r31]=arcsin[r31]
ψ=ArcTan[r11,r21]

x,y,z

행렬의 열과 기준축의 관계를 비교한다

세 외적 식은 각 축이 기준축과 나란한지, 어느 방향으로 어긋나는지 살펴보는 전개이다. 이어지는 내적 식은 기준축 방향의 성분을 꺼내어 방향코사인과 연결한다. 같은 열벡터에서 외적과 내적이 서로 다른 정보를 준다는 점을 구별한다.

Cross[{r11,r21,r31},{1,0,0}]={0,r31,r21}
Cross[{r12,r22,r32},{0,1,0}]={r32,0,r12}
Cross[{r13,r23,r33},{0,0,1}]={r23,r13,0}
Dot[{r11,r21,r31},{1,0,0}]=r11
Dot[{r12,r22,r32},{0,1,0}]=r22
Dot[{r13,r23,r33},{0,0,1}]=r33
r11=cos[α]
r22=cos[β]
r33=cos[γ]

축별 쿼터니언 전개로 연결한다

이 구간은 앞에서 얻은 축의 관계를 반각 표현과 쿼터니언 성분으로 옮긴다. q₁부터 q₄까지의 정의를 유지하면서, x·y·z 축에 대응하는 식을 나누어 읽는다. 긴 전개에서는 새 회전 규칙을 외우기보다 어느 축의 성분을 없애거나 결합하는지 확인한다. 이미지에만 있는 중간 항을 주변 식만으로 새로 정하지는 않는다.

수식
sin[θ2]=±1cos[θ]2
cos[θ2]=±1+cos[θ]2
BAq^=(q1q2q3q4)=(cos[θ2]rxsin[θ2]rysin[θ2]rzsin[θ2])
수식
={q12+q22,0,2(q2q4+q1q3)1q12q22,2(q2q3q1q4)1q12q22}
수식
={q12+q32,2(q3q4q1q2)1q12q32,0,2(q2q3+q1q4)1q12q32}
수식
={q12+q42,2(q3q4+q1q2)1q12q42,2(q2q4q1q3)1q12q42,0}
수식
qxq={q12+q22,0,2(q2q4+q1q3)1q12q22,2(q2q3q1q4)1q12q22}{q1,q2,q3,q4}
수식
qyq={q12+q32,2(q3q4q1q2)1q12q32,0,2(q2q3+q1q4)1q12q32}{q1,q2,q3,q4}
수식
qzq={q12+q42,2(q3q4+q1q2)1q12q42,2(q2q4q1q3)1q12q42,0}{q1,q2,q3,q4}
수식

정리하면

오일러각은 숫자 세 개만으로 정의되지 않는다. 축의 기준, 적용 순서, 각도 범위를 함께 적어야 같은 자세를 뜻하는 표현이 된다.

NOTE 04 / 회전과 로보틱스

회전행렬에서 쿼터니언으로

Matrix → Quaternion

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

이미 회전행렬을 알고 있다면, 그 안의 정보를 다시 쿼터니언 네 성분으로 정리할 수 있다. 이 글에서는 대각 성분을 더하거나 빼서 각 성분의 제곱을 분리하고, 나머지 성분의 차이로 부호를 정하는 흐름을 다룬다.

기호를 먼저 읽기

r₁₁, r₂₂, r₃₃
회전행렬의 세 대각 성분
q₁ … q₄
복원하려는 쿼터니언 성분
Sign[·]
값의 부호를 구별하는 연산
q₁²+q₂²+q₃²+q₄²
단위 쿼터니언에서는 1이 되는 합

이 글의 흐름

결과식을 먼저 살핀 뒤 단위 길이 조건을 사용하여 대각 성분 조합을 정리한다. 각 조합이 4qᵢ²로 모이는 과정을 확인하면 제곱근과 1/2 계수가 등장하는 이유를 이해할 수 있다.

크기를 구하는 식과 부호를 정하는 식을 나눈다

q₁은 대각 성분의 합으로 구하고, q₂·q₃·q₄는 대각 성분의 차이와 Sign 항을 함께 사용한다. 제곱근은 성분의 크기에 관련되고, Sign은 방향에 관련된다. 따라서 제곱근 부분만 계산해서는 전체 쿼터니언을 결정한 것으로 볼 수 없다.

주제와 표기

Rotation MatrixABR →QuaternionBAq^

q1=12r11+r22+r33+1
q2=Sign[r32r23]2r11r22r33+1
q3=Sign[r13r31]2r22r33r11+1
q4=Sign[r21r12]2r33r11r22+1

Rotation Matrix BAR → Quaternion BAq^

수식

1

단위 길이 조건을 이용해 항을 묶는다

먼저 네 성분의 제곱합이 1이라는 조건을 둔다. 다음으로 r₁₁+r₂₂+r₃₃+1에 각 대각 성분의 표현을 대입한다. 같은 종류의 항을 묶고 제곱합을 1로 바꾸면 4q₁²가 남는다.

BAq^=(q1q2q3q4)
q12+q22+q32+q42=1

2

r11+r22+r33+1
=(2q121+2q22)+(2q121+2q32)+(2q121+2q42)+1
=2(1+2q12+q12+q22+q32+q42)=2(1+2q12+1)
=4q12

다른 성분도 같은 방식으로 분리한다

대각 성분의 부호 조합을 바꾸면 q₂², q₃², q₄²를 각각 남길 수 있다. 네 식의 모양을 따로 외우기보다 어떤 대각 성분은 더하고 어떤 성분은 빼는지 비교한다. 마지막 q₄ 전개의 중간에는 a₄라는 표기도 나타나므로, q₄와의 동일성이 별도 정의 없이 확정된 것으로 읽지 않는다.

r11r22r33+1
=(2q121+2q22)(2q121+2q32)(2q121+2q42)+1
=2(1+q12q22+q32+q42)=2(12q22+q12+q22+q32+q42)=2(12q22+1)
=4q22
r11+r22r33+1
=(2q121+2q22)+(2q121+2q32)(2q121+2q42)+1
=2(1+q12+q22q32+q42)=2(12q32+q12+q22+q32+q42)=2(12q32+1)
=4q32
r11r22+r33+1
=(2q121+2q22)(2q121+2q32)+(2q121+2q42)+1
=2(1+q12+q22+q32q42)=2(12a42+q12+q22+q32+q42)=2(12a42+1)
=4q42

3

분리한 제곱을 성분으로 되돌린다

4qᵢ²에서 성분을 얻으면 제곱근 앞에 1/2이 붙는다. 나머지 부호는 처음 제시한 차이와 Sign 항으로 연결된다. 근호 안이 허용 범위에 있는지, 선택한 부호식이 0이 되는지까지 확인해야 실제 계산으로 옮길 수 있다.

q1=12r11+r22+r33+1
q2=Sign[r32r23]2r11r22r33+1
q3=Sign[r13r31]2r22r33r11+1
q4=Sign[r21r12]2r33r11r22+1

정리하면

대각 성분의 조합은 쿼터니언 성분의 크기를, 비대각 성분의 차이는 부호 선택의 단서를 제공한다. 다만 부호식이 0이 되는 경우까지 모든 회전에서 자동으로 해결된다고 단정하지 않는다.

NOTE 05 / 회전과 로보틱스

축별 쿼터니언의 합성

Quaternion Composition

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

축별 회전을 모두 적용했을 때의 자세는 각도를 단순히 더해서 얻는 것이 아니다. 이 글에서는 x·y·z 축에 대한 쿼터니언을 차례로 곱하여 전체 자세의 네 성분을 구한다.

기호를 먼저 읽기

Qₓ[φ], Qᵧ[θ], Q_z[ψ]
세 축에 대한 개별 회전
φ/2, θ/2, ψ/2
각 축 회전을 구성하는 반각
축별 회전을 연결하는 쿼터니언 곱
q₁ … q₄
합성 결과의 네 성분

이 글의 흐름

축마다 두 성분만 남는 단순한 쿼터니언을 만든 뒤, 원문에 적힌 곱의 순서를 유지하며 전개한다. 결과를 스칼라 성분 하나와 벡터 성분 셋으로 나누어 확인한다.

세 축의 회전을 차례로 연결한다

Qₓ에는 x축에 해당하는 벡터 성분만, Qᵧ에는 y축 성분만, Q_z에는 z축 성분만 남는다. 이들을 Qₓ⊗Qᵧ⊗Q_z 순서로 곱하여 하나의 쿼터니언을 만든다. 각도를 더하는 대신 곱을 사용하는 이유는 축 사이의 회전 관계도 함께 반영해야 하기 때문이다.

주제와 표기

q^=Qx[ϕ]Qy[θ]Qz[ψ]

q^={cos[ϕ2],sin[ϕ2],0,0}{cos[θ2],0,sin[θ2],0}{cos[ψ2],0,0,sin[ψ2]}

첫 성분은 두 곱의 합으로 나온다

q₁은 세 반각의 코사인을 곱한 항과 세 반각의 사인을 곱한 항의 합으로 제시되어 있다. 먼저 세 반각을 계산하고, 각 항의 곱을 구한 뒤 더하면 된다. 원문 식에서 φ=θ=ψ=0을 대입하면 q₁=1, 나머지 성분은 0이 되어 회전이 없는 경우를 확인할 수 있다.

q1=cos[ϕ2]cos[θ2]cos[ψ2]+sin[ϕ2]sin[θ2]sin[ψ2]

나머지 성분은 부호를 포함하여 한 묶음으로 읽는다

q₂·q₃·q₄에는 사인과 코사인이 서로 다른 위치에 들어간 두 항이 나타난다. 각 줄에서 음의 부호가 어느 항에 붙는지 확인하며 계산한다. 동일한 축 회전 정의에서 나온 네 줄이므로, 한 성분만 다른 자료의 식으로 바꾸면 전체 규약이 어긋날 수 있다.

q2=sin[ϕ2]cos[θ2]cos[ψ2]+cos[ϕ2]sin[θ2]sin[ψ2]
q3=cos[ϕ2]sin[θ2]cos[ψ2]sin[ϕ2]cos[θ2]sin[ψ2]
q4=cos[ϕ2]cos[θ2]sin[ψ2]+sin[ϕ2]sin[θ2]cos[ψ2]

정리하면

합성식의 핵심은 회전 순서와 부호 규약이다. 성분별 삼각함수 항은 그 규칙을 계산한 결과이며, 네 성분을 따로 정하는 독립 공식이 아니다.

NOTE 06 / 회전과 로보틱스

오일러각·쿼터니언 변환 유도

Euler → Quaternion · Derivation

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

이 문서는 오일러각을 쿼터니언으로 옮기는 결과만 제시하는 것이 아니라, 회전행렬 성분을 대입하여 그 결과에 도달하는 중간 과정을 다룬다. 긴 식을 모두 한 번에 읽기보다 대입·정리·축별 분해·합성의 단계로 나누어 살펴본다.

기호를 먼저 읽기

φ, θ, ψ
세 축 회전의 각도
rᵢⱼ
오일러각으로 표현된 회전행렬 성분
Q[φ,θ,ψ]
세 각도에 대응하는 쿼터니언 표현
B[·,·]
이 전개에서 사용한 두 쿼터니언의 결합 표기
Sign[·]
제곱근으로 사라진 부호를 구별하는 항

이 글의 흐름

행렬에서 쿼터니언을 구하는 식에 삼각함수 표현을 대입한다. 그다음 한 축씩 남겨 단순한 형태를 확인하고, 세 축의 결과를 다시 결합한다.

행렬 성분으로 표현한 결과에서 출발한다

먼저 q₁부터 q₄까지를 회전행렬의 성분으로 적는다. 다음 단계에서 이 rᵢⱼ 자리에 오일러각의 사인·코사인 표현을 넣을 예정이다. 어떤 변수를 다른 표현으로 바꾸는지 먼저 알면 식의 길이가 늘어나는 이유를 이해할 수 있다.

주제와 표기

Euler Angle (Roll φ x^B, Pitch θ y^B, Yaw ψ z^B, ZYX) → Quaternion BAq^

q1=12r11+r22+r33+1
q2=Sign[r32r23]2r11r22r33+1
q3=Sign[r13r31]2r22r33r11+1
q4=Sign[r21r12]2r33r11r22+1

1

삼각함수 표현을 대입하고 정리한다

대입 후에는 여러 사인·코사인의 곱이 제곱근과 부호 함수 안에 나타난다. 이 단계의 목적은 같은 회전을 φ·θ·ψ만으로 표현하는 것이다. 중간식의 길이를 줄이려고 항이나 부호를 생략하지 않고, 어느 q 성분을 계산하는지 구분해 따라간다.

q1=12r11+r22+r33+1
=121+cos[θ]cos[ϕ]+cos[θ]cos[ψ]+cos[ϕ]cos[ψ]+sin[θ]sin[ϕ]sin[ψ]
q2=Sign[r32r23]2r11r22r33+1
수식
q3=Sign[r13r31]2r22r33r11+1
수식
q4=Sign[r21r12]2r33r11r22+1
수식

2

q1=121+cos[θ]cos[ϕ]+cos[θ]cos[ψ]+cos[ϕ]cos[ψ]+sin[θ]sin[ϕ]sin[ψ]
수식
수식
수식

3

수식

한 축만 남겨 결과를 확인한다

Q[φ,0,0]에서는 x축 회전만 남고, Q[0,θ,0]과 Q[0,0,ψ]에서는 각각 y축과 z축 회전만 남는다. 다른 두 각도가 0이 되면 많은 항이 없어져 반각의 사인·코사인 두 값으로 단순해진다. 이는 복잡한 일반식을 이해하기 위한 가장 직접적인 확인 과정이다.

Q[ϕ,0,0]
={122+2cos[ϕ],1222cos[ϕ]Sign[sin[ϕ]],0,0}
={cos[ϕ2],sin[ϕ2],0,0}
Q[0,θ,0]
={122+2cos[θ],0,1222cos[θ]Sign[sin[θ]],0}
={cos[θ2],0,sin[θ2],0}
Q[0,0,ψ]
={122+2cos[ψ],0,0,1222cos[ψ]Sign[sin[ψ]]}
={cos[ψ2],0,0,sin[ψ2]}

4

단순한 축 회전을 다시 합성한다

B[B[Qₓ,Qᵧ],Q_z]처럼 안쪽 결합부터 계산한다. 이 표기는 먼저 두 축을 결합한 다음 세 번째 축을 결합한다는 순서를 드러낸다. 이어지는 성분식은 이 결합을 실제 숫자와 삼각함수의 계산으로 펼친 결과이다.

수식
B[B[Q[ϕ,0,0],Q[0,θ,0]],Q[0,0,ψ]]
수식

5

B[B[{cos[ϕ2],sin[ϕ2],0,0},{cos[θ2],0,sin[θ2],0}],{cos[ψ2],0,0,sin[ψ2]}]
수식

최종 네 줄을 하나의 결과로 정리한다

마지막 네 식은 q₁·q₂·q₃·q₄를 각각 나타낸다. 앞 단계의 축별 반각 정의가 이 네 줄에 모두 남아 있다는 점을 확인한다. 특별한 각도를 대입하여 0이 되는 항을 지우면 일반식과 단일축 결과의 연결을 다시 살펴볼 수 있다.

q1=cos[ϕ2]cos[θ2]cos[ψ2]+sin[ϕ2]sin[θ2]sin[ψ2]
q2=sin[ϕ2]cos[θ2]cos[ψ2]+cos[ϕ2]sin[θ2]sin[ψ2]
q3=cos[ϕ2]sin[θ2]cos[ψ2]sin[ϕ2]cos[θ2]sin[ψ2]
q4=cos[ϕ2]cos[θ2]sin[ψ2]+sin[ϕ2]sin[θ2]cos[ψ2]

정리하면

긴 전개가 보여주는 것은 새로운 여러 공식이 아니라, 같은 회전을 서로 다른 표현으로 옮겨도 같은 구조에 도달하는 과정이다. 이미지 중간식의 세부 항은 해당 식이 표시될 때 함께 대조하며 읽는다.

NOTE 07 / 회전과 로보틱스

오일러각에서 쿼터니언으로

Euler → Quaternion

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

세 축의 회전각이 주어졌을 때, 이를 자세 계산에 사용할 네 성분으로 표현하는 것이 이 글의 목적이다. 앞의 긴 유도 과정을 압축하여 일반 표현과 단일축 예제를 함께 읽는다.

기호를 먼저 읽기

Q[φ,θ,ψ]
세 회전각으로 정한 쿼터니언
Qₓ, Qᵧ, Q_z
한 축만 회전하는 경우
π/2
90도에 해당하는 라디안 각도
1/√2
π/4의 사인·코사인에 나타나는 값

이 글의 흐름

일반 성분식에서 시작해 두 각도를 0으로 놓고, 남은 한 축의 회전을 확인한다. 마지막에는 각 축에 π/2를 넣어 수치적인 형태를 확인한다.

일반식과 축별 표현을 연결한다

q₁의 식은 여러 대각 성분을 오일러각으로 펼친 결과이다. 이어지는 q₂·q₃·q₄와 함께 네 성분 전체를 구성한다. 이미지로 제시된 성분식은 실제 항을 확인해야 하므로, 나머지 성분의 부호를 q₁ 식만 보고 추정하지 않는다.

주제와 표기

Euler Angle (Roll φ x^B, Pitch θ y^B, Yaw ψ z^B, ZYX) →QuaternionBAq^

q1=121+cos[θ]cos[ϕ]+cos[θ]cos[ψ]+cos[ϕ]cos[ψ]+sin[θ]sin[ϕ]sin[ψ]
수식
수식
수식

다른 두 각도를 0으로 놓는다

Qₓ[φ]에서는 θ와 ψ를 0으로 놓는다. 이에 따라 y·z 성분이 없어지고 q₁과 x 성분만 남는다. 같은 방법을 y축과 z축에 적용하면 각 축의 단일회전 표현을 얻는다.

Qx[ϕ]=Q[ϕ,0,0]={122+2cos[ϕ],1222cos[ϕ]Sign[sin[ϕ]],0,0}={cos[ϕ2],sin[ϕ2],0,0}
Qy[θ]=Q[0,θ,0]={122+2cos[θ],0,1222cos[θ]Sign[sin[θ]],0}={cos[θ2],0,sin[θ2],0}
Qz[ψ]=Q[0,0,ψ]={122+2cos[ψ],0,0,1222cos[ψ]Sign[sin[ψ]]}={cos[ψ2],0,0,sin[ψ2]}

90도 회전을 네 성분으로 읽는다

원문 예제의 π/2를 반으로 나누면 π/4가 된다. 그 사인과 코사인 때문에 1/√2가 나타나며, 회전축에 해당하는 성분에만 음의 값이 들어간다. 나머지 두 벡터 성분이 0이라는 사실은 다른 축의 회전이 들어 있지 않음을 보여준다.

Q[π2,0,0]={12,12,0,0}
Q[0,π2,0]={12,0,12,0}
Q[0,0,π2]={12,0,0,12}

정리하면

일반식을 이해하기 어렵다면 단일축 예제부터 확인할 수 있다. 이때 스칼라 성분의 위치와 벡터부의 음의 부호는 일반식과 동일하게 유지한다.

NOTE 08 / 회전과 로보틱스

쿼터니언에서 회전행렬로

Quaternion → Matrix

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

쿼터니언으로 표현한 자세를 행렬 연산에 사용하려면 회전행렬로 옮겨야 한다. 이 문서는 회전축·각도와 연결된 네 성분 정의를 먼저 놓고, 이에 대응하는 행렬을 제시한다.

기호를 먼저 읽기

q₁ … q₄
스칼라 우선 순서의 쿼터니언 성분
rₓ, rᵧ, r_z
회전축의 세 방향 성분
θ
회전각
R
같은 좌표 관계를 행렬로 표현한 결과

이 글의 흐름

입력 쿼터니언의 단위 길이 조건과 변환 방향을 먼저 확인한다. 다음으로 네 성분이 회전행렬의 각 항에 어떻게 들어가는지 살펴본다.

입력 규약을 행렬에서도 유지한다

첫 식은 q₁을 반각의 코사인으로, 나머지 세 성분을 음의 축 성분과 반각의 사인으로 정의한다. 이어지는 행렬도 이 정의의 변환 방향과 함께 읽는다. 행렬 안의 구체적인 항은 원래 그림에 있으므로, 다른 부호 규약의 일반식을 대신 대입하지 않는다.

주제와 표기

Quaternion BAq^ →Rotation MatrixABR

BAq^=(q1q2q3q4)=(cos[θ2]rxsin[θ2]rysin[θ2]rzsin[θ2])
수식

정리하면

쿼터니언과 회전행렬은 서로 다른 자세를 만드는 두 방법이 아니라, 같은 회전 관계를 서로 다른 형식으로 기록하는 방법이다.

NOTE 09 / 회전과 로보틱스

회전축과 회전각

Axis–Angle

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

복잡한 회전도 하나의 회전축과 그 축 주위의 회전각으로 바라볼 수 있다. 이 글은 축을 기준축에 맞추어 회전한 뒤 되돌리는 방식으로 행렬을 구성하고, 반대로 행렬에서 축과 각도를 읽는 관계를 다룬다.

기호를 먼저 읽기

r
(rₓ,rᵧ,r_z)=길이가 1인 회전축
ϑ
축을 중심으로 한 회전각
α, β
축을 기준 방향에 맞추기 위한 보조 각도
rᵢⱼ
회전행렬의 성분

이 글의 흐름

보조 회전으로 축을 정렬하고 원하는 각도만큼 회전한 뒤 정렬을 되돌린다. 그 결과를 축 성분으로 표현하고, 마지막에는 행렬의 대각합과 비대각 차이에서 각도와 축을 구한다.

축을 정렬하고 회전한 뒤 되돌린다

R_z[α]와 Rᵧ[β] 같은 보조 변환은 임의의 축을 다루기 쉬운 방향에 맞추기 위해 사용한다. 가운데 회전이 실제로 원하는 ϑ 회전이다. 뒤에 나타나는 음의 각도는 앞서 한 정렬을 되돌리는 역할로 읽는다.

주제와 표기

γ/ϑ → Axis/Angle→Rotation MatrixABR

수식
수식

Rotation Matrix BAR

원본 도해
r=(rxryrz)

1

R[ϑ,r]=Rz[α]Ry[β]Rz[ϑ]Ry[β]Rz[α]

2

축 성분을 보조 각도로 바꾼다

rₓ와 rᵧ로 수평 성분의 길이를 구하고, 이를 이용해 α의 사인·코사인을 정한다. β는 수평 성분과 수직 성분 r_z의 관계를 나타낸다. 분모에 수평 성분의 길이가 있는 식은 그 길이가 0인 경우에 별도의 처리가 필요하다.

sin[α]=ryrx2+ry2;cos[α]=rxrx2+ry2;
sin[β]=rx2+ry2;cos[β]=rz;

3

α=ArcTan[ryrx];β=ArcTan[rx2+ry2rz];
수식

4

단위축 조건으로 전개를 줄인다

rₓ²+rᵧ²+r_z²=1을 이용하면 길이에 관련된 항을 줄일 수 있다. 제곱근과 분모가 포함된 중간식은 부호와 정의역까지 확인해야 하므로, 제곱 관계를 이용했다는 이유만으로 원래의 부호가 자동 복원된다고 보지 않는다.

rx2+ry2+rz2=1;
1+rx2+ry2rz2rz=1;

5

수식

행렬에서 회전각과 축을 다시 얻는다

세 대각 성분의 합에서 코사인 관계를 얻고 ArcCos로 각도를 읽는다. 이어서 서로 마주 보는 비대각 성분의 차이를 2sinϑ로 나누어 축 성분을 구한다. sinϑ가 0인 경우에는 이 나눗셈을 할 수 없으므로, 이 식을 모든 각도에 무조건 적용하지 않는다.

Rotation Matrix BAR → Axis γ/Angle ϑ

R[ϑ,r]=R[ϑ,r]
ϑ=arccos[r11+r22+r3312]
r=(rxryrz)=12sin[ϑ](r32r23r13r31r21r12)
rx2+ry2+rz2=1

정리하면

축-각도 표현은 회전의 기하학적 의미를 직접 보여준다. 다만 역변환 식의 분모가 0이 되는 회전은 일반식에 그대로 넣을 수 없으므로 분리해서 살펴야 한다.

NOTE 10 / 회전과 로보틱스

자세 표현의 연결

Orientation Representations

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

이 글은 쿼터니언, 축-각도, 회전행렬이 어떻게 연결되는지 단계별로 정리한다. 같은 관계를 제곱하거나 정리하면서 삼각함수를 쿼터니언 성분으로 바꾸는 것이 전개의 중심이다.

기호를 먼저 읽기

q₁ … q₄
단위 쿼터니언의 네 성분
ϑ
축-각도 표현에서의 회전각
rₓ, rᵧ, r_z
회전축의 성분
R
최종적으로 구성할 회전행렬

이 글의 흐름

반각 관계에서 출발해 각 성분을 제곱하고, 코사인과 축 성분의 곱을 q의 제곱으로 정리한다. 다음으로 이 결과를 회전행렬에 넣어 표현 간의 연결을 확인한다.

하나의 회전을 여러 표현으로 읽는다

처음의 쿼터니언 정의와 회전행렬은 같은 자세 관계를 나타내려는 출발점이다. 이어지는 반각 관계는 θ/2로 적힌 항을 θ로 바꾸기 위한 연결 고리이다. 근호가 어떤 범위를 덮는지와 ±의 선택을 함께 확인한다.

주제와 표기

Orientation BAq^ → Axis γ/Angle ϑ → Rotation Matrix BAR

BAq^=(q1q2q3q4)=(cos[θ2]rxsin[θ2]rysin[θ2]rzsin[θ2])
수식

Half-Angle Identities

cos[θ2]=1+cos[θ]2
sin[θ2]=1cos[θ]2

Quaternion BAq^ →Rotation MatrixABR

cos[ϑ2]=±1+cos[ϑ]2;sin[ϑ2]=±1cos[ϑ]2;
BAq^=(q1q2q3q4)=(cos[ϑ2]rxsin[ϑ2]rysin[ϑ2]rzsin[ϑ2])

1

q1=cos[ϑ2]=1+cos[ϑ]2
q2=rxsin[ϑ2]=rx1cos[ϑ]2
q3=rysin[ϑ2]=ry1cos[ϑ]2
q4=rzsin[ϑ2]=rz1cos[ϑ]2

2

성분을 제곱해 삼각함수와 연결한다

각 q 성분을 제곱하면 반각 사인·코사인의 제곱이 나타난다. 이 관계를 정리하면 cosϑ와 rₓ²(1−cosϑ) 같은 묶음을 q의 제곱으로 바꿀 수 있다. 한 줄씩 새 공식을 만든다기보다 같은 정의의 양변을 변형하는 과정으로 읽는다.

q12=1+cos[ϑ]2
q22=rx21cos[ϑ]2
q32=ry21cos[ϑ]2
q42=rz21cos[ϑ]2

3

cos[ϑ]=2q121
rx2(1cos[ϑ])=2q22
ry2(1cos[ϑ])=2q32
rz2(1cos[ϑ])=2q42

4

사인과 축 성분을 다시 분리한다

cosϑ의 관계에서 sinϑ와 축 성분을 정리하는 구간이다. 제곱근을 취하는 과정에서는 절댓값과 부호 조건이 중요하다. 특히 앞서 벡터부에 음의 부호를 두었으므로, 축 성분을 되돌리는 중간식과 정의의 부호가 일관되는지 확인한다.

sin[ϑ]=1cos[ϑ]2=(1cos[ϑ])(1+cos[ϑ])=2q12(1cos[ϑ])=2q11cos[ϑ]

5

rx=2q21cos[ϑ]
ry=2q31cos[ϑ]
rz=2q41cos[ϑ]
sin[ϑ]=2q11cos[ϑ]

6

행렬에 대입해 같은 관계인지 확인한다

앞에서 얻은 성분 관계를 회전행렬에 대입하고 동류항을 정리한다. 중간 행렬과 마지막 행렬은 계산 형식이 달라도 같은 정의에서 나와야 한다. 그림으로 남아 있는 행렬의 개별 항은 실제 표시된 식을 기준으로 확인한다.

BAq^=(q1q2q3q4)=(cos[ϑ2]rxsin[ϑ2]rysin[ϑ2]rzsin[ϑ2])
수식

7

수식

8

수식

9

q1=cos[ϑ2];q2=rxsin[ϑ2];q3=rysin[ϑ2];q4=rzsin[ϑ2];
수식
수식

정리하면

제곱을 이용한 정리는 계산을 단순하게 하지만 부호 정보를 줄일 수 있다. 따라서 원래의 정의와 각도의 범위를 끝까지 함께 유지하는 것이 중요하다.

NOTE 11 / 회전과 로보틱스

오일러각에서 회전행렬로

Euler → Matrix

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

Roll·Pitch·Yaw 세 값을 좌표 변환에 사용하려면 행렬로 정리할 수 있다. 이 글의 핵심은 각도에서 개별 축 회전행렬을 만든 뒤 정해진 순서로 곱하는 것이다.

기호를 먼저 읽기

φ, θ, ψ
Roll·Pitch·Yaw에 대응하는 각도
Rₓ[φ], Rᵧ[θ], R_z[ψ]
각 축에 대한 회전
rᵢⱼ
행렬곱으로 얻은 전체 회전행렬의 성분

이 글의 흐름

세 각도를 확인하고 각 축의 회전행렬을 만든다. 다음으로 R_z·Rᵧ·Rₓ의 순서를 유지해 곱한 뒤, 각 성분에 나타나는 삼각함수 항을 읽는다.

축별 변환을 행렬곱으로 결합한다

결과 R의 i행 j열은 해당 행과 열의 곱을 더하여 구한다. 따라서 전개식의 여러 삼각함수 곱은 세 축 회전의 조합에서 나온다. 이 구간의 일부 행렬은 이미지에만 있으므로, 보이지 않는 항을 다른 회전 규약의 식으로 채워 넣어 해석하지 않는다.

주제와 표기

Euler Angle (Roll φ x^B, Pitch θ y^B, Yaw ψ z^B, ZYX) →Rotation MatrixABR

ABR=(r11r12r13r21r22r23r31r32r33)=Rz^[ψ]Ry^[θ]Rx^[ϕ]
수식
수식

정리하면

변환 결과의 의미는 행렬곱 순서와 기준 좌표계에 달려 있다. 실제 구현에서도 같은 입력 규약을 유지해야 한다.

NOTE 12 / 회전과 로보틱스

쿼터니언에서 오일러각으로

Quaternion → Euler

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

자세 계산은 쿼터니언으로 수행하더라도 결과를 Roll·Pitch·Yaw로 읽고 싶을 수 있다. 이 글에서는 쿼터니언을 회전행렬 성분에 연결한 뒤, 그 성분에서 세 각도를 구하는 과정을 다룬다.

기호를 먼저 읽기

q₁ … q₄
입력 쿼터니언의 네 성분
φ, θ, ψ
출력할 세 회전각
ArcTan[x,y]
원문의 두 인수 아크탄젠트
ArcSin[·]
사인 값에서 각도를 읽는 역함수

이 글의 흐름

먼저 원문의 ArcTan 인수 정의를 확인한다. 각도식에 들어가는 행렬 성분을 찾고, 그 자리에 쿼터니언 성분식을 넣은 관계를 읽는다.

역삼각함수의 입력을 먼저 확인한다

원문은 ArcTan[x,y]를 y/x의 각도로 설명한다. 따라서 첫 인수와 둘째 인수의 역할을 읽은 뒤 코드의 함수 인수 순서와 맞춘다. 분수 y/x만 계산하면 두 값의 부호 조합을 잃을 수 있으므로, 두 인수 표기의 의미를 유지한다.

주제와 표기

Quaternion BAq^ →Rotation MatrixABR→Euler Angle (Roll φ x^B, Pitch θ y^B, Yaw ψ z^B, ZYX)

ArcTan[x,y] gives the arc tangent of y/x
φ around x^B, θ around y^B, ψ around z^B

각도에 필요한 행렬 성분을 q로 바꾼다

Roll은 r₃₃과 r₃₂, Pitch는 r₃₁, Yaw는 r₁₁과 r₂₁의 관계로 읽는다. 다음 등호 뒤의 q 성분식은 같은 값을 쿼터니언으로 표현한 것이다. q₁² 등의 제곱항과 서로 다른 성분의 곱을 구분해 계산한다.

ABR=(r11r12r13r21r22r23r31r32r33)=Rz^[ψ]Ry^[θ]Rx^[ϕ]
ϕ=ArcTan[ABR33,ABR32]=ArcTan[2q121+2q42,2(q3q4q1q2)]
θ=arcsin[ABR31]=ArcTan[1ABR312,ABR31]=arcsin[2(q2q4+q1q3)]
ψ=ArcTan[ABR11,ABR21]=ArcTan[2q121+2q22,2(q2q3q1q4)]

반대 방향의 좌표 표기를 혼용하지 않는다

뒤에서는 좌표계 첨자가 다른 형태의 식을 다시 제시한다. 이를 별도의 확인 구간으로 읽고, 앞의 행렬과 무조건 같은 방향의 변환이라고 가정하지 않는다. 세 각도를 하나의 결과로 사용할 때에는 같은 좌표계 규약에서 계산한 값끼리 묶는다.

수식
ϕ=ArcTan[BAR33,BAR32]=ArcTan[2q121+2q42,2(q3q4q1q2)]
θ=arcsin[BAR31]=arcsin[2(q2q4+q1q3)]
ψ=ArcTan[BAR11,BAR21]=ArcTan[2q121+2q22,2(q2q3q1q4)]

정리하면

각도 복원에는 수식뿐 아니라 각도 구간의 선택이 필요하다. 좌표계가 바뀌거나 인수 순서를 뒤집으면 같은 숫자도 다른 자세로 해석될 수 있다.

NOTE 13 / 센서와 상태 추정

각속도로부터 자세 추정

Orientation from Angular Rate

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

자이로 센서는 현재 자세가 아니라 회전하는 속도를 측정한다. 따라서 현재 자세를 얻으려면 이전 자세에 시간 동안 누적된 변화를 더해야 한다. 이 글은 이러한 예측 과정과, 느리게 누적되는 편향을 따로 추정해 빼는 과정을 연결한다.

기호를 먼저 읽기

ωₓ, ωᵧ, ω_z
센서의 세 축 각속도
시간에 따른 쿼터니언 변화율
Δt
두 계산 시점 사이의 시간 간격
q_est,t−1
이전 시점의 자세 추정값
ω_b, ω_c
추정한 편향과 편향을 뺀 각속도
ζ, η
편향 누적과 오차 보정의 크기에 관련된 계수

이 글의 흐름

각속도를 네 성분 형태로 넣어 q의 변화율을 구한다. 이를 Δt 동안 누적해 이전 자세에 더하고, 오차 방향에서 얻은 편향 추정값을 자이로 측정에서 뺀다.

주제와 표기

Orientation from angular rate

A tri-axis gyroscope

Angular rate

각속도와 자세 변화율을 구별한다

세 축 각속도 앞에 0을 붙여 쿼터니언 곱에 사용할 형태를 만든다. 이전 자세와 이 각속도를 곱한 식은 현재의 자세 변화율 q̇를 나타낸다. q̇는 자세 그 자체가 아니라 단위 시간 동안 얼마나 변하는지에 해당한다.

Sω=(0ωxωyωz)

Quaternion

ESq˙=12ESq^Sω

Measured at time t

ESq˙ω,t=12ESq^est,t1Sωt
수식

Orientation of the earth frame at time t

변화율에 시간 간격을 곱해 누적한다

이전 자세에 q̇Δt를 더하면 이번 시간 간격의 변화를 반영한 자세가 된다. 여기서 Δt가 빠지면 회전속도를 그대로 자세에 더하는 오류가 생긴다. 이해를 위한 단순 계산으로, 일정한 각속도 1 rad/s가 0.01 s 동안 유지된다면 그 구간의 회전각 증가는 0.01 rad이다. 이 예는 시간 누적의 의미를 보여주는 것이며 쿼터니언 성분 증가와 같은 숫자라는 뜻은 아니다.

ESqω,t=ESq^est,t1+ESq˙ω,tΔt

The samling period Δt

수식

Gyroscope bias drift compensation

With temperature and motion

Karman-based approaches → estimate the gyroscope bias

Mahony et al → gyroscope bias drift (the integral feedback of the error)

빠른 변화와 느린 편향을 분리한다

원문은 온도와 움직임에 따른 자이로 편향을 별도 문제로 다룬다. 오차에서 얻은 각속도 성분을 시간에 따라 더하고 ζ를 곱하여 편향 추정값을 갱신한다. 한 번의 오차만 빼는 것이 아니라, 계속 누적되는 성분을 추적하는 구조로 읽는다.

Normalized direction of the estimated error in the rate of change of orientation ESq^˙ϵ

Gyroscope bias Sωb

Sωb,t=ζtSωϵ,tΔt

The integral gain ζ

자세 오차의 방향을 각속도 오차로 연결한다

현재 추정 자세의 켤레와 자세 변화율을 결합하면 각속도 형태로 표현할 수 있다. 원문은 이 관계를 오차 변화율에도 적용하여 ω_ε를 구성한다. 이어서 측정 각속도에서 ω_b를 빼면 보정한 ω_c가 된다.

DC component of Sωϵ

ESq˙ω,t=12ESq^est,t1Sωt
2ESq^est,t1ESq˙ω,t=Sωt
Sωϵ,t=2ESq^est,t1ESq^˙ϵ,t
수식

Gyroscope measurements Sωc

Sωc,t=SωtSωb,t

편향 갱신과 측정값 보정을 차례로 수행한다

첫 벡터 식은 각 축 편향에 오차 성분·시간 간격·이득의 곱을 더하는 갱신이다. 다음 벡터 식은 갱신한 편향을 각 축 측정값에서 빼는 보정이다. 같은 기호가 등호 양쪽에 쓰인 갱신식은 이전 값과 새 값을 구별하여 읽는다.

(wbxwbywbz)=(wbxwbywbz)+(wϵxwϵywϵz)Δtζ
(wxwywz)=(wxwywz)(wbxwbywbz)

Filter gains

Estimated mean zero gyroscope measurement error of each axis ω~η

Filter gain

필터 계수는 오차의 크기와 연결된다

마지막 부분은 자이로 측정오차와 편향 변화율을 필터 계수에 연결한다. 계수는 단순히 큰 값이 좋은 값이 아니라 어떤 오차를 얼마나 반영할지 나타내는 값이다. 원문 마지막 계수식은 같은 ζ가 양쪽에 나타나므로, 이를 즉시 대입 가능한 독립적인 수치 산정식으로 단정하지 않는다.

η=|12q^(0ω~ηω~ηω~η)|=34ω~η

Estimated rate of gyroscope bias drift in each axis ω˙ζ

Filter gain

ζ=ζ34ω~˙ζ

정리하면

각속도에서 자세로 가는 연결에는 반드시 시간 간격이 들어간다. 또한 측정 변화와 편향 변화를 구별해야 누적 오차를 이해할 수 있다.

NOTE 14 / 수학과 기하

자코비안 행렬

Jacobian Matrix

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

여러 입력을 조금 바꾸었을 때 여러 출력이 각각 얼마나 변하는지 한눈에 보려면 변화율을 표로 모을 수 있다. 자코비안은 이 변화율을 행렬로 정리한 것이다.

기호를 먼저 읽기

x∈ℝⁿ
n개 성분을 가진 입력벡터
f(x)∈ℝᵐ
m개 성분을 가진 출력 또는 잔차벡터
Jᵢⱼ
입력 xⱼ가 출력 fᵢ에 미치는 국소 변화율
Jᵀf
이 문서의 잔차 최소화 문맥에서 사용하는 변화 방향

이 글의 흐름

입력과 출력의 개수를 확인하고, 출력별로 각 입력에 대한 편미분을 계산한다. 그 값을 m행 n열에 놓은 뒤 오차를 줄이는 방향과 연결한다.

주제와 표기

Jacobian matrix and determinant

입력 개수와 출력 개수를 먼저 센다

f:ℝⁿ→ℝᵐ은 입력 성분이 n개이고 출력 성분이 m개라는 뜻이다. 따라서 자코비안은 출력 하나당 한 행, 입력 하나당 한 열을 갖는다. 예를 들어 입력 2개와 출력 3개를 다룬다면 자코비안은 3행 2열이 된다.

f:RnRm,(m×nmatrix)
xRn,f[x]Rm

한 성분을 바꾸었을 때의 반응을 기록한다

∂fᵢ/∂xⱼ는 다른 입력을 고정하고 xⱼ를 조금 바꾸었을 때 fᵢ가 얼마나 민감하게 변하는지 나타낸다. 큰 값은 작은 입력 변화에도 출력이 크게 달라질 수 있음을, 0은 그 지점에서의 일차적인 변화가 없음을 뜻한다.

Ji,j=fixj

잔차와 기울기를 같은 것으로 보지 않는다

Jᵀf는 각 출력의 잔차를 입력 방향으로 모아 오차를 줄이는 방향을 찾는 문맥에서 읽는다. 엄밀하게는 벡터함수의 미분인 J와 스칼라 제곱오차의 기울기는 서로 다르다. 원문의 ∇f 표기를 모든 벡터함수에 적용되는 일반 미분 공식으로 확대하지 않는다.

f=JTf
수식

정리하면

자코비안은 입력과 출력 사이의 국소적인 연결표이다. 잔차 자체, 자코비안, 하나의 스칼라 오차에 대한 기울기를 구별하면 행렬의 차원과 계산 목적이 명확해진다.

NOTE 15 / 수학과 기하

선형계의 경사하강법

Gradient Descent

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

방정식을 한 번에 풀기보다 현재 답이 얼마나 틀렸는지 계산하고, 그 오차를 줄이는 방향으로 조금씩 이동할 수 있다. 이 글은 선형식의 잔차를 제곱오차로 만들고 반복해서 x를 갱신하는 과정을 다룬다.

기호를 먼저 읽기

Wᵀx−b
현재 x가 방정식을 얼마나 벗어나는지 나타내는 잔차
F(x)
잔차의 크기를 제곱한 스칼라 오차
∇F(x)
x를 바꾸었을 때 오차가 증가하는 국소 방향
α
한 번에 이동할 크기를 정하는 양의 계수
x₍t−1₎, xₜ
이전 반복과 현재 반복의 값

이 글의 흐름

만족시키려는 식을 정하고, 잔차의 제곱으로 오차를 측정한다. 기울기를 계산한 뒤 그 반대 방향으로 이동하고, 새 값에서 같은 과정을 반복한다.

주제와 표기

Gradient descent (Linear system)

방정식과 잔차를 먼저 구별한다

Wᵀx−b=0은 얻고 싶은 조건이다. 현재 x를 넣었을 때 왼쪽이 0이 아니면 그 값이 아직 남아 있는 잔차이다. 잔차를 계산할 수 있으면 현재 답이 목표에서 얼마나 벗어났는지 비교할 수 있다.

WTxb=0

오차를 하나의 숫자로 모은다

F(x)는 잔차의 크기를 제곱한 값이다. 잔차에 양수와 음수가 섞여 있어도 제곱하면 서로 상쇄되지 않으므로 전체 오차를 한 값으로 볼 수 있다. F가 작아진다는 것은 방정식을 더 잘 만족하는 방향으로 이동했다는 의미이다.

F[x]=|WTxb|2

기울기의 반대 방향으로 이동한다

∇F를 구한 뒤 α를 곱하고 이전 x에서 뺀다. 기울기는 오차가 커지는 방향을 알려주므로, 이를 빼는 것이 오차를 줄이는 기본 방향이다. 이해를 위한 단순 예로 이전 값이 2, 기울기가 3, α가 0.1이면 갱신값은 1.7이다. 이는 이 반복 규칙의 산술 예이며 실제 데이터의 해는 아니다.

마지막의 JᵀF 표기는 앞서 정의한 스칼라 F와 잔차벡터를 구분해 확인해야 한다. 이 줄만으로 차원이 맞는 일반 관계라고 단정하지 않고, 위에서 제시한 구체적인 기울기 식을 중심으로 읽는다.

F[x]=2W(WTxb)
xt=xt1αF[xt1]
F[x]=JTF[x]

정리하면

경사하강법은 답을 직접 외우는 방법이 아니라 오차를 기준으로 답을 갱신하는 절차이다. 방향과 이동 크기를 나누어 이해해야 한다.

NOTE 16 / 센서와 상태 추정

관측 벡터로부터 자세 추정

Orientation from Vector Observations

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

기준 방향을 알고 있고 센서에서 같은 방향을 측정했다면, 두 표현을 가장 잘 맞추는 회전을 찾을 수 있다. 이 글은 기준벡터를 현재 자세로 변환한 예측값과 실제 관측값의 차이를 줄여 자세를 추정하는 과정을 다룬다.

기호를 먼저 읽기

d̂ᴱ
기준 좌표계에서 정한 방향
ŝˢ
센서 좌표계에서 측정한 방향
두 방향 표현을 연결할 자세
f
변환한 기준 방향과 측정 방향의 차이
J
자세 성분 변화에 대한 잔차의 민감도
ĝ, b̂, â, m̂
중력·자기장 기준과 정규화된 관측 방향

이 글의 흐름

기준벡터와 측정벡터를 구별하고 동일한 좌표계로 맞춘다. 그 차이로 잔차를 만들고, 자코비안과 기울기를 이용해 자세를 갱신한다. 중력과 자기장에 같은 절차를 적용한 뒤 함께 묶는다.

주제와 표기

Orientation from vector observations

A tri-axis accelerometer (Linear accelerations due to motion)

기준 방향과 관측 방향을 구분한다

가속도계와 자기센서에 관한 문장은 어떤 방향 정보를 자세 추정에 사용할지 설명한다. d̂는 미리 정한 기준이고 ŝ는 센서가 관측한 방향이다. q는 이 두 표현 사이의 회전을 찾기 위해 조정할 값이다.

the field of gravity

A tri-axis magnetometer (Local magnetic flux and distortions)

the earth ' s magnetic field

Quaternion

ESq^=(q1q2q3q4)

Predefined reference direction

같은 좌표계로 옮긴 뒤 차이를 구한다

q*⊗d̂⊗q는 기준 방향을 비교 가능한 표현으로 옮기는 항이다. 여기에서 측정한 ŝ를 빼면 예측과 관측의 차이 f가 된다. 서로 다른 좌표계에서 얻은 성분을 변환 없이 빼는 것이 아니라, 먼저 같은 기준에 놓는 것이 핵심이다.

Ed^=(0dxdydz)

Measured direction

Ss^=(0sxsysz)

Objective function

f[ESq^,Ed^,Ss^]=ESq^Ed^ESq^Ss^

Quaternion may be found

minESq^R4f[ESq^,Ed^,Ss^]

Gradient descent algorithm

잔차를 줄이는 방향으로 자세를 갱신한다

현재 q에서 잔차와 자코비안을 구하고, Jᵀf로 입력 성분 쪽의 변화 방향을 계산한다. 이 방향과 이동 크기를 이용해 다음 q를 구하는 것이 반복 갱신의 의미이다. 잔차벡터 자체를 하나의 최소값으로 비교한다기보다, 그 크기를 줄이는 문맥으로 읽는다.

Orientation estimation of ESq^n+1

수식

step-size: α

Gradient of the solution surface (General form)

f[ESq^k,Ed^,Ss^]=JT[ESq^k,Ed^]f[ESq^k,Ed^,Ss^]

Objective function

벡터 곱을 전개하여 자코비안에 연결한다

기준벡터와 측정벡터를 네 성분으로 쓰고, 켤레가 있는 곱을 성분별로 펼친다. 그 결과를 q의 각 성분으로 미분한 것이 자코비안이다. 긴 행렬과 성분별 결과는 이 연결을 구체화한 것이며, 이미지에만 있는 항의 계수는 실제 식을 확인해야 한다.

f[ESq^,Ed^,Ss^]=ESq^Ed^ESq^Ss^
ESq^=(q1q2q3q4)
Ed^=(0dxdydz)
Ss^=(0sxsysz)
ESq^Ed^ESq^=(q1q2q3q4)(0dxdydz)(q1q2q3q4)
수식
수식
수식
수식

Jacobian matrix

수식
수식

Gradient of the solution surface (General form)

f=JTf
fg,b=Jg,b[ESq^,Eb^]Tfg,b[ESq^,Sa^,Eb^,Sm^]
수식
수식

Calculation induction

수식
수식
수식
수식

Direction of gravity (Vertical axis, z axis)

Appropriate convention (the equations simplify)

중력 기준을 선택하면 식이 단순해진다

기준 중력을 z축으로 두면 방향벡터의 대부분 성분이 0이 된다. 정규화한 가속도 측정 â와 비교하여 중력 잔차를 만들고, q의 네 성분에 대한 자코비안 J_g를 얻는다. 기준을 단순하게 정하는 것이 이후 식의 항 수를 줄여 주는 이유이다.

Eg^=(0001)

Normalized accelermeter measurement

Sa^=(0axayaz)

Objective function

수식

Jacobian matrix

Jg[ESq^]=(2q32q42q12q22q22q12q42q304q24q30)

Earth's magnetic field (One horizontal axis, Vertical axis)

Appropriate convention (the equations simplify)

자기장도 같은 잔차 구조로 다룬다

기준 자기장은 수평 성분과 수직 성분으로 표현한다. 측정한 자기장 m̂를 이 기준과 비교하면 중력과 별도의 잔차를 만들 수 있다. 이 구간의 측정벡터는 m̂로 표기되어 있으므로, 가까이 있는 가속도 관련 제목만 보고 â와 같은 값으로 취급하지 않는다.

Eb^=(0bx0bz)

Normalized accelermeter measurement

Sm^=(0mxmymz)

Objective function

수식

Jacobian matrix

수식

Magnetic distortion compensation

Declination errors

Horizontal plane:earth's surface (Heading)

Inclination errors

Vertical plane: earth's surface (Sensor's attitude)

The measured direction of the earth's magnetic field in the earth frame at time t

측정 자기장을 기준 좌표계로 옮긴다

q와 q* 사이에 m̂를 두어 기준 좌표계에서의 자기장 h를 구한다. 그다음 hₓ와 hᵧ를 제곱해 더한 뒤 제곱근을 취하면 수평 성분의 크기가 된다. 원문은 이 값을 bₓ에, h_z를 b_z에 놓아 다음 비교에 사용할 기준벡터를 구성한다.

Eh^t=(0hxhyhz)=ESq^est,t1Sm^tESq^est,t1
(0hxhyhz)=ESq^est,t1Sm^tESq^est,t1
=(q1q2q3q4)(0mxmymz)(q1q2q3q4)
수식
수식
수식
Eb^t=(0hx2+hy20hz)
(0bxbybz)=(0hx2+hy20hz)

Solution surface → minimum

중력과 자기장 정보를 하나의 보정 문제로 묶는다

중력 잔차와 자기장 잔차를 함께 고려하면 두 기준 방향에 대한 불일치를 동시에 다루게 된다. 결합한 자코비안과 잔차의 곱으로 q 성분별 변화 방향을 얻는 것이 마지막 전개의 목적이다. 묶는 행렬의 실제 행·열 배치는 제시된 전개와 차원을 확인하며 읽는다.

f[ESq^k,Ed^,Ss^]=J[ESq^k,Ed^]Tf[ESq^k,Ed^,Ss^]

Objective function

수식
수식

Jacobian matrix

Jg,b[ESq^,Eb^]=(JgT[ESq^]JbT[ESq^,Eb^])
수식

Gradient of the solution surface (General form)

수식
수식
수식

정리하면

센서의 숫자를 바로 자세라고 해석하지 않고, 기준 방향과 관측 방향이 얼마나 잘 맞는지를 기준으로 자세를 정한다. 이때 좌표계와 정규화 조건이 계산의 전제이다.

NOTE 17 / 센서와 상태 추정

기울기 기반 자세 추정

Gradient-based Orientation

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

오차를 줄이는 방향을 알았더라도 그 방향으로 얼마나 이동할지는 별도로 정해야 한다. 이 글은 기울기의 길이를 1로 맞추어 방향만 남기고, 별도의 이동 크기로 자세를 보정하는 과정을 다룬다.

기호를 먼저 읽기

q_est,t−1
보정 전의 이전 자세 추정값
∇f/‖∇f‖
길이를 제거한 오차 보정 방향
α_t
이번 단계의 이동 크기
γ
원문에서 1보다 크게 둔 비례계수
Δt
계산 시점 사이의 시간 간격

이 글의 흐름

기울기에서 방향을 분리한 뒤 α_t를 곱한다. 다음으로 α_t를 자세 변화율과 시간 간격에 연결하여 실제 움직임의 크기와 비교한다.

방향의 크기를 없앤 뒤 이동량을 정한다

∇f를 자신의 노름으로 나누면 방향만 남는다. 여기에 α_t를 곱해 이전 자세에서 빼면 보정 방향과 보정 크기가 분리된다. 기울기 노름이 0인 경우에는 나눗셈을 할 수 없으므로 그 상황을 일반 갱신식과 구별한다.

주제와 표기

Estimate orientation ESq,t

ESq,t=ESq^est,t1αtf|f|
수식

보정 속도를 실제 자세 변화와 연결한다

원문은 보정의 수렴 속도를 물리적인 자세 변화와 비교한다. 마지막 식은 자세 변화율의 크기에 Δt와 γ를 곱해 α_t를 구성한다. 따라서 α_t를 아무 단위도 없는 임의의 상수로만 보지 않고, 한 계산 구간에서 다루는 자세 변화량과 연결해 읽는다.

Convergence rate governed by αt ≥ Physical rate

PreviousestimateoforientationESq^est,t1

Objective function gradient

수식

ConvergencerateofESq^,t

PhysicalorientationrateESq˙ω,t

Optimal value of the step-size

αt=γ|ESq˙ω,t|Δt,γ>1

정리하면

정규화된 기울기는 방향을, α_t는 이동량을 담당한다. 두 역할을 나누면 보정이 약하거나 지나친 이유를 구별하기 쉽다.

NOTE 18 / 센서와 상태 추정

센서융합 알고리즘

Filter Fusion Algorithm

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

자이로로 예측한 자세와 관측 방향으로 보정한 자세는 서로 다른 경로에서 얻은 정보이다. 이 글은 두 값을 섞는 식에서 출발해, 이전 자세에 예측 변화율을 더하고 오차 방향을 빼는 하나의 갱신식으로 정리한다.

기호를 먼저 읽기

q_ω,t
각속도로 예측한 자세
q_∇,t
관측 잔차의 기울기로 보정한 자세
β_t
두 경로의 비중을 정하는 0~1 사이의 값
η
오차 방향에 적용하는 보정 크기 관련 계수
q̇_ε
정규화된 오차 방향
Δt
한 단계의 시간 간격

이 글의 흐름

가중 결합식을 읽고, 각 경로의 식을 대입한다. 발산과 수렴의 균형에서 β_t를 정리한 뒤 원문이 제시한 근사 조건을 거쳐 하나의 변화율 갱신식으로 모은다.

주제와 표기

Filter fusion algorithm

Estimated orientation

두 추정값을 비중에 따라 결합한다

β_t가 기울기 기반 추정에, 1−β_t가 자이로 기반 추정에 곱해진다. β_t=0이면 자이로 경로만, β_t=1이면 기울기 경로만 남는다. 중간값에서는 두 경로를 함께 쓰지만, 결합 후 단위 쿼터니언 조건이 자동으로 보장된다고 가정하지 않는다.

ESqest,t=βtESq,t+(1βt)ESqω,t,0βt1
ESqest,t=βtESq,t+(1βt)ESqω,t,0βt1

각 경로의 식을 대입해 공통 항을 묶는다

두 추정값에 이전 자세가 공통으로 포함되어 있으므로, 대입 후 이전 자세와 변화 항을 분리할 수 있다. 자이로 항에는 Δt가, 기울기 항에는 α_t와 정규화된 방향이 붙는다. 같은 식을 다른 묶음으로 표현한 등호들을 따라가며 각 항의 출처를 확인한다.

수식
ESq^est,t=ESq^est,t1βtαtf|f|+(1βt)ESq˙ω,tΔt
ESq^est,t=ESq^est,t1+((1βt)ESq˙ω,tβtαtΔtf|f|)Δt
수식
수식

가중치의 선택을 균형식으로 읽는다

원문은 자이로 경로의 가중 오차와 보정 경로의 가중 수렴을 맞추는 관계를 둔다. 이 식을 β_t에 대해 정리하면 η와 α_t/Δt가 들어간 비율이 나온다. 가중치를 정하는 기준을 먼저 놓고 그 결과를 얻은 것이므로, 분수만 독립적으로 외우지 않는다.

η, αtΔt

WeighteddivergenceofESqω == WeightedconvergenceofESq
η αtΔt

Magnitude of a quaternion derivative == Gyroscope measurement error

(1βt)η=βtαtΔt
βt=ηαtΔt+η

Optimal fusion

근사 조건 아래에서 식을 단순화한다

이후의 근사 기호는 앞 식과 모든 조건에서 정확히 같다는 뜻이 아니다. 원문에서 설명한 수렴 속도 관계를 전제로 β_t와 보정 추정을 단순화한다. 근사를 적용하기 전과 후에 어떤 항을 남기는지 확인해야 최종식의 적용 범위를 이해할 수 있다.

Convergence rate of ESq ≥γ → Physical rate of change of orientation

ESq,tαtf|f|
βtηΔtαt

Simplify

Estimated orientation

예측 변화와 보정 변화를 한 줄에 모은다

이전 자세에 자이로 변화율×Δt를 더하고, 정규화된 오차 방향×η×Δt를 뺀다. 괄호로 묶으면 두 변화율의 차이에 Δt를 곱한 형태가 된다. 즉 센서융합은 두 센서 값을 무조건 평균하는 것이 아니라, 예측과 오차 보정을 같은 시간 단계에 연결하는 과정이다.

ESqest,t=ηΔtαt(αtf|f|)+(10)(ESq^est,t1+ESq˙ω,tΔt)

수식

수식

ESqest,t=ηf|f|Δt+ESq^est,t1+ESq˙ω,tΔt
ESqest,t=ESq^est,t1+ESq˙ω,tΔtηf|f|Δt
ESqest,t=ESq^est,t1+(ESq˙ω,tηf|f|)Δt
ESq^est,t=ESq^est,t1+(ESq˙ω,tηESq^˙ϵ,t)Δt
ESq^est,t=ESq^est,t1+ESq˙est,tΔt
ESqest,t=ESq^est,t1+(12ESq^est,t1Sωtηf|f|)Δt

Estimated orientation rate ESq˙est

Rate of change of orientation measured by gyroscopes ESq˙ω

Direction of the estimated error ESq^˙ϵ

Simplified to equation

최종 구현식의 각 항을 확인한다

q̇_est는 q̇_ω에서 ηq̇_ε를 뺀 값으로 정의된다. q̇_ω는 이전 q와 측정 각속도로 계산하고, q̇_ε는 잔차 기울기를 정규화해 얻는다. 마지막 자코비안 전개는 이 오차 방향을 성분별로 계산하기 위한 구간이며, 잔차와 행렬의 차원을 함께 확인한다.

ESq^est,t=ESq^est,t1+ESq˙est,tΔt

Estimated rate of change of orientation

ESq˙est,t=ESq˙ω,tηESq^˙ϵ,t

Quaternion derivative measured at time t

ESq˙ω,t=12ESq^est,t1Sωt

Direction of error of ESq˙est,t

ESq^˙ϵ,t=f|f|

Objective function

수식
수식

Jacobian matrix

Jg,b[ESq^,Eb^]=(JgT[ESq^]JbT[ESq^,Eb^])
수식

Gradient of the solution surface (General form)

f=JTf
수식
수식
수식

Calculation induction

수식
({{-2q_3, 2q_4, -2q_1, 2q_2}, {2q_2, 2q_1, 2q_4, 2q_3}, {0, -4q_2, -4q_3, 0}})  . ({{f_1}, {f_2}, {f_3}})//MatrixForm
(2f2q22f1q32f2q14f3q2+2f1q42f1q14f3q3+2f2q42f1q2+2f2q3)
수식
수식

정리하면

최종식은 이전 자세, 자이로가 예측하는 변화, 관측이 제공하는 보정의 세 부분으로 읽을 수 있다. 근사 전후의 식과 계수 역할을 구별하는 것이 중요하다.

NOTE 19 / 센서와 상태 추정

IMU 알고리즘 흐름

IMU Algorithm

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

앞의 여러 수식은 각각 따로 끝나는 계산이 아니라, 한 번의 센서 입력에서 다음 자세 추정값을 만드는 처리 순서로 연결된다. 이 문서는 그 연결을 하나의 흐름도로 제시한다.

기호를 먼저 읽기

IMU
가속도·각속도 등의 관성 측정 정보를 다루는 장치
입력
현재 단계에서 읽은 센서 측정값
상태
다음 계산으로 전달할 자세 추정값 등
갱신
이전 상태에 이번 측정의 영향을 반영하는 과정

이 글의 흐름

그림의 입력에서 출발하여 중간 계산과 갱신으로 이어지는 화살표를 따라 읽는다. 앞 문서의 예측·잔차·보정 식이 어느 위치에 쓰이는지 연결한다.

주제와 표기

IMU (Inertia Measurement Unit) algorithm

입력에서 출력까지 계산의 흐름을 따라간다

이 문서의 본문 자료는 한 장의 흐름도이다. 먼저 어떤 값이 입력되는지 찾고, 그 값이 어느 중간 계산을 거쳐 다음 상태로 넘어가는지 확인한다. 앞서 다룬 각속도 예측과 관측 보정을 떠올리되, 그림을 읽지 않은 상태에서 특정 블록이나 연결이 들어 있다고 단정하지 않는다.

원본 도해

정리하면

흐름도는 수식의 실행 순서를 이해하기 위한 자료이다. 그림에만 있는 세부 블록 이름과 분기 조건은 실제 그림을 확인해야 하며, 앞뒤 문서만으로 임의로 보충하지 않는다.

NOTE 20 / 수학과 기하

최소제곱 선형회귀

Least Squares · Linear Regression

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

여러 측정점을 하나의 직선으로 설명할 때 모든 점을 정확히 지나는 직선이 없을 수 있다. 최소제곱은 각 점에서 남는 오차를 제곱해 모으고, 그 값이 작아지는 직선의 계수를 정하는 방법이다. 이 글은 성분별 식에서 행렬식으로 옮기는 과정을 보여준다.

기호를 먼저 읽기

xᵢ, yᵢ
같은 샘플의 입력과 관측값
w₀, w₁
직선의 절편과 기울기
X
샘플별 입력을 모은 행렬
Y
관측값을 세로로 모은 벡터
W
구하려는 계수벡터

이 글의 흐름

직선식에서 합과 입력을 곱한 합을 구성한다. 두 조건을 행렬로 모으면 정상방정식이 되고, 역행렬이 존재하는 조건에서 계수를 정리할 수 있다.

주제와 표기

Least Squares LR (Linear Regression)

직선에서 구할 값은 두 개이다

w₀는 입력 x가 0일 때의 기준값이고, w₁은 x 변화에 따라 y가 변하는 비율이다. 각 샘플의 xᵢ와 yᵢ는 이미 알고 있는 값으로 두고, 이 두 계수를 구하는 문제로 읽는다. 입력과 미지수를 구별하면 뒤의 행렬 역할이 명확해진다.

y=w0+w1x

1

두 종류의 합으로 계수 조건을 만든다

첫 식은 모든 yᵢ의 합을, 다음 식은 yᵢxᵢ의 합을 다룬다. 이 두 조건은 상수 성분과 x 성분에 대한 잔차를 모아 보는 관계이다. 원문의 합 범위는 제시된 표기를 따르며, 알려지지 않은 상한을 새 숫자로 정하지 않는다.

i=1nyi=i=1n(w0+w1xi)
i=1nyixi=i=1n(w0xi+w1xi2)

2

샘플별 관계를 행렬로 모은다

X의 각 행에는 상수항 1과 해당 샘플의 x가 들어가고, W에는 w₀와 w₁이 들어간다. XW는 모든 샘플에 대해 직선이 예측하는 값을 한 번에 계산한 것이다. Xᵀ를 왼쪽에 곱하면 앞의 두 합 조건을 함께 적은 정상방정식이 된다.

(11)(y1yn)=(11)(1x11xn)(w0w1)
(x1xn)(y1yn)=(x1xn)(1x11xn)(w0w1)

3

수식

4

정상방정식에서 계수를 분리한다

XᵀY=XᵀXW의 양쪽에 (XᵀX)⁻¹을 곱하면 W가 분리된다. 이는 역행렬이 존재할 때의 정리이다. 예를 들어 모든 x가 같으면 서로 다른 기울기와 절편을 구분할 정보가 부족하므로, 이 식을 무조건 계산할 수는 없다.

XTY=XTXW
(XTX)1(XTX)W=(XTX)1(XTY)
W=(XTX)1(XTY)

두 입력을 같은 계수로 묶은 모델을 읽는다

뒤의 식은 x1과 x2에 서로 다른 계수를 두지 않고 같은 w₁을 적용한다. 따라서 두 입력의 합을 하나의 설명변수처럼 사용하는 제한된 모델이다. 일반적인 독립 두 변수 회귀로 바꾸어 읽지 않고, 원문이 정한 계수 공유 조건을 유지한다.

y=w0+w1x1+w1x2

1

i=1nyi=i=1n(w0+w1(x1i+x2i))
i=1nyi(x1i+x2i)=i=1n(w0(x1i+x2i)+w1(x1i+x2i)2)

2

바뀐 입력 열에 같은 절차를 적용한다

이번에는 X의 입력 열에 x1ᵢ+x2ᵢ가 들어간다. 이후의 XᵀY=XᵀXW와 계수 분리 과정은 앞과 같다. 즉 계산 틀은 유지하고, 모델이 정한 입력 표현을 바꾸는 과정으로 이해할 수 있다.

(11)(y1yn)=(11)(1x11+x211x1n+x2n)(w0w1)
수식

3

수식

4

XTY=XTXW
(XTX)1(XTX)W=(XTX)1(XTY)
W=(XTX)1(XTY)

정리하면

여러 샘플을 모으는 이유는 한 점의 우연한 오차보다 전체 데이터의 관계를 설명하기 위해서이다. 마지막 역행렬 표현에는 계수를 구별할 만큼 충분한 입력 정보가 있다는 전제가 필요하다.

NOTE 21 / 수학과 기하

다변수 회귀

Multivariate Regression

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

하나의 출력이 여러 입력과 관련되어 있을 때, 각 입력에 계수를 곱해 더하는 모델을 만들 수 있다. 이 글은 여러 샘플과 여러 입력의 관계를 행렬로 묶어 계수벡터를 구하는 과정을 다룬다.

기호를 먼저 읽기

x₁ … x_m
한 샘플을 설명하는 m개 입력 성분
w₁ … w_m
각 입력에 적용할 계수
X
샘플을 행으로, 입력 성분을 열로 모은 행렬
Y
샘플별 출력벡터
XᵀX
입력 성분 사이의 곱을 모든 샘플에 걸쳐 모은 행렬

이 글의 흐름

한 샘플의 가중합을 먼저 읽고, 이를 모든 샘플에 대해 Y=XW로 적는다. 그다음 정상방정식과 각 행렬 성분의 합 표현을 연결한다.

주제와 표기

Multivariate Regression

여러 입력의 가중합으로 출력을 표현한다

각 x 성분에 대응하는 w를 곱한 뒤 모두 더한다. 여기서 x는 입력이고 w는 구하려는 계수이다. 원문 첫 식에는 독립된 절편 항이 없으므로, 이를 설명 없이 추가하지 않는다.

y=w1x1+w2x2++wmxm
Y=XW
W=WT=(w1:wm);(%m×1matrix%)

행과 열의 역할을 정한다

W는 m개의 계수를 세로로 둔 벡터이며, 한 샘플의 입력은 m개 성분으로 구성된다. 여러 샘플을 X의 행으로 쌓으면 XW가 샘플별 예측값을 만들고 Y와 비교할 수 있다. 행렬곱의 안쪽 차원이 맞는지 확인한다.

X=(x1xm);(%mvector%)
수식
Y=(y1:yR);(%R×1matrix%)

행렬곱을 샘플별 합으로 펼쳐 읽는다

XᵀX의 i,j 성분은 같은 샘플의 i번째 입력과 j번째 입력을 곱하여 샘플 전체에 걸쳐 더한 값이다. XᵀY의 i번째 성분은 i번째 입력과 출력을 곱해 더한 값이다. 마지막 역행렬 표현은 이 정보로 계수를 분리한 것이며, 역행렬이 존재하는 조건을 전제로 한다.

W=(XTX)1(XTY)
(XTX)ijk=1Rxkixkj(m×m matrix)
(XTY)ik=1Rxkiyk(m-element vector)

정리하면

행렬식은 많은 식을 숨기는 표기가 아니라 같은 계산을 한 번에 나타내는 방법이다. X의 행·열이 무엇을 뜻하는지 알면 성분별 합과 행렬식이 연결된다.

NOTE 22 / 센서와 상태 추정

자기센서 보정

Soft / Hard Iron Calibration

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

자기센서의 측정점들이 원점에서 벗어나거나 축마다 서로 다른 크기로 퍼지면 방향 해석이 달라질 수 있다. 이 글은 측정점의 분포를 구 또는 축에 정렬된 타원체 식으로 적고, 그 계수에서 중심과 크기 관련 값을 읽는 전개를 다룬다.

기호를 먼저 읽기

x, y, z
한 번 측정한 세 축의 값
a, b, c
분포 중심에 해당하는 좌표
r
구 모델의 반지름
AA, BB, CC
축별 제곱항의 계수
W[[i]]
원문 Mathematica 표기에서 계수벡터의 i번째 항
X, Y
회귀 계산을 위해 모은 입력 행렬과 목표벡터

이 글의 흐름

이차식을 펼쳐 회귀 계수로 적고, 완전제곱 형태로 다시 묶어 중심을 읽는다. 구와 타원체를 구별하며, 샘플 수를 늘려 행렬을 구성하는 과정을 따라간다.

주제와 표기

Magnetic sensor Soft/Hard Iron

Elliptical Sphere

중심을 가진 타원체를 계수식으로 적는다

AA(x−a)²처럼 중심에서의 차이를 제곱하면 각 축의 퍼짐을 나타낼 수 있다. 이를 전개하면 x²·y²·z² 항, 일차항, 상수항으로 나뉜다. W의 각 성분은 이 전개식의 계수이므로, 물리적 중심 a·b·c와 같은 값으로 바로 읽지 않는다.

AA(xa)2+BB(yb)2+CC(zc)2=1
W[[1]]x2+W[[2]]y2+W[[3]]z22W[[4]]x2W[[5]]y2W[[6]]z+W[[7]]=1

완전제곱으로 묶어 중심을 되찾는다

일차항과 이차항을 묶으면 x−W[[4]]/W[[1]] 같은 형태가 된다. 괄호 안에서 빼는 값이 해당 축의 중심 좌표이다. 따라서 중심은 하나의 계수 자체가 아니라 일차항 계수와 이차항 계수의 비율로 읽는다.

W[[1]](xW[[4]]W[[1]])2+W[[2]](yW[[5]]W[[2]])2+W[[3]](zW[[6]]W[[3]])2+W[[7]]W[[4]]2W[[1]]W[[5]]2W[[2]]W[[6]]2W[[3]]=1
(abc)=(W[[4]]W[[1]]W[[5]]W[[2]]W[[6]]W[[3]])

Sphere

세 축의 크기 조건을 같게 두면 구 모델이 된다

구 모델에서는 x·y·z의 제곱항에 같은 계수를 사용한다. 타원체와 달리 세 방향에서 동일한 반지름을 전제로 하는 것이다. 이 조건이 바뀌면 회귀에 필요한 계수의 개수도 달라진다.

AA(xa)2+AA(yb)2+AA(zc)2==1
W[[1]]x2+W[[1]]y2+W[[1]]z22W[[2]]x2W[[3]]y2W[[4]]z+W[[5]]==1
W[[1]](xW[[2]]W[[1]])2+W[[1]](yW[[3]]W[[1]])2+W[[1]](zW[[4]]W[[1]])2+W[[5]]W[[2]]2W[[1]]W[[3]]2W[[1]]W[[4]]2W[[1]]=1
(abc)=(W[[2]]W[[1]]W[[3]]W[[1]]W[[4]]W[[1]])

반지름과 중심이 계수에 어떻게 들어가는지 읽는다

구 식을 r²로 나누어 전개하면 제곱항 계수와 중심 좌표가 r²에 의해 함께 스케일된다. 원문은 이 관계를 W[[1]]부터 W[[5]]에 연결한다. 중심을 얻을 때 계수의 비율을 사용하는 이유를 여기서 다시 확인할 수 있다.

(xa)2r2+(yb)2r2+(zc)2r2==1
x2+y2+z2r22axr22byr22czr2+a2+b2+c2r2==1
x=[x2+y2+z2,2x,2y,2z]
W[[1]]==1r2;
W[[2]]=ar2;
W[[3]]=br2;
W[[4]]=cr2;
W[[5]]=a2+b2+c2r2
a=W[[2]]W[[1]];
b=W[[3]]W[[1]];
c=W[[4]]W[[1]];

원래 측정값을 회귀용 입력으로 바꾼다

한 샘플의 x·y·z를 그대로 넣는 대신, x²+y²+z², −2x, −2y, −2z, 1로 구성한 한 행을 만든다. 이 행에 계수벡터 W를 곱하면 구의 전개식에 대응한다. Y의 1은 현재 모델식의 오른쪽 상수이다.

W=(xTx)1(xy)

x=[x2+y2+z2,2x,2y,2z,1]
y=[1]
W=(AABBCCDDEE)
X=(A1B1C1D1E1AtBtCtDtEt);Y=(11);
W=(XTX)1(XTY);

1

샘플을 쌓는 과정과 해의 존재는 구별한다

한 행, 두 행, 세 행으로 X를 늘려 가는 구간은 데이터가 행렬에 어떻게 들어가는지 보여준다. 그러나 미지수보다 독립적인 관측 조건이 적으면 XᵀX의 역행렬이 존재하지 않을 수 있다. 제시된 중간 출력이 모든 측정 집합에서 유일한 보정값을 보장하는 것으로 읽지 않는다.

X=(A0B0C0D01);Y=(1);
W=(XTX)1(XTY);
W//MatrixForm
5A05B05C05D051

2

X=(A0B0C0D01A1B1C1D11);Y=(11);
W=(XTX)1(XTY);
W//MatrixForm
수식

3

X=(A0B0C0D01A1B1C1D11A2B2C2D21);Y=(111);
W=(XTX)1(XTY);
W//MatrixForm
수식

4

X=(A0B0C0D01A1B1C1D11A2B2C2D21A3B3C3D31);Y=(1111);
W=(XTX)1(XTY);
W//MatrixForm
수식

t

반복 측정에서 계수를 읽는 흐름을 정리한다

각 시점의 측정값으로 A_t·B_t·C_t·D_t를 만들고 행렬에 쌓는다. 계수 W를 얻은 다음 원문이 제시한 관계로 반지름과 중심을 계산한다. 계수마다 역할이 다르므로 단위를 포함한 원래 모델의 정의와 함께 해석한다.

At=x2+y2+z2;
Bt=2x;
Ct=2y;
Dt=2z;
Et=1;
X=(A1B1C1D11:::::AtBtCtDt1);Y=(1:1);
W=(XTX)1(XTY);
W//MatrixForm
수식
수식
수식
수식
W[[5]]=5
r2=1W[[1]];
a=W[[2]]W[[1]];
b=W[[3]]W[[1]];
c=W[[4]]W[[1]];

같은 모델을 다른 묶음으로 다시 확인한다

이 구간은 구 모델의 입력 행과 계수 복원 관계를 다시 제시한다. 앞 구간과 동일한 역할의 항을 짝지어 보면 반복되는 식의 목적을 이해할 수 있다. W[[5]]=5처럼 고정값으로 보이는 중간 결과는 모든 데이터에 대한 일반 보정 상수로 확정하지 않는다.

W=(xTx)1(xy)

x=[x2+y2+z2,2x,2y,2z,1]
y=[1]
수식
수식
수식
수식
W[[5]]=5
r2=1W[[1]];
a=W[[2]]W[[1]];
b=W[[3]]W[[1]];
c=W[[4]]W[[1]];

Elliptical Sphere

축마다 다른 계수를 갖는 타원체로 확장한다

이번에는 x²·y²·z²를 각각 독립된 입력 열로 둔다. 이 때문에 구 모델보다 더 많은 계수가 필요하며, 중심을 되찾는 계수의 짝도 달라진다. xy·yz·zx 교차항이 제시되지 않은 식은 축에 정렬된 모델 범위에서 읽는다.

AA(xa)2+BB(yb)2+CC(zc)2=1
W[[1]]x2+W[[2]]y2+W[[3]]z22W[[4]]x2W[[5]]y2W[[6]]z+W[[7]]=1
W[[1]](xW[[4]]W[[1]])2+W[[2]](yW[[5]]W[[2]])2+W[[3]](zW[[6]]W[[3]])2+W[[7]]W[[4]]2W[[1]]W[[5]]2W[[2]]W[[6]]2W[[3]]=1
(abc)=(W[[4]]W[[1]]W[[5]]W[[2]]W[[6]]W[[3]])

W=(xTx)1(xy)

확장한 행렬에서도 같은 회귀 원리를 사용한다

샘플별 일곱 성분의 입력을 쌓아 W를 구하는 형식이다. 행을 늘려 가는 과정은 앞의 구 모델과 같지만, 충분한 독립 정보가 있어야 계수를 구별할 수 있다. 이미지에만 있는 긴 성분 출력은 이 행렬 연산의 구체적 전개이며, 보이지 않는 계수를 임의로 정하지 않는다.

x=[x2,y2,z2,2x,2y,2z,1]

1

X=(A1B1C1D1E1F11);Y=(1);
W=(XTX)1(XTY);
W//MatrixForm
7A17B17C17D17E17F171

2

X=(A1B1C1D1E1F11A2B2C2D2E2F21);Y=(11);
W=(XTX)1(XTY);
W//MatrixForm
수식

3

X=(A1B1C1D1E1F11A2B2C2D2E2F21A3B3C3D3E3F31);Y=(111);
W=(XTX)1(XTY);
W//MatrixForm
수식

t

X=(A1B1C1D1E1F11A2B2C2D2E2F21AtBtCtDtEtFt1);Y=(111);
W=(XTX)1(XTY);
W//MatrixForm
수식
수식
수식
수식
수식
수식
수식

정리하면

보정 계수의 목적은 식을 복잡하게 만드는 것이 아니라 측정 분포의 중심 이동과 축별 크기를 분리하는 데 있다. 원문의 모델이 모든 교차축 왜곡까지 포함한다고 확대 해석하지 않는다.

NOTE 23 / 데이터와 AI

AI와 함수 합성

Artificial Intelligence

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

이 글에서는 인공지능 모델을 여러 계산이 연결된 함수로 바라본다. 입력을 받아 중간 표현을 만들고, 이를 다음 층에 전달해 원하는 출력을 얻는 구조이다. 모델 이름을 먼저 외우기보다 각 식이 이전 단계의 값을 어떻게 바꾸는지 살펴본다.

기호를 먼저 읽기

hₜ⁽ˡ⁾
t번째 입력 또는 시점의 l층 표현
W⁽ˡ⁾, b⁽ˡ⁾
층의 가중치와 편향
σ
선형 계산 뒤에 적용하는 변환 함수
앞 함수의 결과를 다음 함수에 넣는 합성
hₜ₋₁
이전 시점의 상태

이 글의 흐름

함수 합성에서 시작해 완전연결·합성곱·순환 구조를 비교한다. 이후의 학습 관련 용어는 이러한 함수 연결을 실제로 조정하는 과정과 관련된다.

주제와 표기

Artificial Intelligence (AI)

Machine Learning

Deep Learning

여러 단계를 연결해 하나의 함수를 만든다

함수 합성에서는 첫 단계의 출력이 다음 단계의 입력이 된다. 원문의 근사 기호는 이런 연결로 목표 함수를 표현하려는 관계를 나타낸다. 중간 단계를 많이 연결했다는 사실만으로 목표를 정확히 복원한다고 단정하지는 않는다.

원본 도해

Function Composition

fσLσL1σ1

Fully-connected network (FC-net)

세 모델의 입력 연결을 비교한다

완전연결 식은 이전 층 표현에 W를 곱하고 b를 더한다. 합성곱 식은 그 자리에 합성곱 연산이 놓인다. 순환 식에는 같은 층의 이전 시점 상태가 추가되어, 현재 입력뿐 아니라 지나온 정보도 함께 반영한다.

htl=σ[Wlhtl1+btl]

Convolutional neural network (CNN)

htl=σ[Wlhtl1+btl]

Recurrent neural network (RNN)

htl=σ[Wlhtl1+Vlht1l+btl]

Explosion

모델의 깊이와 학습 방법을 나누어 읽는다

뒤의 네트워크 이름과 층수는 원문에서 제시한 구조 사례이다. 사전학습, Dropout, 정규화, 활성화 함수는 구조 자체와 별도로 학습을 어떻게 수행하는지에 관한 항목이다. 이 목록은 원문 작성 당시의 사례로 읽으며 현재 제품이나 서비스의 사양으로 보지 않는다.

AlexNet (5 convolutional layers + 3 fully connected layers), 2012
VGG (very deep CNN, 16 - 19 weight layers), 2015
GoogLeNet (22 layers), 2015
Deep Residual Net (100 - 1000 layers), 2015

Gradient

Pre - training
    Restricted Boltzman machine (RBM) or autoencoder
Training
Dropout
    batch normalization
Rectified linear units (ReLU)
    Vanishing gradient alleviated
    universal approximation

정리하면

서로 다른 모델도 입력을 변환하고 정보를 연결한다는 공통 틀로 읽을 수 있다. 차이는 어떤 입력을 연결하고 어떤 연산을 공유하는지에 있다.

NOTE 24 / 데이터와 AI

선형 모델과 분류

Linear Models

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

입력과 출력의 관계를 모델로 정한다는 것은, 관측한 샘플을 이용해 새로운 입력에서도 쓸 수 있는 규칙을 찾는 일이다. 이 글은 연속값을 예측하는 회귀와 범주를 구별하는 분류를 나누고, 각각의 오차와 학습 목적을 설명한다.

기호를 먼저 읽기

xₙ, yₙ
입력과 그에 대응하는 정답
w, w₀
입력의 가중치와 기준값
φ(x)
입력을 다른 표현으로 옮기는 기저 또는 특징
λ
정규화 항의 비중을 정하는 계수
σ(·), ŷ
확률을 만드는 함수와 예측값
J, ℓ
학습에서 줄이려는 오차 또는 손실

이 글의 흐름

예측 대상과 모델을 정한 뒤 잔차·제곱오차를 만든다. 정규화로 계수의 크기까지 고려하고, 분류에서는 확률·교차엔트로피·우도의 관계로 확장한다.

주제와 표기

Linear Models

Universal Approximation

모델이 해결할 문제를 먼저 정한다

학습 샘플에는 입력과 목표 출력이 짝으로 들어 있다. 연속적인 값을 예측할지, 정해진 범주를 구별할지에 따라 모델의 출력 의미가 달라진다. 특징을 사람이 정할지 모델이 학습할지도 이 문제 설정과 연결된다.

Task

Model = Approximation

Sample Training set
Algorithm
Engineering Features (SIFT, HOG) ⇒ Learning Features

Linear Models

Linear regression

Regularization

회귀와 이진 분류를 구별한다

회귀에서는 실수값을 예측하고, 이진 분류에서는 두 범주 중 하나에 해당할 가능성을 다룬다. 원문은 과적합을 줄이기 위한 정규화와 로지스틱 확률 모델을 함께 소개한다. 이후 수식에서 같은 w를 사용해도 출력이 실수인지 확률인지 먼저 확인한다.

Alleviate overfitting
Ridgeregression(L2normregularizer)
LASSO(L1normregularizer)

Binary Classification

Logistic Regression

Models the input - output by conditional Bernoulli distribution
P[yn=1xn]=σ[WTxn]
IRLS algorithm
원본 도해
Data={(x1,y1),(x2,y2),,(xN,yN)}
xn:input
yn : Target output
Goal : Find a mapping from X to Y

Linear models for regression

오차를 샘플별로 계산하고 모은다

직선 예측 w₁xₙ+w₀와 관측값 yₙ의 차이가 eₙ이다. 모든 샘플의 eₙ²를 더하면 양·음 오차가 서로 상쇄되지 않는 목적함수를 만들 수 있다. 계수로 미분하는 다음 식은 그 목적함수를 작게 만드는 방향을 찾기 위한 것이다.

Regression:ynR(realvalue)
Classification:yn{0,1}oryn{1,2,,N}
D={(x1,y1),(x2,y2),,(xN,yN)}
yn=w1xn+w0
modelparameter={w1,w0}
linear algebraic equation
ynw1xn+w0
error:en=ynw1xnw0
minimizew1,w0en2
W1en2,W0en2

Problem Setup

입력 표현과 계수를 분리한다

φⱼ(x)는 입력에서 계산하는 특징이고 wⱼ는 그 특징에 적용할 계수이다. 선형모델은 이 계수들의 가중합으로 출력을 만든다. 원문은 신경망과 커널 표현도 나란히 놓으므로, 어떤 값이 입력에서 계산되고 어떤 값이 학습되는지 비교하며 읽는다.

Given a set of N labeled examples, D = {(xn, yn)} _ (n = 1)N (xn∈X⊂RD and yn∈Y⊂R), the goal is to learn a mapping
f[x]:XY
which associates x with y, such tat we can make prediction abot y when a new input xD is provided .

Basic Function

ϕj[x]

Linear models

[x] = Underoverscript[∑, j = 1, arg3] w_jφ_j[x] + w_0

Neural networks

[x] = Underoverscript[∑, j = 1, arg3] w_j^(2) φ[∑_kW_ (j, k)^{1} x_k + b_j^(1)]

Kernel regression

f[x]=n=1Nwnk[x,xn]+w0

Least Squares Method

최소제곱을 벡터와 행렬로 정리한다

관측값 벡터와 예측값 벡터의 차이에 L₂ 노름 제곱을 적용한다. 잔차벡터를 전치하여 자신과 곱하면 각 잔차의 제곱합이 된다는 다음 식을 확인한다. 정상방정식으로 계수를 정리할 때에는 이 문서의 Φ 행·열 배치를 유지하고 역행렬 존재 조건을 확인한다.

norm of x = | x | _p = (∑_i | xi |^p)^1/p

Given a set of training data {(xn, yn)} _ (n = 1)N, we determine the weight vector wRM+1 which minimizes
JLS[w]=12Nn=1N(ynwTϕ[xn])2=12N|yΦTw|22,
수식
수식
Note that
|yΦTw|22=(yΦTw)T(yΦTw)
wLS=(ΦΦT)1Φy

Regularization

정확히 맞추는 것과 복잡도를 함께 고려한다

손실 항은 관측값을 잘 설명하는지 측정하고, 정규화 항은 모델의 복잡도에 비용을 부과한다. λ는 두 목적의 상대적인 비중이다. 따라서 λ를 모델이 직접 학습하는 가중치와 같은 역할로 보지 않는다.

Interested in : Inferring a function of any x, given N examples D = {(xn, yn)} _ (n = 1)N
Consider a loss function ℓ[f[xn;W], yn] . For instance, LS regression uses the square loss :
n=1N[f[xn;W],yn]=12N|yΦTW|22
A regularizer (which imposes a penalty on the complexity of f) is added to the loss function, leading to
n=1N[f[xn;W],yn]loss+λR[f]reqularizer
where λ controls the importance of the regularization term (hyperparameter)
modelparameter=w={w1,w0}
hyperparameter=λ

Ridge Regression

Ridge는 계수의 제곱 크기를 함께 줄인다

제곱오차에 가중치의 L₂ 제곱 항을 더한 뒤 미분하면 λI가 포함된 선형관계가 나타난다. 제약식 표현의 B는 허용할 계수 크기와 관련된다. λ를 정하고 학습한 뒤 검증 오차를 비교하는 순서가, 계수를 구하는 계산과 설정값을 선택하는 계산의 차이를 보여준다.

The ridge regression can be written as
minw12|yΦTW|22+λ2|w|22
or as a bounded constrained form :
minw12|yΦTW|22,st|w|22B
A small (tight) bound B corresponds to large penalty λ and vice versa .
Then,
w[12|yΦTW|22+λ2|w|22]=Φy+(ΦΦT+λI)w
Equating to zero yields
wRidge=(ΦΦT+λI)1Φy

Find λ

Fix λ → Find w by Training → Validation error
Cross - validataion

Illusstration

Squareloss+L2normregularizer:12|yΦTW|22+λ2|w|22LSfitregularizer

Logistic Regression

점수를 확률로 바꾸어 두 범주를 구별한다

wᵀx는 제한이 없는 점수이고, σ를 적용한 결과는 0과 1 사이의 확률로 읽는다. y가 0 또는 1일 때 조건부 평균과 y=1의 확률을 연결할 수 있다. σ의 분모가 1+e의 지수항으로 구성되는 것을 확인한다.

expectationE
model[w,x]=wTxE[yx]
Binary classification
y{0,1}
E[yx]=P[y=1x]
model[w,x]=P[y=1x]
σ[wTx]=P[y=1x]
logisticfunction=11+ewTx

Logistic Regression

Predict a binary output yn∈ {0, 1} from an input xn
The logistic regression models the input - output by a conditional Bernouli distribution
E[ynxn]=P[yn=1xn]=σ[wTxn]
where
σ[ξ]=11+eξ=eξ1+eξ
Discriminative model : Directly model p[yx]

Error function

확률 예측의 오차를 로그로 측정한다

이진 교차엔트로피에는 정답이 1인 경우와 0인 경우에 해당하는 두 로그 항이 있다. 정답 범주의 확률을 낮게 주면 손실이 커지는 구조이다. 여러 범주로 확장하면 정답 지시값과 각 범주의 예측 확률을 곱한 로그 항을 모두 더한다.

Regression ⇔ square loss
Binary classification ⇔ cross - entropy error
H[p;q]=Ep[log[q]]
=xp[x]log[q[x]]

Cross entropy error

p{y,1y},q{y^,1y^}
ϵ=n=1N(ynlog[y^n](1yn)log[1y^n])
p{y1,y2,,yk},q{y^1,y^2,,y^k}
ε = Underoverscript[∑, n = 1, arg3] Underoverscript[∑, k = 1, arg3] (-y_ (k, n) Log[Overscript[y,^] _ (k, n)])

ex

제시된 확률 예제를 직접 읽는다

예측이 0.7·0.2·0.1이고 정답이 첫 번째 범주라면, 정답 벡터의 0인 성분 때문에 나머지 항은 없어지고 −Log(0.7)이 남는다. 원문의 0.356675는 이 계산 결과이다. 중요한 점은 정답 범주의 확률이 손실에 어떻게 연결되는지이다.

modely^=(0.70.20.1),Targety=(100)
CE=1log[0.7]0log[0.2]0log[0.1]
=log[0.7]=0.356675

Logistic Regression:MLE

확률의 곱을 로그의 합으로 바꾼다

각 샘플의 정답 확률을 곱하면 우도가 된다. 로그를 취하면 샘플별 합으로 바뀌어 학습 목적을 다루기 쉬워진다. 로그우도를 크게 만드는 것과 그 음수를 작게 만드는 것은 같은 방향의 목표이다.

Given {(xn, yn) | n = 1, …, N}, the likelihood is given by
p[yX,w]=n=1Np[yn=1xn]yn(1p[yn=1xn])1yn
=n=1Nσ[wTxn]yn(1σ[wTxn])1yn
Then log - likelihood function is given by
L=n=1Nlog[p[ynxn]]=n=1N{ynlog[y^n]+(1yn)log[1y^n]}
where y^n = σ[wTxn]
This is a nonlinear function of w whose maximum cannot be computed in a closed form .
Iterative re - weighted least squares (IRLS) is a popular algorithm, derived from Neton method .
Iterative, Gradient descent
xkxk1αfxx=xk1

Logistic Regression:IRLS

IRLS와 다중 범주 확장을 읽는다

IRLS 구간에서는 기울기뿐 아니라 헤시안으로 표현한 곡률도 사용해 계수의 갱신량을 구한다. 뒤의 Softmax는 여러 범주의 점수를 지수화한 뒤 그 합으로 나누어 확률을 만든다. 분모의 합 범위와 범주 첨자를 먼저 확인해야 정규화의 의미가 유지된다.

Newton ' s update has the form
Δw=- (n=1Ny^n(1y^n)xnxnT)1 (n=1N(yny^n)xn)
inverseofHessian,(2J[w])1 gradient,∇J[w]
Newton ' s update reduces to iterative re - weighted least squares (IRLS)
ww+(XSXT)1XSb
where
수식

Multiclass Extension: Softmax Regression

p[y=kx]=ewkTxew1Tx++ewkTx

정리하면

회귀와 분류는 출력의 의미와 오차를 정의하는 방식이 다르다. 무엇을 예측하는지 먼저 정해야 같은 수식의 계수와 손실을 올바르게 읽을 수 있다.

NOTE 25 / 데이터와 AI

순방향 신경망

Feedforward Networks

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

순방향 신경망에서는 입력이 중간층을 거쳐 출력으로 전달된다. 이 글은 단순한 선형 분류에서 시작해 활성화 함수와 여러 층을 연결하고, 출력 오차를 역방향으로 전달하여 가중치를 바꾸는 과정을 다룬다.

기호를 먼저 읽기

wᵀx+b
입력을 가중합한 분류 점수
sgn
점수의 부호로 범주를 정하는 규칙
h
중간층의 출력
φ, φ′
활성화 함수와 그 미분
δ
오차가 중간 계산값에 얼마나 민감한지 나타내는 값
α
가중치 갱신 크기

이 글의 흐름

분류 경계와 오분류 조건을 먼저 읽는다. 다음으로 비선형 변환을 연결한 신경망을 만들고, 체인룰로 구한 변화율을 이용해 출력층에서 입력층 쪽으로 가중치를 갱신한다.

주제와 표기

Feedforward Nets

Linear classification

A linear discriminant function which has the form

분류 경계는 점수가 0이 되는 위치이다

wᵀx+b의 부호로 두 범주를 나누면, 0이 되는 위치가 경계가 된다. 입력의 차원이 커져도 원리는 같으며 w와 b가 경계의 방향과 위치에 관련된다. 이 단계에서는 확률이 아니라 부호에 의한 판단을 하고 있음을 구별한다.

f[x]=wTx+b
where (w, b) ∈RD×R (weight vector, bias) are the parameters that control the function .

Decision rule is given by sgn[f[x]]

sgn[f[x]] = {{{1, if f[x] ≥0}, {-1, otherwise}}

Separating hyperplane

wTx+b=0
The input space X is split into two parts by the hyperplane .

Perceptron

A single layer neural network

The first iterative algorithm for learning linear classification

틀린 샘플에서만 계수를 바꾼다

퍼셉트론은 현재 경계가 틀리게 분류한 샘플을 이용해 w를 갱신한다. 정답 yₙ을 ±1로 두면 wᵀxₙyₙ의 부호로 올바른 분류 여부를 한 식에 담을 수 있다. 수렴에 대한 원문의 설명은 선형 분리가 가능한 조건과 함께 읽는다.

y=sgn[WTx+b]

Perceptron convergence Theorem

The perceptron classifier minimizes the error probability, while MMSE classifier does not .
One can easily see that the perceptron learning reduce the error
wk+1Txnyn=wkTxnynxnM|xnyn|2wkTxnyn
If classes C1 and C2are linearly separable, then the perceptron rule converges in a finite number of steps to a separating hyperplane .
The algorithm is guaranteed to converge when data are linearly separable

Perceptron Criterion

Suppose that target values {yn} take either 1 or - 1
yn = {{{1, if xnC1}, {-1, if xnC2}}
what we want here is to find a w such that
{{{wx>0, for xnC1}, {wx<0, for xnC2}}
which is identical to

오분류 집합의 손실과 기울기를 연결한다

ℳ은 현재 잘못 분류된 샘플들의 집합이다. 이 집합에서 합산한 목적함수를 w로 미분하면 xₙyₙ의 합이 나오고, 그 반대 방향으로 이동하는 갱신식이 된다. 원문에 learning rate와 기울기가 나란히 표기되어 있어도, 이동 계수 α와 미분벡터 ∇J는 다른 역할이다.

wTxnyn>0 xn
The perceptron criterion leads to the following objective function
J[w]=xnMwTxnyn
where ℳ is the set of vectors xn which are misclassified by the current weight vector .
The gradient of J[w] is
Jw=xnMxnyn

objective function

J[w]=xnMwTxnyn

Gradient descent

wkwk1αJ[wk1]
step size : α
learning rate : ∇J[w] = ∂J/∂w

Perceptron Learning: A Basic Idea

학습 절차를 한 샘플씩 따라간다

샘플을 하나 읽고 현재 계수로 분류한다. 올바르면 유지하고 틀리면 αxₙyₙ을 더한다. 새 계수로 다시 판단하는 과정을 반복한다는 것이, 목적함수 식을 실제 절차로 바꾼 의미이다.

If the pattern is correctly classified, do nothing . If not .
Δw=αxnMxnyn
J[w]:RmR
J[w]w=(J[w]w1J[w]w2:J[w]wm)Rm

Perceptron Learning: Algorithm Outline

1. Get a training sample
2. Check to see if it is misclassified
2.1 If classified correctly, do nothing
2.2 If classified incorrectly, update w by
wk+1=wk+αxnyn
3. Repeat steps 1 and 2 until convergence

McCulloch-Pitts Model

원본 도해

Activation Functions

활성화 함수가 선형 점수를 다른 값으로 바꾼다

ReLU는 음의 입력을 0으로 두고 양의 입력을 유지한다. Leaky ReLU는 음의 구간에서도 작은 기울기를 남기고, Softplus는 로그와 지수로 부드러운 변환을 만든다. ELU와 ReLU-6도 구간별로 입력이 어떻게 바뀌는지 먼저 읽는다.

원문에는 tanh라는 제목 옆에 ArcTan이 적힌 줄이 있다. 쌍곡탄젠트와 아크탄젠트는 같은 함수가 아니므로, 이 둘을 동일한 연산으로 설명하거나 하나로 임의 변경하지 않는다. 해당 줄은 함수 선택을 확인해야 하는 표기이다.

Sigmoid:ϕ[x]=11+ex
tanh:ϕ[x]=ArcTan[x]
ReLU:ϕ[x]=max[0,x]
Leaky ReLU : ϕ[x] = {{{αx, if x<0}, {x, if x≥0}}
Softplus:ϕ[x]=log[1+ex]
xlog[1+ex]=ex1+ex=11+ex
Exponential Linear Unit (ELU) : ϕ[x] = {{{α (ex - 1), if x<0}, {x, if x≥0}}
ReLU - 6 : ϕ[x] = {{{0, if x < 0}, {x, if 0≤x<6}, {6, if x≥6}}

Multilayer Perceptron (MLP)

Structure: bipartite

여러 층을 연결하고 출력 오차를 정한다

중간층을 거쳐 예측값을 만든 뒤 실제 y와의 차이를 제곱해 모은다. argmin은 손실의 최소값 자체가 아니라 그 값을 작게 만드는 계수의 선택을 뜻한다. 모델을 정의하는 식과 모델을 평가하는 손실식을 구별한다.

원본 도해
A multilayer extension of perceptron
universal approximation

Square loss (error)

원본 도해
argminw0,w1,w212Nn=1N(yny^n)2
=w1x1+w2x2+w0

Sematic space

Backpropagation

순전파 결과를 이용해 역방향 미분을 계산한다

먼저 h₁·h₂를 계산하고 이를 출력 가중치와 결합해 ŷ를 얻는다. 이후 실제 값과의 차이로 손실을 만들고, 어느 가중치를 바꾸면 손실이 얼마나 달라지는지 계산한다. 역전파는 새 입력을 역으로 복원하는 것이 아니라 손실의 미분을 전달하는 과정이다.

Error back - propagation (BP) algorithm
Gradient descent iteratively determines a local minimum of the error function J[x]
xxαJ[x]x
where the gradient ∂J[x]/∂xcontains the critical information
원본 도해
h1=ϕ[w11x1+w12x2+b1]
h2=ϕ[w21x1+w22x2+b2]
y^=υ1h1+υ2h2+c1
J=squareloss
=12Nn=1N(yny^n)2
원본 도해
원본 도해

출력층의 오차 민감도를 중간층으로 보낸다

δ_y에는 출력 오차와 활성화 함수의 미분이 함께 들어간다. δ_h는 이 값을 연결 가중치와 앞 층의 활성화 미분에 곱하여 얻는다. 이처럼 함수가 연속해서 연결되어 있을 때 변화율도 연결된 경로를 따라 곱해진다.

y=ϕ[w2h],y~=w2hh=ϕ[w1x],h~=w1x
errorJ=12e2=12(ty)2=12(tϕ[y~])2
CalculateJw2:
수식
Define δy as the gradient of the objective J w . r . t . the pre - activation y~
δy=Jy~=eϕ[y~]
CalculateJw1:
수식
Thus, δh can be recursively calculated as
δh=Jh~=δyw2ϕ[h~]

변화율에 입력값과 이동 크기를 반영한다

출력 가중치의 갱신에는 δ_y와 중간층 값 h가, 앞 가중치에는 δ_h와 입력 x가 들어간다. 마지막의 Softmax 예제는 출력 점수들을 여러 범주의 확률로 정규화한 것이다. 가중치 갱신과 최종 범주 선택을 별도의 단계로 읽는다.

updatew2:
Δw2=αJw2=αδyh
updatew1:
Δw1=αJw1=αδhx
원본 도해

Image Classification

MNIST
28×28=784
y^k=exp[wkTh]j=1Kexp[wjTh]

정리하면

순전파는 예측을 계산하는 방향이고, 역전파는 그 예측 오차의 민감도를 전달하는 방향이다. 두 흐름을 구별하면 학습식의 역할을 이해하기 쉽다.

NOTE 26 / 데이터와 AI

학습과 최적화

Training & Optimization

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

모델의 수식이 정해져도 계수가 자동으로 적절해지는 것은 아니다. 학습은 예측 오차를 계산하고 계수를 바꾸는 절차를 반복하는 과정이다. 이 글은 갱신 방향·이동 크기·데이터 묶음·정규화를 각각 나누어 다룬다.

기호를 먼저 읽기

θ
학습으로 바꿀 모델 매개변수
J(θ), ℓ
오차를 하나의 값으로 모은 목적함수
∇J
매개변수에 대한 목적함수의 기울기
α
갱신의 이동 크기
v, r
이전 기울기 또는 그 제곱의 누적 정보
β
현재 값과 이전 누적값의 비중
μ, σ²
평균과 분산

이 글의 흐름

기본 경사하강법과 데이터 묶음의 차이를 이해한 뒤, 이동평균·모멘텀·적응형 갱신을 비교한다. 마지막에는 입력과 중간값의 정규화가 학습식에 어떻게 들어가는지 살펴본다.

주제와 표기

Training

Optimization for deep learning

모델의 예측과 학습할 계수를 분리한다

f(x;θ)는 입력 x와 계수 θ를 받아 예측값을 만든다. 학습 데이터의 정답과 예측을 비교해 J를 계산하고, θ를 바꾸어 J를 줄인다. 입력 데이터 자체와 학습으로 조정할 변수를 먼저 구별한다.

Parameterized Model
y^=f[x;θ]
input : x
parameters:θ
Training Data = {(x¯1, y1), …, (x¯N, yN)} = {(X, y¯)}
Error function J=12Nn=1N(yny^n)2
minimizeθ12Nn=1N(yny^n)2
GradientJθ

Gradient descent

기울기의 반대로 조금 이동한다

현재 θ에서 목적함수의 기울기를 구하고 α를 곱해 뺀다. 기울기는 어느 방향이 증가 방향인지 알려주고 α는 그 방향으로 얼마나 이동할지 결정한다. α가 양수라는 조건과 현재 지점에서 미분을 평가한다는 뜻을 함께 읽는다.

원본 도해
Consider the objective function : J[θ] : RDR . (e . g ., J[θ] = 1/N∑_ (n = 1)N | f[xn;θ] - yn |^2)

A first-order iterative optimization algorithm for finding a local minimum of the objective function J[θ]

Moves from the current values of parameters, θk, in the opposite direction of the gradient of the objective function J[θ] w.r.t. the parameters, evaluated at θk

θk+1θkα[J[θ]θ]θ=θk
currentgradient:[J[θ]θ]θ=θk
where α is learning rate (step size)
Taining set = {(x¯1, y1), (x¯2, y2), …, (x¯N, yN)} = (X, y¯), where xnRD and ynR
Batch=(X,y¯)
Mini - batch of size M = (X^{m}, y¯m)
Xm={x¯m,,x¯m+M1},y¯m={ym,,ym+M1}

(Full) Batch Gradient Descent ⇔ Vanilla Gradient

Resort to entire training dataset to compute the gradient of the object function

전체 데이터와 일부 데이터의 차이를 읽는다

배치 방식은 전체 데이터로 한 번의 기울기를 계산하고, 미니배치는 일부 샘플 묶음으로 갱신한다. 묶음이 하나의 샘플이면 한 샘플의 오차가 바로 갱신에 반영된다. 모델식이 달라진 것이 아니라 한 번에 기울기를 계산하는 데이터 범위가 달라진 것이다.

θk+1θkα[J[θ;X,y¯]θ]θ=θk

The accuracy of the parameter update is high but it can be slow

Intractable for datasets that do not fit in memory

Does not allow us to update the model online (with new examples on the fly)

Mini-Batch Gradient Descent ⇔ Stochastic Gradient descent (SGD)

Consider the objective function that is the sum of errors evaluated on each batch
J[θ;X,y¯]=1NMm=1NMJ[θ;Xm,y¯m]
where X^{m} and y¯m are training examples in mini - batch m and Nm is the number of mini batches
Mini - batch gradient descent updates parameters
θk+1θkα[J[θ;Xk,yk]θ]θ=θk
Or using a batch of size 1
θt+1θtα[J[θ;x¯t,yt]θ]θ=θt

Gradient=Steepest Descent Direction

국소 근사에서 이동 방향을 구한다

현재 값 주변에서 목적함수를 일차식으로 근사하면, 변화량의 효과는 기울기와 이동벡터의 내적으로 표현된다. 방향벡터의 길이를 정해 놓고 이 값을 작게 만드는 방향을 찾는다. 이때 목적함수를 줄이는 방향은 기울기 자체가 아니라 음의 기울기 방향이라는 앞뒤 정의를 함께 확인한다.

Let dθ = εv¯ . Then, serach for the direction v¯ that minimizes
J[θ+dθ]J[θ]+[J[θ]]Tdθ=J[θ]+ϵ[J[θ]]Tv¯
under the constraint that
|v|2=i,jGi,jvivj=v¯TGv¯=1

By the Lagrangian method, we have

v¯[ϵ[J[θ]]Tv¯+λ(1v¯TGv¯)]=0
leading to
v¯=ϵ2λG1J[θ]
When the space isEuclidean and the coordinate system is orthogonal, then G = I, indicating that the gradient is the steepest descent direction

Convex function

볼록성은 두 점 사이의 함수값 관계이다

볼록함수 식은 두 점의 함수값을 섞은 값과 두 점을 섞은 위치의 함수값을 비교한다. 그림의 굽은 모양을 외우기보다 부등호의 어느 쪽이 큰지 읽는다. 안장점은 단순히 값이 작거나 큰 점과 다른 형태로 원문에서 구별한다.

αf[x1]+(1α)f[x2]f[αx1+(1α)x2]
Concave
Saddle Points

Neural Network fθ[x]

반복 갱신의 방향과 크기를 따로 기록한다

θₖ에 이동방향 v와 크기 α를 곱해 더하면 다음 θ가 된다. argmin은 이 반복의 목표가 되는 매개변수를 뜻한다. 중간 유도에서 기호가 바뀌어 보이는 줄은 정의와 차원을 확인하며 읽고, 모든 줄이 별도 조건 없이 같은 식이라고 확대하지 않는다.

θ : layer sum
Sample (Training Set) : S
Training:Algorithm(S,)=θ,fθ[x]
loss:[fθ[x],y]
square loss: =12Nn=1N(fθ[xn]yn)2
argminθ[fθ[x],y]
argminθ[θ]

Iterative methods

initialθ0θ1θ2θkθ
θkθk1+αυk1
step size : α
direction:υk1
[θ+dθ]<[θ]
dθ=ϵυ,|υ|2=1
[θ+dθ][θ]+T[θ]dθ(firstorderapproximation)
=[θ]+T[θ](ϵυ)
minimizeυT[θ](ϵυ)+λ(1υTυ)
υ[T[θ](ϵυ)+λ(1υTυ)]=ϵ[θ]2λυ=0
2λυ=ϵ[θ]
λ=ϵ2λ[θ]

Problem

하강 방향인지 내적의 부호로 확인한다

현재 기울기와 v의 내적이 음수이면 작은 이동에서 목적함수가 줄어드는 방향임을 판단할 수 있다. v를 음의 기울기로 두면 내적이 음의 노름 제곱이 된다. 다만 기울기가 0인 경우는 엄격한 감소가 보장되는 경우와 구별한다.

We consider the objective function (loss function, error function) J[θ] : RDR
For instance, the square loss is given by
J[θ]=12Nn=1N|f[xn;θ]yn|2
Traning (or learning) involves finding a minimizer of J[θ]
argminθJ[θ]

General form of iteration methods

θk+1θk+αkvk
step size : αk
direction:vk

Definition

For a given point θ∈RD, a direction v∈RD is called a decent direction if there exists α¯ >0
such that
J[θ+αv]<J[θ],α(0,α¯)

Lemma

For a point θ∈RD, any direction v satisfying
<J[θ],v>=JT[θ]v<0
is a descent direction
Certainly - ∇J[θ] is a descent direction, since
<J[θ],J[θ]>=|J[θ]|2<0
Suppose that you are sitting at a point θ∈RD and looking at the value of the function J[θ] in all directions around you .
The direction with the maximum rate of decrease is along - ∇J[θ]

Exponentially Weighted Moving Average

최근 값에 더 큰 비중을 두어 누적한다

vₜ=βvₜ₋₁+(1−β)θₜ는 이전 평균과 새 값을 섞는 식이다. 이를 반복해서 펼치면 오래된 값에는 β의 더 높은 거듭제곱이 붙는다. β=0.9에 대한 1/(1−β)=10은 대략적인 기억 길이를 설명하는 관계이며, 정확히 최근 10개만 사용하는 창 평균은 아니다.

Suppose that we are given θ1, θ2, θ3, …
Moving average of θt is calculated as
vt=βvt1+(1β)θt
β[0,1],β=0.9
v0=0
v1=βv0+(1β)θ1=(1β)θ1
v2=βv1+(1β)θ2=(1β)(βθ1+θ2)
vt=(1β)(βt1θ1+βt2θ2++θt)
≈which approximately average over 1/(1 - β) samples
β=0.911β=10

Bias Correction

초기값의 영향을 보정한다

누적값을 0에서 시작하면 초기에 값이 작아지는 효과가 생긴다. vₜ를 1−βᵗ로 나누는 식은 이 초기 편향을 보정하기 위한 것이다. 원문의 수치 예시에는 근삿값처럼 읽어야 하는 줄이 있으므로, 뒤의 등호를 모두 정확한 산술 등식으로 해석하지 않는다.

Use vt/(1 - βt) instead of vt (useful during initial phase)
v110.9=10v1
v210.92=5v2
v1010.910=v10

Gradient Descent with Momentum

모멘텀은 기울기의 누적 방향을 사용한다

매번 현재 기울기만 쓰는 대신 이전 누적 기울기와 새 기울기를 섞는다. 여러 단계에서 같은 방향이 유지되면 그 경향이 갱신에 남고, 방향이 자주 바뀌면 일부 변화가 서로 완화된다. 이후 θ 갱신은 이 누적값 v에 α를 곱해 적용한다.

Recall gradient descent
θt+1=θtα[J[θt]]
where α is the step size
Gradient descent with momentum uses moving averages of gradients to update parameters
vt+1=βvt+(1β)[J[θt]]
θt+1=θtαvt+1
θ=(θ1θ2:θD)
수식
Alternatively, we write the gradient descent with momentum as
수식
When gradients keep pointing in the same direction, this will increase the size of the steps taken towards the minimum
When the gradient keeps changing direction, momentum will smooth out the variations

Manhattan-Learning Rule

기울기의 크기 대신 부호로 이동한다

Manhattan 규칙은 각 가중치의 기울기가 양수인지 음수인지에 따라 일정한 크기로 이동한다. 기울기가 크다고 이동량을 더 크게 만드는 구조가 아니다. 0인 경우의 분기도 함께 읽으면 좌표별 갱신 규칙이 명확해진다.

Acts independently on each weight
Update depend on the sign of the gradient
The update - value is constant through iterations
θit+1=θit+Δθi
where
Δθi = {{{-Δ0, if ∂J/∂θi>0}, {Δ0, if ∂J/∂θi<0}, {0, else}}
where Δ0 is the update - value, which is a problem - dependent constant

Resilent Backprop (Rprop)

Rprop은 좌표별 이동 크기를 조절한다

연속한 두 기울기의 부호가 같으면 그 좌표의 이동 크기를 늘리고, 부호가 바뀌면 줄이는 구조이다. η⁺와 η⁻는 이 증가·감소의 비율을 나타낸다. 원문은 전체 배치 맥락을 설명하므로, 미니배치에 같은 특성이 그대로 보장된다고 가정하지 않는다.

Used for full batch learning
Goal : Resolve the problem that gradients may vary widely in magnitudes
Acts independently on each weight
Extension of Manhattan learning rule
Combines the idea of using the sign of the gradient with the idea of adapting the step size individually for each weight
The update - value, Δi, for each weight evolves during the learning process
Increase the learning rate for a weight multiplicatively if signs of last two gradients agree
Else decrease learning rate multiplicatively
Initialize all updates at iteration 0 to constant value
The update - value, Δi, for each weight evolves during the learning process
수식
where 0<η <1<η+. (typical setting : η+= 1.2, η= 0.5)
Update weights : θit+1 = θit + Δθit, where
θit = {{{-Δit, if ∂J/∂θi>0}, {Δit, if ∂J/∂θi<0}, {0, else}}
Does not work well for mini - batch learning

AdaGrad: Adaptive Gradient

AdaGrad는 누적 제곱으로 보폭을 나눈다

각 매개변수에 대해 지금까지의 기울기 제곱을 모으고, 그 제곱근이 갱신식의 분모에 들어간다. 누적량이 큰 좌표는 같은 현재 기울기에서도 상대적으로 작은 이동을 하게 된다. 원문의 i 좌표와 분모 첨자 표기는 대응을 확인하며 읽는다.

A different step size for every parameter θi at every time step t .
θit+1=θitαG1,1t+ϵJ[θit]
where Gi,it = ∑_ (j = 1)^t (∇J[θij])^2 contains the sum of squares of the gradients w . r . t . θi up to time step t
Gimi^(t) represents the diagonal entries of the matrix Gt which is calculated as
Gt=diag[j=1t(J[θj])(J[θj])T]

RMSProp

RMSProp은 최근 제곱기울기에 더 비중을 둔다

모든 과거 제곱을 계속 더하는 대신 지수이동평균으로 r을 갱신한다. 현재 기울기를 √(r+ε)로 나누어 좌표별 크기를 조절한 뒤 α를 곱한다. 여기서 제곱과 나눗셈은 원문에 적힌 대로 성분별 연산이다.

RMSProp=Rprop+SGD
Adaptive individual learning rate for each weight
Instead of accumulating all past squared gradients, the moving average is used to scale the step size
Update parameters θt by
rt+1=βrt+(1β)(J[θt])2(elementwisesquare)
vt+1=J[θt]rt+1+ϵ(elementwisedivision)
θt+1=θtαvt+1

ADAM Optimization

Adam은 방향 누적과 크기 누적을 함께 사용한다

v에는 기울기를, r에는 기울기의 제곱을 누적한다. 두 누적값에 초기 편향 보정을 적용한 뒤, 보정한 v를 보정한 r의 제곱근으로 나누어 갱신한다. 분자와 분모가 서로 다른 정보를 담는다는 점이 핵심이다. 원문에 생략된 안정화 상수를 새로 넣은 식으로 설명하지는 않는다.

Uses estimations of first and second moments of gradient to adapt the learning rate for each weight of the neural network
Adaptive individual learning rate for each weight
ADAM=momentum+biascorrection+RMSProp
vt=β1vt1+(1β1)(J[θt1])
rt=β2rt1+(1β2)(J[θt1])2(elementwisesquare)
vtbc=vt1β1t
rtbc=rt1β2t
θt=θt1αvtbcrtbc(elementwisedivision)

Learning Rate Decay (Step Size)

학습이 진행되며 이동 크기를 줄인다

α₀는 처음 설정한 이동 크기이고, 이후 식은 epoch나 반복 횟수에 따라 α를 줄이는 예이다. 역수, 지수, 제곱근 형태가 각각 얼마나 빠르게 감소하는지 비교한다. 원문은 여러 선택안을 나열한 것이므로 하나의 필수 규칙으로 읽지 않는다.

Slowly reduce the step size α
1 epoch = 1 pass through whole training examples
Strategies (η = decay rate&Ω = epoch number)
α=11+ηΩα0
α=0.95Ωα0
α=kΩα0
α=ktα0
or α is manually set such that the value of constant is decreasing in a stepwise fashion

Dropout

Dropout은 학습 중 일부 성분의 통과 여부를 정한다

베르누이 변수로 만든 마스크를 중간층 값에 성분별로 곱한다. 0인 위치는 그 계산에서 제거되고 1인 위치는 남는다. 이것은 학습 중 연결을 선택하는 규칙이며, 측정 데이터가 실제로 사라졌다는 의미는 아니다.

Form a vector of independent Bernoulli random variables, Zl, where zil ~ Bern[p]
Feedforwardoperationsare:hil+1=σ[wil+1T(hlzl)+bil+1]

Normalization

평균과 퍼짐을 분리해 입력의 기준을 맞춘다

먼저 모든 x의 평균 μ를 구하고, 평균에서의 차이를 제곱해 분산을 구한다. z=(x−μ)/σ는 중심을 0으로 옮기고 퍼짐을 표준편차 기준으로 맞추는 계산이다. 모든 입력이 같은 경우처럼 σ가 0이면 이 나눗셈을 그대로 수행할 수 없다.

Standardization
X={x1,x2,,xN}
mean μ=1Nn=1Nxn
var σ2=1Nn=1N(xnμ)2
Z={z1,z2,,zN}
mean=0
variance=1
zn=xnμσ

Batch Normalization

배치 정규화는 같은 성분의 샘플들을 기준으로 한다

먼저 가중합 a를 만든 뒤 미니배치 안에서 해당 성분의 평균과 분산을 계산한다. 이를 이용해 a를 정규화하고, 학습 가능한 γ와 β로 다시 크기와 위치를 조정한다. 평균·분산은 데이터에서 계산하는 값이고 γ·β는 학습하는 값이라는 점을 구별한다.

Pre - activation is calculated as a linear sum of incoming inputs
ail=jWi,jlhjl1+bil
Activation is a non - linear transform of the pre - activation
hil=ϕ[ail]
원본 도해

BN is applied to individual dimension for each mini-batch of size M

Normalizepreactivationai
z~i=aiμiσi2+ϵ
where
μi=1Mm=1Mai,m
σi2=1Mm=1M(ai,mμi)2

Rescale and shift by learnable parameters

zi=γiz~i+βi
where (γi, βi) are learnable parameters that are learned via back - prop
원본 도해
Since the mean is subtracted, bias term bil is not necessary . In other words, simply use ail = ∑_jWi,jl hjl1

BN in Inference Phase

추론 때는 정규화의 기준 통계를 사용한다

원문은 배치에서 얻은 통계로 추론에 사용할 평균과 분산을 구성한다. 마지막 scale-and-shift 식은 정규화와 선형 조정을 하나로 정리한 형태이다. 학습 시점의 배치 통계와 추론 시점에 사용할 기준 통계를 같은 순간의 값으로 혼동하지 않는다.

Suppose that μi,B and σi,B2 are mean and variance computed using a mini - batch ℬ of size M
In inference phase, we compute
E[ai]=EB[μi,B]
var[ai]=MM1EB[σi,B2]
Scale and shift
zi=γiaivar[ai]+ϵ+(βiγE[ai]var[ai]+ϵ)

Layer Normalization

층 정규화는 통계를 모으는 축이 다르다

배치 정규화와 달리 한 층의 여러 은닉 성분을 모아 평균과 표준편차를 계산한다. 따라서 두 방법의 차이는 정규화라는 이름보다 어떤 값들을 한 집합으로 묶어 통계를 구하는지에 있다. 마지막 RNN 식에서 정규화할 가중합과 그 뒤의 활성화 함수를 나누어 읽는다.

CNN→BN
RNN→LN
Reduce the ' covariate shift ' problem by fixing the mean and the variance of the summed inputs within each layer
Compute the layer normalization statistics over all the hidden units in the same layer
μtl=1Hi=1Hai,tl
σtl=1Hi=1H(ai,tlμtl)2
LN in a RNN is performed
at=Whhht1+Whxxt
ht=ϕ[γσt1(atμt1)+b]

정리하면

각 학습법은 대체로 무엇을 누적하고, 그 값으로 이동량을 어떻게 바꾸는지가 다르다. 이름보다 갱신식에서 분자·분모·누적항의 역할을 먼저 읽는 것이 유용하다.

NOTE 27 / 데이터와 AI

합성곱 신경망

Convolutional Neural Networks

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

합성곱 신경망은 입력 전체를 한 번에 섞기보다 작은 범위의 패턴을 여러 위치에서 계산한다. 이 글은 입력 크기·커널·이동 간격이 출력 크기에 어떻게 연결되는지부터 읽고, 크기를 줄이거나 복원하는 구조와 잔차 연결로 확장한다.

기호를 먼저 읽기

N₁, N₂, N₃
입력의 두 공간 크기와 채널 수
f
커널의 한 변 크기
p, s
패딩 크기와 이동 간격
H(x), F(x)
목표 변환과 입력에 더할 잔차 변환
W_s
차원을 맞추는 투영 행렬

이 글의 흐름

합성곱의 크기 관계를 확인한 뒤 풀링과 업샘플링을 비교한다. 이후 잔차 연결의 덧셈과 미분을 읽고, 검출·분할·시계열 적용의 차이를 살펴본다.

주제와 표기

CNN (Convolutional Neural Network)

Convolutional Neural Network (CNN)

특징을 계산하는 단계와 범주를 정하는 단계를 나눈다

입력에서 특징을 추출한 뒤 분류기로 라벨을 정하는 것이 처음 제시된 흐름이다. 원문에 함께 적힌 교차상관과 합성곱은 커널을 어떻게 적용하는지 확인해야 하는 연산이다. 특징 추출·데이터 확대·크기 복원은 서로 다른 목적의 처리이므로 같은 의미로 묶지 않는다.

Cross - correlation → Convolution
Supervised representation learning : feature extraction + classification
수식
Input Image→Feature extraction→Classifier→Label
Data Augmentation : up sampling
Capsule Net

Pre-trained CNNs: before Freeze, Change Output (Transfer learning)

사전학습 구조와 모델 선택을 읽는다

모델의 가중치에 대해 가능성을 모으는 적분식은 모델 선택의 확률적 관점을 보여준다. 이후 구조 사례에서는 일반 합성곱, 풀링, 건너뛰는 연결을 구별한다. 제시된 모델 사례와 평가 관계는 원문 범위로 읽고 현재 모든 모델의 성능 규칙으로 일반화하지 않는다.

Model Selection
p[DMi]=p[Dw,Mi]p[wMi]dw

LeNet-5

수식

Operations

standard convolution
Pooling (subsampling)
More on convolutions

ResNet

Test error≤Training error + Complexity
Over - fitting
Skip connection
hl+2=ϕ[Wl+2hl+1+bl+2+hl]

Inception Net

Inception modules
Auxiliary Classifiers

Convolutions

Padding

커널이 움직일 수 있는 위치 수를 센다

패딩은 입력 가장자리에 공간을 추가하고, stride는 다음 계산 위치까지 이동하는 간격이다. 출력 크기 식은 커널이 입력 안에서 놓일 수 있는 위치 수를 센 것이다. 원문의 나눗셈 형태는 그 길이가 정수로 맞는 조건을 확인하며 사용한다.

p=1
(N1+2p)×(N2+2p)3×3(f×f)=5×5(N1+2pf+1)×(N2+2pf+1)

Strided Convolution

stride=2
N1×N2f×f=(N1fs+1)×(N2fs+1)

Convolution over Volume

공간 크기와 채널 수를 따로 본다

입력의 N₃개 채널에 걸친 커널 하나는 채널 방향의 값을 모아 한 출력 지도를 만든다. 1×1 합성곱도 같은 위치의 채널들을 결합할 수 있으므로, 공간 범위가 작다고 아무 계산을 하지 않는 것은 아니다. 출력 채널 수는 몇 개의 커널을 두는지와 별도로 연결된다.

N1×N2×N3f×f×N3=(N1f+1)×(N2f+1)

1×1 Convolution

Reduce # Channels
N1×N2×N31×1×N3=N1×N2

Max Pooling

풀링과 분할의 출력 의미를 구별한다

Max Pooling은 작은 영역에서 대표적인 큰 값을 고르며 채널별로 적용된다. 의미 분할은 이미지 하나의 라벨이 아니라 각 픽셀의 라벨을 구하는 문제이다. 따라서 크기를 줄인 특징을 다시 위치별 출력으로 옮기는 단계가 이어진다.

Applied independently over channels
max pooling (2×2)

Semantic Segmentation

Predict pixel - wise labels, given a pre - defined set of categories
Does not differentiate instances, only care about pixels

Fully Convolutional Networks

forwardinference
backwardlearning
image→96→256→384→384→256→4096→4096→21→21 (Pixelwise prediction) →segmentation g . t .
Convolutional layers (no fully - connected layers) + upsampling

Conv+Deconv

Convolution network→Deconvolution network
수식

Upsampling

업샘플링 방법마다 값을 채우는 규칙이 다르다

최근접 방식은 기존 값을 반복해 채우고, Bed of Nails는 원래 값 사이에 0을 넣는다. Max unpooling은 이전에 큰 값이 있던 위치 정보를 사용한다. 모두 크기를 늘리지만 사라진 원래 값을 항상 정확히 복원한다는 뜻은 아니다.

Down sampling ⇔ Up sampling
pooling ⇔ unpooling (Transposed Convolution)

Nearest Neighbor

Input 2×2upsampling Output 4×4
(qbcd)(aabbaabbccddccdd)

Bed of Nails

(abcd)(a0b00000c0d00000)

Max unpooling

locations of max activations are recorded in switch wariables
(abcd)(a00000b00c0d0000)

Deconvolution or Transposed Convolution

전치합성곱의 겹치는 기여를 더한다

작은 입력의 각 값이 커널을 통해 여러 출력 위치에 기여한다. 원문 예에서 가운데 출력에 여러 항이 더해지는 이유는 서로 다른 입력의 기여가 같은 위치에서 겹치기 때문이다. 커널 성분과 입력 성분을 하나씩 대응시키며 읽는다.

2×2conv
stride 1
padding 0
Input(1234)
Kernel(abcd)
Ouput(ab+2a2bc+3ad+2c+3b+4a2d+4b3c3d+4c4d)

e.x.1

행렬로 쓰면 합성곱의 연결 구조가 보인다

커널 성분과 0을 배치한 행렬은 어느 입력을 어떤 가중치로 모으는지 보여준다. 그 전치 형태는 작은 입력을 더 큰 출력 위치에 배분하는 관계로 읽을 수 있다. 원문 출력의 w_e 같은 표기는 앞에서 정의한 커널 성분과의 대응을 확인해야 하며 임의로 치환하지 않는다.

kernelsize=3
kernel=(w1w2w3)
stride=2
padding=1
0 a b c d 0
(w1w2w300000w1w2w30)(0abcd0)=(w2a+w3bw1b+w2c+wed)

e.x.2

Transposed convolution
Input(ab)
Kernel(w1w2w3)
Output(w1aw2aw3a+w1bw2bw3b)
(w10w20w3w10w20w3)(ab)=(w1aw2aw3a+w1bw2bw3b)

Residual Block

잔차만 학습하고 입력을 더한다

H(x)=F(x)+x에서 F는 최종 출력 전체가 아니라 입력에 추가할 차이이다. F가 0이면 입력이 그대로 전달된다. 미분식에는 잔차 경로의 미분과 직접 전달되는 항이 나란히 남으므로, 두 경로의 역할을 구별할 수 있다.

Intuition : If the identity mapping is optimal, it is easy to come up with a solution F[x] = 0 rether than F[x] = x using a stack of nonlinear layers
skip connection
H[x]=F[x]+x
F[x]=H[x]x
residual function F[x]
Gradients are calculated as
Jx=JHHx=JH(Fx+1)=JHFx+JH
gradienthighway:JH

Mitigate vanishing gradients:

Gradients can flow directly through the skip connections backwards from later layers to initial filters

Skip Connections

Identity shortcuts:

더하기 전에 차원을 맞춘다

F(x)와 x의 크기가 같으면 바로 더할 수 있다. 크기가 다르면 W_sx와 같이 입력의 표현을 맞추는 경로가 필요하다. 투영의 목적은 단순히 계수를 더 만드는 것이 아니라 덧셈 가능한 차원을 만드는 것이다.

When input and output dimensions are the same, then use the identity shortcut
H[x]=F[x;θ]+x

when dimensions change

Identity shortcuts with extra zero entries padded with the increased dimension
Projection shortcuts to match the dimension
H[x]=F[x;θ]+Wsx

Inception Nets

Naive Version

서로 다른 범위의 특징을 병렬로 계산한다

Inception 구간은 1×1, 3×3, 5×5 등의 경로를 나누어 계산하고 채널 방향으로 연결한다. 이어지는 차원 축소 구성은 큰 커널 전에 1×1 계산을 넣는 흐름이다. 각 경로의 공간 크기와 채널 크기를 따로 확인한다.

Filter concatenation
1×1convolutions
3×3convolutions
5×5convolutions
3×3 max pooling
Previous layer

With Dimension Reduction

Filter concatenation
1×1convolutions
3×3convolutions
1×1convolutions
5×5convolutions
1×1convolutions
1×1convolutions
3×3 max pooling
Previous layer

Object Detection: Localization + Classification

검출·분할·시계열의 목표를 나눈다

검출에서는 물체 종류뿐 아니라 위치를 함께 구한다. R-CNN과 YOLO는 원문에서 서로 다른 처리 흐름의 사례로 제시되어 있다. 마지막 시계열 항목은 시간 순서의 입력에서도 특징을 계산할 수 있다는 연결이며, 여기에는 완성된 센서 분류 실험 결과가 제시된 것은 아니다.

Multi - label
Localization
Patch→feature→SVM

R-CNN:Regions with CNN features

Input image → Extract region propocals →Compute CNN features → Classify regions

YOLO

5×5 grid on input
Bounding boxes + confidence
Class probability map
Final detections

CNN for Time Series Classification

Timeseries=sequence
Fourier Transform
Human Activity Recognition using Accelerometers and Gyroscope Sensors
partial weight sharing
full weight sharing

정리하면

CNN의 수식은 어떤 범위의 입력을 연결하고 출력의 위치 정보를 어떻게 유지하는지 보여준다. 공간 크기, 채널 수, 연산 종류를 나누어 읽는 것이 중요하다.

NOTE 28 / 데이터와 AI

순환 신경망과 Attention

RNN & Attention

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

시간에 따라 이어지는 데이터에서는 현재 입력만으로 의미를 정하기 어려울 수 있다. 이 글은 이전 상태를 다음 계산에 전달하는 RNN에서 출발해, 어떤 과거 정보를 유지하고 어느 위치를 참고할지 정하는 Attention으로 확장한다.

기호를 먼저 읽기

xₜ, yₜ
시점 t의 입력과 출력
hₜ, cₜ
중간 상태와 문맥 또는 기억 상태; 구간별 정의를 구별
iₜ, fₜ, oₜ
입력·유지·출력 비중을 조절하는 게이트
같은 위치의 성분끼리 곱하는 연산
Q, K, V
질의·비교 기준·실제로 모을 값
αₜ,ₜ′
출력 시점 t가 입력 위치 t′를 참고하는 비중

이 글의 흐름

독립 샘플과 순서 데이터의 차이를 확인하고, 상태 갱신과 기울기 전달을 읽는다. 이후 게이트와 가중합을 이용한 선택적 정보 전달, Attention의 행렬 표현, 계산량을 줄이는 구조를 살펴본다.

주제와 표기

RNN (Recurrent Neural Network)

IID Data (Independent, Identically, Distributed)

독립 샘플과 순서 데이터는 다른 가정을 갖는다

IID 식은 각 샘플이 독립이라는 조건에서 결합확률을 개별 확률의 곱으로 적는다. 시계열에서는 앞뒤 값의 관계를 다루므로 이 가정을 그대로 두지 않는다. 원문은 시간·언어·음성·영상 등의 순서 자료를 이러한 차이의 사례로 제시한다.

x1,x2,,xN
xnP[x]
P[x1,x2,,xn]=P[x1]P[x2]P[xn]
Fully - Connected Net, CNN

Sequence Modeling

Wanted:Probabilityoversequences,xP[x1,x2,,xT]

Non IID Data

Time series
Language
Audio/Speech
Video
RNN

Feedforward Net

현재 입력만 쓰는 경우와 이전 상태도 쓰는 경우를 비교한다

순방향 식의 hₜ는 xₜ로 계산된다. RNN 식에서는 여기에 hₜ₋₁의 항이 더해진다. 따라서 같은 현재 입력이라도 이전 상태가 다르면 출력이 달라질 수 있으며, h는 지나온 정보를 다음 단계로 전달하는 역할을 한다.

원본 도해
yt=ϕ[Wyhht+by]
ht=ϕ[Whxxt+bh]

Vanilla RNN: Unfolding Computational Graph

ht=RNN[ht1,xt]
원본 도해
yt=ϕ[Wyhht+by]
ht=ϕ[Whxxt+Whhht1+bh]

Hidden Markov Model

원본 도해

Many to Many: Encoder-Decoder

입력 순서를 중간 표현에 담아 출력 순서로 옮긴다

Encoder는 입력의 정보를 표현으로 만들고 Decoder는 그 표현을 참고해 출력한다. 문맥 cₜ가 여러 h의 가중합이면 출력 시점마다 다른 입력 위치를 더 참고할 수 있다. α는 참고 비중이며 z 점수를 지수화하고 합으로 나누어 구성한다.

원본 도해
원본 도해

Seq-to-Seq Learning

Context vector
Ct=tαt,tht
αt,t : amount of attention yt should pay to ht
α_ (t, t^′) = ^z_ (t, t^′)/(Underoverscript[∑, l = 1, arg3] ^z_ (t, l))
원본 도해

Aligment Model

st1
FF Net zt,t
ht
Scores how well the inputs around position t^′ and the output at position t match

Vanilla RNN: Gradient Flow

여러 단계의 미분이 반복해서 곱해진다

현재 출력의 오차가 오래전 상태에 미치는 영향을 계산하려면 여러 단계의 미분을 거쳐야 한다. 원문의 행렬과 활성화 미분이 반복되는 식은 이 전달 구조를 보여준다. 특이값에 대한 설명은 반복 곱의 확대·축소를 이해하기 위한 조건으로 읽고, 모든 비선형 상태에서 한 값만으로 전체 동작이 결정된다고 보지 않는다.

원본 도해
Gradient of h1 involves multiplies of may W
Exploding gradients when largest singular value > 1
Vanishing gradients when largest singular value < 1
계속 작아지는 값이 문제가 있어 LSTM
원본 도해
y=ϕ[Wx]
computeJx!
Jxi=jJyjyjxi=j(Jyj)(ϕj)(Wji)
(Jx)=(WT)(ϕ100ϕk)(Jy)
Backprop from y to x involves a multiplication by W

Attention in Encoder and Decoder

Encoder

Attention이 참고할 수 있는 범위를 구별한다

Encoder의 자기참조, Decoder의 자기참조, Encoder-Decoder 사이의 참조는 입력 출처가 다르다. Decoder의 마스크는 현재 출력에서 아직 주어지지 않은 미래 정보를 보지 못하게 하는 조건이다. 같은 가중합이어도 어느 위치를 허용하는지에 따라 의미가 달라진다.

Contains self - attention layers
Each position in the encoder can attend to all positions in the previous layer of the encoder

Decoder

Contains self - attention layers
The input of the decoder is masked, which avoids the decoder to see the future . (each position is the decoder can attend to all positions in the decoder up to and including that position)
Need to prevent leftward flow in the decoder to preserve the auto - regressive property

Encoder-decoder attention

Queries come from the previous decoder layer and keys/values come from the output of the encoder
Allow every position in the decoder attend over all positions in the input sequence
Mimics the encoder - decoder attention in seq2seq learning

Hidden vector

양방향 상태와 게이트 구조로 확장한다

앞에서 읽은 상태와 뒤에서 읽은 상태를 모으면 두 방향의 정보를 함께 표현할 수 있다. LSTM은 별도의 기억 갱신을 사용하는 구조로 이어진다. 여기의 결합은 출력 형태에 관한 것이며, 미래 정보가 허용되는 문제인지와도 구별해 읽는다.

ht=(htht)

Long Short Term Memory (LSTM)

ht=LSTM[ht1,xt]

Permutation-Equivariant Attention Modules (SAB & ISAB)

MAB (multihead attention block)

집합 Attention은 순서 변화에 맞는 출력을 만든다

MAB는 Attention 결과에 입력을 더하고 정규화한 뒤 성분별 네트워크로 처리한다. SAB는 같은 집합을 질의와 참조로 사용한다. ISAB는 적은 수의 유도점을 거쳐 정보를 모으는 구조이므로, 어느 집합이 질의이고 어느 집합이 참조인지 따라간다.

Given X, Y∈RN×D
MAB[X,Y]=LayerNorm[H+rFF[H]]
H=LayerNorm[X+Multihead[X,Y,Y;w]]

SAB (set attention block)

SAB[X]=MAB[X,X]

ISAB (induced set attention block)

With inducing points I∈RM×D (trainable parameters, M<<N)
ISABM[X]=MAB[X,H]
where H = MAB[I,X]

Gates ∈ [0,1]

LSTM Cell Updates

기억의 유지와 새 정보 입력을 따로 조절한다

cₜ=fₜ⊙cₜ₋₁+iₜ⊙gₜ는 이전 기억을 남기는 부분과 새 후보를 넣는 부분의 합이다. 출력 게이트 oₜ는 기억에서 외부로 전달할 비중을 조절한다. 0~1 사이의 게이트는 각 성분의 통과량으로 읽는다.

이 구간에는 일반적인 함수 이름과 별개로 ArcTan이 직접 적혀 있다. 원문의 식을 유지하면서 기억·게이트의 구조를 설명하며, 이 표기를 확인하지 않고 다른 활성화 함수와 같다고 치환하지 않는다.

⊙ Hadamard product, element - wise product
ht=otArcTan[Ct]
ct=ftct1+itgt
gt=ArcTan[Wgxxt+Wghht1+bg]
it=sigmoid[Wixxt+Wihht1+bi]
ot=sigmoid[Woxxt+Wohht1+bo]
ft=sigmoid[Wfxxt+Wfhht1+bf]

LSTM: Gradient Flow

기억 경로의 미분을 별도로 본다

앞의 c 상태에서 다음 c 상태로 직접 이어지는 항에는 fₜ가 성분별로 곱해져 있다. 따라서 단순 RNN의 반복 행렬곱과 다른 직접 경로를 볼 수 있다. 이는 계산 그래프의 한 경로에 대한 설명이며 전체 미분의 다른 경로가 모두 사라진다는 뜻은 아니다.

원본 도해
ct=ftct1+itgt
ht=otArcTan[ct]
Backprop from ctto ct1 involves only elementwise multiplication by ft (no matrix multiplication by W, in contrast to the case of vanilla RNN)

Gated Recurrent Unit (GRU)

GRU는 이전 상태와 새 후보의 비중을 정한다

원문은 zₜ로 새 후보의 비중을, 1−zₜ로 이전 상태의 비중을 정한다. rₜ는 후보를 만들 때 이전 상태를 얼마나 사용할지 조절한다. 두 게이트는 모두 0~1의 값이지만 서로 다른 위치에서 다른 역할을 한다.

ht=GRU[xt,ht1]

Two gates : update gate zt and reset gate rt
ht=(1zt)ht1+ztgt
gt=ArcTan[Wgxxt+Wgh(rtht1)+bg]
zt=sigmoid[Wzxxt+Wzhht1+bz]
rt=sigmoid[Wrxxt+Wrhht1+br]

Generative RNN

다음 값의 확률을 곱해 순서 전체를 평가한다

각 단계에서 다음 입력의 조건부 확률을 모델링하고, 이를 곱하면 전체 순서의 우도가 된다. 음의 로그를 취하면 단계별 손실의 합으로 바뀐다. 이 과정에서 시간 첨자가 곱과 합의 범위를 정한다.

Parameterize p[xt+1yt], where

yt=σ[Wyht+by]

Likelihood

p[x1:T+1]=t=1Tp[xt+1yt]

Loss function

J=t=1Tlog[p[xt+1yt]]

VAE

GAN

Generating Sequence

원본 도해

Training RNNs for sequence Prediction

입력 순서에 조건을 둔 출력 순서를 학습한다

출력 yₜ는 입력뿐 아니라 이전 출력의 조건도 포함할 수 있다. 전체 조건부 확률을 시간별 곱으로 나눈 뒤, 로그우도를 크게 만드는 계수를 학습한다. 여러 샘플의 합과 한 샘플 내부 시간의 합을 구별해서 읽는다.

Inputsequence(x1,x2,,xT)
Outputsequence(y1,y2,,yT)
P[y1,y2,,yTx1,x2,,xT]
=P[yTy1:T1,x1:T]P[yT1y1:T2,x1:T]P[y1x1:T]
=t=1TP[ytht]: RNN

Training

수식
θML=argmaxθ(Xn,yn)Dlog[p[Ynxn;θ]]
=argmaxθ(Xn,yn)Dtlog[p[Ytny1:t1n,xn;θ]]
=argmaxθ(Xn,yn)Dtlog[p[Ytnhtn;θ]]
where
htn = {{{f[Xn], if t = 1}, {f[ht1n,yt1n], otherwise}}
Prediction of token yt requires either the true previous token yt1 or an estimate y^t1 coming from model itself

Teacher-Forcing

학습 때의 입력과 추론 때의 입력을 구별한다

Teacher Forcing은 학습 중 이전 정답을 다음 단계에 넣는다. 추론 때에는 모델이 만든 이전 출력을 다시 입력해야 할 수 있다. 따라서 학습에서 본 조건과 실제 출력 누적 과정에서의 조건이 같지 않을 수 있다는 점이 이 구간의 핵심이다.

Training : The model receives the ground truth output yt (instead of the generated one y^t) as input in the next time step xt+1

TF

원본 도해

Without TF

원본 도해
Inference (test) : Open loop mode with network outputs fed back as inputs
Inputs that the model will see during training time could be quite different from that it will see at test time

Attention in RNN-Encoder-Decoder

고정된 문맥과 시점별 문맥을 비교한다

Encoder의 마지막 상태 하나를 사용하는 방식에서는 입력 정보가 고정 길이 c로 모인다. Attention 방식에서는 출력 시점마다 여러 Encoder 상태의 가중합 cₜ를 다시 계산한다. 두 식을 비교할 때 c에 시간 첨자가 생기는 의미를 먼저 읽는다.

Computes the conditional probability
p[y1:Tyx1:Tx]=t=1Typ[ytc,y1:t1]=t=1Tyg[yt1,st,c]
where st is the hidden state of the decoder, c is the fixed - dimensional representation of the input sequence (x1, …, xTx), given by the last hidden state of the encoder
ht=f[xt,ht1]
c=q[h1,,hTx]=hTx
Compute the probability over the target sequence
p[y1:Tyx1:Tx]=t=1Typ[ytc,y1:t1]=t=1Tyg[yt1,st,ct]
where st is the hidden state of the decoder, computed by
st=f[xt1,yt1,ct]
and ct is the context vector, computed by a weighted sum of encoder hidden states {ht}

참고할 위치의 점수와 비중을 구한다

출력 상태와 입력 위치의 표현을 비교해 z 점수를 만들고, 지수값을 전체 합으로 나누어 α를 얻는다. α를 각 h에 곱해 더한 것이 cₜ이다. 점수·정규화된 비중·최종 문맥은 같은 값이 아니라 순서대로 계산되는 세 단계이다.

ct=t=1Txαt,tht
Note that in the previous model, we have c1 = hTx and ct = 0 for t = 2, …, Ty
원본 도해
context vector
ct=t=1Txαt,tht
Aligment Model
st1
FF Net zt,t
ht
α_ (t, t^′) = ^z_ (t, t^′)/(Underoverscript[∑, l = 1, arg3] ^z_ (t, l))

Visual Attention

영상의 여러 위치를 문장 생성에 연결한다

CNN의 특징 지도를 L개 위치의 D차원 벡터로 읽는다. Decoder는 단어를 만들 때마다 이 위치들 중 어떤 정보를 더 참고할지 정한다. 따라서 위치의 개수 L과 각 위치의 특징 개수 D는 서로 다른 차원이다.

Capsulize
Learning words - image alignment
Input : Raw image
14×14 Feature Map
Convolutional Feature Extraction
RNN with attention over the image (LSTM)
Word by word generation
Output : A sequence of C words from vocabulary of size K, {y1, …, yc}, yiRK

Encoder

Use a CNN to extract a set of D - dimensional feature vectors, referred to as annotation vectors
a=[a1,,aL]RL×D
which contains the output L1×L2×D (L = L1×L2) of a lower convolutional layer (before max pooling)

Decoder

Use a RNN with attention modules to produce a caption generating one word every time step conditioned on a context vector, the provious hidden state, and the previously generated words

Tranformer models

순환 상태 대신 위치 사이의 참조를 계산한다

Transformer 구간은 Attention, 위치 정보, 순방향 네트워크의 결합으로 정리되어 있다. 먼저 각 위치가 다른 위치를 얼마나 참고할지 계산하고, 그 결과를 다음 변환에 전달한다. 원문의 구조 설명을 다른 최신 모델의 구성까지 포함하는 주장으로 확대하지 않는다.

Self - Attention - based models

RNN

Sequential computations (autoregressive models in decoders) are expensive and are not easy to be parallelized

CNN (ByteNet, ConvS2S)

Need a lot of layers to catch long - term dependencies

Vanilla Transformer

Trnsformer=encoder+decoder
Encoderordecoder=attention+positionalencoding+feedforwardnet

Self-Attention: A sequence-to-sequence operation

출력은 입력값들의 가중합이다

yᵢ=∑Wᵢⱼxⱼ는 i번째 출력이 여러 입력 xⱼ를 모은 값이라는 뜻이다. 가중치 Wᵢⱼ는 입력 사이의 점수를 지수화하고 합으로 나누어 얻는다. 따라서 결과의 의미는 입력값뿐 아니라 참고 비중을 어떻게 정하는지에 달려 있다.

Inputseq(x1,,xT)
Self Attention
Outputseq(y1,,yT)
yi=jWijxj
Wij=exiTxjlexiTxl

Query, Key, Value

질의·비교 기준·모을 값을 나눈다

Query는 무엇을 찾는지, Key는 어느 입력이 관련되는지 비교할 기준, Value는 실제로 모을 정보에 해당한다. 같은 입력에서 만들어져도 서로 다른 투영을 거칠 수 있다. 이를 세 역할로 분리하면 QKᵀ를 계산한 뒤 V를 곱하는 순서가 이해된다.

Query:xi,WQ
Key:x1,,xT,Wk
Value:x1,,xT,Wv
Wgj=eqTkjjeqTkj

Scaled Dot-Product Attention

행렬곱의 차원을 따라 Attention을 읽는다

QKᵀ로 위치 간 점수를 만들고 √D_k로 크기를 조절한 뒤 Softmax로 비중을 만든다. 그 비중 행렬에 V를 곱하면 각 위치에 모인 정보가 된다. Q와 K의 비교 차원, V의 출력 차원은 같은 역할이 아니다.

Attention(Q,K,V)=softmax[QKTDk]VRN×Dv
Queries:QRN×Dk,qiR1×Dk
Keys:KRN×Dk,kiR1×Dk
Values:VRN×Dv,viR1×Dv
For example, attention on a query qi is calculated as
n=1Nexp[qiknT/Dk]j=1Nexp[qikjT/Dk]vn
softmax[(qiknTDk)n[N]]
Self - attention : Queries, keys, and values are from the same sequence

Multi-Head Attention

여러 표현에서 계산한 결과를 다시 모은다

각 head는 Q·K·V를 서로 다른 투영으로 바꾼 뒤 Attention을 수행한다. 결과들을 연결하고 Wᴼ로 다시 출력 차원에 맞춘다. 원문 투영행렬 목록의 마지막 기호는 출력 투영과의 대응을 확인하며 읽는다.

Allows the model to jointly attend to information from different representation subspaces at different positions
MultiHead[Q,K,V]=Concat[head1,,headh]WO
headi=Attention[QWiQ,KWiK,VWiV]
where linear projections are done via parameters matrices
WiQRDmodel×Dk
WiKRDmodel×Dk
WiVRDmodel×Dv
WiQRhDv×Dmodel
where h = 8 is the number of parallel attention layers

Position-wise Feedforward Networks

위치별 변환과 위치 정보의 역할을 구별한다

순방향 네트워크는 각 위치에 같은 형태의 변환을 적용한다. 위치 부호화는 입력이 몇 번째 위치에 있는지 구별할 정보를 더한다. 사인·코사인 식의 pos는 위치이고 i는 성분 번호이며, 분모의 지수 범위는 원문 표기를 확인해야 한다.

Applied to each position separately and identically
Linear transformations are the same across different positions, but different parameters are used from layer to layer
FF net with signle hidden layer
FFN[x]=max[0,xW1+b1]W2+b2
where x∈R512 and the number of hidden units is 2048

Positional Encoding

Inject some information about the relative or absolute position of the tokens in the sequence
Add positional encodings to the input embeddings
PEpos,2i=sin[pos100002iDmodel]
PEpos,2i+1=cos[pos100002iDmodel]
where pos is position and i is the dimension

Reformer: Efficient Transformer

Transformer models

참고할 쌍의 수와 저장할 중간값을 줄인다

모든 위치 쌍을 비교하면 길이에 따라 비교 수가 커진다. 원문은 LSH, 가역층, 분할 계산을 서로 다른 비용 절감 방법으로 제시한다. 계산 시간과 중간값 메모리를 줄이는 방법을 같은 하나의 효과로 보지 않는다.

Training large transformer models are prohibitively costly, especially on long sequences
The dot - product attention requires O (T^2) complexity, where T is the length of the sequence

Reformer models

LSH (Locality Sensitive Hashing) attention : Replaces the dot - product attention, reducing the complexity form O (T^2) to O (T log T)
Reversible layers : Reduce memory space (storing activations only once in the training process instead of L times, where L is the number of layers)
Chunking

Locality Sensitive Hashing (LSH)

비슷한 입력을 같은 그룹에서 만날 가능성과 연결한다

LSH 식은 입력의 유사성과 같은 해시값을 갖는 확률을 연결한다. 여러 해시를 사용하면 그룹화 방식과 충돌 확률도 달라진다. 구체적인 확률식은 원문의 해시 구성과 분포 조건 안에서 읽는다.

Project the data into a low - dimensional Hamming space such that each hash function hm[xi] for m = 1, …, M, satisfies the local sensitivity hassing property
P[h[xi]=h[xj]]=Sij
where P[h[xi]=h[xj]] is the probability of collision and Sij represent the similarity between xi and xj
LSH is a data - independent method and the hash functions hm[] (for m = 1, …, M)
consist of random projections followed by rounding :
hm[xi]=sdn[WmTxi+bm]
For random weight vector wm (drawn from p - stalbe distribution), the probability of collision was proven to be
P[h[xi]=h[xj]](11πcos1[xiTxj|xi||xj|])M
In practice, LSH requires muliple hash tables with long binary codes . The large value of M decreases the collision probability

Reversible Network

앞 단계 값을 뺄셈으로 되찾는 구조를 살핀다

순방향 식은 z₁=x₁+F(x₂), z₂=x₂+G(z₁)이다. 이 구조를 이해하면 어떤 출력과 함수값을 이용해 이전 값을 되찾으려는지 알 수 있다. 다만 원문 역방향 두 줄에는 변수와 함수 인수의 대응이 어긋나 보이므로, 이를 검증된 복원식으로 설명하지 않고 순방향 정의와 함께 확인하도록 둔다.

Allow the activations at any given layer to be recovered from the activations at the followinglayer, using only the model parameters
A normal residual layer performs a function x|→y that operates on a single input and produce a single output and has the form z = x + F[x]
A reversible layer works on a paris of inputs/outputs
(x1,x2)(z1,z2)
where (x1, x2) are a partition of units in a layer, and follows the equations
z1=x1+F[x2]
z2=x2+G[z1]
A layer can be reversed by subtracting the residuals
x2=z2G[z2]
x2=z1F[x2]
원본 도해
원본 도해

정리하면

순서 모델의 핵심은 과거 정보를 어떻게 보존하고 선택하는지이다. 같은 h나 c라는 기호도 구간에 따라 상태 또는 문맥으로 정의되므로, 먼저 각 식의 입력과 출력을 확인한다.

NOTE 29 / 데이터와 AI

오토인코더와 생성 모델

Autoencoders

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

관측 데이터를 작은 내부 표현으로 옮겼다가 다시 복원하면 무엇을 남겨야 하는지 배울 수 있다. 이 글은 집합의 순서에 대한 성질에서 시작해 오토인코더, 확률적 잠재변수, 생성 모델의 학습 목적으로 이어진다.

기호를 먼저 읽기

x, x̂
원래 입력과 복원한 입력
z
직접 관측하지 않는 잠재표현
E, D
표현을 만드는 인코더와 복원하는 디코더
qφ(z ∣ x), pθ(x ∣ z)
잠재표현 추정과 데이터 생성의 조건부 분포
μ, σ, ε
평균·표준편차·기본 잡음
D_KL, ELBO
분포 차이 항과 최적화할 로그우도의 하한

이 글의 흐름

순서가 바뀌어도 유지할 성질을 먼저 정하고, 입력→잠재표현→복원의 관계를 읽는다. 확률모델에서는 복원과 분포 제약을 분리하고, 표본추출·미분·조건부 생성으로 확장한다.

주제와 표기

Autoencoder

Permutation Invariance and Equivariance

순서를 바꾸었을 때 무엇이 유지되어야 하는지 정한다

순열 불변은 입력 순서를 바꾸어도 전체 결과가 같다는 뜻이다. 순열 등변은 입력의 순서 변화에 맞춰 출력 위치도 같은 방식으로 바뀐다는 뜻이다. 전체 집합의 요약과 각 원소의 라벨처럼 서로 다른 출력을 구별하는 기준이다.

Consider a function f : X→Y

Wanted

The response of the function f is indifferent to the ordering of the elements in X
Permutation of input instances permutes the output labels

Definition (Permutation invariance)

A function f : XY is permutation invariant iff for any permutation π
f[{x1,,xN}]=f[{xπ(1),,xπ(N)}]

Definition (Permutation equivariance)

A function f : XN→YN is permutation equivariant iff
f[{xπ(1),,xπ(N)}]=(fxπ(1)[X],,fxπ(N)[X])T

Permutation Equivariant Functions

개별 원소와 전체 집합의 정보를 함께 사용한다

λI 항은 자신의 값을, γ11ᵀ 항은 집합 전체를 모은 정보를 연결하는 구조로 읽을 수 있다. 이어지는 pool 표현은 원소의 순서와 무관하게 전체 정보를 모으는 역할이다. 각 위치의 개별 값과 전체 공유 정보가 나뉜다는 점을 확인한다.

fθ:RNRNispermutationequivariantiff
f[x;θ]=σ[Θx]
where
Θ=λI+γ(11T),forλ,γR
수식
That is
fπ(n)=σ[λxπ(n)+γpool[{xπ(1),,xπ(N)}]]

Amortized Clustering

집합을 요약하고 Attention으로 결합한다

클러스터링 구간은 집합에서 혼합모델의 계수를 출력하려는 문제이다. Attention에서는 QKᵀ로 관련도를 구한 뒤 V를 모은다. 여러 head와 투영행렬은 같은 입력을 서로 다른 표현에서 비교하는 방식이다.

Input:X={x1,,xN}(set)
Output : f[X;θ] = {π[X], {μk[X], σk[X]} _ (k = 1)K} (parameters for MoG)

Attention Operaotors

Dot-product attention

Give a query Q∈RN×Dp, a key K∈RN×DK, and a value matrix V∈RN×Dv, an attention function is defined by
Att[Q,K,V;ω]=ω[QKT]V
where ω[] is an activation function (e . g ., softmax function in the standard transformer model)

Multihead attention

As in the standard transformer model
Multihead[Q,K,V;λ,ω]=concat(O1,,Oh)WO
where
Oj=Att[QWjQ,KWjK,VWjV;ωj]
λ={WjQ,WjK,WjV}j=1h

Set Transformer: Encoder & Decoder

Encoder  ( X → Z )

집합 전체를 고정된 수의 표현으로 모은다

Encoder는 원소 사이의 관계를 반영한 Z를 만든다. PMA는 학습 가능한 seed를 질의로 사용하여 Z를 요약한다. Decoder는 이 요약을 최종 출력으로 바꾸므로, 원소별 표현과 집합 수준의 출력을 단계별로 나누어 읽는다.

Stacks of SABs or ISABs
Encoder[X]=SAB[SAB[X]]or
Encoder[X]=ISAB[ISAB[X]]

Pooling by Multihead Attention (PMA)

Apply MHA on a set of learnable K seed vectors S∈RK×D
PMAK[Z]=MAB[S,rFF[Z]]

Decoder ( Z → y )

Aggregate features Z into a single or a set of vectors that is fed into a FF net to yield the final outputs
Decoder[Z;λ]=rFF[SAB[PMAk[Z]]]

Deep Generative models

입력을 구별하는 모델과 새 입력을 만드는 모델을 나눈다

분류 모델은 주어진 데이터가 어떤 범주인지 판단한다. 생성 모델은 데이터가 나타나는 분포를 표현하고 그 분포에서 새 샘플을 얻으려 한다. P_model과 P_data를 가깝게 하려는 식은 하나의 예측값이 아니라 분포 전체의 관계를 목표로 한다.

ImageDeeoNeuralNetworkP[cybertruck]=0.9
Discriminative Model

Latent Space = Hidden space=Invisible space

⇓ Linear→NN

Observed space

A Powerful model for unsupervised learning

Back - Prop (discriminative) Learning with labeled data
원본 도해
Up - Prop (generative) Learning with unlabeled data
원본 도해

Image Inpainting

eCommerceGAN

Linear Generative Models: Earlier Days

Sparse Coding

Recognizing data (via discriminative models)

Creating data (via generative models)

Pmodel[x;θ]Pdata[x]

Generative model unsupervised learning
Training Data = {x1, x2, …, xN}
Generative model = {x^1, x^2, …, x^N}

Density Estimation

확률을 계산하는 모델과 샘플을 만드는 모델을 구별한다

명시적 모델은 x의 확률 또는 밀도를 정의한다. 암시적 모델은 생성함수 G를 통해 샘플을 만드는 경로를 학습한다. 데이터와 비슷한 샘플이 나온다는 사실과 각 샘플의 밀도를 직접 계산할 수 있다는 사실은 다르다.

A problem of modeling a density function p[x], given a finite number of data points, {xn} _ (n = 1)N drawn from that density function

Prescribed models

Fit model distribution pθ[x] to the empirical distribution pdata[x]
Explicitly assign probability to every x in the data distribution

Deep learning

Tractable density : PixelRNN, PixelCNN
Approximate density : Variational autoencoders

Implicit models

Learn a generator network G[] that generate samples whose distribution is close to that of the data generating distribution

Deep learning

Generative adversarial networks
Z ~ P[z] → Generator P[xz] or G[z] → Generative Image
Generative = Decoder

Variational Autoencoders (VAE)

Autoendoer

오토인코더는 입력을 압축하고 다시 복원한다

E(x)로 z를 만들고 D(z)로 x̂를 얻는다. 복원 손실은 x와 x̂의 차이를 모은 값이다. VAE에서는 하나의 z만 내는 대신 μ·σ로 정한 분포에서 z를 얻으므로, 내부 표현을 만드는 방식이 달라진다.

원본 도해
n|xnx^n|22

Limitation

xencodingz=E[x]decodingx^=D[E[x]]

Variational Autoencoder

원본 도해

무작위성을 평균과 퍼짐으로 분리한다

ε를 표준정규 잡음으로 두고 z=μ+σε를 만든다. μ는 잡음이 놓이는 중심이고 σ는 퍼짐의 크기를 조절한다. 같은 ε를 사용해도 μ와 σ가 바뀌면 z가 달라지므로, 학습할 값과 외부 잡음을 나누어 볼 수 있다.

zN[μ,σ2]
Standard normal
ϵN[0,1]
z=μ+σϵ

Training VAE with Reparameterizaion Trick

원본 도해

Variational Autoencoder

인코더와 디코더의 조건 방향을 구별한다

qφ(z|x)는 관측 x에서 잠재변수 z를 추정하는 분포이고 pθ(x|z)는 z에서 x를 설명하는 분포이다. 조건선 오른쪽은 이미 주어진 정보로 읽는다. 두 분포의 매개변수 φ와 θ도 같은 역할의 하나의 변수가 아니다.

원본 도해
Probabilistic decoder : pθ[xz]
Probabilistic encoder : qϕ[zx]
Probabilistic Inference : P[zx]qϕ[zx]

Probabilistic decoder (generator network)

pθ[xz]=N[xμθ[z],diag[σθ2[z]]]
Dθ[z]=xpθ[xz]

Probabilistic encoder (inference network) for amortized variational inference

qϕ[zx]=N[zμϕ[x],diag[σϕ2[x]]]
Eϕ[x]=zqϕ[zx]
Stochastic gradient variational Bayes
(with reparameterization trick)

Training VAE

Variational lower-bound

로그우도에서 다루기 쉬운 하한을 얻는다

잠재변수 z를 적분해 없애면 x의 밀도를 얻지만 계산이 어려울 수 있다. 원문은 q를 곱하고 나눈 뒤 Jensen 부등식으로 하한을 만든다. 정리하면 데이터를 설명하는 기대 로그우도와 잠재분포의 차이를 나타내는 KL 항으로 분리된다.

log[p[x]]=log[p[x,z]dz]=log[pθ[xz]p[z]dz]=log[qϕ[zx]pθ[xz]p[z]qϕ[zx]dz]
qϕ[zx]log[pθ[xz]p[z]qϕ[zx]]dz(Jensen’s inequality)
=qϕ[zx]log[pθ[xz]]dz+qϕ[zx]log[p[z]qϕ[zx]]dz
=Eqϕ[zx][log[pθ[xz]]]DKL[qϕ[zx]P[z]](KLdivergence)
Reconstruction - Penalty

Reconstruction cost

복원과 분포 제약은 서로 다른 목적이다

복원 항은 선택한 z가 x를 얼마나 잘 설명하는지 측정한다. KL 항은 추정 잠재분포가 기준분포에서 얼마나 벗어나는지를 제한한다. 하한을 크게 하는 식에서는 복원 기여를 더하고 KL을 빼며, 음의 손실을 최소화할 때에는 부호가 함께 바뀐다.

The expected log - likelihood measures how well samples from qϕ[zx] are able to explain the data x

Penalty

The approximation qϕ[zx] to the posterior does not deviate too far from your beliefs p[z]

Maximize the variational lower-bound on the average log-likelihood

argmaxθ,ϕEp~[x][Eqϕ[zx][log[pϕ[xz]]]DKL[qϕ[zx]p[z]]]

Given

A set of N unlabeled examples
D={x1,x2,,xN}xnRd

Goal

Construct a model s . t . the distribution of generated samples is close to the distribution over the training set

Model

VAE:pθ[xz](likelihoodbased)
GAN:Gθ[z](likelihoodfree)

Variational lower-boud

근사분포 선택과 미분 계산을 나누어 다룬다

원문이 제시한 두 문제는 q를 어떤 형태로 둘지와 기대값의 미분을 어떻게 계산할지이다. 분포를 풍부하게 만드는 선택과 기울기를 효율적으로 추정하는 선택은 같은 문제가 아니다. 다음 SGVB 구간은 두 번째 문제의 계산 흐름과 연결된다.

F[θ,ϕ;x]=Eqϕ[log[pθ[xz]]]DKL[qϕ[zx]p[z]]

Two problems to be addressed

1.Choosingthecomputationallyfeasibleapproximateposteriordistributionqϕ[zx]
(toward the richer distribution)
Mean - field approximation where a factorized form of distribution is assumed
Structured mean - field approximations that incorporate some basic form of dependency within the approximate posterior
Approximate posterior as a mixture model
Normalizing flows
Hierarchical variational models
2. Efficient computation of the derivatives of the expected log - likelihood
Eqϕ[zx][log[pθ[xz]]]
Stochastic gradient variational Bayes

Strochastic Gradient Variational Bayes

기대값을 여러 표본의 평균으로 근사한다

분포 전체를 적분하는 대신 z 표본을 얻고 각 표본의 로그우도를 평균한다. 1/L은 L개 표본의 합을 평균으로 바꾸는 계수이다. 제시된 단일 표본 설명은 특정 계산 전략의 설명이며, 어떤 자료에서도 한 번의 추출로 정확한 기대값을 얻는다는 뜻은 아니다.

SGVB : Monte Carlo estimates + gradient descent
Variational lower - bound
F[θ,ϕ;x]=Eq[log[pθ[xz]]]DKL[qϕ[zx]p[z]]
SGVB - analytically computed
where Monte Carlo estimates are performed with the reparameterization trick (for variance reduction)
Eq[log[pθ[xz]]]1Ll=1Llog[pθ[xzl]]
where z^(l) = m + λϵl and ϵl ~ N[0,1]
A single sample is often sufficient to form this Monte Carlo estimates in practice
qϕ[zx]=N[m[x],λ[x]]
zN[m[x],λ[x]]
ϵN[0,1]
z=m[x]+λ[x]ϵ

Noisy Gradients

분포의 변화율을 이용하는 기울기를 읽는다

score-function 전개는 확률분포의 매개변수 변화가 기대값에 미치는 영향을 로그미분으로 표현하려는 흐름이다. 원문 중간에는 q와 log q의 미분 표기가 일치하지 않는 줄이 있으므로, 이를 모두 검증된 등식으로 이어 설명하지 않는다. 마지막 기대값 식의 역할과 표본 평균의 의미를 중심으로 읽는다.

The log derivative trick yields
ϕEq[log[pθ[xz]]]=ϕqθ[zx]log[pθ[xz]]dz
=log[pθ[xz]]ϕqϕ[zx]qϕ[zx]qϕ[zx]dz
=qϕ[zx]log[pθ[xz]]ϕqϕ[zx]dz
=Eq[log[pθ[xz]]ϕlog[qϕ[zx]]]
Monte Carlo estimates are calculated as
ϕEq[log[pθ[xz]]]1Ll=1Llog[pθ[xzl]ϕlog[qϕ[zlx]]]
where z^(l) ~ qϕ[zx]
This is referred to as score function gradients, which often exhibit very high variance (the quality of the estimate may depend on φ which may be far from the optimum)

Reparameterization Trick

잡음을 고정된 분포에서 뽑고 변환을 학습한다

재매개화의 핵심은 z=fφ(ε,x)로 쓰고 ε의 분포를 학습 매개변수와 분리하는 것이다. 정규분포 예에서는 μφ(x)+σφ(x)⊙ε 형태가 된다. 원문에 함께 적힌 score-function 형태와 재매개화 미분을 자동으로 같은 계산식이라 보지 않고, 미분이 통과하는 경로를 구별한다.

Reparameterize the random variable z ~ qϕ[zx] using a differentiable transformation fϕ[ϵ,x] of an auxiliary noise variable ε
z=fϕ[ϵ,x]
ϵpϵ[ϵ]
Then, Monte Carlo gradient estimates are
ϕEq[log[pθ[xz]]]=Eq[log[pθ[xz]]ϕlog[qϕ[zx]]]
=Eq[log[pθ[xfϕ[ϵ,x]]]ϕlog[qϕ[fϕ[ϵ,x]x]]]
1Ll=1Llog[pθ[xzl]]ϕlog[qϕ[zlx]]
where z^(l) = fϕ[ϵl,x] and ε ~ pϵ[ϵ]
Note that the expectation is over pϵ that does not depend on variational parameters φ
In the case of Gaussian random variables
zl=μϕ[x]+σϕ[x]ϵl
ϵlN[0,I]

Score function gradients

Can be applied to both discrete and continuous random variables
Often have high variance

Reparameterization gradients

Can be applied to only continuous random variables
Often have lower variance than score function gradients

VAE: Revisited

하한 최대화와 손실 최소화를 같은 목표로 읽는다

ELBO를 최대화하는 식에 음수를 붙이면 복원 손실과 KL 손실의 합을 최소화하는 식이 된다. 목표의 방향이 바뀌었으므로 두 항의 부호도 함께 읽어야 한다. 같은 모델을 두 최적화 형식으로 적은 것이다.

Training a VAE involves maximizing the ELBO (Evidence Lower Bound)
argmaxθ,ϕF[θ,ϕ;x]=Eqϕ[zx][log[pθ[xz]]]DKL[qϕ[zx]p[z]]
This is equivalent to minimizing the loss J = JREC + JKL
argminθ,ϕ=Eqϕ[zx][log[pθ[xz]]]+DKL[qϕ[zx]p[z]]
JREC+JKL
Assume that both qϕ[zx] and pθ[xz] are Gaussian
qϕ[zx]=N[zμϕ[x],diag[σϕ2[x]]]
pθ[xz]=N[xμθ[z],diag[σθ2[z]]]

Practice of VAEs

정규분포 가정 아래의 구체적인 손실을 확인한다

디코더 공분산을 고정하면 복원 항이 제곱거리와 연결되는 구조를 볼 수 있다. KL의 닫힌식에서는 잠재분포의 차원, 평균, 분산을 구별한다. 원문 KL 식의 상수 부호와 차원 표기는 별도 확인이 필요하므로, 그대로 모든 정규분포에 적용 가능한 공식이라고 설명하지 않는다.

In practice, the covariance of the decoder is set to the identify matrix for all z, i . e .,
diag[σθ2[z]]=I
수식
z = Eϕ[x] = μϕ[x] + σϕ[x] ⊙ε for ε ~ N[0,I] and JREC = -Log[N[xμθ[Eϕ[x]],1]]
JREC=|xμθ[Eϕ[x]]|22
Assuming the prior p[z] = N[z0,I] yields
DKL[qϕ[zx]p[z]]=12{|μϕ[x]|22+d+i=1d(σϕ2[x]ilog[σϕ2[x]i])}
where x∈Rd

Shortcomings of VAEs

복원과 잠재분포 제약의 균형을 읽는다

KL에 너무 큰 비중을 두면 복원과 다른 방향의 제약이 강해질 수 있다. 원문은 이 균형을 조절하는 학습 전략을 소개한다. 이어지는 noise injection 관점은 z가 평균에 조절된 잡음을 더한 값이라는 앞 식을 다시 해석한 것이다.

Has to carefully balance the trade - off between JREC and JKL during optimization

Over-regularization

A too large weight on the JKL term
Smoothing the latent space too much affect sampling quality in a negative way

Heuristics

Gradual annealing the importance of JKL during training

Practical Implementation of VAEs:Summary

TheprobabilisticencoderEϕ[x]=zN[zμϕ[x],diag[σ2[x]]]
That is, the output of encoder is given by
Eϕ[x]=μϕ[x]+σ[x]ϵ
which can be viewed as the mean μϕ[x] augmented with the Gaussian noise scaled by σϕ[x]

Noise Injection

In this light, a VAE can be seen as a deterministic autoencoder where Gaussian noise is added to the decoder ' s input

Regularization

수식

Regulaized Autoencoder (RAE)

Deterministic Reqularized Autoencoders

No noise injection

명시적인 정규화로 잠재표현과 디코더를 제한한다

RAE의 손실은 복원, 잠재벡터 크기, 디코더 정규화의 세 부분으로 나뉜다. 각 계수는 서로 다른 제약의 비중을 조절한다. 잠재벡터의 노름을 제한하는 것과 디코더 가중치 또는 미분을 제한하는 것은 서로 다른 대상이다.

substitutes noise injection with an explicit reqularization for the decoder

RAE

RAE = deterministic autoencoder + explicit regularization for the decoder

The loss for RAE is given by

JRAE=JREC+βJzRAE+λJRAG
where

JREG

Explicit regularizer for the decoder

JzRAE=12|z22

Constraining the size of the latent space to avoid unbounded optimization

정규화가 적용되는 대상을 구별한다

가중치 제곱합은 매개변수 크기를, 기울기 패널티는 입력 변화에 대한 출력의 민감도를, 스펙트럼 정규화는 행렬의 확대 정도와 관련된 값을 다룬다. 어떤 항도 이름만으로 모든 조건의 성질을 보장한다고 읽지 않는다. 원문에서 각 항이 어디에 적용되는지를 먼저 확인한다.

Examples of JREG

Tikhonov regularization

JREG = | θ | _2^2 (weight decay on the decoder parameters θ)

Gradient penalty

JREG=|Dθ[Eϕ[x]]|22(enforcingLipschitzcontinuity)

Spectal normalization

Normalizes each weight matrix θl in the decoder by an estimate of its largest singular value
θl=θls[θl]
where s[θl] is the current estimate obtained through the power method

Ex-Post Density Estimation

No KL divergence term in RAE

생성에 사용할 잠재분포를 나중에 맞출 수 있다

RAE에 KL 항이 없으면 잠재점들이 미리 정한 단순 분포를 따른다는 보장이 없다. 원문은 인코더가 만든 잠재점들에 별도의 밀도모델을 맞춘 뒤 그 분포에서 새 z를 뽑는 절차를 제시한다. 복원용 z와 생성용 z를 얻는 경로를 구별한다.

Cannot ensure that the latent space Z is distributed according to a simple distribution
Lose the simple mechanism provided by p[z] to sample from Z
xnewpθ[xznew]
znewp[z]

Ex-post density estimation

Fitadensityestimatorqδ[z]to{z=Eϕ[x]xX}
Place a dirac distribution on each latent point ⇒ high quality reconstruction but poor generalization
Mixture of Gaussians
For random sample generation, z ~ qδ[z] is fed into the decoder in RAE
This technique can be used even for VAEs

ES-CVAE

Echo-State Conditional Variational Autoencoder

고정된 순환 상태와 학습할 출력 계수를 나눈다

Echo State 구간은 A와 B를 고정하고, 입력과 이전 reservoir 상태로 새 r을 계산하는 구조이다. 학습할 출력 연결 C는 x와 r을 모아 y를 만든다. 모든 가중치를 같은 방식으로 학습하는 일반 신경망과 구별되는 지점이다.

MNIST

Echo State Networks

An approach to recurrent neural network training
Consists of a large, fixed, recurrent "reservoir" network
ri=αri1+(1α)f[Ari1+B[1;Λxxi]]
where A and B are NOT trained but only properly initialized
The network output y^(i) is computed by training suitable output connection weight C
yi=C[1;xi;ri]

Our Model: ES-CVAE

이전 상태를 조건으로 다음 데이터의 확률을 만든다

순서 전체의 확률을 이전 reservoir 상태에 조건을 둔 확률의 곱으로 표현한다. 각 단계에서는 잠재변수 z를 적분해 x의 조건부 밀도를 얻는다. 음의 로그밀도로 적은 anomaly score는 모델이 현재 샘플을 얼마나 예상하기 어려운지에 관한 지표로 읽고, 실제 판정의 정답이라고 단정하지 않는다.

원본 도해
The joint distribution over a sequence of N
instances, p[x1,x2,,xN]=p[x1]n=2Np[xnx1:n1], is modeled as
p[x1,x2,,xN]=p[x1]n=2Np[xnrn1]
where
p[xnrn1]=p[xnzn,rn1]p[znrn1]dzn
and reservoir states rn1 are computed by
rn1=αrn2+(1α)f[Arn2+B[1;ΛxXn1]]
Anomalyscore,a[xn]=log[p[xnrn1]]

조건부 생성에서도 복원과 KL로 나눈다

이번 하한은 이전 상태 r을 조건으로 유지하면서 현재 x의 확률을 다룬다. 마지막에는 기대 로그우도와 조건부 잠재분포의 KL 차이로 나뉜다. 원문 중간의 q 조건부 표기와 마지막 줄의 정의가 같은 대상인지 확인해야 하므로, 표시되지 않은 가정을 추가하지 않는다.

Variational Lower-Bound F on Log[p[xn|rn1]]

log[p[xnrn1]]=log[p[xn,znrn1]dzn]
q[xnzn,rn1]log[p[xn,znrn1]q[xnzn,rn1]]dzn
=q[xnzn,rn1]log[p[xnzn,rn1]p[znrn1]q[xnzn,rn1]]dzn
=Eqn[log[p[xnzn,rn1]]]DKL[q[znxn,rn1]p[znrn1]]
where Eqn[] denotes the expectation w . r . t . q[znxn,rn1]

Neural Statistician

샘플 하나의 잠재변수와 집합 전체의 잠재변수를 구별한다

Neural Statistician 구간의 c는 집합 전체를 설명하는 변수이고 z는 개별 샘플에 연결된 변수이다. 집합 안의 각 x에 대한 항을 곱한 뒤 z와 c를 적분하면 집합의 밀도 표현이 된다. 변수별로 어떤 수준의 정보를 공유하는지 확인한다.

VAEznxn

Amortized inference

Inference using a deep net
qϕ[zx]

Variational inference = per-sample inference

Neural Statistician: A Bayesian Hierarchincal Model

원본 도해
The likelihood of a particular data set D
p[D]=p[c](xDpθ[xz]pθ[zc]dz)dc
1. Same as before
2. permutation invariant model

Neural Statistician = VAE for sets

집합을 요약하는 추정과 개별 샘플의 추정을 연결한다

qφ(c|집합)는 입력 순서에 영향을 받지 않는 집합 수준의 추정이다. qφ(z|c,x)는 집합 정보와 해당 샘플을 함께 사용한다. 마지막 소량 샘플 분류 항목은 이 표현의 응용 주제이며, 원문에 없는 성능 수치나 새 실험 결과를 포함하지 않는다.

원본 도해
수식
Multiple stochastic layers
Static network (permutation - invariant model) + Standard inference network (as in VAE)
The log - likelihood of a particular dataset D is given by
log[p[D]]=log[p[c](xDpθ[xz]pθ[zc]dz)dc]
수식
where
qϕ[zc,x] : standard inference network as in VAE
qϕ[cD]:staticnetwork(permutationinvariantmodel)

5-way 1-shot

Few - shot classification

정리하면

좋은 복원과 적절한 생성 분포는 같은 목표가 아니다. 각 손실 항이 무엇을 맞추려는지 구별해야 잠재공간과 생성 결과의 의미를 이해할 수 있다.

NOTE 30 / 데이터와 AI

생성적 적대 신경망

Generative Adversarial Networks

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

GAN은 생성기와 판별기가 서로 다른 목표를 가지고 함께 학습하는 구조이다. 생성기는 데이터를 만들고, 판별기는 실제 데이터와 생성 데이터를 구별한다. 이 글은 두 목표의 관계와 각 확장 모델이 추가하는 조건을 차례로 다룬다.

기호를 먼저 읽기

G(z;θ)
잡음에서 데이터를 만드는 생성기
D(x;φ)
입력이 실제 데이터일 가능성을 판단하는 함수
p_d, p_g
실제 데이터와 생성 데이터의 분포
z, c, y
잡음·구조화된 잠재코드·외부 조건
E[·]
분포에 따른 평균
min_G max_D
서로 다른 방향의 두 최적화 목표

이 글의 흐름

각 모델의 입력과 출력을 구분한 뒤 판별기와 생성기의 목적함수를 읽는다. 이어서 학습 불안정성, 특징 정합, 정보 제약, 조건부 생성, 순환 일관성을 비교한다.

주제와 표기

GAN (Generative Adversarial Network)

Adversarial training

만드는 역할과 구별하는 역할을 분리한다

G는 낮은 차원의 잡음 z를 데이터 공간으로 옮기고, D는 입력이 실제 데이터인지 판단하는 점수를 만든다. 원문에 손실함수를 우회한다는 표현이 있어도, 뒤에는 명시적인 목적함수가 제시된다. 따라서 아무 학습 기준도 없다는 뜻으로 읽지 않는다.

A set of machines learn togeter by pursuing competing goals
A fascinating new training method
Bypasses the need of loss functions in learning
A new way of regularizing learning machines

Generative Adversarial Network

Generator, G[z;θ]:RKRD

Caputres the data distribution
Counterfeiters : Tries to fake discriminator

Discirminator, D[x;φ]:RD→{0,1}

Scoring function : D[x;ϕ] = P[y=1x] (y = 1 : trining data)
Learns features with rich semantics
Police : Tries to detect counterfeit images
원본 도해
Generator (Decoder)
random noise
z ~ Gaussian or uniform
znGϕ[z]x^nDϕ[x]

Training GAN

판별기는 두 종류의 입력을 모두 구별해야 한다

실제 데이터에서는 D(x)가 커지도록, 생성 데이터에서는 1−D(G(z))가 커지도록 로그 항을 더한다. 생성기의 출력에서 평균을 구하는 표현과 잡음 z에서 생성 경로를 따라 평균을 구하는 표현을 나란히 읽는다.

Denote by pd[x] the true data distribution and by pg[x] our model distribution (generator ' s distribution over x)

Training D

Train the discriminator D[x;ϕ] to maximize the probability of assigning the correct label to training data as well as fake data generated by G
maxD[Expd[x][log[D[x;ϕ]]]+Expg[x][log[1D[x;ϕ]]]]
=maxD[Expd[x][log[D[x;ϕ]]]+Ezp[z][log[1D[G[z;θ]]]]]

Training G

생성기와 판별기는 목표의 방향이 다르다

생성기는 판별기가 생성 데이터를 가짜로 분류하기 어렵게 만드는 쪽으로 움직인다. min_G max_D는 한 식을 두 매개변수 집합이 반대 방향으로 다룬다는 뜻이다. 원문은 두 모델을 번갈아 갱신하는 절차와 다른 생성기 목표식도 구분해 제시한다.

Train the generator G to minimize the probability of the negative (generated - data) class, Log[1D[G[z;θ]]]
minG[Ezp[z][log[1D[G[z;θ]]]]]

Two-player minimax game (for Nash equilibrium)

minθmaxϕJ[θ,ϕ]
where
J[θ,ϕ]=Expd[x][log[D[x;ϕ]]]+Ezp[z][log[1D[G[z;θ]]]]
Bath G and D are deep neural networks
Does not require any sophisticated inference methods (varaitional or sampling)
Alternate between k steps of optimizing D (cross - entropy loss minimization) and one step of optimizing G
maxDExq[x][log[D[x;ϕ]]]+Ezp[z][log[1D[G[z;θ]]]]
minGEzp[z][log[1D[G[z;θ]]]]
In practice, train G :
maxGEzp[z][log[D[G[z;θ]]]]
(stronger gradients early in learning)

Unrolled GANs

학습 안정성과 출력 크기는 별도의 문제이다

Unrolled GAN은 학습 경로를, DCGAN과 Progressive Growing은 생성 구조와 크기에 관련된 사례이다. 특정 모델 이름만으로 다양한 샘플 생성이나 안정 수렴이 무조건 보장되는 것은 아니다. 입력 잡음의 차원과 출력 영상의 크기를 따로 확인한다.

Stabilizes training of GANs and solves mode collapsing problem
Increases the diversity and coverage of the data distribution by the generator
Unrolled optimization for updating generator parameters

Generating Images by GANs

DCGAN

Generating an image of size 64×64 using 100 - dimensional random noise vector .
need to make sure how those sizes are obtained !
수식

Progressive Growing of GANS

Generating images of size 1024×1024 is a challenging task

Interesting Applications of GANs

GAN for single Image Super-Resolution

Goal : Estimate a high - resolution, superresolved image from a low - resolution input image .

eCommerce GAN

Improved Techniques for Training GANs

Convergent Issue in GAN

Training GANs

한쪽의 개선이 다른 쪽의 기준을 바꾼다

판별기가 바뀌면 생성기가 최적화할 대상도 달라진다. 따라서 일반적인 하나의 고정 손실을 줄이는 문제와 다른 상호작용이 있다. 원문은 진동, 다양성 감소, 약한 기울기를 서로 다른 학습 문제로 나누어 설명한다.

= Finding a Nash equilibrium of a non - convex game with continuous and high - dimensional parameters
Note that the modification of parameters in D increase
LD=Expd[x][log[D[x;ϕ]]]+Ezp[z][log[1D[G[z;θ]]]]
but G is modified to decrease
JG=Ezp[z][log[1D[G[z;θ]]]]
Thus, gradient methods may fail to converge for many games

Problems in GAN Training

Non-Convergence

Model parameters oscillate, destabilize and never converge

Mode collapsing

The generator may collapse, producing limited varieties of samples

Diminished gradient

The discriminator gets too successful that the generator gradient vanishes and learns nothing

Feature Matching to Train G

최종 판별 점수 대신 중간 특징을 맞춘다

Feature Matching은 실제 데이터와 생성 데이터의 특징 평균 차이를 줄인다. 이는 샘플의 각 픽셀을 일대일로 맞추는 식이 아니라 특징 공간의 통계를 맞추는 식이다. 어느 층의 φ를 사용하는지가 비교 대상의 의미를 정한다.

Rather than directly optimizing the out of the discriminator
minGEzp[z][log[1D[G[z;θ]]]]
train the generator to match the expected value of the features ϕ[]
on a intermediate layer of the discriminator
minG|Expdata[x][ϕ[x]]Ezp[z][ϕ[G[z;θ]]]|22

Denoising Auto-Encoder

특징 복원 기준과 적대적 기준을 함께 사용한다

DAE는 손상된 특징을 복원하는 역할이고, GAN 항은 생성 데이터가 판별기를 통과하도록 하는 역할이다. λ_dae와 λ_gan은 두 기준의 비중을 나타낸다. DAE를 학습하는 단계와 생성기를 갱신하며 DAE를 참조하는 단계를 구별한다.

원본 도해
minE[|xx^|22]

GAN Trained with Denoising Feature Matching

Training G

= Denoising autoencoder (in the space of discriminator features) + adversarial discriminator
The discriminator D = d◦ϕ[d[]:RD{0,1}isaclassifierandϕ[]:RDKisafeatureextracotr] is trained as in the standard GAN
maxDExPdata[x][log[D[x;ϕ]]]+Ezp[z][log[1D[G[z;θ]]]]
The generator G is trained
minGEzp[z][λdae|ϕ[G[z;θ]]DAE[ϕ[G[z;θ]]]|2]λgan[log[D[G[z;θ]]]]
where DAE[] is treated as constant w . r . t . gradient computations, which is trained by
minDAEExpdata[x][|ϕ[x]DAE[η[ϕ[x]]]|2]
η[] is the corruption function

An Information-Theoretic Extension of GAN

잠재코드의 일부에 의미를 남기려 한다

일반 잡음 z와 구조화된 코드 c를 나누면 생성 결과에서 c의 정보를 읽어낼 수 있도록 제약할 수 있다. InfoGAN의 상호정보량 항은 이 정보가 결과에 남도록 하는 목적이다. 잠재축마다 특정 실제 속성이 자동으로 확정된다고 보지는 않는다.

Toward Disentangled Representation

Disentangled Representation

Problems with GANs : No restrictions on how the generator G[z] uses z
z can be used in highly entangled way
Each dimension of z does not represent the salient attributes of a data instance

Disentangled = Interpretable and Factorized

Information Maximization

InfoGAN

Decompose the input noise vector into two parts (structured noise vector)
z : treated as source of incompressible noise
c : latent code which will target the salient features of the data distribution

정보량을 키우는 항의 부호를 확인한다

I(c;G(z,c))를 키우려면 최소화 목적에서는 음의 부호로 들어간다. 판별기의 진위 판단 목표와 생성기의 정보 보존 목표를 함께 읽는다. p(c₁,…,c_k)의 곱 표현은 코드 성분을 독립으로 두는 원문의 가정을 나타낸다.

p[c1,c2,,ck]=i=1kp[ci]

InfoGAN

Generator is of the form G[z,c] and involves information - regularized minimax game,
minGmaxDνGANλI[c;G[z,c]]
Mutural information
I[x;y]0

Training InfoGAN

Train the discriminator D[x]

maxDEzpd[x][log[D[x]]]+Ezpz[z],cpc[c][log[1D[G[z,c]]]]

Train the generator G[z,c]

minGEzpz[z][log[1D[G[z,c]]]]λI[c;G[z,c]]
Mutual information : I[c;G[z,c]]

Variational Infomax

직접 계산하기 어려운 정보량에 하한을 둔다

I=H(c)−H(c|생성결과)는 결과를 보았을 때 코드의 불확실성이 얼마나 줄어드는지 나타낸다. q(c|x)를 이용한 하한은 이를 학습 가능한 추정 문제로 바꾸려는 흐름이다. 원문 KL 중간식의 두 분포 표기는 따로 확인해야 하므로, 같은 분포끼리의 KL이 일반적인 차이 항인 것처럼 설명하지 않는다.

The mutual information I[c;G[z,c]] is hard to maximize directly as it requires access to the posterior p[cx]
Consider a variational lower - bound on the mutual information term
I[c;G[z,c]]=H[c]H[cG[z,c]]
=ExG[z,c][Ecp[cx][log[p[cx]]]]+H[c]
=ExG[z,c][KL[p[cx]p[cx]]0]+ExG[z,c][Ecp[cx][log[q[cx]]]]+H[c]
ExG[z,c][Ecp[cx][log[q[cx]]]]+H[c]
=ECp[c],xG[z,c][log[q[cx]]]+H[c]
=Linfomax

Conditional GAN

조건부 생성에서는 진위뿐 아니라 조건도 함께 본다

생성기에 잡음 z와 조건 y를 같이 주고, 판별기에도 x와 y를 함께 준다. 따라서 결과가 실제처럼 보이는지만 아니라 주어진 조건과 맞는지도 구조에 반영된다. 조건의 종류는 원문에 제시된 라벨 또는 다른 자료 형태의 범위에서 읽는다.

Generator is trained to generate a fake sample x with a condition y
(e . g ., class label or data from other modalities) provided as another input, in addition to noise z .

Generator

Input noise z and y are combined in joint hidden representation

Discriminator

x and y are presented as inputs to the discriminator

Optimization

minGmaxDExpdata[x],yp[y][log[D[x,y]]]+Ezp[z],yp[y][log[1D[G[z,y],y]]]

Image-to-image translation

Map Edges to Photo via cGAN

Unpaired Image to Image Translation

왕복 변환이 입력을 유지하도록 제한한다

G는 X에서 Y로, F는 Y에서 X로 변환한다. F(G(x))가 x에 가깝고 G(F(y))가 y에 가까워야 한다는 것이 순환 일관성이다. 단순히 다른 영역처럼 보이는 결과를 만드는 목표에 입력 정보를 보존하려는 제약을 더한다.

Given any two unordered image collections, it learns to automatically translate an image from one to other and vice versa

Cycle-Consistency

Translation should be cycle consistent
G:XY
F:YX
F[G[x]]xandG[F[y]]y
원본 도해
원본 도해

Adversarial Loss + Cycle Consistency Loss

Adversarial loss for G:XY and F:YX

적대적 손실과 왕복 오차를 나누어 읽는다

두 적대적 손실은 각 방향의 결과가 해당 데이터 영역처럼 보이는지를 다룬다. 순환 손실은 왕복한 결과와 원래 입력 사이의 L₁ 차이를 모은다. 목적이 서로 다르므로 한 항의 개선이 다른 항의 개선과 같은 의미라고 보지 않는다.

Lgan[G,DY,X,Y]=Eypdata[y][log[DY[y]]]+Expdata[x][log[1DY[G[x]]]]
Lgan[F,DX,Y,X]=Expdata[x][log[DX[x]]]+Eypdata[y][log[1DX[F[y]]]]

Cycle consistency loss

Lcyc[G,F]=Expdata[x][|F[G[x]]x|1]+Eypdata[y][|G[F[y]]y|1]

Summary

AE VAE GAN
likelihood-based likelihood-free
Deterministic Encoder & Decoder Probabilistic Encoder & Decoder Deterministic Decoder
GAN+Encoder=ALI (Adevarsarially learned inference)Bi-GAN
Probabilistic  Decoder Generator network
Blurry images Sharp-looking image
x Mode-collapsing problem

GANs with Encoder Networks

Adversarially Learned Inference

입력과 잠재변수의 쌍을 비교한다

ALI에서는 실제 x와 인코더가 만든 z의 쌍, 잡음 z와 생성기가 만든 x의 쌍을 비교한다. q(x,z)와 p(x,z)는 각각 이러한 두 경로의 결합분포이다. 데이터를 생성하는 방향과 잠재표현을 추정하는 방향을 함께 맞추려는 구조이다.

원본 도해

Encoder joint distribution

q[x,z]=q[x]q[zx]

Decoder joint distribution

p[x,z]=p[z]p[xz]

Match these two joint distributions

The miniax game

minGmaxDEq[x][log[D[x,E[x]]]]+Ep[z][log[1D[G[z;θ],z]]]

Semi-Supervised Learning with GANs

Small amount of labeled data

일부 정답과 정답 없는 데이터를 함께 다룬다

K개의 실제 범주에 생성 데이터라는 추가 범주를 두는 방식이다. 지도 손실은 알려진 라벨을 맞추고, 비지도 손실은 실제·생성 데이터의 구별에 관련된다. 마지막 손실 변형의 로그 부호는 앞의 최소화 정의와 일치하는지 확인해야 하며, 표기 차이를 임의로 하나로 합치지 않는다.

small labeled data + large unlabeled data = semi - supervised learning
multi - modal learning
meta - learning

Semi-Supervised Learning with GAN

Classifier for K classes

pmodel[y=kx]=exp[k]j=1Kexp[j]where k are logits

GAN

Label generated samples with y = K + 1, i . e ., pmodel[y=K+1x] yields the probability that x is fake

Loss

L=Lsupervised+Lunsupervised
Lsupervised=E(x,y)pdata(x,y)[log[pmodel[yx,yK]]]
Lunsupervised=Expdata[x][log[1pmodel[y=K+1x]]]ExG[log[pmodel[y=K+1x]]]
This ℒ_unsupervised is the case where in the standard GAN game value, we use D[x] = 1 - pmodel[y=K+1x], yielding
Lunsupervised=Expdata[x][log[D[x]]]Ezp[z][log[1D[G[z]]]]

정리하면

GAN의 여러 변형은 단순히 이미지를 그리는 방식의 차이가 아니라 생성기가 무엇을 만족해야 하는지를 바꾸는 방법이다. 각 손실 항의 대상과 최적화 방향을 따로 읽어야 한다.

NOTE 31 / 데이터와 AI

하이퍼파라미터 최적화

Hyperparameter Optimization

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

학습률이나 층수처럼 학습 전에 정하는 값도 결과에 영향을 준다. 그러나 각 설정을 실제로 평가하는 데 비용이 들면 모든 조합을 시도하기 어렵다. 이 글은 지금까지의 관측으로 성능을 추정하고 다음에 평가할 설정을 고르는 과정을 다룬다.

기호를 먼저 읽기

x
이번에 시험할 설정 또는 입력 위치
f(x), y
알고 싶은 성능과 잡음을 포함한 관측값
μ(x), σ(x)
예측한 성능의 중심과 불확실성
a(x)
다음 평가 위치를 고르는 획득함수
rₜ, R_T
한 번의 선택 손해와 그 누적값
O, T
Neural Process 구간의 관측 집합과 예측할 입력 집합

이 글의 흐름

평가 목표와 탐색 공간을 정하고, 대리모델로 평균과 불확실성을 추정한다. 획득함수로 다음 설정을 고르는 반복을 읽은 뒤, 함수의 분포를 학습하는 Neural Process와 연결한다.

주제와 표기

Hyperparameter Optimization

Bayesian optimization

Optimization of Black-Box Functions

평가할 수 있지만 내부 식은 모르는 함수를 다룬다

f(x)의 수식을 직접 사용할 수 없더라도 x를 넣고 결과 y를 관측할 수 있다. 원문은 잡음 ε가 더해지는 평가를 두고, 제한된 평가 횟수 안에서 좋은 설정을 찾는 문제를 정의한다. 최댓값을 찾는 설정과 검증 손실을 최소화하는 설정은 목표 방향을 구별한다.

Interested in finding the global maximizer
x=argmaxxXf[x]
where f[x] can only be evaluated via queries to a black - box that provides noisy outputs of the form yt ~ [f[xt], σnoise^2]
yt=f[xt]+ϵt
xtyt
a closed - form expression of f[x] is not available , or
a nonlinear and generally non - convex function f[x] whose derivatives are unavailable, or
but expensive noisy evaluations at query points are available

Regret

Instantaneous regret

선택으로 놓친 성능을 측정한다

rₜ는 최적 성능과 이번 선택 성능의 차이이다. 이를 더한 R_T는 탐색 과정 전체의 손해이고, 가장 좋은 관측과 비교하는 단순 regret은 최종 선택의 품질에 관련된다. 두 지표는 같은 정보를 요약하는 것이 아니다.

rt=f[x]f[xt]

Cumulative regret (in the bandit setting)

RT=t=1Trt=t=1T(f[x]f[xt])

Simple regret: (in the optimization setting)

ST=mintTrt=f[x]maxxtf[xt]

No regret algorithms in the bandit setting: limTRTT=0

Note that ST≤1/TRT

Hyperparameter Optimization

학습할 가중치와 탐색할 설정을 나눈다

가중치는 학습 과정에서 조정되지만, 학습률·층수·배치 크기 같은 설정은 별도의 탐색 대상으로 놓을 수 있다. 각 후보를 평가한 결과를 다시 다음 후보 선택에 사용한다. 원문에 등장하는 응용·서비스 사례는 탐색 문제의 예시이며 현재 서비스 현황이나 실제 임상 절차를 안내하는 내용은 아니다.

Hyperparameters xt

Validationlossf[xt]
Learning rate
#layers, #nodes, Neural Architecture
Kernel size in CNN
Batch size
Grid Search, Random Search

SigOput

Observed model performance↔Suggested Hyperparameters

Objective

Generalization loss

Search space

Hyperparameter settings

Observations

Empirical loss on test set

Automated machine learning

Objective

Generalization loss

Search space

Feature processing methods
algorithm selection
Hyperparameter settings

Observations

Empirical loss on test set

Clinical drug trials in healthcare

Objective

Drug effectiveness

Search space

ingredients
concentrations

Observations

improved or not

Active user modeling

Objective

Ask right questions

Search space (x)

Attributes of a user query

Observations (f[x])

Response from the human

Hyperparameters

Model parameters

설정 공간을 체계적으로 탐색한다

Grid Search는 미리 정한 격자를, Random Search는 무작위 후보를 평가하는 방식이다. AutoML은 특징 처리·모델 선택·설정 탐색을 함께 다루는 더 넓은 작업으로 소개된다. 자동화의 범위와 실제 평가 목표를 구별해 읽는다.

Parameters (that describe the model) learned during training
Weights in linear models, neural networks, kernel machines

Hyperparameters

Parameters that can be set arbitrarily by users before starting training
Trade - off parameters in reqularization, initial values, learning rates, kernel width, number of layers, number of nodes, and so on

Auto ML ⊃ Hyperparameter Optimization ⊃ Neural Architecture Search

Search over Configuration Space

How can we find the best configuration of hyperparameters ?

Grid serach

Random serach

Any more efficient method in terms of the number of eveluations?

⇒Bayesian optimization

AutoML

Automate ML tasks by deploying ML into ML itself

Feature processing

Model/algorithm selection

Hyperparameter tuning

Many companies are using AutoML

Google

기존 사례와 현재 실행 코드를 구별한다

이 구간의 회사명과 코드 조각은 원문 작성 당시 자동화 도구의 예이다. model.fit과 predict는 학습과 예측의 단계를 보여준다. 여기의 호출 형식을 현재 라이브러리에서 그대로 실행 가능한 최신 API로 보장하지 않는다.

Cloud AutoML

Facebook

AI that builds AI (Asimo : automatically produces improved versions of current versions)

Microsoft

in Azure Machine Learning

Amazon

AutoGluon

AutoGluon: Introduced by Amazon in January, 2020

An open - source library that empowers developers to easily build Automatic Machine Learning (AutoML) models

Democratizes the task of ML

Easily can train and deploy high - accuracy models
Only requires a few lines of code
Cab be customized toward specific use cases
Carries out automatic hyperparameter tuning, model selection, architecture search, and data processing
model = task . fit (data) →model . predict (new_data)
#AutoGluon Classifier
predictor = task . fit (train_data = train_data, label = label_column, output_directory = dir)
y_pred = predictor . predict (test_data_nolab)

Bayesian Optimization

Surrogate function

성능의 추정과 다음 실험의 선택을 분리한다

대리모델은 지금까지의 (x,y)로 아직 평가하지 않은 위치의 성능을 추정한다. 획득함수는 이 추정의 평균과 불확실성으로 다음 평가 위치를 고른다. 대리모델의 출력을 실제 측정 성능으로 혼동하지 않는다.

Use a probabilistic model for the latent function f[] to guide the search, given D1:t = {(x1, y1), …, (xt, yt)} (for instance, GP regression)
수식

Auquisition function

Determine where next to sample from the objective function, balancing exploitation and exploration
Choose the next x where the posterior mean μ[x] is high (exploitation) and the posterior variance σ2[x] is high (exploration)

Surrogate model

원본 도해
Bayesian optimization provides an efficient approach in terms of the number of function evaluations required .

GP regression

Regression

GP의 평균과 분산을 각각 읽는다

예측 평균 식은 관측값 y를 커널 관계에 따라 결합한다. 예측 분산 식은 원래의 불확실성에서 관측으로 설명된 부분을 빼는 구조이다. K는 관측 위치끼리의 관계이고 k(x)는 새 위치와 관측 위치의 관계이므로 두 대상을 구별한다.

Parametric regression
Nonparametric

Random function = Gaussian Process

Treat the latent vector as parameters
f=(f[x1],,f[xN])TRN
Infer the value of f[x] at any location x∈X, given past obserations D1:t, which is Gaussian with marginal mean and variance given by
μt[x]=kt[x]T(Kt+σnoise2I)1yt
σt2[x]=k(x,x)kt[x]T(Kt+σnoise2I)1kt[x]
GP[μ[x],[x,x]] = (mean function, covariance function)

Choice of Kernels

Squared exponential kernel (Gaussian kernel)

커널은 위치 사이의 유사성을 정한다

제곱지수 커널에서는 두 입력이 멀어질수록 지수항의 영향이 작아진다. 길이 척도 ℓ는 입력 거리의 기준을 조절한다. Matérn 구간은 추가적인 매끄러움 계수를 포함하며, 특수함수의 세부 형태는 원문의 정의 범위에서 확인한다.

k[xi,xj]=σf2exp[122|xixj|2],(forisotropicmodel)
or
k[xi,xj]=σf2exp[122(xixj)T1(xixj)]
where ∑ = diag (ℓ_1, …, ℓ_D), (for anisotropic model)

Matern Kernel

k[xi,xj]=21νΓ[ν](2ν|xixj|I)νHν(2ν|xixj|I)
where ν is a smoothness parameter, ℓ is a length - scale parameter I, Γ[] is the gamma function, and Hν is a modified Bessel function

Few Things about GP

Pros

예측 불확실성과 계산 비용을 함께 본다

GP의 장점과 한계를 읽은 뒤, Random Forest와 신경망 등 다른 대리모델의 역할을 비교한다. 선택 기준은 평균을 잘 맞추는지뿐 아니라 불확실성을 어떤 방식으로 다루는지이다. 원문의 장단점을 모든 데이터에 대한 성능 보장으로 바꾸어 읽지 않는다.

Good uncertainty estimates
Generality in the sense that GP with a choice of reasonable kernel can approximate a broad class of functions

Cons

Notscalable(standardGPregressionrequiresO(N3))
Limited by kernels

Besides GP regression, as surrogate models, you can also use

Random forests

Good : Fast & Parallelizable training
Bad : Empirical confidence bounds & Poor extrapolation

Neural networks

Learn f by a NN
Augment the last layer by Bayesian linear regression
Compute the uncertainty estimate by marginalizing out the output weights

Alternative Surrogate Model: Random Forests

Exact GP
SPGP
SSGP
Random Forest

More alternative surrogate models include

Mondrian forest regression

Stochastic processes for random partitioning

Neural processes

Combine the best of neural networks and Gaussian processes

Algorithm Outline: Bayesian Optimization

선택·평가·추정 갱신을 반복한다

현재 대리모델에서 획득함수가 큰 x를 고른다. 실제 함수를 평가해 y를 얻고, 이를 데이터 집합에 추가한 뒤 평균과 분산을 다시 계산한다. 이 반복의 결과가 유한한 평가 횟수에서 참된 전역 최적점임을 무조건 보장하는 것은 아니다.

Input : Initial data D1:1 = {(x1, y1)}, limit T∈N>1
output:Aglobalmaximizerx
for t = 1, 2, …, T - 2 do
Find xt+1 that maximizes the acquisition function over the current GP : xt+1 = argmaxx a[xD1:t]
Sample the objective function : yt+1 = f[xt+1] + ϵt+1
Augment the data : D1:t+1 = {D1:t, (xt+1, yt+1)}
UpdatetheGP,computingμt+1[x],σt+12[x]:μt+1[x]=kt+1[x]T(Kt+1+ρ2I)1yt+1
σt+12[x]=k[x,x]kt+1[x]T(Kt+1+ρ2I)1kt+1[x]
end for
returnx=argmaxx{x1,,xT}μT[x]

Handling Categorical or Integer-Valued Variables

Spearmint

Integer-valued variables

실수·정수·범주형 변수는 허용 값이 다르다

층수는 정수이고 모델 종류는 범주형 값이다. 실수 공간에서 고른 후보를 단순히 반올림하거나 숫자로 부호화하면 원래의 탐색 의미와 달라질 수 있다. 원문에 적힌 방법별로 후보의 표현과 평가 가능한 값을 구별한다.

Rounding after optimizing the acquisition function

Categorical variables

One - hot encoding

A naive approach

1. Optimize the acquisition function a[] assuming all variables take real values
수식

BayesOpt

Encodes the categorical variable as an integer variable (no one - hot encoding)
Uses an ARD kernel with a fixed spatial scale on that dimension that is so small that neighboring integer values have virtually no effect on each other

A navie approach

1. Optimize the acquisition function a[] assuming all varables take real values
수식

Acquisition Functions

획득함수는 실험 결과의 기대 효용이다

아직 y를 모르므로 가능한 결과마다의 효용을 예측분포로 평균한다. 이 평균이 a(x)이고, 이를 크게 하는 x를 다음 후보로 고른다. 따라서 실제 성능 f(x)와 다음 실험의 가치 a(x)는 다른 함수이다.

Given D1:t = {(x1, y1), …, (xt, yt)}, we determine the next evaluation location xt+1 via optimizing the acquisition function a[xD1:t]
xt+1=argmaxxXa[xD1:t]
The acquisition function a[xD1:t] should be high in areas where the maximum is most likely to lie given the current data . (exploitation)
수식

Utility Function

Consider a utility function, u : RD×R|→R, which maps
an arbitrary query point x,
its corresponding function value y = f[x]
to a measure of quality of the experiment
Given data points observed so far D1:t, the acquisition function is the expected utility of a query point x,
a[xD1:t]=u[x,y;ξ]p[yx,D1:t]dy
where
u[x,y;ξ] : utility function (ξ is a setting of hyperparameters)
p[yx,D1:t] : a belief p over the unknown outcome y revealed when evaluating at x

Utility and Acquisition Functions

Probability of Improvement (PI)

개선 확률과 개선 크기는 다르다

PI는 기준을 넘는지에 관심을 두고, EI는 넘는 경우 얼마나 개선되는지까지 본다. UCB 형태는 평균과 불확실성에 가중치를 두어 합친다. 세 방법을 모두 같은 점수라고 보기보다 각각 무엇을 높이려는지 확인한다.

u[x,y;ξ]=I(y>α)

Expected Improvement (EI)

u[x,y;ξ]=(yα)I(y>α)=ReLU[yα]

GP Upper Confidence Bound (GP-UCB)

u[x,y;ξ]=μ+βσ

Expected Improvement

기대개선은 나빠지는 결과를 0으로 둔다

max(y−y*,0)은 현재 최선보다 좋아지는 부분만 남기는 함수이다. 이를 가능한 y의 분포로 평균하면 기대개선이 된다. 원문 중간 적분에서 max 또는 개선 구간이 빠져 보이는 줄을 모든 실수 구간의 단순 평균 차이와 같다고 해석하지 않는다.

Expected Improvement w . r . t . the best observed objective value y^* so far is defined as
EI=Ep[y][max[yy,0]]
=max[yy,0]N[yy¯,σ2]dy
EI=max[yy,0]N[yy¯,σ2]dy
=(yy)N[yy¯,σ2]dy
=yN[yy¯,σ2]dyyN[yy¯,σ2]dy
=y¯Φ(y¯yσ)+σϕ(y¯yσ)yΦ(y¯yσ)
=(y¯y)Φ(y¯yσ)+σϕ(y¯yσ)
where Φ[] is the cumulative distribution function and ϕ[] is the probability density for the standard normal distribution

Exploration-Exploitation Trade-Off in EI

불확실성을 고려하되 정의를 일관되게 유지한다

평균이 좋은 곳은 활용할 가치가 있고, 분산이 큰 곳은 새 정보가 있을 수 있다. EI와 UCB는 이를 다른 방식으로 조합한다. 원문의 z 보조식에는 자기참조처럼 보이는 항이 있으므로, 그 식을 그대로 완성된 수치 계산식으로 확정하지 않는다.

EI[x] = {{{(μ[x] - μ[x] - ξ) Φ[z] + σ[x] ϕ[z], if σ[x] >0}, {0, if σ[x] = 0}}
z = {{{(μ[x] - μ[x] - ξ)/σ[x] + σ[x] ϕ[z], if σ[x] >0}, {0, if σ[x] = 0}}

GP-UCB

Trade - off between posterior mean (exploitation) and posterior variance (exploration) calculated by GP regression
GP - USB chooses
xt=argmaxxX(μt1[x]+νβtσt1[x])
수식
RT=t=1T(f[x]f[xt])

Compressed Sensing

NAS in practice

모델 탐색과 여러 분류기의 결합을 연결한다

NAS 항목은 구조 후보를 평가하는 문제이고, Soft Voting 식은 여러 분류기의 범주 확률을 가중합하는 문제이다. 합산한 확률 점수에서 가장 큰 범주를 선택한다는 argmax의 역할을 확인한다. 가중치 w와 범주 첨자 k는 서로 다른 대상을 나타낸다.

Random Search combined with cheap evaluation strategies is an effective method for neural architecture search

Application to Soft-Voting in Ensemble

y^t=argmaxkjwjpk,nj
where pk,nj denotes the base classifier j ' s prediction that the input xt is a member of class k

Neural Process

Generative query network (GQN)

Generalizations of GQN framework

하나의 함수와 함수들의 분포를 구별한다

Neural Process 구간은 관측에 따라 가능한 함수가 달라지는 모델을 다룬다. 신경망·GP·CNP·NP의 비교는 하나의 예측함수, 예측분포, 일관된 함수 표본을 서로 구별하기 위한 것이다. 여러 결과를 출력한다는 사실만으로 같은 종류의 불확실성을 표현하는 것은 아니다.

Conditional neural process (CNP)
Neural process (NP)
Attentive neural process (ANP)
Combine the benefits of both neural networks and GPs

Wanted

A model which represents a distribution over functions

Gaussian Processes

Nonparametric Bayesian method for learning a distribution over a wide class of nonlinear functions
Data - efficient
Inference requires O (N^3)

(non-Bayesian) deep neural networks (DNNs)

Learn a single function from a training set
Learn amount of data
More scalable than GPs for inference

Neural processes

NN - based probabilistic model to represent a distribution over functions, combining the best of two worlds

Generative Query Network

관측한 점들로 아직 보지 않은 위치를 예측한다

GQN은 다른 관점의 관측으로 새로운 관점의 결과를 예측하는 예이다. CNP에서는 O가 관측된 입력·출력 쌍이고 T가 예측할 입력 집합이다. 같은 x라도 관측에 포함되었는지 예측 대상인지에 따라 역할이 다르다.

GQNs learn to predict what 3D scenes look like viewed from a new position given some context observations of that scene from other viewpoints

Conditional Neural Processes

Motivation

CNPs combine benefits of NNs and GPs

the flexibility of stochastic processes such as GPs
structured as neural networks and trained via gradient descent from data directly

Supervised Learning: Data Description

Observed data

O={(xn,yn)n=1,,N}

Target inputs

T={xnn=N+1,,N+M}

Underlying ground truth function

f:XY

Task

Predict the output values f[x] for every x∈T given O

Supervised Learning

g[xn]
Parameterized approximating function (e . g ., neural networks)

CNP

Embedding

관측을 표현으로 바꾸고 하나로 모은다

각 (xₙ,yₙ)을 h로 임베딩하여 rₙ을 만든다. 이를 순서에 영향받지 않는 집계 a로 모아 r을 얻고, 예측할 x와 r을 함께 넣어 출력한다. 관측점 수가 달라도 고정된 표현으로 요약하려는 구조이다.

h[xn,yn]

Aggregation

r=a[r1,,rN]

Parameterized approximating function (e.g., neural networks)

g[xn,r]

GP vs CNP

Gaussian processes

Assumption made on P is that all finite sets of functional evaluations of f are jointly Gaussian distributed
Predictive distribution P[f[T]O,T] has a simple analytic form defined by prior assumption on the pairwise correlation structure specified via a kernel function
Pros : Data - efficient
Cons : Difficult to design appropriate priors and computationally expensive O ((N + M)^2)

Conditional neural processes

Directly parameterize conditional stochastic processes without imposing consistency w . r . t . some prior processes
Parametrize distributions over f[T], given a distributed representation of O of fixed dimensionality

CNP: Model

예측값 대신 예측분포의 계수를 출력한다

CNP의 Qθ는 관측과 목표 입력을 조건으로 결과의 분포를 정의한다. gθ가 내는 φₙ은 그 분포의 매개변수이며, 회귀 예에서는 평균과 분산이다. 이 평균·분산은 관측값 자체가 아니라 모델이 계산한 예측의 중심과 불확실성이다.

CNP is a conditional stochastic process Qθ that defines distributions over f[x] for inputs x∈T
Qθ[f[T]O,T]P[f[T]O,T]
Qθ is required to be permutation - invariant
Qθ[f[T]O,T]=Qθ[π[f[T]]O,π[T]]
CNPs are scalable, achieving a running time complexity of O (N + M) for makeing M predictions with N observations

CNP: Architecture

Architecture

Encoder·Aggregator·Decoder를 순서대로 계산한다

각 관측을 rₙ으로 바꾼 뒤 평균 집계로 r을 얻는다. 목표 입력과 r에서 φₙ을 구해 예측분포를 구성한다. 집계가 입력 순서에 무관하다는 것과 목표 출력의 위치가 입력과 함께 바뀐다는 것을 구별한다.

rn=hθ[xn,yn],(xn,yn)O
r=a[r1,,rN]
ϕn=gθ[xn,r],xnT

ϕn are parameters for Qθ

Qθ[f[x]O,xn]=Q[f[xn]ϕn]
For regression tasks, use ϕn to parameterize the mean and variance of Gaussian distribution : ϕn = (μn, σn2)
For classification, ϕn parameterizes the logits of the class probabilities pk over the k classes of a categorical distribution

The mean aggregation is used

a[r1,,rN]=1Nn=1Nrn

Neural Processes

Motivation

잠재변수를 통해 가능한 함수의 변화를 나타낸다

NP는 요약 r에서 잠재변수 z의 분포를 정하고, x와 z를 조건으로 출력분포를 만든다. 같은 관측에서도 z에 따라 연결된 예측이 달라질 수 있다는 관점이다. 마지막 학습 ELBO의 구체적인 식은 그림에만 있으므로, 해당 식의 세부 항까지 확인한 것으로 설명하지 않는다.

NP=LatentvariablemodelversionofCNP
NN GP CNP NP
Can fit more than one function at test time(distribution over functions) x O O O
Computationally cheap at test time O x O O
Can sample entire coherent functions x O x O

Neural Networks vs Gaussian Processes

NNs

A parametric model that is tuned via gradient descent

GPs

A probabilistic model that defines a distribution over possible functions (probabilistic, data - efficient, but computationally intensive)

Architecture

Encoder

rn=hθ[xn,yn],(fn,yn)O

Aggregator

r = a[r1,,rN] parameterizes the mean and variance of latent Gaussian random variable z, i . e ., z ~ N[μ[r],Iσ2[r]]

Conditional decoder

ϕn = gθ[xn,z], ∀xn∈T, parameterizes the output distribution (either a Gaussian or a categorical distribution)

Training

ELBO is given by
수식

정리하면

좋아 보이는 설정을 더 조사하는 것과 아직 잘 모르는 설정을 탐색하는 것은 다른 목적이다. 두 목적을 어떻게 조합할지 정하는 것이 이 문서의 중심이다.

NOTE 32 / 수학과 기하

3차원 공간과 벡터

Three-dimensional Space

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

점·직선·평면은 따로 외우는 대상이 아니라 위치와 방향, 그리고 그 사이의 제약으로 연결할 수 있다. 이 글은 동차좌표로 점과 평면을 표현하고, 내적·외적·행렬식을 이용해 교점과 방향을 계산하는 과정을 다룬다.

기호를 먼저 읽기

P
(x,y,z,1)=점에 동차좌표 성분을 붙인 표현
N
(a,b,c,d)=평면식의 네 계수; (a,b,c)가 3차원 법선
L
직선의 방향벡터
·, ×
문맥에 따라 구별할 내적과 외적
Det
행렬식
t
직선 위 위치를 변화시키는 매개변수

이 글의 흐름

점의 차이로 방향을 만들고, 법선과의 내적으로 평면 조건을 적는다. 여러 점·평면의 교차 관계를 행렬식으로 읽고, 벡터 연산과 면적·방향 판단으로 확장한다.

주제와 표기

3 Dimension Space

3 D Equation

Point

점 두 개에서 직선의 방향을 얻는다

P와 Q의 위치 차이는 두 점을 잇는 방향이다. 직선 대칭식의 세 비율은 같은 이동 매개변수를 나타낸다. 특정 방향 성분이 0이면 그 분모로 나눌 수 없으므로, 모든 직선을 이 분수 형태로 곧바로 계산하지 않는다.

P={xp,yp,zp,1}
Q={xq,yq,zq,1}

Line Equation

xxpxqxp==yypyqyp==zzpzqzp

Plane(Normal Vector)

법선에 수직이라는 조건으로 평면을 적는다

평면 위 기준점에서 다른 점까지의 방향이 법선과 수직이면 내적이 0이다. 이를 펼치면 ax+by+cz+d=0 형태가 된다. 네 계수 중 d는 평면의 위치에 관련된 상수이며, 3차원 법선의 네 번째 방향 성분으로 읽지 않는다.

N=={a,b,c,d}

Line Equation

xxpa==yypb==zzpc

Plane Equation

N={a,b,c,d}
XP0={xx0,yy0,zz0,11}
N(XP0)==0
{a,b,c,d}{xx0,yy0,zz0,0}==0
a(xx0)+b(yy0)+c(zz0)==0
ax+by+czax0by0cz0==0
ax+by+cz+d==0

3 Point → Plane (Normal Vector)

세 점이 같은 평면을 만족하게 한다

P₀·P₁·P₂를 각각 평면식에 넣어 0이 되는 조건을 만든다. 이어지는 동차좌표 행렬식은 세 점을 통과하는 평면의 계수를 한 표현으로 묶으려는 것이다. 세 점이 한 직선 위에 있으면 평면 하나를 유일하게 정할 수 없다는 조건을 함께 확인한다.

N={a,b,c,d}
P0={x0,y0,z0,1}
P1={x1,y1,z1,1}
P2={x2,y2,z2,1}
NP0=0
{a,b,c,d}{x0,y0,z0,1}==0
ax0+by0+cz0+d==0
NP1=0
{a,b,c,d}{x1,y1,z1,1}==0
ax1+by1+cz1+d==0
NP2=0
{a,b,c,d}{x2,y2,z2,1}==0
ax2+by2+cz2+d==0
N==P0P1P2
N==det[(e1e2e3e4x0y0z01x1y1z11x2y2z21)]
e1={1,0,0,0}
e2={0,1,0,0}
e3={0,0,1,0}
e4={0,0,0,1}

3 Plane (Normal Vector) → Point

세 평면의 공통점을 동차좌표로 표현한다

이번에는 점이 미지수이고 세 평면의 계수가 주어진다. 행렬식으로 얻은 네 성분을 점의 표현으로 읽으려면 마지막 동차 성분에 대한 정규화가 필요하다. 모든 평면 조합이 유한한 교점 하나를 갖는다고 가정하지 않는다.

P={x,y,z,1}
N0={a0,b0,c0,d0}
N1={a1,b1,c1,d1}
N2={a2,b2,c2,d2}
P==N0N1N2
P==det[(e1e2e3e4a0b0c0d0a1b1c1d1a2b2c2d2)]
e1={1,0,0,0}
e2={0,1,0,0}
e3={0,0,1,0}
e4={0,0,0,1}
수식

2 Plane (Normal Vector) → Line

두 법선에 수직인 방향을 찾는다

두 평면의 교선 방향은 두 법선에 모두 수직이어야 한다. 따라서 법선의 외적을 방향벡터로 사용한다. 원문 성분 전개의 두 번째 부호는 앞의 행렬식 전개와 대응을 확인해야 하므로, 줄마다 같은 방향이 보장된다고 그대로 설명하지 않는다.

N0={a0,b0,c0}
N1={a1,b1,c1}
L==N0×N1
==det[(e1e2e3a0b0c0a1b1c1)]
e1={1,0,0}
e2={0,1,0}
e3={0,0,1}
L==det[(b0c0b1c1)]e1det[(a0c0a1c1)]e2+det[(a0b0a1b1)]e3
=={b0c1c0b1,a0c1c0a1,a0b1b0a1}
=={a,b,c}

방향만으로는 직선의 위치가 정해지지 않는다

교선의 방향을 얻은 뒤 그 위의 점 하나를 찾으면 직선을 정할 수 있다. 원문은 z=0을 두는 절차를 예로 사용하지만, 해당 평면과 교선의 배치에서 이 선택이 가능한지 확인해야 한다. 평면을 정하는 두 직선도 같은 평면 위에 놓일 수 있는 조건을 확인한다.

z=0;xp,yp
xxpa==yypb==zc

2 Line→ Plane (Normal Vector)

N={a,b,c,d}
L1={l1,m1,n1},xx1l1==yy1m1==zz1n1==t1
{x1+l1t1,y1+m1t1,z1+n1t1,1}
L2={l2,m2,n2},xx2l2==yy2m2==zz2n2==t2
{x2+l2t2,y2+m2t2,z2+n2t2,1}
NL1==0
NL2==0
ax+by+cz+d==0

2 Line Angle

각도와 교점은 다른 계산이다

두 직선의 각도는 방향벡터 내적을 길이의 곱으로 나눈 코사인으로 읽는다. 세 평면의 교점은 연립방정식의 공통해를 찾는 문제이다. 동차좌표의 마지막 성분으로 나눌 때에는 그 값이 0이 아닌지 확인한다.

cos[θ]=L1L2Norm[L1]Norm[L2]

Equation Solution

Solve[{a0x+b0y+c0z+d0==0,a1x+b1y+c1z+d1==0,a2x+b2y+c2z+d2==0},{x,y,z}];
{a3,b3,c3,d3}={a0,b0,c0,d0}×{a1,b1,c1,d1}×{a2,b2,c2,d2};
{a3,b3,c3,d3}==det[(e1e2e3e4a0b0c0d0a1b1c1d1a2b2c2d2)]
{a3d3,b3d3,c3d3,1}

Homogeneous Coordinates Matrix

Reduction, Extension, Movement

회전과 이동을 행렬 표현으로 읽는다

동차좌표를 사용하면 점의 회전·이동·크기 변경을 같은 행렬 틀에서 표현할 수 있다. 이 구간의 구체적인 변환행렬은 이미지에 있으므로, 보이지 않는 원소나 이동항의 위치를 임의로 보충하지 않는다. 입력이 행벡터인지 열벡터인지도 실제 식과 함께 확인한다.

수식

Rotation

z Axis Rotation - Rz[θ]

수식

y Axis Rotation - Ry[θ]

수식

x Axis Rotation - Rx[θ]

수식

Transport [ESC]tr[ESC]

전치와 성분별 곱을 구별한다

전치는 가로 성분을 세로 성분으로 바꾸는 연산이다. 원문의 별표 곱은 같은 위치의 성분을 곱하는 형태로 제시되어 있으며, 일반적인 행렬곱과 다르다. MatrixForm 등은 표현 형식에 관련된 명령이고 행렬 원소를 바꾸는 새로운 수식으로 읽지 않는다.

(abc)T=(abc)

Matrix Property

수식
(A1A2A3A4A5A6A7A8A9)(B1B2B3B4B5B6B7B8B9)=(A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9)

Form

//MatrixForm
Norm[v]//TraditionalForm
{|v|}//StandardForm
//FullForm
α=(abc);
α[[1,1]]=a

Determinant (행렬식)

큰 행렬식을 작은 행렬식으로 나눈다

2×2에서는 주대각 곱에서 반대 대각 곱을 뺀다. 3×3에서는 첫 행의 각 원소에 해당 소행렬식을 곱하고 +, −, + 부호로 더한다. 세 항이 각각 어느 행과 열을 지운 결과인지 확인한다.

|a11a12a21a22|=det[(a11a12a21a22)]=a11a22a12a21
|a11a12a13a21a22a23a31a32a33|=det[(a11a12a13a21a22a23a31a32a33)]
=a11|a22a23a32a33|a12|a21a23a31a33|+a13|a21a22a31a32|
=a11(a22a33a23a32)a12(a21a33a23a31)+a13(a21a32a22a31)

Vector

연산 기호에 따라 결과의 종류가 달라진다

내적은 대응 성분을 곱해 더하므로 하나의 숫자가 된다. 성분별 곱은 세 곱을 그대로 나열한 벡터이고, 외적은 두 벡터에 수직인 방향을 만든다. 원문에서 꺾쇠와 곱 기호가 혼용된 부분은 앞뒤 결과가 스칼라인지 벡터인지 구별해 읽는다.

{a,b,c}{x,y,z}=Dot[{a,b,c},{x,y,z}]=ax+by+cz;
{a,b,c}{x,y,z}=Times[{a,b,c},{x,y,z}]={ax,by,cz};
{a,b,c}×{x,y,z}=Cross[{a,b,c},{x,y,z}]={cy+bz,cxaz,bx+ay};
{|{a,b,c}|}=Norm[{a,b,c}]={a}2+{b}2+{c}2
Power[{a,b,c},{x,y,z}]={ax,by,cz}

Vector Angle

벡터의 방향과 크기를 분리한다

각도식은 내적을 두 노름으로 나누어 크기의 영향을 없앤다. 이후에 나란히 놓인 성분별 곱과 내적의 합은 결과가 서로 다르다. 같은 입력 두 개를 사용했다는 이유만으로 두 연산을 같은 것으로 취급하지 않는다.

cos[θ]=uvNorm[u]Norm[v]

Vector <U,V> ([ESC]*[ESC])

<U,V>={u1,u2,u3}×{v1,v2,v3}={u1v1,u2v2,u3v3}

Vector Inner Product (Dot[{u1,u2,u3},{v1,v2,v3}], |U||V|Cos[θ] )

UV={u1,u2,u3}{v1,v2,v3}=u1v1+u2v2+u3v3

외적을 행렬식으로 계산한다

첫 행에 기저벡터, 다음 두 행에 입력벡터 성분을 놓고 행렬식을 전개한다. 두 번째 기저항 앞에 음의 부호가 붙는 것을 확인한다. U와 V의 순서를 바꾸면 결과 방향이 반대로 된다는 식도 함께 읽는다.

Vector External Product (Cross[{u1,u2,u3},{v1,v2,v3}], [ESC]cross[ESC])

U×V={u1,u2,u3}×{v1,v2,v3}=V×U
=|e1e2e3u1u2u3v1v2v3|=det[(e1e2e3u1u2u3v1v2v3)]
=e1(u2v3u3v2)e2(u1v3u3v1)+e3(u1v2u2v1)
={u2v3u3v2,u1v3+u3v1,u1v2u2v1}

Vector Property

삼중곱에서는 스칼라와 벡터를 특히 구별한다

벡터 삼중곱과 스칼라 삼중곱은 결과의 종류가 다르다. 원문은 내적·외적 기호가 혼용된 형태를 포함하므로, 세 곱을 나열한 벡터를 그 합인 스칼라와 같은 값으로 보지 않는다. 정의된 연산과 출력 차원에 따라 각 줄을 확인한다.

U×(V×W)=<U,W>V<U,V>W
<U,V×W>=|u1u2u3v1v2v3w1w2w3|={u1,u2,u3}×({v1,v2,v3}×{w1,w2,w3})
={u1(v2w3v3w2),u2(v1w3+v3w1),u3(v1w2v2w1)}

Area

행렬식의 크기와 부호가 서로 다른 정보를 준다

삼각형 면적 식은 점의 순서를 반영한 부호 있는 값으로 읽는다. 기하학적인 넓이가 필요하면 부호와 크기를 구별해야 한다. 뒤의 양·음 판단은 점의 순서와 좌표축 방향을 유지한 상태에서 좌·우 회전을 구별하는 데 사용한다.

Area=12det[(x1y11x2y21x3y31)]=x3(y1y2)+x1(y2y3)+x2(y1+y3)2

Line & Point (Up|Down)

det[(x1y11x2y21x3y31)]=x3(y1y2)+x1(y2y3)+x2(y1+y3)
det[(x1y11x2y21x3y31)]<0:RightTurn
det[(x1y11x2y21x3y31)]>0:LeftTurn

정리하면

기하 계산에서는 결과가 점인지 방향인지 하나의 스칼라인지 구별해야 한다. 교점의 유일성, 평행성, 영벡터와 분모 조건이 성립하는지도 함께 확인한다.

NOTE 33 / 수학과 기하

행렬식과 평면 방정식

Determinant

이 문서만 읽기 →

개념에서 수식으로

먼저 이해할 내용

세 점을 지나는 평면은 점들이 같은 평면 위에 있다는 조건으로 정할 수 있다. 이 글에서는 그 조건을 행렬식 0으로 적고, 이를 첫 행에 따라 전개하여 평면의 계수를 얻는 과정을 다룬다.

기호를 먼저 읽기

P₀, P₁, P₂
평면 위에 주어진 세 점
x, y, z
같은 평면 위에 있을 임의의 점
M₁ⱼ
첫 행과 j열을 지운 소행렬식
C₁ⱼ
부호를 포함한 여인수
n = (a, b, c)
평면에 수직인 법선벡터
d
평면의 위치를 정하는 상수항

이 글의 흐름

행렬식 조건을 첫 행에 대해 전개하고, x·y·z의 계수를 읽는다. 3×3 계산 규칙을 확인한 뒤, 외적으로 구한 법선과 같은 평면식으로 연결한다.

주제와 표기

Determinant (Det)

같은 평면 위에 있다는 조건을 행렬식으로 적는다

첫 행에는 임의의 점 (x,y,z,1), 나머지 행에는 이미 알고 있는 세 점을 둔다. 이 행렬식이 0이라는 조건을 전개하면 임의의 점이 만족해야 할 평면식이 된다. 세 점이 한 직선 위에 있지 않아 평면을 정할 수 있는 경우를 전제로 읽는다.

det(xyz1x0y0z01x1y1z11x2y2z21)=0

Cofactor expansion along the first row

소행렬식에 부호를 붙이면 여인수가 된다

M₁ⱼ는 해당 행과 열을 지우고 남은 부분의 행렬식이다. (−1)^(1+j)는 첫 행의 부호를 +, −, +, −로 번갈아 정한다. 이를 x·y·z·1에 각각 곱해 더하면 원래 4×4 행렬식을 전개한 식이 된다.

C1j=(1)1+jM1j
Mij⇒The (i, j) minor of a 3x3 matrix is the determinant of the submatrix formed by deleting the i - th row and the j - th column .
det(xyz1x0y0z01x1y1z11x2y2z21)=xC11+yC12+zC13+1C14

Equation of a Plane
a x + b y + c z + d = 0

x·y·z 앞의 계수를 읽으면 평면식이 된다

a, b, c, d는 각각 첫 행의 여인수에 대응한다. 따라서 b와 d 앞의 음의 부호는 임의로 붙인 것이 아니라 여인수의 위치 규칙에서 나온다. 각 3×3 행렬에 어떤 좌표 열이 남는지 하나씩 확인한다.

a=C11=+M11=det(y0z01y1z11y2z21)
b=C12=M12=det(x0z01x1z11x2z21)
c=C13=+M13=det(x0y01x1y11x2y21)
d=C14=M14=det(x0y0z0x1y1z1x2y2z2)

3x3 Determinant (Sarrus' Rule)

3×3 행렬식의 여섯 곱을 나누어 계산한다

Sarrus 식은 더할 세 곱과 뺄 세 곱으로 나뉜다. 각 항은 서로 다른 행과 열에서 하나씩 고른 성분의 곱이다. 이 방법은 여기의 3×3 식을 계산하는 규칙이며, 4×4에 같은 대각선 규칙을 그대로 적용하지 않는다.

det(pqrstuvwx)=ptx+quv+rswrtvqsxpuw

Connection between Cross Product/Scalar Triple Product and Determinant

외적으로 같은 법선 방향을 얻는다

P₁−P₀와 P₂−P₀는 평면 안에 놓인 두 방향이다. 이 둘의 외적은 두 방향에 모두 수직이므로 평면의 법선 n이 된다. d=−n·P₀를 두면 기준점 P₀를 평면식에 넣었을 때 0이 된다는 마지막 확인식으로 이어진다.

이해를 위한 예로 세 점을 (0,0,0), (1,0,0), (0,1,0)으로 두면 두 방향의 외적은 (0,0,1)이고 d는 0이다. 따라서 평면식은 z=0이 된다. 이는 원문의 외적 관계에 간단한 값을 넣어 계산한 설명용 예이다.

n=(a,b,c)
P0=(x0,y0,z0)
P1=(x1,y1,z1)
P2=(x2,y2,z2)
n=(P1P0)×(P2P0)
d=nP0
d=det(P0P1P2)=(P0((P1×P2)))
ax0+by0+cz0+d=0

정리하면

행렬식·여인수·외적은 이 문서에서 서로 다른 주제가 아니라 같은 평면을 표현하는 연결된 계산이다. 점의 순서와 부호를 일관되게 유지해야 한다.