본문 바로가기

분류 전체보기211

[LSTM] TF2에서 단방향 LSTM 모델 구현 - 2 tf.keras.layers.LSTM 의 속성 return_sequences를 True 로 설정하면 각 시퀀스별 은닉 상태(hidden state)를 모두 출력하게 된다. 다음 그림은 시퀀스 길이가 4 \((t-3, t-2, t-1, t)\), 은닉 상태변수의 차원이 \(\mathbf{h}_t \in \mathbb{R}^3\), 입력 변수의 차원이 \(\mathbf{x}_t \in \mathbb{R}^8\) 인 LSTM 모델을 나타낸 것이다. 이 모델의 특징은 각 시퀀스에서 은닉 상태가 모두 출력된다는 것이다. 이를 코드로 구현하면 다음과 같다. input = tf.keras.layers.Input(shape=(4, 8)) # (seq length, input dimension) lstm = tf.ker.. 2022. 7. 23.
[LSTM] TF2에서 단방향 LSTM 모델 구현 - 1 LSTM(Long Short-Term Memory)은 자연어 처리, 시계열 및 기타 시퀀스 모델링 작업에 사용되는 RNN 신경망의 한 종류이다. 여기서는 단방향(unidirection) LSTM모델을 Tensorflow2로 어떻게 구현할 수 있는지 그 방법에 대해서 알아보고자 한다. 실제로 코드를 작성하기 전에 먼저 LSTM의 구조와 내부 작동에 대해서 이해하는 것이 순서이겠지만, 이에 대해서는 다음에 포스팅하기로 하고 일단 LSTM 모델을 Tensorflow2 코드로 구현하는 것에 집중하도록 하겠다. LSTM의 모든 기능은 그림에서 녹색 메모로 표시된 메모리셀(memory cell)이라는 곳에서 수행된다. 메모리셀은 3개의 입력과 2개의 출력이 있다. 입력으로는 은닉 상태(hidden state) \(.. 2022. 7. 21.
[GP-4] 베이지안 최적화 (Bayesian Optimization) 어떤 미지의 함수의 최대값을 구하는 문제를 생각해 보자. 이 함수는 블랙박스 함수라서 그 수학적 표현을 알지 못할 뿐만 아니라 그 미분 또한 당연히 모른다. 다만 특정 포인트 \( \mathbf{x}\) 에서 함수값을 물어보면 답은 내줄 수 있다고 가정한다. 베이지안 최적화(BO, Bayesian optimization)는 이와 같은 조건하에서 함수의 최대값을 계산하기 위한 방법이다. 즉, 어떤 최적화 목적함수에 대한 수학적 표현식은 없지만 샘플링된 값을 얻을 수 있는 상황에 적용할 수 있는 최적화 방법인 것이다. 베이지안 최적화 방법에서는 샘플링된 학습 데이터를 사용하여 미지의 목적함수에 대한 가우시안 프로세스(GP) 모델을 구축하고, 목적함수의 불확실성을 최소화하거나 함수의 예측값을 최대화할 수 있을.. 2022. 7. 9.
[GP-3] GP 커널 학습 GP 회귀 (Gaussian process regression) 문제를 정리하면 다음과 같다. 어떤 미지의 함수 \(f(\mathbf{x})\) 를 다음과 같이 가우시안 프로세스로 모델링한다고 하자. \[ \begin{align} & y=f(\mathbf{x})+\epsilon \tag{1} \\ \\ & \ \ \ \ \ \epsilon \sim \mathcal{N} (0, \sigma_n^2 ) \\ \\ & \ \ \ \ \ f(\mathbf{x}) \sim \mathcal{GP} (\mu(\mathbf{x}), k(\mathbf{x}, \mathbf{x}' )) \end{align} \] 여기서 \(y\) 는 측정값, \(\mathbf{x}\) 는 입력으로서 가우시안 프로세스의 인덱스이고, \(\.. 2022. 7. 5.
[GP-2] GP 회귀 (GP Regression) 가우시안 프로세스 \(f(\mathbf{x})\) 의 관측값에는 노이즈가 포함되어 있다고 가정하는 것이 보다 실제적이다. 노이즈를 평균이 \(0\) 이고 분산이 \(\sigma_n^2\) 인 가우시안으로 모델링한다면 GP(Gaussian process) 측정 모델은 다음과 같다. \[ \begin{align} & y=f(\mathbf{x})+ \epsilon \tag{1} \\ \\ & \ \ \ \ \ \epsilon \sim \mathcal{N} (0, \sigma_n^2 ), \\ \\ & \ \ \ \ \ f(\mathbf{x}) \sim \mathcal{GP}( \mu(\mathbf{x}), k(\mathbf{x}, \mathbf{x}' ) ) \end{align} \] 노이즈가 가우시안 프로세.. 2022. 6. 30.
[GP-1] 가우시안 프로세스 (Gaussian Process)의 개념 랜덤변수(random variable)는 확률 실험의 결과에 실숫값을 대응시키는 함수로 정의된다. 또한 랜덤 프로세스(random process)는 어떤 파라미터로 인덱스(index)된 무한개의 랜덤변수의 집합으로 정의된다. 즉 랜덤 프로세스는 확률 실험 결과와 인덱스 파라미터 등 두 개의 변수로 구성된 함수로 생각할 수 있다. 보통 인덱스로 시간 파라미터가 많이 사용되지만 공간 파라미터도 인덱스가 될 수 있다. 여기서는 인덱스를 공간 파라미터인 \(\mathbf{x}\) 로, 랜덤 프로세스를 \(f\) 로 표기하겠다. 그러면 랜덤 프로세스를 다음과 같이 함수 형태로 쓸 수 있다. \[ f(e,\mathbf{x}) \] 여기서 \(e\) 는 확률 실험을 나타낸다. 하지만 일반적으로 확률 실험을 명시적으로.. 2022. 6. 26.
Vorticity 미분 방정식 VPM (Vortex Particle Method)은 비압축성 유체에 대한 Navier-Stokes 방정식을 풀기 위한 효율적인 수치 기법으로서, 격자가 필요 없기 (meshless) 때문에 유한체적법 (FVM, finite volume method)과 같은 기존의 격자(mesh) 기반 수치 기법에 대한 대안으로서 주목받고 있다. VPM은 Vorticity 미분 방정식을 지배 방정식으로 사용하기 때문에 이를 유도해 보고자 한다. 먼저 체적력을 무시할 수 있을 때 비압축성(incompressible) 뉴톤유체에 대한 Navier-Stokes 방정식은 다음과 같다. \[ \begin{align} & \nabla \cdot \mathbf{V} = 0 \tag{1} \\ \\ & \frac{\partial \m.. 2022. 5. 29.
Vorticity의 정의 어떤 유동장에서 운동하는 미소 유체요소(infinitesimal fluid element)를 생각해보자. 아래 그림과 같이 이 유체요소는 운동하면서 회전할 수도 있고 모양이 변할 수도 있다. 이 회전 및 모양의 변화 정도는 유체의 속도장에 따라 다르다. 여기서는 유체요소의 회전에 집중하여 유체의 속도장과 유체요소의 회전 각속도(angular velocity)의 관계에 대해서 알아보고자 한다. 논의를 간단하게 하기 위해서 일단 유체가 2차원 평면상을 흐른다고 하자. 아래 그림과 같이 시간 \(t\) 에서 이 유체요소의 모양이 직사각형이라고 가정한다. 시간이 \(\Delta t\) 만큼 흐르면 유체요소의 꼭지점 B와 C는 꼭지점 A에 대해서 각각 상대 위치가 변화한다. 유체요소의 각 점의 상대 속도가 그림에.. 2022. 5. 29.
유동장의 시간미분에 대해서 유동장(flow field)은 압력, 밀도, 온도, 속도 등 4개의 파라미터로 정의할 수 있는데 모두 위치와 시간의 함수이다. 예를 들면 밀도는 기준 좌표계에서의 위치 \((x,y,z)\) 와 함께 시간 \(t\) 의 함수로 주어진다. \[ \rho = \rho (x,y,z,t) \tag{1} \] 따라서 어떤 파라미터를 시간으로 미분할 경우 두 종류의 도함수(derivative)가 나온다. 바로 \(d/dt\) 와 \(\partial /\partial t\) 이다. 두 시간미분의 물리적인 의미를 알아보자. 아래 그림과 같이 어떤 유동장에서 운동하는 유체요소(fluid element)를 생각해보자. 시간 \(t_1\) 일 때 이 유체요소는 위치 \((x_1,y_1,z_1)\) 에 있다고 하자. 그러면 이.. 2022. 5. 24.
[U-Net] 망막 혈관 세그멘테이션 (Retinal Vessel Segmentation) U-Net을 망막 혈관 세그멘테이션(retinal blood vessel segmentation) 문제에 적용해 보자. 아래 사이트에 가면 데이터셋과 관련 논문, 그리고 텐서플로나 파이토치로 작성한 코드들이 많이 나온다. Papers with Code - Retinal Vessel Segmentation Retinal vessel segmentation is the task of segmenting vessels in retina imagery. ( Image credit: [LadderNet](https://github.com/juntang-zhuang/LadderNet) ) paperswithcode.com 사이트에는 4가지 데이터셋이 나와 있는데, 이중 DRIVE (Digital Retinal Im.. 2022. 5. 11.