전체 글 63

LoRA (적은 파라미터로 거대 모델 파인튜닝하기)

논문: Hu et al., "LoRA: Low-Rank Adaptation of Large Language Models" (2021)링크: https://arxiv.org/abs/2106.09685 모델이 수백억 파라미터로 커지면서, 하나를 통째로 파인튜닝하는 건 너무 비싸졌다. 오늘은 그 비용을 확 줄인 "LoRA"를 읽어 보았다. 지금 오픈소스 모델을 각자 입맛에 맞게 튜닝할 때 거의 기본으로 쓰이는 방법이다. 1. Abstract 한 줄 요약 : 큰 모델을 전부 파인튜닝하면, 모델 하나 크기만큼의 가중치를 새로 저장해야 함 - 비용이 큼: LoRA는 원래 가중치를 얼리고(freeze), 각 층에 작은 "저차원 행렬"만 끼워 넣어 그것만 학습함: 그 결과 GPT-3 기준 학습 파라미터를 약 1만분의..

Paper/LLM 2026.10.03

SQL 문제풀이 (2) GROUP BY와 HAVING - 집계, 그룹별 조건

"카테고리별 매출 합계", "고객별 주문 횟수"처럼 그룹마다 숫자를 내는 일은 분석에서 늘 나온다. 이때 쓰는 게 GROUP BY와 집계 함수. 이번 글은 GROUP BY의 구조와 HAVING을 정리하고, 문제 세 개를 직접 풀어 본다. 1. GROUP BY 개념 정리 : GROUP BY - 지정한 열의 값이 같은 행끼리 묶어, 그룹마다 한 줄로 집계함: 집계 함수 - 묶인 그룹에 적용함 (COUNT 개수, SUM 합, AVG 평균, MAX/MIN 최대/최소): SELECT에는 "그룹 기준 열"과 "집계 함수"만 올 수 있음 - 그 외 열을 그냥 넣으면 안 됨: 그룹 기준이 여러 개면 열을 쉼표로 나열함 (조합마다 한 그룹) 2. WHERE와 HAVING의 차이 조건을 거는 자리가 두 군데라 헷갈리기..

머신러닝 기초 (2) 결정트리와 랜덤포레스트

지난 글에서 지도학습의 큰 갈래를 봤다. 이번엔 가장 직관적인 지도학습 모델인 결정트리와, 그걸 여러 개 묶어 성능을 끌어올린 랜덤포레스트를 정리한다. 1. 결정트리 - 질문을 이어 가며 나눈다 : 데이터를 "예/아니오" 질문으로 계속 쪼개 가며 답을 내는 모델임 : 예를 들어 타이타닉이면 "여성인가?" → "3등급인가?" → "나이가 10세 미만인가?" 식으로 가지를 침 : 각 질문(분기)에서 데이터가 가장 깔끔하게 둘로 나뉘는 기준을 고름 : 맨 아래 잎(leaf)에 도달하면 그 그룹의 다수 쪽으로 예측함 2. 무엇을 기준으로 나누나 : "깔끔하게 나뉜다"를 수치로 재는 기준이 필요함 - 불순도(impurity) : 지니 불순도, 엔트로피 같은 값으로, 한 그룹에 한 종류만 모일수록 낮아짐..

AI/Basic 2026.10.02

데이터 심화 - 분류 평가지표 (정밀도, 재현율, F1, ROC)

지난 타이타닉 글에서 "정확도 80.4%"라고 했지만, 분류를 제대로 보려면 정확도 하나로는 부족하다. 이번 글은 혼동행렬에서 출발해 정밀도, 재현율, F1, ROC까지 정리한다. 1. 왜 정확도만으로는 부족한가 : 정확도 - 전체 중 맞힌 비율. 직관적이지만 함정이 있음 : 암 환자 1%를 찾는 문제에서 "모두 정상"이라 찍으면 정확도 99%가 나옴 - 정작 환자는 한 명도 못 찾았는데도 : 이렇게 한쪽이 드문(불균형) 문제에서는 정확도가 성능을 과대평가함 : 그래서 "무엇을 맞히고 무엇을 틀렸는지" 쪼개서 봐야 함 2. 혼동행렬 - 모든 지표의 출발점 예측과 실제를 2x2로 나눠 보는 표임. 양성(찾으려는 것)을 기준으로 네 칸으로 나뉨.: TP(진짜양성,TruePositive) - 양성을..

캐글 미니 프로젝트 (1) 타이타닉 생존 예측 - EDA부터 로지스틱 회귀까지

캐글 입문 대표 문제인 타이타닉으로 작은 프로젝트를 돌려 본다. 데이터를 뜯어 보고(EDA), 간단한 로지스틱 회귀로 생존을 예측해 본다. 코드를 실제로 돌려 나온 수치, 그래프로 정리한다. 1. 데이터 불러오기 seaborn 내장 타이타닉 데이터를 씀. 캐글 train.csv와 같은 891명 데이터임. import seaborn as snsdf = sns.load_dataset("titanic")print(len(df), df["survived"].mean()) # 891, 0.384: 전체 891명 중 생존율은 약 38.4%였음 : 즉 그냥 "다 죽었다"고 찍어도 61.6%는 맞음 - 이게 기준선(baseline)임 2. 데이터 컬럼 이해 분석을 시작하기 전에, 각 컬럼이 무슨 뜻인지부..

