본문 바로가기

AI 딥러닝49

[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.
[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.
[U-Net] U-Net 구조 이미지 세그멘테이션(image segmentation)은 이미지의 모든 픽셀이 어떤 카테고리(예를 들면 자동차, 사람, 도로 등)에 속하는지 분류하는 것을 말한다. 이미지 전체에 대해 단일 카테고리를 예측하는 이미지 분류(image classification)와는 달리, 이미지 세그멘테이션은 픽셀 단위의 분류를 수행하므로 일반적으로 더 어려운 문제로 인식되고 있다. 위 그림에서 semantic segmentation은 이미지 내에 있는 객체들을 의미 있는 단위로 분할해내는 것이고, instance segmentation 은 같은 카테고리에 속하는 서로 다른 객체까지 더 분할하여 semantic segmentation 범위를 확장한 것이다. 이미지 세그멘테이션은 의료 이미지 분석(종양 경계 추출 등), 자.. 2022. 5. 11.
버거스 방정식 기반 신경망 (Burgers’ Equation-Informed Neural Network) 코드 업데이트 일전에 포스팅한 버거스 방정식(Burgers' equation)에 대한 물리정보신경망(PINN, Physics-Informed Neural Network) Tensorflow2 코드를 업데이트했다. 버거스 방정식과 초기조건, 경계조건, 그리고 신경망 구조, 콜로케이션 포인트, 데이터 포인트 등은 모두 전에 사용된 코드와 동일하다. https://pasus.tistory.com/162 차이점은 두가지다. 먼저 물리정보 신경망에서 \(u_t, u_x, u_{xx}\) 를 계산할 때 기존의 tf.GradientTape.gradient 대신에 tf.gradients 함수를 사용했다. 해당 코드는 다음과 같다. @tf.function을 사용해서 한결 간단해졌다. @tf.function def physics_net.. 2022. 1. 11.
비압축성 유체 정보 기반 신경망 (Incompressible NS-Informed Neural Network) 전산역학 분야에서 큰 관심을 모으고 있는 물리 정보 신경망(PINN, physics-informed neural network)을 이용하여 비압축성 유체(incompressible fluid)의 흐름을 시뮬레이션 해보자. 시뮬레이션 하고자 하는 문제는 다음 그림에 나와 있다. 가로 세로 길이가 각각 \(L=1.0 m, H=0.4 m\) 인 직사각형 영역에 2차원 원형(circular) 실린더가 놓여 있다. 실린더는 유체의 흐름을 방해하는 장애물로서 반지름이 \(r=0.05 m\) 이고 중심점은 입구(inlet)로부터 \(0.2 m\), 하단 벽으로부터 위로 \(0.2 m\) 만큼 떨어진 곳에 위치한다. 유체의 점성계수는 \(\mu=0.02 kg/(m \cdot sec)\) 이고 밀도는 \(\rho=1 k.. 2021. 11. 2.