Deep Learning(14)
-
Dataset의 기본 구성 요소
Dataset은 DataLoader의 대상이 되는 data 인수에 해당한다. PyTorch에서는 2가지 dataset들을 지원한다. - Map-style datasets = Dataset 클래스 - Iterable-style datasets = IterableDataset 클래스 # Custome Dataset 기본 뼈대 Custome Dataset을 만들기 위해서는 torch.utils.data.Dataset 클래스를 상속해서 만든다. from torch.utils.data import Dataset, DataLoader class CustomDataset(Dataset): def __init__(self, text, labels): # 데이터 위치, 파일명 저장 # 데이터 load # 데이터 처리할 ..
2022.01.28 -
베이즈 정리 란?
조건부 확률을 이용하여 정보를 update하도록 해준다. P(A∩B) = P(B)P(A|B) P(B|A) = P(A∩B)/P(A) = P(B) P(A|B) / P(A) P(theta | D) = P(theta) P(D | theta) / P(D) 사후확률 = 사전확률 * 가능도 likelihood / evidence - 사후확률 : data가 주어질 때, 이 가설이 성립할 확률. data 관찰 이후에 측정하기 때문에 사후확률임. - theta : model에서 계산하고 싶어하는 parameter - D : 새로 관찰되는 data --> confusion Matrix 시각화 가능 --> 인과관계(causality) 추론 함부로 X (data 분포 변화에 강건한 예측모델을 만들 때 필요) 인과관계를 알기 위..
2022.01.22 -
데이터에 따라 확률분포 추정하는 방법
1. histogram으로 데이터 모양 관찰한다. - 어떤 확률분포가 적절한지 - data가 어떻게 생성되었는지 파악한다. 2. 확률분포를 가정한다. data가 2개의 값(0 또는 1)을 가지는 경우 -> 베르누이 분포 n개의 이산적인 값을 가지는 경우 -> category 분포 0 ~ 1 사이의 실수값을 가지는 경우 -> 베타 분포 0 이상의 값을 가지는 경우 -> 연속확률분포를 고려하며, 감마분포/ 로그정규분포 등 실수 전체 값을 가지는 경우 -> 정규분포/ 라플라스분포 등 3. 모수를 추정하고, 통계적으로 검증한다.
2022.01.22 -
모수적 방법론 VS 비모수적 방법론
# 모수적 방법론 적절한 가정을 기반으로, 확률분포를 추정하여 문제를 해결하는 것은 ML과 통계학의 목표다. 하지만 유한한 개수의 데이터 만으로 모집단의 분포를 정확하게 알아내는 것은 사실상 불가능하니, 데이터의 확률분포를 근사적으로 추정할 수 밖에 없다. 이에 따라 데이터가 특정 확률분포를 따른다고 가정한 후, 그 확률분포를 결정하는 모수를 추정하는 방법론을 말한다. # 비모수적 방법론 특정 확률분포를 가정하는 것이 아니라, data에 따라 모델 구조 및 모수의 개수가 유연히 변화하는 방법론을 말한다. ML의 많은 방법론이 이에 해당한다. 모수가 무한히 많거나 data에 따라 무한히 변화하는 경우를 포함한다.
2022.01.22 -
확률분포 추정하는 방법
# 확률론 딥러닝은 확률론 기반의 ML이론에 바탕을 두고 있다. ML에서 loss function(손실함수) 작동 원리가, data를 통계적으로 해석하기 위함으로써 risk를 최소화하기 위한 원리가 확률론의 원리. ex1. 회귀분석에서, L2-norm = error 분산을 최소화하는 방향으로 유도 ex2. 분류문제에서, Cross-entropy = model 불확실성을 최소화하는 방향으로 유도 여기서의 분산이나 불확실성을 측정하는 방법을 통계학에서 찾을 수 있다. 확률변수 종류 - 이산형(discrete) : '특정 경우의 수 / 가질 수 있는 모든 경우의 수' 값으로 모델링 - 연속형(continuous) : 밀도 위에서 적분 값으로 모델링 - 경우에 따라 이산형 혹은 연속형 이 확률변수를 결정짓는 것..
2022.01.22 -
다변수에 대해 미분(differentiation)하는 방법
# 미분(differentiation) sympy : 함수를 symbolic하게 이해하도록 하는 라이브러리 https://docs.sympy.org/latest/index.html import sympy.diff from sympy.abc import x, y 여러 개의 변수에 대해 미분하기 위해서, e_i 벡터를 사용하면 된다. e_i 벡터란, 주어진 값 x_i 가 있을 때에 x_i 에만 영향을 준다. i번째 값만 1이고, 나머지는 0인 단위벡터를 말한다. 따라서 이를 활용하면, 특정 x벡터의 i번째 변수에만 계산을 적용할 수 있다. (=> 편미분) # 그레디언트(gradient) 벡터 각 변수에 대한 편미분을 계산한 벡터. nabla f = ( dx1 f, dx2 f, ... , dxn f ) 주어진..
2022.01.21