머신러닝(Machine Learning)과 확률(Probability)

11 분 소요

안녕하세요. 이번 시간에는 머신러닝과 확률을 얘기하려고 합니다. 최소한 김성훈 교수님의 모두의 딥러닝 강의를 이수한 수준은 필요로 하고 기본적으로 고등학교 수준의 확률과 통계를 알고 있다고 여기고 진행하겠습니다.

확률론적 관점

최근엔 잘 만들어진 딥러닝 프레임워크들이 많아 코딩만 할 줄 알면 딥러닝에 대해 깊이 있게 알지 않아도 데이터와 코드 몇 줄만으로도 그럴듯한 결과물을 얻을 수가 있습니다. 그래서 딥러닝 개발의 진입 장벽이 많이 낮아졌다고 할 수 있죠. 그 과정에서 선형대수에 관련된 문서나 글을 읽을 일이 많아 선형대수가 중요하다는 것은 알겠는데, 확률과 통계는 그럼 진짜 중요한가? 하는 의문이 들기도 합니다. 중요하다는 얘기는 많이 들었는데 정작 체감을 못 하기 때문입니다. 그래서 이번엔 우리가 알고 있는 딥러닝 모델을 확률론적인 관점에서 해석해보고자 합니다.

분류 문제(Classification) 를 예시로 한번 들어보겠습니다. 우리가 딥러닝으로는 제일 먼저 해보게 되는 게 아마 MNIST 숫자 손글씨 데이터 로 해당 숫자를 분류해보는 과제일 겁니다. MNIST는 숫자 데이터 X와 클래스 Y(라벨)가 쌍으로 구성된 데이터셋 입니다. 단순하게 베이직한 뉴럴네트워크로 이루어져 있는 모델이 있다고 하면, 우리가 입력값으로 X를 넣으면, 모델이 계산한 결과(Output)를 Y랑 비교하면서 잘 분류가 되도록 학습됩니다. 즉, 이 모델은 데이터 X를 잘 이해해서 해당 클래스 Y를 ‘예측’ 할 수 있는 ‘함수’ 를 알아내는 겁니다. 보통은 이 학습과정을 선형대수로도 충분히 설명할 수 있습니다. 지금까지 설명한 내용을 아래의 그림으로 간단히 정리해보겠습니다.

그림출처 http://sanghyukchun.github.io/58/

여기서 알고리즘 A가 바로 데이터를 잘 분석한 ‘함수’ 가 되는 것입니다. 근데 이 ‘함수’ 부분을 확률론적 관점 으로 해석해 볼 수가 있습니다. 본격적으로 확률론적 관점을 설명하기에 앞서 몇 가지 확률 개념을 소개하도록 하겠습니다.

확률 (Probability)

확률(Probability)은 해당 사건(event) 이 일어날 가능성을 의미합니다. 확률 이라는 개념은 관점에 따라 설명하는 게 달라집니다. 기존의 우리가 잘 알고 있는 확률의 개념은 해당 사건의 빈도수를 따져 그 사건이 발생할 가능성을 의미합니다. 보통 실험적인 성향을 갖는 반복되는 시도를 통해 사건의 빈도수를 측정해서(ex. 동전 던지기, 주사위 던지기) 확률값 을 계산합니다. 이런 경우를 Frequentist probability 라고 합니다. 다른 관점으로는 Bayesian Probability 가 있습니다. 확률을 지식 또는 믿음의 정도를 나타내는 양 으로 해석하는 확률론입니다. Bayesian Probability 은 다음 시간에 설명하도록 하겠습니다.

확률 변수 (Random Variable)

확률 변수(Random Variable)는 발생가능한 모든 사건(event) 들의 집합인 표본공간 안에서 특정한 확률을 가지고 발생하는 사건을 특정 수치에 대응(mapping)시키는 함수 입니다. 함수 라는 것이 중요한 부분입니다. 그래서 확률 변수를 대문자 \(X\) 로 표기하고, 확률 변수에서 나온 값은 소문자 \(x\) 로 표기합니다. 확률변수가 취할 수 있는 모든 실수(\(x\))들의 집합을 상태공간(State Space) 이라 합니다.

