ML model(6)
-
Variational AutoEncoder(VAE, Multi-VAE)
VAE의 특징은 z(latent vector)생성 시, linear layer를 통과하여 나온 벡터 내의 값(스칼라) 뿐만 아니라 해당 값의 평균과 분산 정보까지 포함시키는 것이다. - 이때 input으로 제공된 모든 값은 정규분포를 따른다고 가정한다. VAE 구현방법에는 여러가지가 있을 수 있지만 간단하게 두 가지를 소개하려고 한다. 1) encoder에 의해 생성되는 z의 크기를 두배로 하여 mu, logvar로 나누는 방법 2) z를 생성하는 linear layer를 두개 설정하여 mu,logvar를 각각 생성하는 방법. 필자는 무비렌즈 데이터로 영화 추천이라는 테스크를 수행했는데 1번 방법의 성능이 훨씬 좋았다. import torch.nn as nn import torch.nn.functiona..
2024.02.21 -
Denoising AutoEncoder(DAE, Multi-DAE)
실제 데이터는 noise가 낀 데이터일 확률이 높다. 따라서 AutoEncoder에 비해 더욱 강건한 모델을 만들고자 input 데이터에 인위적인 noise를 추가하고, 모델이 해당 noise를 제거(denoising)하여 원래 input을 재건할 수 있도록 학습한다. Denoising 방법으로는 두 가지가 있다. 1) Gaussian(정규 분포)로 부터 추출한 랜덤 값을 각 pixel에 더해주는 방법 2) Dropout을 이용하는 방법 **Denoising AutoEncoder는 input 단계에서 noise를 추가하는 것. import torch.nn as nn import torch.nn.functional as F import torch import numpy as np class DAE(nn.M..
2024.02.19 -
AutoEncoder (for Recommend System)
AutoEncoder는 기본적으로 주어진 벡터(이미지)를 가장 잘 표현하는 저차원을 구하기 위한 모델로 이해하면 좋다. 즉 encoder를 통해 생성된 compressed representation는 decoder를 통해 원래의 벡터(이미지)로 복원되며, 가장 loss가 적은 최적의 표현이 되도록 학습된다. 추천 시스템에서 AutoEncoder는 어떻게 사용될 수 있을까? user-item interaction matrix를 생성하여 접근해볼 수 있다. - 이때 interaction으로 구매 내역, 방문 페이지, 검색 기록 등 Implicit feedback 정보를 사용하기도 한다. import torch.nn as nn import torch.nn.functional as F import torch i..
2024.02.19 -
(GCN) Graph Convolution Network
input : edges, labels from torch_geometric.nn.models import LightGCN edges = [ [node_id1, node_id2], [node_id1, node_id3], [node_id2, node_id10], ... ] labels = [1,0,0,1,1,1, ...] # for link prediction model = LightGCN(num_nodes=n_node, **kwargs) pred = model(edges) loss = model.link_pred_loss(pred=pred, edge_label=labels) prob = model.predict_link(edge_index=edges, prob=True) acc = accuracy_sco..
2024.01.25 -
GBM(XGB, LightGBM, Catboost)
GBM(Gradient Boosting Model) : Tree 기반의 모델. - Gradient Descent(경사하강법)을 사용한 boosting(앙상블 알고리즘) 기법 - Adaboost는 오 분류에 대해 weight를 조절하여 bootstrap을 생성했다면 GBM은 전체적인 residual(잔차)에 대해 minimize하는 방식으로 진행. Gradient Descent(=negative gradient) - 즉 gradient(기울기)가 감소하는 방향(-)으로 학습을 진행하므로 negative라는 말을 씀. - loss function이 MSE라고 일 때 negative gradient를 구해보자. Gradient Desent가 결국 residual과 식이 똑같다..!(=결국 loss를 표현한 것..
2024.01.22 -
Ensemble(bagging, boosting)
Ensemble: 여러 모델을 학습하여 오류의 감소를 추구함. - "No free lunch" : 특정 문제에 최적화된 모델이 다른 문제에서는 그렇지 않음을 수학적으로 정리. - 따라서 어떤 알고리즘도 모든 상황, 모든 데이터에서 절대적으로 우위에 있지 않음. ex) bootstrap을 통해 원본 dataset으로부터 T개의 subset을 만들고, 각 subset별 다른 모델(T개)을 학습하여 predict값 T개 추출 - T개의 predict값을 Voting(voting, weight voting, stacking 등등 기법 여러가지)하여 최종 predict 생성하는 기법. **개별 모델의 평균 오류보다 앙상블의 오류가 같거나 작음. - 즉 가장 최적화 모델보다 뛰어난지는 알 수 없으나 개별 모델들의 ..
2024.01.22