본문 바로가기

분류 전체보기325

더 단순화된 이체문제 이체문제의 운동 방정식을 다음과 같이 유도한 바 있다. \[ \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.
만유인력의 법칙 뉴턴의 만유인력의 법칙(law of universal gravitation)은 질량을 가진 물체사이에 작용하는 인력(끌어당기는 힘)에 관한 것으로서 뉴턴은 이 법칙을 제2법칙과 결합하여 행성의 운동을 해석하고 케플러 법칙을 증명하였다. 만유인력의 법칙에 의하면 두 질점 간의 인력은 두 질점을 연결한 선과 평행하게 작용하며 크기는 두 질점의 질량의 곱에 비례하고 두 질점 사이의 거리의 제곱에 반비례한다. 이를 수식으로 표현하면 다음과 같다. \[ \begin{align} \vec{F}_1 &= G \frac{Mm}{r^2} \hat{e}_r \tag{1} \\ \\ &= G \frac{Mm}{r^2} \frac{\vec{r}}{r} \end{align} \] 여기서 \(M, m \)은 두 질점의 질량, \.. 2021. 1. 10.
최소화의 필요조건과 충분조건 다음과 같이 제약조건이 없는 일반적인 함수의 최적화 문제에서, \[ \min_\mathbf{x} f(\mathbf{x}) \] 함수 \(f(\mathbf{x})\)가 \( \mathbf{x}^\star\)에서 로컬(local) 최소값이 되기 위한 필요조건(necessary condition)은 \( \mathbf{x}=\mathbf{x}^\star\)에서 계산한 \(f\)의 그래디언트(gradient)가 \(0\)이 되는 것이다. \[ \nabla_\mathbf{x} f(\mathbf{x}^\star ) = 0 \] 위 조건을 \(\mathbf{x}^\star\)이 최소점이 되기 위한 1차(first order) 필요조건이라고 한다. 사실 위 조건은 로컬 최대점에서도 성립한다. 그럼 또 다른 필요조건이 .. 2021. 1. 10.