예시를 들어 진행해보겠습니다. 동전 하나를 2번 던지면 앞면앞면, 앞면뒷면, 뒷면앞면, 뒷면뒷면 총 4가지 사건이 발생 할 수 있습니다. 앞면이 나오는 횟수로 실수값을 부여하면 상태공간은 {0,1,2} 가 되는 것이죠. 우리는 이렇게 사건을 실수로 매핑 할 수 있습니다. 확률변수가 가질 수 있는 값들 중에서 한 \(x\) 가 있고 확률변수 X에서 그 \(x\) 가 나올 확률로 대응 해주는 확률 함수 를 \(P\) 라고 하겠습니다. 확률 함수 를 이용해서 예시를 수식으로 표현하면 \(P(X = 0) = 1/4\), \(P(X = 1) = 1/2\), \(P (X = 2) = 1/4\) 가 됩니다. 간단히 정리하면, \(P(X = x)\) 는 사건(event)이 발생할 확률을 의미하는 게 아니라 확률변수 \(X\) 에서 실수 \(x\) 나올 확률을 의미합니다. 예시로 들었던 상태공간의 값들인 0,1,2는 이산적(discrete)이기 때문에 방금과 같은 확률변수 \(X\)는 이산확률변수(discrete random variable) 입니다. 만약 확률변수 \(X\) 가 연속적(continuous)이면 연속확률변수(continuous random variable) 이죠. 데이터도 마찬가지입니다. 어떠한 사건이 발생했으니깐 그게 데이터로 남는 거겠죠? 따라서 데이터는 사건이라는 것을 명심하기 바랍니다.

그럼 잠시 돌아와서 분류 문제 를 다시 떠올려 봅시다. 우리의 분류모델을 말로 설명해 보면 ‘입력값 X를 넣어주면 모델에서 Y가 나올 확률’ 이라고 할 수 있습니다. 여기서 X,Y는 아까 확률변수로 표기한 \(X\), \(Y\) 를 의미하는게 아니라, 보통 데이터의 입력과 라벨을 표기할때 관행상 X,Y 라고 표기하기 때문에 헷갈리시면 안됩니다. 그럼 이제 구하고자 하는 Y는 사건(event) 이라 볼 수 있습니다. 그러고 나서 Y를 어느 특정 실수들로 일대일 매핑을 해주면 그 과정이 확률변수가 되는 거죠. 근데 조금 찝찝한 부분이 남아 있습니다. 그럼 입력값 X는 뭐로 이해하면 될까요? 그건 뒤에서 다시 얘기하도록 하고 이 정도까지만 이해하고 넘어가도록 하겠습니다.

확률 분포 (Probability Distribution)

확률 분포는 이 확률변수 \(X\) 이 취할 수 있는 모든 \(x\) 와 그에 대한 확률값들이 어떻게 분포되어 있는지를 말해줍니다. 그림을 보시면 바로 이해되실겁니다.

그림출처 https://www.statisticsfromatoz.com/blog/statistics-tip-of-the-week-different-distributions-can-have-discrete-or-continuous-probability-graphs-for-discrete-or-continuous-data

셀 수 있는 이산확률변수 를 확률함수 \(P\) 에 넣으면 그래프에 결과값들이 처럼 찍히게 됩니다. 또는 왼쪽 그림처럼 히스토그램처럼 그릴 수도 있습니다. 하지만 셀 수 없는 연속확률변수 를 \(P\)에 넣어주면 점이 모여서 이 되는 것처럼 오른쪽 그림의 분포를 그리게 됩니다. 따라서 확률함수 \(P\) 가 곧 확률 분포다 라고 할 수 있습니다. 좀 더 나아가서 \(P(X)\) 는 확률변수 \(X\) 에 대한 확률 분포 라고도 할 수 있습니다.

이산확률분포는 확률 질량 함수, Probability mass function(PMF)으로 나타냅니다. 연속확률분포는 확률 밀도 함수, Probability density function(PDF)으로 나타냅니다. 이산확률분포는 특정값 \(x\) 에 대한 정확한 확률값을 표현할 수 있습니다. 반면에 연속확률분포는 셀 수 없는 확률 변수들의 분포이기 때문에 특정값 \(x\) 에 대한 정확한 확률값을 표현할 수 없습니다. 그 대신 정해진 구간 \(a \leqslant x \leqslant b\) 에서의 수치를 표현합니다.

