[Diffusion] ELBO
·
AI/Diffusion
Diffusion 이해를 위한 사전 지식 3들어가기 전생성 모델이 하고 싶은 일은 결국 실제 데이터분포 $p_{\text{data}}(x)$를 알아내는 것이다. 하지만 이 분포는 직접 볼 수 없고, 실제 다룰 수 있는 것은 그 분포에서 뽑힌 샘플(데이터셋)이다. 따라서 파라미터 $\theta$를 가진 모델 $p_\theta(x)$를 세우고 이 모델이 실제 분포를 최대한 닮도록 만드는 방향으로 접근한다.앞서 본 KL divergence로 두 분포의 차이를 측정할 수 있고, 실제 데이터 분포와 모델 사이의 KL을 줄이는 것은 데이터에 대한 로그 우도를 최대화하는 것과 같다. 그래서 학습의 목표는 데이터 하나에 대해 $\log p_\theta(x)$를 크게 만드는 것이 된다.문제는 복잡한 데이터를 표현하기 위..
[Diffusion] Importance Sampling
·
AI/Diffusion
Diffusion 이해를 위한 사전 지식 2어떤 분포 p에서 기대값을 구할 때, p에서 직접 샘플을 뽑기 어렵거나 비효율적일 때, 다른 분포 q에서 샘플을 뽑은 뒤 가중치를 곱해 보정하는 기법$$\mathbb{E}_{x\sim p}[f(x)] = \int f(x)\,p(x)\,dx$$구하고자 하는 값은 $x$가 분포 $p$를 따라 무작위로 나올 때 $f(x)$의 기댓값이다.$f(x)$의 기댓값은 각 $x$에서의 함수값 $f(x)$ 와 $x$가 나올 가능성(확률 밀도) $p(x)$를 곱해 모든 $x$에 대해 더한(가중 평균한) 값이다.$$\int f(x)\,\frac{p(x)}{q(x)}\,q(x)\,dx = \mathbb{E}_{x\sim q}\left[f(x)\,\frac{p(x)}{q(x)}\righ..
[Diffusion] 정보 이론(KL divergence)
·
AI/Diffusion
Diffusion 이해를 위한 사전 지식 11.1 정보량$$I(x) = -\log_2 p(x)$$놀람의 정도. 일어날 확률이 낮은 사건일수록 그 사건이 일어났다는 사실이 더 많은 정보를 담고 있다는 의미이다.1.2 엔트로피$$H(X) = -\sum_{x \in \mathcal{X}} p(x) \log_2 p(x)$$확률 변수의 평균 정보. 불확실성의 크기이다.양면이 공정하게 나오는 동전은 엔트로피가 최대(1)이 되고, 앞면만 나오는 동전은 엔트로피가 0이 된다.2. 두 변수의 정보2.1 결합 엔트로피정의$$H(X, Y) = -\sum_{x, y} p(x, y) \log_2 p(x, y)$$두 사건 x, y가 동시에 일어났을 때의 정보량은 $I(x, y) = -\log_2 p(x, y)$이다. 결합 엔트로..
Adam 구현 분석(PyTorch)
·
AI
github주소: pytorch/…/cuda사전 지식CUDA 프로그래밍1. Host/ Device / KernelHost: CPU 부분device: GPU 부분kernel: GPU에서 실행되는 함수kernel이 일반 함수와 다른 점은 한 번 호출(launch)하면 같은 코드를 수만 개의 스레드가 동시에 실행한다. 스레드마다 자기 번호가 다르기 때문에, 각자 배열의 다른 부분을 처리하게 만들 수 있다. 이때 CPU는 launch만 걸어두고 결과를 기다리지 않고 다음 job을 수행한다.(비동기)2. 스레드 계층: grid → block → thread 그리고 warp__global__ void add(float* a, float* b, float* c) { int i = blockIdx.x * bloc..
LoRA 코드 분석(HuggingFace)
·
AI
https://tae-jun.tistory.com/30 LoRAhttps://arxiv.org/pdf/2106.09685 거대 언어 모델을 적은 비용으로 파인튜닝하기 위한 방법서론많은 NLP 응용은 하나의 대규모 사전학습 모델을 여러 다운스트림 태스크에 맞게 파인튜닝하는 방식에 의tae-jun.tistory.com https://tae-jun.tistory.com/31 LoRA 코드 분석(Microsoft)microsoft LoRA 코드 GitHub - microsoft/LoRA: Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models"Code for loralib, an implementation..
LoRA 코드 분석(Microsoft)
·
AI
microsoft LoRA 코드 GitHub - microsoft/LoRA: Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models"Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models" - microsoft/LoRAgithub.comLoRA 이론GPT-2, RoBERTa, DeBERTa-v2에 대한 정의만 존재레이어 정의$$h=W_{0}x + (\alpha/r)\cdot B(Ax)$$$$W_0: d\times k\ \ \ \ B: d\times r\ \ \ \ A: r\times k\ \ ..
LoRA
·
AI
https://arxiv.org/pdf/2106.09685 거대 언어 모델을 적은 비용으로 파인튜닝하기 위한 방법서론많은 NLP 응용은 하나의 대규모 사전학습 모델을 여러 다운스트림 태스크에 맞게 파인튜닝하는 방식에 의존한다. 파인튜닝은 모델의 모든 파라미터를 업데이트하므로, 새 모델도 원래 모델과 파라미터 수가 같다. 모델이 커지면서 이는 GPT-2, RoBERTa-large에서는 불편함 수준이었지만, GPT-3에서는 태스크마다 175B 사본을 저장하고 배포해야 하는 심각한 문제가 되었다.모델파라미터 수RoBERTa-base125MRoBERTa-large355MGPT-2-large774MGPT-3175B이를 해결하기 위해 일부 파라미터만 적응시키거나 태스크별 외부 모듈을 학습하는 방법이 연구되었다. 이..
배치 정규화
·
AI
https://arxiv.org/pdf/1502.03167WhyInternal Covariate Shift딥러닝 학습 중 앞 레이어의 파라미터가 업데이트될 때마다 뒷 레이어의 입력 분포가 계속 바뀐다. 이를 Internal Covariate Shift(내부 공변량 이동)라 한다. 각 레이어는 매 스텝마다 달라진 분포에 적응해야 하므로 학습이 불안정해지고, 이를 보완하기 위해 낮은 학습률과 신중한 초기화가 강제된다.Gradient vanishing / Exploding특히 sigmoid처럼 포화 구간이 있는 활성함수를 쓸 경우, 분포가 불안정하면 입력값이 포화 구간으로 빠져들기 쉽다. sigmoid 도함수의 최댓값은 0.25이므로, 역전파 시 체인룰에 의해 레이어를 거칠수록 기울기가 기하급수적으로 작아져 ..
[머신러닝] 01. 머신러닝이란?
·
AI
이 글은 스탠퍼드 대학교의 CS229 강의 자료를 바탕으로 작성되었습니다.머신러닝이란?Field of study that gives computers the ability to learn without being explicitly programmed. (Arthur Samuel 1959)컴퓨터가 명시적으로 프로그래밍되지 않고 학습할 수 있는 능력을 제공하는 학문 분야를 의미한다. 인공지능 > 머신러닝 > 딥러닝인공지능의 범주 안에 머신러닝이 포함되고 그 안에 딥러닝이 포함된다. 이 글에서는 머신러닝에 대해 설명한다.머신러닝의 종류지도학습: 훈련 데이터에 레이블이 포함됨비지도학습: 훈련데이터에 레이블이 없음 § 준지도학습: 일부 레이블이 있는 데이터를 사용강화학습: 주어진 환경(environment)에서..
Hailo Data Compiler 사용
·
AI
YOLOv8n 모델을 기준으로 작성된 글입니다.Dataflow 컴파일러 흐름Tensorflow 또는 ONNX 신경망 그래프를 Hailo와 호환되는 표현으로 변환.(har)전체 정밀도 신경망 모델을 8비트 모델로 양자화Hailo 장치에서 실행하기 위해 네트워크를 바이너리 파일(HEF)로 컴파일 parsing1(pt → onnx)yolo export model=./can_plastic.pt imgsz=640 format=onnx opset=11Hailo에서 opset ≤14만 지원 parsing2(onnx → har) hailomz parse --hw-arch hailo8 --ckpt ./small_best.onnx yolov8nyolov8n은 hailo model zoo에서 지원하기 때문에 hailomz..