일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Numerical Analysis
- LaTeX
- Zotero
- WOX
- 텝스공부
- 우분투
- Linear algebra
- JAX
- 고체역학
- MATLAB
- 수식삽입
- 인공지능
- IEEE
- matplotlib
- 수치해석
- Statics
- ChatGPT
- Julia
- 딥러닝
- pytorch
- 옵시디언
- Python
- Dear abby
- 생산성
- 논문작성
- 텝스
- 논문작성법
- obsidian
- 에러기록
- teps
- Today
- Total
목록연구 Research (93)
뛰는 놈 위에 나는 공대생
최근 differentiable simulation / graphics가 연구가 되고 있다. 특히 GPU 존재 자체가 그래픽의 빠른 연산을 위해 나온 것이기 때문에 NVIDIA에서도 관심이 많은데 파이썬 기반의 고성능 GPU 시뮬레이션을 가능하게 하는 라이브러리 warp를 배포하고 있다. https://github.com/nvidia/warp GitHub - NVIDIA/warp: A Python framework for high performance GPU simulation and graphics A Python framework for high performance GPU simulation and graphics - NVIDIA/warp github.com 1. 설치 설치 방법은 위의 github..
요즘 데이터 양/컴퓨팅 파워의 증가와 머신러닝/딥러닝 증가로 인해 통계적 방법론, 확률론적 방법론이 주목받고 있다. 기존에 있던 확률 책을 보면 랜덤 변수를 추출하는 방법에 대한 이야기가 있는데 샘플링 방법론과 결을 같이 한다. 내가 알고 있는 분포가 있을 때 이 분포를 따르는 표본을 얻기 위해서는 어떤 알고리즘을 써야할까? 이에 관련된 내용이 sampling method이다. 아래의 Rejection sampling, importance sampling, inverse cumulative distribution function은 나중에 다룰 생각이다. 1. Markov chain Markov chain은 stochastic dynamical environment를 모델링한 것으로 state transi..
물리기반 인공지능 관련해서 접근성을 높이기 위한 여러 라이브러리가 있다. 보통은 코드를 직접 작성하는게 낫지만 빨리 테스트해보고 싶을 때는 라이브러리가 도움이 많이 되기 때문에 저장한다. 1. Python - PyTorch 1.1. TorchDiffeq Neural ode 창시자인 Chen이 배포한 코드 : https://github.com/rtqichen/torchdiffeq 1.2. DeepXDE Arxiv에 올라와있는 http://arxiv.org/abs/1907.04502에서 더 많은 정보를 얻을 수 있다. (논문 정보 L. Lu, X. Meng, Z. Mao, and G. E. Karniadakis, “DeepXDE: A deep learning library for solving differe..
chatGPT의 흥미로운 점은 어떤 프롬프트를 쓰느냐에 따라 결과가 달라질 수 있다는 점이다. 이런 측면에서 더 나은 프롬프트를 사고 파는 시장까지 생겼다고 하니, 세상에는 참 많은 아이디어가 돈이 된다 싶기도 했다. 실제 openAI에서는 몇 가지 유용한 강좌를 제공해준다. 그중 하나가 지금 이야기하고자 하는 ChatGPT Prompt Engineering for Developers라는 강의이다. chatGPT를 더 유용하게 사용하기 위해 어떻게 명령을 넣으면 좋을지에 대해 설명해준다.80퍼센트 정도 들었는데 충분히 chatGPT를 사용하는 법에 대해 익숙해지기 좋은 것 같다.나중에 시간이 나면 어떤 식으로 프롬프트를 하는지 정리해놓고 싶다. (크흠..) 괜히 이상한 유튜브에서 chatGPT 설명을 찾..
Quasi Newton method를 이용해서 JAX에서 최적화를 시키고 싶었는데 JAX 자체가 Deep learning에 포커스가 있고 대부분 딥러닝이 Gradient descent method로 최적화를 하다보니 라이브러리를 찾게 되었다. 대부분 jaxopt라는 라이브러리를 추천했기 때문에 이걸로 수행해보았다. jaxopt에는 jaxopt.ScipyMinimize와 jaxopt.LBFGS가 있는데 다른 분들의 시도를 보니 ScipyMinimize가 더 성능이 괜찮은 것 같다. ScipyMinimize는 scipy에 있는 최적화를 사용한 것이고 LBFGS는 직접 만든 것 같은데 line search 방법 등이 다르다고 한다. import jax import jax.numpy as np from jax ..
맨날 Bayesian Neural Network (BNN)에 대해서 얘기를 듣다가 좋은 강의를 접하게 되어서 요약 정리하고 개별 내용을 보는 것이 어떨까 생각한다. 모든 자료들이 notation을 다르게 쓰다보니 따라가기 어려운 점이 있기도 하고.. 만약 BNN 관련한 라이브러리를 한 번쯤 보신 분들이라면 MCMC, Dropout, Stein Variational Gradient Descent, Variational Inference 등 알 수 없는 용어들을 봤을 것이다. 필자도 배우는 단계이기 때문에 공부하면서 이 글이 수정될 수도 있다. 다루고 싶은 내용은 1) Bayesian Neural Network의 이론 기반 2) BNN에 포함되는 알고리즘 3) BNN Implementation (JAX 라이..
Game theory는 수학 분야 중의 하나로 여러 agents가 있을 때의 최적 의사결정을 다루는 학문이다. Game theory는 경제, 통신 등 다양한 분야에서도 쓰이지만 Optimal control 분야에서도 많이 쓰이는데 대표적으로 Pursuit-evasion problem이다. 이는 Non-cooperative, two player, zero-sum game으로 볼 수 있고 이에 대한 formulation을 Pontryagin's maximum principle과 Bellman's equation 두 가지 approach를 통해 analytical solution을 구할 수 있다. Pontryagin's maximum principle의 경우에는 시간에 대한 입력으로 결과가 나오기 때문에 op..
인공지능을 하다보면 경험적으로 알게 되는 것들이 있는데 그 중 하나가 scaling의 문제이다. 간단한 regression 문제를 풀어보자. import jax import jax.numpy as jnp from jax import random, vmap from jax.example_libraries import optimizers def diffusion(t, y, args): sigma = 0.15 diff = sigma * jnp.sqrt(y) return diff # Define a simple neural network model def init_params(layer_sizes, key): params = [] for i in range(1, len(layer_sizes)): key, sub..
JAX를 쓰다보니 분명 vmap을 사용했음에도 안에 있는 루프는 빨리 되지만 정작 vmap을 나올 때 느려지는 현상을 발견하였다. 구체적으로 알아보려면 jax.make_jaxpr 또는 jax.block_until_ready를 써보라고 하는데 make_jaxpr 같은 경우에는 컴파일할 때 각 변수 flow를 보여주는 역할을 해서 도움이 될 수도 있다. vmap과 jit의 시간 차이를 알아보려면 아래의 예제를 사용해볼 수 있다. from functools import partial from timeit import timeit from jax import vmap, jit, random, numpy as jnp n, d = 512, 64 a = random.normal(random.PRNGKey(0), (n..
모든 scipy interpolation을 다 시도해보았다. 각 interpolation마다 특징이 있으므로 원하는 것을 사용하면 된다. from scipy import interpolate import numpy as np x = np.arange(0, 10) y = np.sin(-x) kind_set = [ "zero", "linear", "quadratic","nearest", "nearest-up", "slinear", "cubic", "previous"] xnew = np.arange(0, 9, 0.1) for i in range(4): f = interpolate.interp1d(x, y, kind=kind_set[i]) ynew = f(xnew) plt.plot(xnew, ynew, labe..