목록AI 일반 (25)
토니의 연습장
기존 모델(RNN, LSTM 등)은 앞에서부터 순차적으로 데이터를 처리했는데,Transformer는 입력 데이터를 한 번에 병렬로 처리할 수 있어서 성능과 효율성이 뛰어남병렬처리 가능장거리 문맥 이해 능력 탁월Attention 메커니즘 기반 Encoder: 입력 문장을 표현(Embedding)을 통해 이해하고 정보를 압축함.Decoder: Encoder에서 압축된 정보를 바탕으로 새로운 문장을 생성함.
📌 F1 Score란?F1 Score는 **Precision(정밀도)**과 **Recall(재현율)**의 **조화 평균(harmonic mean)**으로 계산되며, 불균형한 데이터셋에서 모델의 성능을 평가할 때 중요한 지표입니다.F1=2×Precision×RecallPrecision+RecallF1 = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}F1=Precision+Recall2×Precision×Recall이 공식은 Precision과 Recall을 균형 있게 반영하여, 둘 중 하나가 너무 낮을 경우 전체 점수도 낮아지도록 설계되었습니다.🚀 Precision (정밀도)Precision..
보호되어 있는 글입니다.
🚩 핵심 요약SGD(Stochastic Gradient Descent) vs Adam(Adaptive Moment Estimation)구분SGD (확률적 경사 하강법)Adam (적응형 모멘트 추정)핵심 아이디어단순히 Gradient 방향으로 조금씩 움직이는 기본적인 방식Gradient의 Momentum 및 Adaptive learning rate 사용학습 속도비교적 느림. 최적의 지점을 찾기까지 시간이 오래 걸릴 수 있음상대적으로 빠름. 더 빨리 최적 지점으로 수렴하는 경향이 있음Learning Rate고정값 (수동으로 조정 필요)학습 도중 자동 조정 (적응형 learning rate)Momentum 사용기본적인 SGD에는 없음 (Momentum SGD는 별도의 기법)Momentum 개념 포함 (과거의..

출처 : https://youtu.be/i5ZSURAoAfI너무 업데이트가 오래 걸리는 단점 해결 위해 stocastic gradient descent 가 나옴 📌 구체적 원리 (Gradient 계산 과정)좀 더 직관적으로 살펴보자면,전체 데이터가 1,000,000개 있다고 해봐.Batch Gradient Descent는 매번 1,000,000개의 모든 데이터를 계산해서 Gradient를 구한 뒤 한 번 업데이트.SGD는 매번 랜덤하게 1개 또는 10개 정도의 데이터만 가지고 Gradient를 구한 뒤 한 번 업데이트.이렇게 하면:방식1회 업데이트 시 데이터 수업데이트 속도1 epoch 당 업데이트 횟수Batch Gradient Descent1,000,000개매우 느림1번Mini-batch SGD (일..

1. Data (preparing and loading) 2. Build model3. Train model PyTorch training loop PyTorch testing loop 4. Inference# 1. Set the model in evaluation modemodel_0.eval()# 2. Setup the inference mode context managerwith torch.inference_mode(): # 3. Make sure the calculations are done with the model and data on the same device # in our case, we haven't setup device-agnostic code yet so our data a..
model 로 train 및 test 한 후에 train/test loss value 를 출력하고자 할 때, PyTorch 텐서(requires_grad=True) 상태에서 바로 NumPy 배열로 변환하려고 하기 때문에 발생합니다. Matplotlib에서 데이터를 플롯할 때는 numpy(), item(), 또는 해당 텐서를 분리(detach())해서 넘겨주어야 합니다. 이렇게 하면 텐서 자체를 유지하면서도 NumPy로 변환할 수 있습니다.loss_values.append(loss.detach().numpy())# 혹은 CPU로 먼저 보낼 경우loss_values.append(loss.detach().cpu().numpy()) 그런데 가장 출력 등의 용도로 사용하기 위해 간단하고 편리한 방법은, 스칼라 텐..
class CastOutputToFloat(nn.Sequential): def forward(self, x): return super().forward(x).to(torch.float32)model.lm_head = CastOutputToFloat(model.lm_head) 모델의 출력이 32비트 정밀도로 반환되도록 하기 위해 CastOutputToFloat 클래스를 정의하고, lm_head의 출력을 32비트로 변환하여 안정적인 출력이 가능하도록 합니다.이 코드를 통해 모델은 메모리 사용량을 최소화하면서 8비트 정밀도로 로드되고, 파라미터를 동결하여 일부 파라미터만 훈련이 가능하도록 설정되었습니다.위 코드에서 super().forward(x) 호출의 이유는 CastOutputToFloat 클래스가 ..