2025/03 24

[NeurIPS 2022] Structured Energy Network as a Loss Function review

저번에 공부한 SPEN의 한계점을 보완한 뉴립스 2022 paper SEAL에 대해 공부해 보겠다.BackgroundSPEN의 추론 과정은 test-time optimization을 하는데, 추론할 때도 backprop연산을 하며 각 \(y\)를 update 하였다.이런 식으로 추론하는 것을 Gradient based inference라 하며 이 방법은 상당히 느리고 불안정하다. 그래서 SEAL은 task-net과 loss-net으로 나눠 task-net에서는 GBI 없이 정답에 가까운 \(y\)를 바로 출력한다.대신 loss는 energy network를 통해 구조적 의존성을 반영한다.Introduction\(y\)들의 dependency를 모델링하기 위해 많은 방법이 있었다.implicit 하게 de..

Paper review 2025.03.31

[ICML 2016] Structured Prediction Energy Networks

Protein structure 예측과 관련된 연구에 관심이 생겨 structured prediction에 대해 공부해 봐야겠다고 생각했다.2016년 ICML에 publish 된 논문이다. Paper를 review하기 보단 강의 slide가 있어 이 내용을 순차적으로 공부해보려 한다.Background한 입력에 대해 복수의 label을 예측하는 문제인 Multi-label Classification 시 label 간의 관계를 어떻게 잘 파악할지에서 시작한다.다음과 같이 다양하게 label을 예측할 수 있는 것이다.multi-label을 예측하는 방법 중 가장 흔히 쓰이고 편한 것이 Independent Prediction이다.이 prediction은 각 label을 독립적으로 예측하고 라벨 간의 상호작용..

Paper review 2025.03.30

[Machine learning] Bootstrap에 대해 알아보기

BootstrapBootstrap은 resampling 기법으로, 이미 확보된 하나의 데이터셋에서 복수의 새로운 표본을 생성하여 추정량(모델의 파라미터)의 uncertainty를 평가하는 방법이다. 단, 여기서 sampling은 with replacement(복원 추출)로 이뤄진다. resampling을 통해서 예를 들어 100개의 데이터만 가지고도 100+개의 데이터로 추정한 성능을 내는 것이다. bootstrap을 통해 coefficient의 standard error나 confidence interval를 추정할 수 있다. 간단한 예시를 들어보겠다.두 금융자산 \(X, Y\)의 수익률이 있고, 한정된 자금을 \(\alpha\)만큼은 \(X\)에, 나머지\(1-\alpha\)만큼은 \(Y\)에 투자한..

[Diffusion] DDPM에 대해 정리한 내용

개념 설명을 위해 성민혁 교수님 ppt자료를 수정하여 재작성한 것입니다. 앞서 말한 VAE에서 처럼 직접 계산할 수 없기 때문에 하한선(lower bound)을 이용하여 \(log(P_0)\)를 모델링합니다.여기서 먼저 Consistency term부터 살펴보겠습니다.Consistency term은 시점 t에 대해 forward step과 reverse step이 동일하게 만드는 것입니다.하지만 이 경우 보시는 것처럼 2개의 random variables에 대해 계산을 해야 하기 때문에 computaionally 비쌉니다. 계산복잡도를 줄이기 위해 random variables이 2개인 상황을 피할 방법을 찾아야 합니다.그래서 ELBO 식을 Marcov process임을 이용하여 재구성합니다.다음과 같이..

Diffusion 2025.03.28

[Diffusion] VAE (Variational Autoencoder)에 대한 공부

성민혁 교수님 강의를 보고 공부한 내용. 일단 처음 배우면 너무 어지러워서 뭘 배우려하는지, 어떻게 배우려하는지를 중심으로 정리해보았다. VAE가 구하려하는 것 이미지를 생성하려고 하는데, 그 이미지가 생성될 확률을 구하는 것이다. 즉, VAE는 실제 이미지 \(x\)에 대해 \(P(x)\)를 알아내려하는 것이다. 우리가 설계한 모델이 실제 이미지 \(x\)만큼 얼마나 잘 표현하고 있는지를 보는 것이다. 그럼 \(P(x)\)를 구하는 방법에 대해 알아보자.\(Monte-Carlo method\)를 이용해서 구하기먼저, \(Monte-Carlo\) 방법을 이용해서 구할 수있다.다음과 같이 표현할 수있는데구간에 대해 균등하게 random number를 샘플링해서 적분을 근사하는 것이다.하지만 정확도를 높이려..