우리가 사건을 예측하기 위해서 해당 사건의 확률을 계산합니다. 그러기 위해선 결국 확률 분포를 구해야 합니다. 머신러닝의 학습과정이 바로 그 확률 분포를 찾는 것입니다. 일단 여기서 한번 그림으로 정리해보겠습니다.

조건부 확률 (Conditional Probability)

조건부 확률의 사전적 정의는 어떤 사건이 일어난 조건이 있을 경우 다른 사건이 일어날 확률이라고 정의합니다. 하지만 이렇게 말하기보다는 ‘어떤 사건이 일어날 확률을 구하는 과정에서 또 다른 사건을 단서로 제공한다’ 고 말하는 게 더 옳습니다. 제공되는(given) 사건이 A라고 하고 우리가 구하고자 하는 사건 B에 대한 조건부 확률을 기호로 나타내면 \(P(B \mid A)\) 라고 할 수 있습니다. 우리의 관심사는 B이고 그 단서로 A를 고려를 하는 거죠.

잠시 머신러닝 얘기로 돌아오도록 하죠. 우리는 앞에서 분류모델을 ‘입력값 X를 넣어주면 모델에서 Y가 나올 확률’ 이라고 표현했습니다. 그럼 방금 우리가 배운 조건부 확률에다가 적용해 볼 수 있지 않을까요? 입력값 데이터 X 를 단서로 주었더니 라벨 데이터 Y가 나올 확률이니 \(P(Y \mid X)\) 일 것 같지 않나요? 이렇게 표현하는게 가능은 합니다. 하지만 주의해야 될 점이 있습니다.

앞서 말했듯이 데이터 쌍 X,Y는 사건(event)이고 조건부확률 \(P(Y \mid X)\) 의 \(X, Y\) 는 확률 변수입니다. 따라서 데이터 X,Y를 바로 확률변수 \(X,Y\) 로 취급해서 넣으시면 잘못된 표현이 됩니다. 개념상 확률분포는 사건(event)이 아닌 매핑된 수치 를 입력값으로 받아드립니다. 그러나 실제로는 데이터들은 대부분은 숫자입니다. 예를 들어 28x28 크기의 사진이라는 데이터가 있다고 하면, 이 사진은 사건이기도 하지만 0부터 255 사이의 정수값을 갖는 28x28, 총 784 개의 픽셀들이 모여있는 하나의 수치이기도 합니. 확률함수의 입력값은 확률변수에 의해 나온 수치들이 된다는 것을 생각해보면 데이터들 \(x_{1}, x_{2}, ..., x_{n}\) 으로 이루어진 데이터 집합 X를 확률변수 \(X\)로 여기고 표현해도 크게 문제가 되지는 않습니다. 만약 엄격하게 명시하고 간다면 데이터 X,Y 에 포함되는 특정값 x,y 가 있다고 하면

\[P(Y=y \mid X=x)\]

라고 표현하는게 맞습니다. 엄격하게 얘기해야 되는 상황에선 제대로 표기하시면 되고 이번 시간에는 설명의 편의를 위해 \(P(Y \mid X)\) 로 하겠습니다. 다시 정리하면 아래와 같습니다.

\[Given: 입력값 X\] \[Interest: 라벨 Y\]

입력값 X를 넣어주면 Y가 나올 확률

\[P(Y \mid X)\]

가능도 (Likelihood)

우리가 만약 확률 분포를 알고 있다면, 우리는 해당 분포에 확률 변수를 넣어 바로 확률을 계산할 수 있습니다. 하지만 현실에선 데이터가 매우 많고 또 데이터 차원이 높은 경우가 많아 확률 분포를 알아내는 것이 쉽지가 않습니다. 실전에선 관측 값(데이터)만 주어지고 확률 분포를 알아내야 하는 경우가 대부분이라고 생각하시면 됩니다. 이 얘기는 이제 우리는 확률 분포가 뭔지 모르니깐 어떠한 특정 확률 분포를 미리 가정 하고 시작하자는 것입니다. 그리고 ‘그 가정한 확률 분포에다가 우리한테 주어진 관측값을 넣었을 때 나오는 확률값’Likelihood 라고 합니다.

