본문 바로가기

Data/Data Science

(46)
[ML] bf16, fp16, fp32의 차이점 업무를 진행하면서 bf16, fp16, fp32에 대한 정보를 알게되었는데. 왜 사용하는지 그리고 언제 사용하는지에 대해서 좀 정리해보려고한다. https://arxiv.org/abs/1905.12322 -> 관련논문 A Study of BFLOAT16 for Deep Learning Training This paper presents the first comprehensive empirical study demonstrating the efficacy of the Brain Floating Point (BFLOAT16) half-precision format for Deep Learning training across image classification, speech recognition, langu..
[EECS 498-007, Lecture5] Activation Function이 필요한 이유 https://www.youtube.com/watch?v=g6InpdhUblE&list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&index=5 강의를 보는중 다음과 같은 내용이 나오는데 Activation Function이 없다면 결국엔 Linear Classifier라는 뜻인데. 여기서 "수학적으로 본다면"에서 약간 갸우뚱 거렸다. 그래서 검색을 하는과정에 다음과 같은 이미지를 찾게되었는데 직관적으로도 이해가 되겠지만. 부연설명을 하자면 MLP에서 두드러지게 효과가 나타난다고 한다. 즉, 만약에 Activation function이 없다면 Z(x) = (-5x - 7.7) + (-1.2x - 1.3) + (1.2x + 1) + (1.2x - 0.2) + (2x - 1.1) + (5..
[Pytorch] torch.nn layer 함수 정리 (추가정리중) 눈으로만 봐서는 도저히 머리에 안들어와서 블로그에 쓰면서 정리함 pytorch.org/docs/stable/nn.html torch.nn — PyTorch 1.8.1 documentation Shortcuts pytorch.org torch.nn.Linear - 함수 선언시 두개의 인자값이 들어가게되고, 첫번째 인자값은 input size, 두번째 인자값은 output size이다 - 실제로 데이터가 거치는 forward()부분에선 두번째 인자값없이 첫번째 인자값만 넘겨주면된다. return되는 tensor의 크기가 output size가 된다 # Linear layer 선언 linear_1 = torch.nn.Linear(input_size, output_size) # forward 부분 (실제로 데이..
[ML] Clustering 정리 및 DBSCAN Clustering 비지도학습 머신러닝 기법중 하나 클러스터링 종류 Hard Clustering - 한 개체가 여러 군집에 속할수 없는 군집화 방법 Soft Clustering - 한 개체가 여러 군집에 속할수 있는 군집화 방법 Partitional Clustering - 전체 데이터의 영역을 특정 기준에 의해 동시에 구분하는 군집화 방법. 각 개체들은 사전에 정의된 개수의 군집 가운데 하나에 속하게 됨 대표적으로 K-Mean 군집화 Hierarchical Clustering - 개체들을 가까운 집단부터 차근차근 묶어나가는 군집화 방법. *덴드로그램을 생성함 덴드로그램 → 계층적 군집에서 클러스터의 개수를 지정해주지 않아도 학습을 수행할 수 있는 것은 개체들이 결합되는 순서를 나타내는 트리 형태의 구조 ..
[ML] 짜투리정리 Convex, non-Convex Cost Function의 그래프가 Local minimun이 있는지 없는지 여부 Optimization Algorithm Gradient Descent만 있는줄알았는데, 다른 최적화 알고리즘이 있다고하여, 기록차 적음 장점 - 우리가 흔히알고있는 Learning Rate를 따로 지정해줄필요없음 - 때때론 Gradient Descent보다 빠른성능을 자랑 단점 - 계산량이 많음(GD보다) Pytorch 라이브러리(pytorch.org/docs/stable/optim.html) torch.optim.LBFGS(params, lr=1, max_iter=20, max_eval=None, tolerance_grad=1e-07, tolerance_change=1e-09, hist..
[머신러닝] LGBM, XGBoost, GBM LGBM(Light GBM) 데이터셋 작으면 과적합하기 쉽다. 문서상 10,000개 데이터 이상인 데이터셋에 적합 하지만 많은 데이터셋에서는 XGBoost보다 빠른 학습속도, 적은 메모리사용량 카테고리형 데이터에 대해서 원핫인코딩이 필요없이 알아서 인식 기존 GBM과 다른점은 GBM은 균형 트리분할(Level Wise) 방식, LGBM은 리프중심 트리분할(Leaf Wise) 방식 균형 트리분할 : 최대한 균형 잡힌 트리를 유지하며 분할하여 트리의 깊이를 최소화하여 오버피팅에 강한구조이지만 균형을 맞추기 위한 시간이 필요 리프중심 트리분할 : 최대 손실 값을 가지는 리프노드를 지속적으로 분할하면서 트리가 깊어지고 비대칭적으로 생성하며 이로써 예측 오류 손실을 최소화. XGBoost(eXtra Gradien..
[Gradient Descent] 경사하강법 경사하강법 사용 이유 - 함수(딥러닝에서는 Cost Function)의 최소값을 찾는 문제에서 이용 바로 미분 계수가 0인 지점을 찾으면 되지않을까? - 함수가 닫힌 형태가 아닌 경우 - 함수가 너무 복잡해서 미분 계수가 어려운경우엔 경사하강법이 구하기가 더쉬울떄가 있음 - 데이터 양이 너무 많은 경우 효율적으로 계산하기 위해 * 닫힌 형태(closed form)란 방정식(equation)의 해(solution)를 해석적(analytic)으로 표현할 수 있는 종류의 문제를 말한다. 닫힌 형태(closed form)의 반대 개념으로 열린 형태(open form)라는 것도 있다. 열린 형태란 유한 개(finite)의 수학적 표현을 사용해서 정확하게 해를 표현할 수 없는 문제를 말한다. 정리하면 닫힌 형태의 ..
[Pytorch] Autoencoder Base code import torch import torchvision import torch.nn.functional as F from torch import nn, optim from torchvision import transforms, datasets class Autoencoder(nn.Module): def __init__(self): super(Autoencoder, self).__init__() self.encoder = nn.Sequential( nn.Linear(28*28, 128), nn.ReLU(), nn.Linear(128, 64), nn.ReLU(), nn.Linear(64, 12), nn.ReLU(), nn.Linear(12, 3), ) self.decoder = nn.Sequential( ..