InstructGPT (사람 피드백으로 LLM을 정렬하기)

논문: Ouyang et al., "Training language models to follow instructions with human feedback" (2022) 링크: https://arxiv.org/abs/2203.02155 지난 리뷰의 GPT-3는 크고 유창했지만, 사용자의 지시를 고분고분 따르는 것과는 조금 달랐다. 오늘은 그 간극을 사람 피드백으로 메운 "InstructGPT"를 읽어 보았다. 지금 챗봇들이 쓰는 RLHF의 뼈대가 된 논문이다. 1. Abstract 한 줄 요약 : 큰 언어모델이 꼭 사용자가 "원하는" 답을 주지는 않음 - 지시를 무시하거나, 틀린, 해로운 답을 내기도 함 : InstructGPT는 사람 피드백을 이용한 강화학습(RLHF)으로 모델을 사용자 의도에 맞..

Paper/LLM 2026.10.01

머신러닝 기초 (1) 지도학습과 비지도학습

머신러닝을 처음 정리할 때 가장 먼저 잡아야 할 큰 갈래가 지도학습과 비지도학습이다. 이 구분을 알면 어떤 문제에 어떤 방법을 쓸지 감이 잡힌다. 이번 글에서 그 뼈대를 정리한다. 1. 머신러닝이란 : 규칙을 사람이 일일이 짜는 대신, 데이터에서 패턴을 스스로 찾게 하는 방법임 : 찾은 패턴(모델)으로 새 데이터를 예측하거나 구조를 파악함 : 크게 지도학습, 비지도학습, 강화학습으로 나뉨 2. 지도학습 - 정답을 보고 배운다 : 입력(x)과 정답(y)이 짝지어진 데이터로 학습함 - 정답표(label)가 있음 : 모델은 x에서 y를 맞히는 규칙을 배우고, 새 x에 대해 y를 예측함 : 예를 들어 사진과 "고양이/개" 라벨로 학습해, 새 사진의 종류를 맞히는 식 : 정답 유형에 따라 나뉨 - 분류(범..

AI/Basic 2026.09.30

SQL 문제풀이 (1) JOIN - INNER, LEFT, 자기조인

데이터가 여러 표에 나뉘어 있으면 JOIN으로 이어 붙여야 함. 이번 글은 JOIN의 종류를 정리하고, 자주 나오는 문제 세 개를 직접 풀어 본다. 1. JOIN 개념 정리 : JOIN - 공통 열(키)을 기준으로 두 표의 행을 옆으로 이어 붙이는 것 : INNER JOIN - 양쪽에 다 있는 키만 남김 (교집합) : LEFT JOIN - 왼쪽 표는 전부 남기고, 오른쪽에 짝이 없으면 NULL로 채움 : RIGHT JOIN - 반대로 오른쪽 표를 전부 남김 : FULL OUTER JOIN - 양쪽을 모두 남김 (합집합) 2. 예제 테이블 두 표를 놓고 문제를 풀어 봄. : customers(고객) - id, name : orders(주문) - id, customer_id, amount 3. ..

GPT-3 (Language Models are Few-Shot Learners)

논문: Brown et al., "Language Models are Few-Shot Learners" (2020), NeurIPS 링크: https://arxiv.org/abs/2005.14165앞선 리뷰에서 트랜스포머와 BERT를 봤다. BERT가 인코더로 문맥을 이해하는 쪽이었다면, 오늘은 디코더로 다음 단어를 생성하는 쪽, "GPT-3"를 읽어 보았다. 파인튜닝 없이 예시 몇 개만 보여줘도 과제를 푸는 few-shot 학습을 보인 논문이다. 1. Abstract 한 줄 요약 : GPT-3는 트랜스포머 디코더를 매우 크게 키운(1750억 파라미터) 언어모델임 : 특정 과제로 파인튜닝하지 않고, 프롬프트에 예시 몇 개만 넣어도 과제를 수행함 : 번역, 질의응답, 상식 추론 등 다양한 과제에서, ..

Paper/LLM 2026.09.29

데이터 분석 (8) pandas 전처리 패턴 정리 - groupby, merge, pivot

분석의 대부분은 사실 전처리에서 시간이 든다. 이번 글은 pandas에서 특히 자주 쓰는 세 가지, groupby, merge, pivot을 한 번에 정리한다. 데이터분석 기초 시리즈의 마지막 편이다. 1. groupby - 나눠서 집계하기 : 어떤 기준으로 행을 그룹으로 나눈 뒤, 그룹마다 집계값을 구하는 패턴임 : 동작은 세 단계로 나뉨 - 나누고(split), 각 그룹에 함수 적용(apply), 결과를 합침(combine) : 예를 들어 지역별 평균 매출은 df.groupby("지역")["매출"].mean() 형태로 구함 : 여러 집계를 한 번에 하려면 .agg(["sum", "mean"])처럼 묶어서 씀 2. merge - 두 표를 키로 붙이기 : 공통 열(키)을 기준으로 두 데이터프레임을..