AI 딥러닝63 [LSTM] 주가 예측 LSTM(Long Short-Term Memory)이 시계열 예측(timeseries forecasting)에 특화되어 있다보니 주식 가격을 예측해보는 간단한 LSTM 예제 코드가 Github등에 많이 나와 있다. '주가예측'만큼 학습용 데이터를 손쉽게 얻을 수 있고 대중의 관심도 큰 분야는 없는 듯 하다. 최근 물리 시스템의 동역학 모델을 구축하는 데에 LSTM이 많이 도입되고 있고 개인적으로도 인공지능을 이용한 주식 거래 자동화에 관심이 있기 때문에 코딩 연습 겸 주가예측을 위한 간단한 LSTM 코드를 Tensorflow2로 구현해 보고자 한다. 참고로 특정 회사의 주가 데이터는 Yahoo finance 사이트의 Historical Data에 가면 다운로드 받을 수 있다. 예를 들어 특정 기간의.. 2023. 5. 19. [VAE] beta-VAE 앞서 살펴본 바와 같이(https://pasus.tistory.com/263) VAE의 손실함수는 복원손실 항과 정규화 손실 항으로 구성된다. 식 (1)의 VAE 손실함수에서 첫번째 항인 복원손실은 복원(reconstruction)된 데이터가 원본 데이터와 얼마나 유사한지를 나타내는 오차다. 원본 데이터의 확률분포에 따라서 원본 데이터와 복원된 데이터 간의 교차 엔트로피나 L2 놈(norm)을 사용하여 복원손실을 계산할 수 있다. 두번째 항인 정규화(regularization) 손실은 고차원 입력 데이터를 저차원 잠재변수 공간(latent space)으로 인코딩할 때 잠재변수의 확률분포가 사전에(prior) 규정한 확률분포 \(p(\mathbf{z})\) 와 얼마나 유사한지를 계산하는 KL발산(Kullb.. 2023. 5. 11. [VAE] 변이형 오토인코더(Variational Autoencoder) 생성모델(generative model)은 데이터를 생성해 낼 수 있는 모델을 말한다. 만약 데이터의 확률분포 \(-\) 데이터가 이산적일 경우는 확률질량함수(probability mass function), 연속적일 경우는 확률밀도함수(probability density function) \(-\) 를 알 수 있으면 샘플링을 통해서 본래 데이터와 같은 확률적 특성을 갖는 새로운 데이터를 임의로 생성할 수 있으므로, 생성모델의 목적은 데이터의 확률분포를 추정하는 것이라고 말할 수 있다. 예를 들면 데이터로서 얼굴 이미지 집합이 주어졌을 때, 그 이미지의 특성을 나타내는 확률밀도함수를 추정할 수 있다면, 새로운 얼굴 이미지를 임의로 생성할 수 있다는 말이다. 생성모델은 고차원(high dimension) .. 2023. 4. 30. [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 = .. 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. 이전 1 2 3 4 5 ··· 7 다음