Diffusion 2025.03.27

[Machine learning] Linear regression, Logistic regression code 구현중 모르거나 헷갈렸던 code 정리

linear regression부터 k-fold validation에 대해 실제 예제(code 구현)를 공부하다가 기억하면 좋을 것 같은 내용에 대해 정리.Linear regression_bias항을 모델에 포함시키기Scalar가 아니라 Matrix form일 때, bias를 따로 처리하면 귀찮아지므로, 모든 샘플의 입력 앞에 1을 붙여서 절편도 가중치 취급을 한다.X = np.hstack((np.ones((X.shape[0], 1)), X))X.shape[0] 즉 row방향으로 1로 채워진 배열을 X앞에 stack 한다.X =[[x11, x12], [x21, x22]]↓ hstack with ones[[1, x11, x12], [1, x21, x22]]Linear regression_data split..

[C++] Pointers and References part 1

Variable과 Memory어떤 variable이 선언될 때, variable을 위한 공간이 memory에 만들어지고 memory의 주소가 variable의 이름과 associate 된다.변수명을 주소처럼 이용하는 것이다.주소는 "&x"으로 접근할 수 있다.PointersPointer는 똑같은 변수이다...(어렵게 생각 no)평범한 변수인데 단지 memory address가 value인 변수이다. 주로 8byte의 크기를 가진다.(integer:4byte, char:1byte) pointer가 어떤 type의 data를 가지고 있느냐에 따라 pointer를 지정하는 방법이 다른데type정보 *변수명=&x;int *ptr=&x;처럼 쓸 수 있다. pointer 변수 ptr이 가리키는 주소에 담긴 valu..

Computing 2025.03.25

[NeurIPS 2019] ViLBERT Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks

Motivation기존에는 Vision modal과 language modal을 같이 한 번에 학습하는 single stream 구조가 많았습니다.이 경우 각 modal뿐 아니라 두 modal에 대한 관계도 잘 학습하기 어려웠고 visual grounding이 필요한 task에 대해서 성능이 좋지 않았습니다. 그래서 이 paper에서는 각각의 modal를 잘 학습하고 두 modal의 관계 또한 잘 학습하여 visual grounding이 필요한 task를 잘하는 모델을 만드는 것이 목표입니다. 또한 이러한 visual grounding이 pretrain이 가능하고 transfer learning도 가능하다는 점을 보여줍니다.Approach첫 번째로 보면 visual stream과 language stre..

Paper review 2025.03.24

[Machine learning] Test error를 추정하는 방법 (K-fold cross validation)

train error와 test error의 관계는 어떻게 될까?모델을 만들었을 때, 최종 목표는 test error를 줄이는 것이다.학습할 때는 test dataset을 볼 수 없으며 이용해서도 안된다. 그럼 어떻게 test error를 낮추고 확인할 수 있을까?오늘 공부할 내용은 test error를 추정하고 이를 낮출 수 있는 방법이다.Training Error vs Test Errortrain dataset과 test dataset은 기본적으로 같은 분포고 특별히 뭐가 어렵고 쉬운 것은 아니다.test error는 학습 때 사용하지 않은 새로운 관측치에 대해 예측하여 발생하는 error이다.반면에 train error는 train할 때 본 관측치에 대해 발생하는 error이다. 단지, 학습할 때 ..

[빅데이터 및 지식관리시스템] SQL의 기본연산에 대해 알아보기(Join에 대해 모든 공부..)

SQL과 같은 실제 질의 언어가 어떤 수학적 기초 위에 구축되어 있을까?? SQL언어는 Relational Algebra와 Relational Calculus에 근간하여 만들어졌다. Relational Algebra실제 SQL 질의 실행 계획을 표현하는 것으로 operational 하고 procedural 한 성격을 띤다.일련의 연산을 사용해 데이터를 조작한다. Relational Calculus사용자가 query에 대해 how to coplete it을 보는 것보다 what they want를 보는 것이다.따라서, non-operational 하고 declarative 하다. RA와 RC는 전환이 가능하며 표현력이 비슷하다. Relational AlgebraAlgebra는 mathematical sys..

Computing 2025.03.22