欲速不達

일을 급히 하고자 서두르면 도리어 이루지 못한다.

Fantastic AI, Fantastic World
728x90
반응형

DS | Data Science/ML | Machine Learning 20

[ML basic] GNN : Graph Neural Networks

1. Graph란? 그래프(Graph)란, 꼭지점(node)들과 그 노드를 잇는 선(간선, edge)들을 사용하여 데이터를 표현하는 자료구조이다. edge에 따라 다음과 같은 종류로 나뉘어진다. 방향 유무 directed / undirected 가중치 유무 weighted / unweighted [ Graph를 사용하는 이유 ] 관계, 상호작용과 같은 추상적인 개념을 다루기에 적합하다. 복잡한 문제를 더 간단한 표현으로 단순화할 수 있다. 소셜 네트워크, 바이러스 확산, 유저-아이템 상호작용 등을 모델링할 수 있다. Non-Euclidean Space의 표현 및 학습이 가능하다. 흔히 다루는 이미지, 텍스트, 정형데이터는 격자 형태의 데이터로 표현 가능하다. SNS 데이터, 분자(molecule) 데이터..

[ML basic] Bias & Variance

1. 정의 일반적으로, bias는 모델을 통해 얻은 예측값과 실제 정답과의 차이의 평균을 나타낸다. 즉, 예측값이 실제 정답값과 얼만큼 떨어져 있는지를 나타낸다. 만약 bias가 높다고 하면 그만큼 예측값과 정답값 간의 차이가 크다고 말할 수 있다. $$Bias[\hat{f}(x)]=E[\hat{f}(x)-f(x)]$$ variance는 다양한 데이터 셋에 대하여 예측값이 얼만큼 변화할 수 있는지에 대한 양(Quantity)의 개념이다. 이는 모델이 얼만큼 flexibility를 가지는 지에 대한 의미로도 사용되며, 분산의 본래 의미와 같이 얼만큼 예측값이 퍼져서 다양하게 출력될 수 있는 정도로 해석할 수 있다. $$Var[\hat{f}(x)]=E[(\hat{f}(x)-E[\hat{f}(x)]^{2})]..

[ML Statistics] KL Divergence

KL Divergence는 쉽게 말해 '두 분포 사이의 거리'를 말한다. KL Divergence을 이해하기 전에 Cross Entropy (CE)를 먼저 간단하게 정리해보자. 1. Cross Entropy 1-1) Binary Cross Entropy binary의 경우는 출력값이 0 또는 1의 두 가지로 있을 수 있다. 예를 들어, 어떤 데이터(키, 몸무게 등)에서 남자 또는 여자로 분류하는 출력을 얻기 위해서는 결과를 0과 1로 표현할 수 있게 된다. target 값을 y, 예측값이 y^이라고 했을때 Binary Cross Entropy는 위와 같은 수식이 된다. 이때, y와 y^은 경우의 수로 y = 0 또는 1, y^ = 0 또는 1이며, 조합의 수는 4가지 경우가 된다. 1-2) Cross E..

[DL Basic] Transformer : Attention Is All You Need

시퀀스 데이터는 순서와 문맥 등이 바뀌면 의미가 달라지기 때문에 모델링하기가 까다롭다. 이러한 누락된 정보를 가진 시퀀스 데이터를 모델링하기 위해 고안된 방법이 Transformer이다. 1. Transformer Transformer의 가장 큰 특징은 recurrent하게 모델이 반복되지 않고, attention을 활용하여 context 정보를 반영할 수 있게 구현한 것이다. Transformer의 구조는 크게 encoder와 decoder로 구성되어있고 encoder 부분에서 self-attention으로 input 데이터의 representation(Q,K,V)을 추출한다. 그 후 추출한 representation에서 K, V와 decoder에 적용하여 직전 스텝의 output을 input으로 하여..

[DL Basic] LSTM : Long Short Term Memory

일반적으로 많이 보게 되는 차트 데이터와는 다르게 Sequence 데이터는 문맥 혹은 순서 등에 따라 의미가 달라질 수 있다. 가령. 말을 할때, 주어, 목적어, 서술어 등의 요소 중 어떤 한 요소를 누락시켜서 말하거나 순서가 뒤섞여서 말을 한다거나 했을 때 의미가 달라지는 것이 하나의 예이다. 그렇기 때문에 Sequence 데이터를 다루는 머신러닝 모델은 이러한 context 정보(문맥, 순서 등)를 반영하기 위해서, 과거의 데이터를 종합적으로 고려하여 다음 글자를 예측하는 방식을 취한다. 하지만 이때 데이터의 길이가 길어지게 되면 과거 데이터의 누적값이 매우 커지게 되어 여러 문제가 발생할 수 있다. 이러한 문제를 해결하고자 고안된 방법이 RNN이다. 1. RNN RNN은 누적되는 과거데이터를 단순화..