어떠한 확률 분포가 있다고 하면 분명 그 확률 분포를 구성하는 Parameter 가 있을 것입니다. 이제부터 Parameter 를 \(\theta\) 로 표기하도록 하겠습니다. 예를 들어 y 라는 확률 분포가 y = ax+b 라는 방정식을 이루고 있다고 가정해봅시다. 그러면 x는 우리한테 주어진 관측값이라고 할 때 y의 값은 Likelihood 가 되고 그 값이 어떻게 나올지는 a 와 b가 결정하게 됩니다. 그럼 a와 b가 y 라는 확률 분포의 \(\theta\) 가 되는 것입니다. \(\theta\) 는 언제든 바뀔 수 있는 ‘변수’ 입니다. 이 \(\theta\) 가 어떤 값을 갖는지에 따라 해당 확률 분포의 모양이 결정되는 것이죠.

그러면 Likelihood 도 확률분포의 결과값이고 확률 도 확률분포의 결과값이면 이 둘은 같은 개념일까요? 엄밀히 말하자면 이 둘은 같지 않습니다. 가설 로 세워진 확률 분포에 대해서 관측값을 넣어서 나온 결과값은 Likelihood 이고, 반대로 실제 고정된 확률 분포에 관측값을 넣었을 때 나온 결과값이 확률 입니다. 즉, Likelihood 는 언제든 \(\theta\) 가 바뀌면 관측값은 고정이어도 결과값이 다르게 나올 수 있습니다. 그래서 Likelihood 를 \(\theta\) 에 대한 확률이라고 말하기도 합니다. 가정한 \(\theta_{hypothesis}\) 가 실제 확률 분포의 \(\theta_{real}\) 와 얼마나 가까운지로 얘기 할 수 있다는 거죠.

\(Given\) \(\theta : Probability\)

\(Given\) \(observed\) \(X : Likelihood\)

Likelihood 개념을 들여다보면 사실 주 관심사는 \(\theta\) 라고 할 수 있죠. 우리가 확률 분포를 가정한 이유는 실제 데이터에 대한 확률 분포를 알 지 못하기 때문입니다. 그럼 확률 분포를 가정하고 나서 관측한 데이터들이 잘 표현되도록 \(\theta\) 를 조절하면 실제 확률 분포와 비슷하지 않을까요? 그럼 잘 표현하려면 어떻게 해야될까요? 우리는 확률 분포를 추정하는 방법 중에서 최대우도추정법(MLE, Maximum Likelihood Estimation) 사용하도록 하겠습니다.

최대우도추정법 (Maximum Likelihood Estimation)

MLE 는 각 관측값에 대한 총 가능도(모든 가능도의 곱)가 최대가 되는 분포를 찾는 추정법입니다. 원리는 굉장히 간단합니다. 가정한 분포를 이루는 \(\theta\) 를 업데이트 해가면서 분포를 움직인다고 생각하시면 됩니다. 계속해서 움직이다 보면 분명 Likelihood 가 제일 큰 부분에 오게 될테고 우리는 잘 추정했다고 결론 내리는 것입니다.

딥러닝도 역시 가설을 세우고 그 가설이 최대화되는 \(\theta\) 를 찾도록 역전파(Backpropagation) 방식으로 \(\theta\) 를 업데이트 합니다. 따라서 확률론적인 관점으로 보면 MLE 를 통해 \(\theta\) 를 업데이트해서 확률 모델을 최대화하는 게 가능한 것입니다.

이제 우리는 ‘실제 확률 분포는 모르지만 분명 뭔가 있을 거다’ 라고 확신 을 갖고 임의의 확률 분포를 가정하기로 약속했습니다. 그러면 어떻게 가정을 해야 되는 걸 까요? 다행히 그냥 유명한 확률 분포들을 선택해서 가정해도 충분합니다. 이산 확률 분포로는 푸아송 분포, 이항 분포, 베르누이 분포 등이 있고 연속확률분포는 유명한 가우시안 분포(Gaussian Distribution) 있습니다. 가우시안 분포는 정규 분포(Normal Distribution) 라고도 합니다.

정규 분포 (Normal Distribution = Gaussian Distribution)

통계학에서 정규 분포는 굉장히 자주 쓰이는 중요한 분포입니다. 자연계에서 발생하는 현상들 중 거의 대부분은 분포가 정규 분포로 매우 가깝게 표현되는 경우가 많기 때문이죠. 그래서 확률 분포를 가정해야 하는 경우에는 대부분 정규 분포로 가정해도 무방합니다. 우리가 딥러닝을 공부하면서 다룰 데이터들 또한 자연계에서 관측된 데이터들인 경우가 많습니다. 따라서 이에 대한 분포를 모를 경우엔 과감하게 정규 분포로 가정해도 크게 문제가 되진 않습니다.

