본문 바로가기

전체 글227

변분법과 오일러-라그랑지 방정식 오일러-라그랑지 방정식(Euler-Lagrange equation)은 어떤 함수와 그 도함수(derivative)의 함수인 functional의 값을 최대화 또는 최소화하는 함수를 유도하기 위한 미분 방정식이다. 수식으로 살펴보자. 다음과 같은 functional \(F(y, y^\prime)\)가 있다고 하자. \[ F(y, y^\prime)= \int_{x_0}^{x_f} h(y(x), y^\prime (x)) \ dx \] 여기서 \(y(x)\)는 \(x\)의 함수이고, \(y^\prime (x)= \frac{dy}{dx}\)는 \(y(x)\)의 도함수이며, 적분 구간의 양쪽 경계 \(y(x_0)\)와 \(y(x_f)\)는 고정된 값으로 가정한다. Functional \(F(y, y\prime)\).. 2021. 1. 12.
기본 궤도 미분 방정식을 풀기 위한 조건 기본 궤도 미분 방정식을 다음과 같이 유도한 바 있다. \[ \frac{ ^id^2 \vec{r} }{ dt^2 } + \frac{ \mu }{ r^3 } \vec{r} = 0 \tag{1} \] 여기서 \(\mu =GM\)은 중력 파라미터, \(\vec{r}\)은 관성 좌표계 \(\{i\}\)의 원점에서 질점 \(m\)까지의 위치 벡터, \(r\)은 위치 벡터의 크기, 즉 거리다. 위 식을 유도하는데 다음 3가지 가정을 전제로 했다. 먼저 질량 \(m\)은 질량 M에 비해서 무시할 수 있을 정도로 작다. 둘째, 질점 \(M\)은 말 그대로 질점이거나 또는 질점으로 간주할 수 있는 완전한 원구체이며 만유인력은 원구체의 중심을 향한다. 셋째, 질점 \(M\)과 \(m\)사이에 작용하는 힘은 만유인력 밖에 .. 2021. 1. 12.
더 단순화된 이체문제 이체문제의 운동 방정식을 다음과 같이 유도한 바 있다. \[ \frac{ ^id^2 \vec{r} }{dt^2 } + \frac{\mu}{r^3} \vec{r} = 0 \tag{1} \] 여기서 \(\mu=G(M+m)\)이다. 이 식은 질점 \(M\)에 대한 질점 \(m\)의 상대적인 운동을 표현한 식이다. 두 질점의 질량 중심점은 벡터 \(\vec{r}_c\)가 가리키는 점으로 다음 식으로 주어진다. \[ \vec{r}_c = \frac{ M\vec{r}_M +m\vec{r}_m }{ M+m } \tag{2} \] 이제 이체문제를 더 단순화시키고자 한다. 식 (1)에서 한 질점의 질량이 다른 질점의 질량보다도 압도적으로 크다고 가정한다. \[ M≫m \tag{3} \] 그러면 \(M+m \approx .. 2021. 1. 12.
GradientTape로 간단한 CNN 학습하기 Sequential API와 Functional API 그리고 Model Subclassing API를 이용하여 CNN을 구현해 보았다. 이번에는 model.compile 로 모델을 컴파일하고 model.fit 로 학습하는 대신에 모델에 손실함수와 옵티마이저를 직접 엮어 넣고, tf.GradientTape 를 사용하여 CNN을 학습해 보도록 하겠다. 전과 똑같이 데이터셋은 Fashion_MNIST이고 CNN모델도 전과 똑같으며 Model Subclassing API로 구축한 것이다. model.compile 로 모델을 컴파일하는 부분은 다음과 같았다. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accu.. 2021. 1. 11.
Model Subclassing API로 간단한 CNN 구현해 보기 Sequential API와 Functional API에 이어서 이번에는 Model Subclassing API를 이용하여 CNN을 구현해 보자. Model Subclassing API는 자유도가 제일 높은 모델 구축 방법으로서 사용자 자신의 방법으로 신경망을 학습시킬 수도 있다. 딥러닝을 깊게 공부하려면 반드시 알아야 할 API다. MNIST 숫자 분류 대신에 Fashion_MNIST 데이터셋을 이용해 보기로 한다. MNIST는 손글씨였지만 Fashion_MNIST는 신발, 가방, 옷 등의 흑백 그림을 모아 놓은 데이터셋이다. 텐서플로2에서는 Fashion_MNIST 데이터셋도 쉽게 다운로드할 수 있다. fashion_mnist = tf.keras.datasets.fashion_mnist (x_trai.. 2021. 1. 11.
Functional API로 간단한 CNN 구현해 보기 Functional API는 여러 개의 입력과 출력이 있는 모델을 포함하여 보다 유연한 모델을 구축할 때 사용하며 ResNet과 같이 순차적이지 않은 모델도 구축할 수 있다. 또한 Functional API에서는 모델 내부의 특정 레이어(layrer)에 접근하여 웨이트(weight)과 바이어스, 그리고 레이어의 입출력 텐서 등을 쉽게 추출할 수 있다. 만들고자 하는 CNN 모델은 Sequential API로 만든 것과 똑같다. Functional API에서는 첫번째 레이어가 tf.keras.layers.Input 이어야 한다. 맨 마지막에 tf.keras.Model 을 호출하여 모델의 입력 레이어와 출력 레이어를 인수로 넣어주면 모델이 완성된다. input_shape = (28,28,1) img_inpu.. 2021. 1. 11.
변분법 (calculus of variation) 최적화는 크게 정적 최적화(static optimization)와 동적 최적화(dynamic optimization)로 분류할 수 있다. 정적 최적화는 파라미터 최적화(parameter optimization)라고도 하며, 동적 최적화는 최적제어(optimal control) 문제라고 한다. 파라미터 최적화는 정적(static) 파라미터를 변수로 하는 어떤 함수(function)에서 최소값 또는 최대값을 산출하는 파라미터를 구하는 문제다. 반면에 동적 최적화는 '함수를 변수로 하는 함수' (함수의 함수로서 functional이라고 한다)에서 최소값 또는 최대값을 산출하는 함수를 구하는 문제다. 파라미터 최적화에 미분법이 필요하듯이 동적 최적화에는 변분법(calculus of variation)이 필요하다.. 2021. 1. 11.
기본 궤도 미분 방정식 전 우주에 물체가 딱 2개 밖에 없다고 가정한다. 이 2개의 물체도 질점(부피와 모양이 없이 질량만 가진 물체)이라고 가정한다. 질량이 있으므로 두 질점 사이에는 만유인력이 작용한다. 이런 조건에서 이 두 질점의 운동 방정식을 세워보려고 한다. 이와 같이 '만유인력 하에서의 두 질점의 운동에 관한 문제'를 이체문제(two-body problem)라고 한다. 그림과 같이 질량 \(M\)과 질량 \(m\)인 두 질점이 거리 \(r\)만큼 떨어져 있고, 두 질점 간에는 오직 만유인력만 작용한다고 가정한다. 그림에는 관성좌표계 \(\{i\}\)도 표시했다. 뉴턴의 제2법칙을 적용하려면 관성좌표계가 필요하기 때문이다. 그러면 만유인력의 법칙에 의하여 질점 \(M\)에는 질점 \(m\)방향으로 힘이 작용하므로 질점.. 2021. 1. 11.
이체문제 (Two-Body Problem) 천문역학의 기초는 17세기에 정립되었다. 이 시기에 가장 큰 공헌을 한 사람은 티코 브라헤 (Tycho Brahe, 1546-1601), 요하네스 케플러 (Johanness Kepler, 1571-1630), 그리고 아이작 뉴턴 (Isaac Newton, 1642-1727)이다. 덴마크 출신의 관측 천문학자인 브라헤는 수십년간 행성의 운동을 관측하고 그 위치를 기록하였는데 당시 망원경이 사용되기 전에 육안으로 관측할 수 있는 가장 정확한 관측기록을 남긴 것으로 평가받고 있다. 브라헤의 정밀하고 방대한 관측 자료를 인계받은 독일의 천문학자 케플러는 그의 자료를 분석하여 행성운동에 관한 3가지 법칙을 만들었다. 1609년에 행성의 운동에 관한 제1법칙인 타원궤도의 법칙과 제2법칙인 면적속도 일정의 법칙을 발.. 2021. 1. 11.
자이로스코프 효과 과학관에 가면 자이로스코프 효과(gyroscopic effect)가 무엇인지 몸으로 느끼게 해주는 장치가 있다. 바로 손잡이가 달려있는 자전거 바퀴와 회전의자다. 처음에는 관람객에게 자전거 바퀴를 양손에 쥐게 한 후 회전의자에 앉힌다. 그리고 회전의자를 돌린다. 그러면 아무런 일도 일어나지 않는다. 이번에는 자전거 바퀴를 손으로 잡아당겨 빠르게 회전시킨다. 그리고 관람객이 앉아 있는 회전의자를 돌린다. 그러면 이번에는 마치 유령이 자전거 바퀴를 비트는 듯한 느낌이 온다. 손으로 꽉 잡지 않으면 자전거 바퀴가 비틀어진다. 매우 신기한 일이다. 이것이 자이로스코프 효과라고 불리는 현상이다. 자이로스코프 효과는 회전하는 물체의 회전축에 모멘트를 가했을 때 모멘트의 회전 방향대로 회전축이 움직이지 않고 그 직각.. 2021. 1. 10.