[DL Basic] Optimization 최적화 - 3 : Regularization

1. Regularization 1-1) Early Stopping Early stopping는 앞선 최적화 - 1에서 언급한 Generalization 문제에서 Generalization gap에 대한 방법이다. iteration이 커질수록 test error는 줄어들다가 어느 지점에서 다시 상승하는 모양을 보일 수 있고, 이렇게 되면 gap이 다시 커지는 걸 볼 수 있다. 이때 gap을 유지하기 위해서 iteration을 멈추는 방법이 Early Stopping이다. 1-2) Parameter Norm Penalty Parameter Norm Penalty는 목적함수가 되는 loss function에 parameter norm penalty를 추가하여 모델의 크기 등을 제한하는 것에서 나오는 아이디어..

[DL Basic] Optimization 최적화 - 2 : Gradient Descent

1. Gradient Descent Method 1) Stochastic Gradient Descent : SGD vs Mini-batch Gradient Descent vs Batch Gradient Descent SGD는 확률적으로 gradient를 업데이트하는 방식이다. 이는 데이터 하나에 대해 gradient를 업데이트하는 방법이고, 모든 데이터에 대해서 업데이트하는 기존의 Gradient Descent 방법보다는 모델의 Generalization에서 좋은 성능을 보여주었다. 하지만 실제로 모델을 학습할때는 resource적인 측면에서도 효율적이어야하는데 SGD는 모든 데이터에서 하나하나의 확률적인 업데이트를 실행하기 때문에 비효율적이었고, 이에 batch를 추출하여 업데이트하는 방법이 등장하였다..

[DL Basic] Optimization 최적화 - 1 : Basic

1. Optimization의 중요성 Optimiaztion(최적화)는 머신러닝 관점에서 몇 가지 논점에서 바라 볼 수 있다. 1) 일반화 (Generalization) 2) 과대적합 vs 과소적합 (Ovefitting vs Underfitting) 3) 교차검증 (Cross Validation) 4) 편향-분산 트레이드오프 (Bias-Variance Tradeoff) 5) 부트스트래핑 (Bootstrapping) 6) 배깅과 부스팅 (Bagginf and Boosting) 1-1) 일반화 (Generalization) Generalization라고 하면 일반적으로 train error는 학습과정에서 계속해서 작아짐에 따라, test error도 줄어들었을 때 학습이 잘 되었으며, Generalizati..

[ML] Transfer Learning and Hyper Parameter Tuning

머신러닝 이론을 공부하고 실제 문제를 머신러닝으로 해결하려고 할때, 직면하는 문제 중 하나가 '미리 학습된 모델들이 많은데, 그 모델을 활용할 수 없을까'이다. 만약 다른 사람들이 학습시켜놓은 머신러닝 모델들을 활용할 수 없고 backbone 모델 정도만 불러와서 매번 새로 학습하거나 한다면 AI 분야가 이렇게까지 발전할 수 없을 것이다. Transfer Learning은 이러한 문제를 해결하기 위해 미리 학습된 모델(Source Model)을 내가 풀려는 문제의 데이터로 학습한다는 뜻이다. 간단하게 남이 만든 모델에 내가 가진 데이터를 학습시킨다는 말인데, 쫌 더 자세히 알아보자. 1. Transfer Learning : 전이학습 Transfer learning은 우선 Source Task를 지정해야 ..

[Pytorch] hook & apply

1. hook hook은 패키지화된 코드에서 custom 코드를 중간에 실행시킬 수 있도록 만들어 놓은 인터페이스이다. 주로, 아래와 같은 경우에 사용한다. 프로그램의 실행 로직을 분석 프로그램에 추가적인 기능을 제공 def program_A(x): print('program A processing!') return x + 3 def program_B(x): print('program B processing!') return x - 3 class Model_Package(object): def __init__(self): self.programs = [program_A, program_B] ################################################# self.hooks = [..

728x90
반응형