정규 분포의 또 하나의 장점은 평균(\(\mu\)) 과 표준편차(\(\sigma\))만 알면 언제든지 정규 분포를 그릴 수 있다는 점입니다. 즉, 정규 분포를 구성하는 \(\theta\) 는 평균(\(\mu\)) 과 표준편차(\(\sigma\))가 되는 것이죠. 그럼 가정한 분포가 정규 분포라고 하면 MLE 를 이용해 Likelihood 가 최대화되도록 업데이트되는 \(\theta\) 는 당연히 평균과 표준편차가 되는 것입니다. 이제 그림으로 한번 정리해 보겠습니다.

Y는 확률 변수입니다. 그 확률변수 Y에 대해 실제 확률 분포(모르지만)는 \(f_{r}(Y)\) 이고 우리가 가정한 확률 분포는 \(f_{h}(Y)\) 입니다. \(f_{h}(Y)\) 를 구성하는 \(\theta\) 는 \(\mu\) 와 \(\sigma\) 입니다. y 라는 특정값에 대해 \(f_{h}(y)\) 는 Likelihood 이고 \(f_{r}(y)\) 는 확률 입니다.

\(f_{h}(y)\) 가 \(f_{r}(y)\) 보다 낮은 값을 가진 것을 볼 수 있습니다. 만약, 우리가 가정한 확률 분포가 실제 확률 분포랑 같다고 하면 이 두 결과값은 동일해야 됩니다.

이 그림은 MLE 가 대략 어떻게 돌아가는지 시각적으로 표현한 것입니다. \(\mu\) 의 변화에 따라 정규 분포의 위치도 바뀌게 되면서 동시에 Likelihood 도 높아지게 됩니다. 이렇게 높아지도록 계속해서 이동하게 되면 언젠가는 Likelihood 가 실제 확률 분포의 확률값과 같게 되겠죠. 하지만 앞에서도 말했듯이 우리는 실제 분포가 어떻게 되는지 알 수가 없기 때문에 사실 y 에 대한 확률값을 구할 수가 없습니다. 그 얘기는 관측값에 대한 Likelihood 가 어떤 값이 되어야 되는지 모른다는 것이죠. 다행히도 Likelihood 가 최대가 되는 경우는 우리가 알 수 있습니다. 정규 분포 특성상 \(\mu\) 에 대한 Likelihood 가 제일 높기 때문에 \(\mu\) 가 최대한 관측값들과 가까운 위치에 놓이면 되는 것입니다.

이렇게 해서 우리는 확률 분포를 가정하고 관측값에 대해 가장 가능성 있는 \(\theta\)를 추정하는 방법까지 알아보았습니다. 이제 남은 것은 지금까지 배운 개념들을 이용해서 실제 분류모델의 출력이 나오는 과정을 이해하는 것만 남았습니다.

분류모델은 \(P(Y \mid X)\) 라는 확률 분포를 알아내야 합니다. 그러나 실제 확률 분포를 알 수 없기 때문에 정규분포라고 가정할 것입니다. 그러면 우리가 알아야 하는 것은 정규분포를 이루는 \(\theta\) 입니다. 즉, \(X\) 가 주어졌을 때(Given) \(Y\) 에 대한 확률 분포의 최적의 \(\theta\) 를 알아내는 것이죠. 딥러닝에서는 역전파(Backpropagation) 을 통해서 더 이상의 변화가 없을 때까지 \(\theta\) 를 업데이트합니다. 이것을 Maximum Likelihood Estimation 으로 해석이 가능한 것이죠.

근데 궁금한 것이 생겼습니다. 확률 분포가 \(P(Y)\) 가 아니라 \(P(Y \mid X)\) 라면 어떤 모양을 이루게 되는 걸까요? 조건부확률의 경우에는 확률 분포는 조건부확률분포(Condtional Distribution) 라고 합니다. 관심사인 확률변수 \(Y\) 에 대한 확률 분포는 주어진 단서인 또 다른 확률변수 \(X\) 까지 고려해서 확률 분포를 이루게 됩니다. 고려해야 하는 확률 변수가 많아지게 된다면 확률 분포 또한 앞에선 본 것처럼 단순한 2차원 평면으로 표현하기가 힘들어집니다. 아래는 이해를 돕기 위한 자료입니다.

