분류 전체보기156 몬테카를로 방법 (Monte Carlo Method)과 베이지안 머신러닝 1. 큰 수의 법칙 (Law of Large Numbers, LLN) 이 글에서 소개할 몬테카를로 방법 (Monte Carlo method)은 큰 수의 법칙을 기반으로 하며, 큰 수의 (약한) 법칙은 동일한 확률분포에서 독립적으로 추출된 (i.i.d. 조건) 확률변수에 대해 아래와 같이 정의된다. i.i.d. 확률변수 $X_1, X_2, ..., X_n$에 대해 $n$ 증가하면 $\bar{X} = \frac{X_1 + X_2 + \cdots + X_n}{n}$은 실제 기댓값 $\mu$로 수렴한다. 큰 수의 법칙은 샘플 (데이터)이 생성된 확률분포를 모르더라도 샘플로부터 확률분포에 대한 정보를 추정할 수 있음을 보여준다. 이러한 큰 수의 법칙을 직관적으로 나타내면 식 $\eqref{eq:lln}$과 같다... 2024. 1. 7. 2023년 12월 최신 프로그래밍 언어 순위 1. 2023년 12월 TIOBE Index TIOBE Index는 아래의 3가지 지표를 주로 반영하여 프로그래밍 언어의 순위를 설정한다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 일반적으로 프로그래밍 관련 강좌에서는 프로그래밍과 관련된 개념을 설명하기 위해 C와 Java처럼 전통적인 언어를 자주 다루기 때문에 TIOBE Index에서는 전통적인 프로그래밍 언어의 순위가 높게 설정되는 경향이 있다.. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 인터넷 검색량을 기반으로 계산.. 2023. 12. 30. [머신러닝] 가우시안 혼합 모델 (Gaussian Mixture Model, GMM)과 EM 알고리즘 1. 가우시안 혼합 모델의 개념Gaussian Mixture Model (GMM)은 그림 1과 같이 가우시안 분포 (정규분포)를 여러 개 혼합하여 데이터의 복잡한 분포를 근사하기 위한 머신러닝 알고리즘이다. 혼합되는 가우시안 분포의 수 $K$는 GMM의 hyperparameter이며, 그림 1은 $K=3$으로 설정된 GMM을 묘사한다.GMM에서 주어진 데이터 $\textbf{x}$가 발생할 확률은 아래의 식 $\eqref{eq:gmm}$과 같이 $K$개의 가우시안 확률밀도함수 (probability density function)의 혼합으로 정의된다.$$\begin{equation} p(\textbf{x}) = \sum_{k=1}^K \pi_k \mathcal{N}(\textbf{x} ; \boldsym.. 2023. 12. 29. Reparameterization Trick에 대한 수학적 이해와 기댓값의 미분가능성 1. 기댓값 (Expectation)의 미분가능성 많은 머신러닝 문제에서 우리는 식 (1)과 같이 모델 매개변수 $\theta$에 대해 어떠한 기댓값을 최대화하고자 한다. $$ \theta^* = \underset{\theta}{\text{argmax}} \; E_{p(x)}[f_{\theta}(x)]. \tag{1} $$ 식 (1)을 풀기 위해 $\theta$에 대해 $E_{p(x)}[f_{\theta}(x)]$를 미분하면 다음과 같다. $$\begin{align*}\nabla_{\theta} E_{p(x)}[f_{\theta}(x)] &= \nabla_{\theta} \left[ \int_x p(x) f_{\theta}(x) dx \right]\\ &= \int_x p(x) \left[\nabla_{.. 2023. 12. 21. 파이썬 RDKit을 이용한 분자 유사도 (Tanimoto Similarity) 계산 1. Tanimoto 유사도 분자 유사도 계산을 위해서는 분자의 표현 방식과 유사도 계산 방법을 정해야한다. 분자의 표현 방식에는 그림 1과 같이 fingerprint, 이미지, 그래프 등이 있다. 분자 유사도 계산 방법에는 그래프 유사도, dice 유사도, Tanimoto 유사도 등이 있다. Tanimoto 유사도는 주로 0과 1의 나열로 분자를 표현한 fingerprint에 이용되며, $M_1$과 $M_2$라는 분자 표현에 대해 아래의 식 (1)과 같이 정의된다. $$\begin{equation} \mathcal{T}(M_1, M_2) = \frac{|M_1 \cap M_2|}{|M_1 \cup M_2|} = \frac{|M_1 \cap M_2|}{|M_1| + |M_2| - |M_1 \cap M_2.. 2023. 12. 19. Conjugate Prior의 정의와 예제 1. Conjugate Prior의 정의 베이지안 머신러닝 (Bayesian machine learning)에서는 주어진 데이터셋 $\mathcal{D}$에 대해 모델 매개변수 $\theta$의 사후 확률 (posterior probability) $p(\theta|\mathcal{D})$를 최대화하도록 모델 학습이 진행된다. 이를 식으로 나타내면 아래와 같다. $$\begin{align*} \theta^* &= \underset{\theta}{\text{argmax}} \; p(\theta|\mathcal{D})\\ &= \underset{\theta}{\text{argmax}} \; p(\mathcal{D}|\theta) p(\theta) \tag{1} \end{align*}$$ Conjugate p.. 2023. 12. 18. 선형회귀 (Linear Regression)에 대한 여러 접근법 1. 선형회귀 (Linear Regression) 선형회귀는 입력 $\textbf{x} \in \mathbb{R}^{d \times 1}$와 출력 $y \in \mathbb{R}$를 식 (1)과 같은 선형 관계로 모델링하기 위한 회귀분석이다. $$\begin{equation} y = \textbf{w}_1 \textbf{x}_1 + ... \textbf{w}_d \textbf{x}_d + b = \textbf{w}^T \textbf{x} + b \tag{1} \end{equation}$$ 위의 식에서 $\textbf{w} \in \mathbb{R}^{d \times 1}$와 $b \in \mathbb{R}$는 선형회귀 모델의 매개변수이다. $N$개의 데이터를 포함하는 데이터셋 $\mathcal{D} = .. 2023. 12. 9. 2023년 11월 최신 프로그래밍 언어 순위 1. 2023년 11월 TIOBE Index TIOBE Index는 아래의 3가지 지표를 주로 반영하여 프로그래밍 언어의 순위를 설정한다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 일반적으로 프로그래밍 관련 강좌에서는 프로그래밍과 관련된 개념을 설명하기 위해 C와 Java처럼 전통적인 언어를 자주 다루기 때문에 TIOBE Index에서는 전통적인 프로그래밍 언어의 순위가 높게 설정되는 경향이 있다.. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 인터넷 검색량을 기반으로 계산.. 2023. 12. 7. 확률에 대한 Frequentist와 Bayesian 접근, 그리고 MLE와 MAP 1. 확률 (Probability) 우리는 일상 생활에서 "확률적으로", "확률이 높다" 등과 같이 확률에 기반한 서술을 많이 듣는다. 그러나 "주사위를 던졌을 때 1이 나올 확률은 1/6이다"라는 하나의 명제는 빈도주의 (frequentist)와 베이지안 (Bayesian)이라는 두 가지 해석이 존재한다. 첫 번째는 아래와 같은 빈도주의 해석이다. 주사위를 60,000번 던지면 1이 10,000번 나온다 그러나 두 번째의 베이지안 해석은 같은 확률에 대해 빈도주의 해석과는 조금 다른 관점을 갖는다. 베이지안 해석에서 확률은 아래와 같이 어떠한 사건의 발생에 대한 가능성을 의미한다. 주사위를 던질 때 1이 나오는 사건은 1/6의 확률로 발생한다 이 글에서는 빈도주의와 베이지안 접근에 대한 개념, 그리고 .. 2023. 12. 5. 파이썬을 이용한 ChatGPT API 호출 1. Open AI API 키 발급 먼저 ChatGPT를 개발한 OpenAI에 접속하여 회원가입을 한다. OpenAI 홈페이지에서 [그림 1]과 같이 왼쪽 사이드바에서 API Keys 메뉴를 클릭한다. 그 다음 API keys 메뉴에서 Create new secret key 버튼을 클릭하여 API 키를 발급 받는다. 발급된 API 키는 유출되지 않도록 주의해야한다. 2. 파이썬을 이용한 ChatGPT API 호출 OpenAI에서는 OpenAI에서 개발한 인공지능 모델을 쉽게 사용할 수 있도록 파이썬 OpenAI 패키지를 제공하고 있다. OpenAI 패키지는 아래의 pip 명령어를 이용하여 다운받을 수 있다. pip install openai 파이썬 OpenAI 패키지를 다운 받은 후에 아래와 같이 파이.. 2023. 12. 3. [그래프 이론] 1. 그래프 (Graph)의 정의와 기본 속성 1. Graph의 수학적 정의 수학에서 graph는 $G = (\mathcal{V}, \mathcal{U})$로 표현되는 쌍으로 정의되며, $\mathcal{V}$와 $\mathcal{U}$는 각각 node (또는 vertex)와 edge의 집합이다. 최근 데이터과학이나 머신러닝에서는 각 node와 edge에 대한 속성을 나타내는 node-feature 행렬 $\textbf{X}$와 edge-feature 행렬 $\textbf{E}$를 추가한 attributed graph $G = (\mathcal{V}, \mathcal{U}, \textbf{X}, \textbf{E})$를 다루기도 한다. 그러나 고전적인 그래프 이론에서는 일반적으로 속성 행렬을 고려하지 않기 때문에 특정한 언급이 없다면, 속성 행렬이 .. 2023. 6. 16. 2022년 2월 최신 프로그래밍 언어 순위 1. 2022년 2월 TIOBE Index TIOBE Index에서는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 산정한다. 프로그래밍 언어의 순위는 아래의 기준을 바탕으로 결정된다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 .. 2022. 2. 20. 이전 1 2 3 4 5 ··· 13 다음