그림출처 https://assessingpsyche.wordpress.com/2014/01/23/conditional-normal-distributions-provide-useful-information-in-psychological-assessment/

이렇게 확률 변수가 많아지게 되면 분포는 입체적으로 됩니다. 위의 경우엔 \(Z\)축에 확률 분포가 놓이게 되는거죠. 현실에서는 데이터가 고차원이고 다변수의 경우도 많아 확률 분포를 계산하기가 어려워집니다. 하지만 분포가 복잡하다 해도 결국 관측값을 통해서 \(\theta\) 를 찾아야 된다는 것은 변함이 없습니다. 아래 그림은 \(P(Y \mid X)\) 를 평면도로 좀 더 간단하게 표현한 그림입니다.

분류문제에서는 이런 식으로 분포가 추정된다고 이해하시면 됩니다. 그럼 이제 우리가 마지막으로 알고 싶은 게 있습니다. 머신러닝의 학습을 확률론적 관점으로 해석하는 건 알았는데, 그럼 확률 분포를 알아내면 딥러닝에서는 어떻게 결과값을 뽑아서 라벨 \(Y\)와 비교를 하는걸까요?

딥러닝에선 hidden layer 있는 WeightBias 가 입력값과 연산되어서 결과값을 내고내고 해당 라벨과 비교했습니다. 확률론적 관점에선 위의 그림의 \(Y\)축에는 분명 확률 변수 \(Y\)에 속한 \(y\) 값들이 있을 겁니다. 우리가 가정한 확률분포는 \(X\) 를 고려한 \(Y\)에 대한 분포이고, 그 다음 MLE 를 통해 \(\theta\) 를 업데이트 해줍니다. \(\theta\) 는 확률 분포를 구성하는 변수이지만, 가장 높은 확률을 갖는 확률 변수이기도 합니다. 따라서 \(\theta\) 를 관심사로 둔 확률 변수 \(Y\) 와 동일선상에 놓고 다룰 수 있는거죠. 제대로 학습이 되었다면 그 확률 분포의 \(\theta\) 는 알고자 하는 해당 라벨 \(y\) 와 같은 값을 내보내게 될 것입니다. 우리가 이번 시간에선 정규 분포로 가정해서 하기로 했으니깐 \(\theta\)는 당연히 \(\mu\) 와 \(\sigma\) 겠죠? 편의상 \(\mu\) 만 구하자고 하면 아래와 같습니다.

그리고 나서 여러분들은 얻어낸 \(\theta\) 와 \(Y\)를 적합한 Loss function 을 이용해 계산해주시면 됩니다.

이렇게 해서 우리는 분류문제의 모든 과정을 최대한 확률론적 관점으로 설명을 했습니다. 결국 \(\theta\)를 알아야 한 다는 점에선 기존과 크게 다를건 없습니다. \(\theta\) 를 관심사로 두게 되면 우리는

\[P(Y \mid X) = P_{\theta}(Y \mid X)\]

라고 다시 표현할 수 있습니다. 달라진 부분은 크게 없고 말하는 의미가 조금 달라졌을 뿐입니다. \(P_{\theta}(Y \mid X)\) 을 해석을 하자면 \(X\) 가 주어졌을 때 \(Y\) 가 나올 경우를 최대화 하는 \(\theta\) 를 찾을 거다 라고 이해하면 됩니다. 딥러닝 논문들을 읽다보면 \(P_{\theta}(Y \mid X)\) 의 표현도 자주 나오기 때문에 마무리 하기 전에 잠시 짚어보았습니다.

마치며

지금까지 확률론의 기초적인 개념들을 다시 배우면서 확률론적 관점으로 머신러닝을 해석하는 시간을 가졌습니다. 다음번에 포스팅 할 Variational Autoencoder 개념을 이해하기 전에 알아두기 위한 차원에서 최대한 수식을 사용하지 않고 설명했기 때문에 다소 명확하지 않은 부분도 있을 수도 있습니다. 긴 글 읽으시느라 수고하셨고 피드백 언제든지 환영합니다.

Reference

오토인코더의 모든것

Machine Learning 스터디 Probability Theory

딥러닝을 위한 수학, 확률과 통계

What is the difference between probability and likelihood?

댓글남기기