시험공부빅데이터분석

낱말사전

139개 · 본문에서 밑줄 친 말을 누르면 여기 뜻이 떠요.

변수Variable
값에 이름표를 붙여 담아 두는 상자예요. x = 3이라고 쓰면 x라는 상자에 3이 들어가요.
리스트List
값 여러 개를 줄 세워 담는 목록이에요. [10, 20, 30]처럼 대괄호로 써요.
인덱스Index
목록에서 몇 번째인지 가리키는 번호예요. 파이썬은 첫 번째가 0번이에요.
슬라이싱Slicing
목록이나 텐서의 일부를 잘라 꺼내는 거예요. a[1:4]는 1번부터 3번까지예요. 끝 번호는 포함하지 않아요.
for 문For loop
같은 일을 여러 번 되풀이하는 문장이에요. 학습할 때 batch를 하나씩 꺼내며 도는 데 써요.
rangerange
숫자 줄을 만들어 주는 함수예요. range(4)는 0, 1, 2, 3이고 끝 숫자는 안 들어가요. range(0, 10, 4)는 0, 4, 8이에요.
함수Function
자주 쓰는 계산에 이름을 붙여 둔 묶음이에요. def로 만들고, 부를 때마다 같은 일을 해요.
매개변수Parameter / Argument
함수에게 넘겨주는 재료예요. add(1, 2)에서 1과 2가 재료예요.
기본값Default value
재료를 안 줬을 때 대신 쓰는 값이에요. def add(a, b=10)에서 b를 안 주면 10이 들어가요.
returnreturn
함수가 계산한 결과를 밖으로 돌려주는 키워드예요. forward도 마지막에 return으로 예측값을 돌려줘요.
f-stringf-string
문자열 앞에 f를 붙이면 중괄호 안의 변수를 값으로 바꿔 줘요. f"{a}"는 a의 값이 들어간 글자가 돼요.
importimport
남이 만들어 둔 도구 상자를 가져다 쓰겠다는 선언이에요. import torch를 하면 torch의 기능을 쓸 수 있어요.
들여쓰기Indentation
줄 앞을 띄워서 '이 줄은 위 문장 안에 속해요'라고 알리는 파이썬의 규칙이에요. for나 def 안쪽 줄은 4칸 들여 써요.
조건문Conditional
조건이 맞을 때만 실행하는 문장이에요. if amount <= self.balance:처럼 써요.
에러Error / Exception
코드가 잘못되어 멈출 때 나오는 메시지예요. 시험에서는 '어떤 에러가 나는지'를 묻기도 해요.
NumPyNumPy
숫자 계산을 빠르게 해 주는 파이썬 도구예요. PyTorch의 텐서와 아주 비슷하게 생겼어요.
Jupyter NotebookJupyter Notebook
코드를 한 칸(셀)씩 실행하며 결과를 바로 보는 공책 같은 프로그램이에요. 파일 이름이 .ipynb로 끝나요.
클래스Class
물건을 만드는 설계도예요. 붕어빵 틀이 클래스, 구워진 붕어빵이 인스턴스예요.
인스턴스Instance / Object
클래스(설계도)로 실제로 만든 물건이에요. 같은 클래스에서 만든 인스턴스들은 각자 자기 값을 따로 가져요.
속성Attribute
인스턴스가 기억하는 데이터예요. self.name, self.score처럼 self에 붙여 저장해요.
메서드Method
클래스 안에 만든 함수, 즉 인스턴스가 하는 동작이에요. introduce(), forward() 같은 것들이에요.
selfself
메서드 안에서 '지금 이 인스턴스 자신'을 가리키는 말이에요. 만들 때는 쓰지만 부를 때는 직접 넘기지 않아요.
__init____init__ (constructor)
인스턴스를 만들 때 자동으로 한 번 실행되어 처음 상태를 저장하는 메서드예요.
상속Inheritance
부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 거예요. class Dog(Animal)처럼 괄호에 부모를 써요.
부모 클래스Parent class
물려주는 쪽 클래스예요. 여러 자식이 공통으로 쓰는 기능을 여기에 모아 둬요.
자식 클래스Child class
물려받는 쪽 클래스예요. 부모에게 없는 자기만의 기능을 더 만들 수 있어요.
오버라이딩Overriding
자식이 부모와 같은 이름의 메서드를 다시 만들어 덮어쓰는 거예요. 이름이 같으면 자식 것이 먼저 실행돼요.
super()super()
부모 클래스를 가리키는 말이에요. super().__init__()으로 부모의 초기화를 직접 불러요. 자식이 __init__을 다시 쓰면 꼭 필요해요.
__call____call__ (callable)
이 메서드가 있으면 인스턴스를 f(3)처럼 함수 부르듯 쓸 수 있어요. nn.Module이 이걸 이미 가지고 있어요.
클래스 속성Class attribute
인스턴스마다가 아니라 클래스에 하나만 붙은 공통 값이에요. 클래스에서 바꾸면 모든 인스턴스에 반영돼요.
인스턴스 속성Instance attribute
self.name = name처럼 인스턴스마다 따로 가지는 값이에요. 한 인스턴스를 바꿔도 다른 것은 그대로예요.
TensorTensor
숫자를 담는 다차원 칸이에요. PyTorch에서 데이터와 weight를 담는 기본 그릇이에요. 엑셀 표의 확장판이라고 생각하면 돼요.
스칼라Scalar
숫자 하나예요. shape이 ()이고 .item()으로 파이썬 숫자로 꺼낼 수 있어요.
벡터Vector
숫자를 한 줄로 늘어놓은 거예요. shape이 (3,)이면 원소 3개짜리예요.
행렬Matrix
숫자를 가로세로 표로 놓은 거예요. shape (2, 3)이면 2행 3열이에요.
shapeShape
텐서의 각 차원 길이예요. (4, 3)은 4행 3열, 전체 원소는 12개예요. 에러가 나면 제일 먼저 확인해요.
dtypeData type
원소의 종류예요. 정수는 torch.int64, 소수는 torch.float32가 기본이에요.
deviceDevice
텐서가 놓인 곳이에요. cpu 또는 cuda(GPU)예요. 계산하려는 텐서끼리 같은 곳에 있어야 해요.
ndimNumber of dimensions
차원이 몇 개인지예요. shape (2, 3, 4)면 ndim은 3이에요.
numelNumber of elements
전체 원소 개수예요. shape (2, 3, 4)면 2×3×4 = 24예요.
itemitem()
원소가 하나뿐인 텐서에서 파이썬 숫자만 꺼내는 함수예요.
arangearange
0, 1, 2, ...처럼 일정하게 늘어나는 숫자를 만들어요. torch.arange(5)는 0부터 4까지예요.
zeroszeros / ones
모든 칸을 0 또는 1로 채운 텐서를 만들어요. torch.zeros(2, 3)은 2행 3열의 0 표예요.
randnrandn
평균 0인 정규분포 난수로 채운 텐서를 만들어요. weight 처음 값을 만들 때 써요.
manual_seedmanual_seed
난수를 항상 같은 순서로 나오게 고정해요. 그래야 실행할 때마다 결과를 같은 조건에서 비교할 수 있어요.
reshapereshape / view
원소 수는 그대로 두고 모양만 바꿔요. reshape(3, -1)에서 -1은 알아서 계산해 달라는 뜻이에요. view는 메모리를 공유하는 대신 조건이 까다로워요.
squeezesqueeze
크기가 1인 차원을 지워요. (1, 3, 1)은 (3,)이 돼요. 크기 1이 아닌 차원은 그대로 둬요.
unsqueezeunsqueeze
원하는 위치에 크기 1인 차원을 끼워 넣어요. 이미지 (28, 28)에 unsqueeze(0)을 하면 (1, 28, 28)이에요.
catcat
이미 있는 차원을 따라 이어 붙여요. (2, 3) 두 개를 dim=0으로 cat하면 (4, 3)이고 차원 수는 그대로예요.
stackstack
새 차원을 만들어서 쌓아요. (2, 3) 두 개를 stack하면 (2, 2, 3)이 돼요. 차원 수가 하나 늘어요.
브로드캐스팅Broadcasting
모양이 다른 텐서끼리 계산할 때 작은 쪽을 자동으로 늘려 맞춰 주는 기능이에요. 오른쪽 끝부터 비교해서 같거나 1이거나 없어야 해요.
행렬 곱Matrix multiplication
행과 열을 곱해 더하는 계산이에요. (4, 3) @ (3, 2)는 (4, 2)가 돼요. *는 같은 자리끼리 곱하는 다른 계산이에요.
원소별 연산Element-wise operation
같은 자리의 원소끼리 계산하는 거예요. a * b가 이 방식이에요.
dimdim
어느 방향으로 합칠지 정해요. dim=0은 세로로(열마다), dim=1은 가로로(행마다) 합쳐요.
불리언 인덱싱Boolean indexing
조건으로 원하는 값만 뽑아요. x[x > 5]는 5보다 큰 값만 꺼내요.
(N, C, H, W)Batch, Channel, Height, Width
이미지 묶음의 모양 약속이에요. 몇 장(N), 채널 수(C), 높이(H), 너비(W) 순서예요. (8, 1, 28, 28)은 28×28 흑백 8장이에요.
flattenFlatten
이미지 같은 여러 차원을 한 줄로 쭉 펴는 거예요. flatten(start_dim=1)이면 배치 차원은 두고 나머지를 펴요.
from_numpyfrom_numpy
NumPy 배열과 텐서를 바꾸는 방법이에요. from_numpy와 .numpy()는 메모리를 같이 써서 한쪽을 바꾸면 다른 쪽도 바뀌어요. torch.tensor(arr)는 복사라 독립이에요.
메모리 공유Memory sharing
두 변수가 같은 저장 공간을 가리키는 거예요. 한쪽을 바꾸면 다른 쪽도 같이 바뀌어서 버그의 원인이 되기도 해요.
CPUCentral Processing Unit
컴퓨터의 두뇌예요. 복잡하고 다양한 일을 순서대로 처리하는 데 강해요.
GPUGraphics Processing Unit
단순한 계산을 한꺼번에 아주 많이 하는 데 강한 장치예요. 딥러닝의 행렬 계산을 빠르게 해 줘요.
CUDACUDA
엔비디아 GPU로 계산하게 해 주는 기술이에요. PyTorch에서 device를 'cuda'라고 쓰면 GPU를 뜻해요.
is_availablecuda.is_available()
지금 컴퓨터에서 GPU를 쓸 수 있는지 True/False로 알려 줘요. CUDA를 깔기만 했다고 True가 되는 건 아니에요.
.to(device).to(device)
텐서나 모델을 CPU나 GPU로 옮겨요. 옮겨진 새 텐서를 돌려주므로 x = x.to(device)처럼 다시 저장해야 해요.
ColabGoogle Colaboratory
구글이 무료로 빌려주는 온라인 노트북이에요. 런타임 유형을 T4 GPU로 바꾸면 GPU를 쓸 수 있어요.
런타임Runtime
Colab에서 코드를 실제로 돌리는 컴퓨터예요. 메뉴에서 하드웨어 가속기를 T4 GPU로 골라요.
nn.Moduletorch.nn.Module
PyTorch 모델의 부모 클래스예요. 이걸 상속하고 __init__과 forward만 만들면 학습에 필요한 나머지 기능은 알아서 붙어요.
nn.Lineartorch.nn.Linear
입력에 weight를 곱하고 bias를 더하는 층이에요. nn.Linear(3, 2)는 숫자 3개를 받아 2개를 내놓아요.
weightWeight
모델이 학습으로 고쳐 가는 숫자예요. 각 입력이 결과에 얼마나 영향을 줄지 정해요. Linear의 weight는 (출력, 입력) 모양이에요.
biasBias
계산 결과에 더해 주는 보정 숫자예요. 출력 개수만큼 있어요. Linear(3, 2)의 bias는 (2,)예요.
forwardForward propagation
입력에서 예측값까지 계산해 나가는 과정이에요. 모델 클래스에서 forward 함수에 이 흐름을 써요.
model(x)model(x)
모델을 함수처럼 부르는 방법이에요. 내부에서 nn.Module의 __call__이 처리한 뒤 forward를 실행해요. forward를 직접 부르지 않아요.
layerLayer
계산 한 단계를 맡은 층이에요. Linear 층, ReLU 층 등을 겹쳐 쌓아 모델을 만들어요.
featureFeature
모델에 넣는 입력 숫자 하나하나예요. 학생 정보 5가지를 쓰면 feature가 5개예요.
in_features / out_featuresin_features / out_features
Linear가 받는 숫자 개수와 내놓는 숫자 개수예요. 입력의 마지막 차원이 in_features와 같아야 해요.
ReLURectified Linear Unit
음수는 0으로, 양수는 그대로 두는 규칙이에요. 학습할 값이 없고 shape도 안 바뀌어요.
nn.Sequentialtorch.nn.Sequential
층을 순서대로 늘어놓아 하나의 모델로 쓰는 상자예요. 한 줄로 쭉 흐를 때 쓰고, 경로를 합치는 모델은 직접 클래스로 만들어요.
nn.Parametertorch.nn.Parameter
모델에 등록되어 학습되는 텐서예요. 기본으로 requires_grad=True이고 parameters()에 나와요. 일반 텐서는 등록이 안 돼서 업데이트되지 않아요.
parameters()parameters() / named_parameters()
모델에 등록된 학습 대상을 모두 꺼내요. named_parameters()는 이름까지 같이 줘요. optimizer에 넘길 때 써요.
named_childrennamed_children()
모델에 등록된 층(하위 모듈)의 이름과 객체를 보여 줘요. layer를 self에 저장하지 않으면 여기에 안 나와요.
MLPMulti-Layer Perceptron
Linear 층과 ReLU를 여러 번 겹친 기본 신경망이에요. 수업의 TinyMLP가 이 모양이에요.
FCFully Connected
입력 하나하나가 출력 하나하나에 모두 연결된 층, 즉 Linear예요. 변수 이름은 보통 fc1, fc2로 지어요.
hookHook
계산 중간에 끼워 넣는 확인용 장치예요. 이름만 알면 돼요. model(x)는 hook 처리를 거치지만 forward를 직접 부르면 건너뛰어요.
gradientGradient
weight를 아주 조금 바꿨을 때 loss가 얼마나, 어느 쪽으로 변하는지 알려 주는 값이에요. 부호는 방향이고 크기는 민감도예요.
autogradAutograd
PyTorch가 gradient를 대신 계산해 주는 기능이에요. 우리는 backward()만 부르면 돼요.
requires_gradrequires_grad
이 텐서의 gradient를 계산·기록해 달라는 표시예요. True여야 backward 후에 .grad가 생겨요.
backwardBackward / Backpropagation
loss에서 거꾸로 거슬러 가며 gradient를 계산해 .grad에 저장해요. 계산·저장만 하고 weight 값은 안 바꿔요.
chain ruleChain rule
여러 단계를 거친 계산의 미분을 단계별 미분의 곱으로 구하는 방법이에요. 예 1×3×4 = 12. 값만 맞으면 어떻게 구하든 돼요.
계산 그래프Computational graph
계산 과정을 점과 선으로 기록한 지도예요. backward가 이 지도를 거꾸로 따라가며 gradient를 구해요. 한 번 쓰면 풀려서 재사용할 수 없어요.
leaf tensorLeaf tensor
계산 그래프의 맨 끝에 있는 텐서예요. 직접 만든 requires_grad 텐서와 모델의 weight, bias가 해당돼요. .grad는 leaf에만 저장돼요.
.grad.grad
backward 후 leaf 텐서에 저장되는 gradient 값이에요. backward 전에는 None이에요.
gradient 누적Gradient accumulation
backward를 부를 때마다 .grad에 덮어쓰지 않고 더해져요. 그래서 매 step 시작에 0으로 지워야 해요.
zero_gradzero_grad()
쌓인 gradient를 지워요. optimizer.zero_grad()는 학습 step의 첫 단계예요. backward보다 앞에 불러야 해요.
torch.no_gradtorch.no_grad()
이 블록 안에서는 gradient를 기록하지 않아요. weight를 직접 고칠 때, 평가·예측할 때 써서 계산을 아껴요.
in-place 연산In-place operation
새로 만들지 않고 원래 텐서의 값을 그 자리에서 고치는 연산이에요. W -= lr * W.grad가 예예요. requires_grad 텐서에는 no_grad 안에서만 할 수 있어요.
detachdetach()
계산 그래프와의 연결을 끊은 텐서를 만들어요. 값만 보고 싶을 때 써요.
경사 하강법Gradient descent
loss가 줄어드는 방향으로 weight를 조금씩 옮기는 방법이에요. 산에서 가장 낮은 곳을 향해 한 발씩 내려가는 것과 같아요.
학습률Learning rate
한 번에 weight를 얼마나 움직일지 정하는 숫자예요. 너무 크면 튀어서 못 찾고, 너무 작으면 느려요. 보통 아주 작게 써요.
업데이트 식Update rule
새 w = 현재 w − lr × grad예요. gradient가 음수면 w가 커지고, 양수면 줄어요.
lossLoss
예측이 정답에서 얼마나 틀렸는지를 숫자 하나로 요약한 값이에요. 작을수록 잘 맞는 거예요.
predictionPrediction
모델이 내놓은 답이에요. 정답(target)과 비교해서 loss를 구해요.
targetTarget
모델이 맞혀야 하는 정답이에요. 예측할 때는 넣지 않고 loss 계산에만 써요.
MSEMean Squared Error
(예측 − 정답)을 제곱해서 평균 낸 값이에요. 제곱해서 +와 −가 서로 지워지지 않아요. 예 [3,4] vs [1,5]는 2.5예요.
nn.MSELosstorch.nn.MSELoss
MSE를 대신 계산해 주는 도구예요. criterion = nn.MSELoss()로 만들고 criterion(prediction, target)으로 써요. 결과는 숫자 하나예요.
CrossEntropyLossCross entropy loss
분류 문제에서 많이 쓰는 loss예요. 수업에서는 이름만 소개했어요.
optimizerOptimizer
gradient를 보고 weight를 실제로 고치는 도구예요. model.parameters()를 넘겨 만들고, step()을 불러야 고쳐져요.
SGDStochastic Gradient Descent
가장 기본적인 optimizer예요. w ← w − lr × grad로 고쳐요. optim.SGD(model.parameters(), lr=0.1)로 만들어요.
AdamAdam
SGD보다 똑똑하게 방향과 속도를 조절하는 optimizer예요. 수업에서는 이름만 나왔어요.
stepstep()
저장된 gradient로 weight를 한 번 고치는 함수예요. gradient를 새로 계산하지는 않아요.
학습 5단계Training step
zero_grad → forward → loss → backward → step의 다섯 단계예요. batch마다 이 순서로 한 번씩 해요.
회귀Regression
점수나 가격처럼 이어지는 숫자를 맞히는 문제예요. 주로 MSE loss를 써요.
분류Classification
합격/불합격, 고양이/강아지처럼 종류를 고르는 문제예요.
범주형 데이터Categorical data
성별처럼 글자로 된 종류 데이터예요. 모델은 숫자만 다루니까 남=0, 여=1로 바꾸거나 one-hot으로 바꿔요.
sampleSample
입력 하나와 그에 맞는 정답 하나의 짝이에요. 학생 한 명의 정보와 그 학생의 점수가 샘플 하나예요.
batchBatch
한 번에 묶어서 처리하는 샘플 묶음이에요. 샘플 4개씩 묶으면 batch 크기가 4예요.
batch_sizeBatch size
한 batch에 들어가는 샘플 수예요. 10개를 4개씩 자르면 4, 4, 2로 세 묶음이 돼요.
epochEpoch
학습 데이터 전체를 한 번 모두 사용한 것이에요. 책 한 권을 처음부터 끝까지 한 번 읽은 것과 같아요.
iterationIteration / Step
batch 하나로 weight를 한 번 고치는 일이에요. 1 epoch 동안 iteration 수는 batch 개수와 같아요.
DatasetDataset
샘플을 번호로 꺼낼 수 있는 데이터 모음이에요. __len__과 __getitem__을 만들어 주면 돼요.
__len____len__
len(dataset)을 하면 불려서 샘플이 모두 몇 개인지 알려주는 메서드예요.
__getitem____getitem__
dataset[3]처럼 번호로 꺼낼 때 불려서 3번째 (입력, 정답) 쌍을 돌려주는 메서드예요.
TensorDatasetTensorDataset
입력 텐서와 정답 텐서를 같은 번호끼리 짝지어 주는 PyTorch의 기본 Dataset이에요. 샘플 수(첫 차원)가 같아야 해요.
DataLoaderDataLoader
Dataset에서 샘플을 꺼내 batch로 묶어 차례로 내주는 도구예요. for batch_x, batch_y in loader:로 돌아요.
shuffleShuffle
epoch마다 데이터 순서를 섞는 옵션이에요. 학습 때는 True, 검증 때는 False로 해요.
drop_lastdrop_last
batch_size보다 적게 남은 마지막 묶음을 버릴지 정하는 옵션이에요. 기본값은 False라서 남은 것도 써요.
len(loader)len(DataLoader)
한 epoch에 batch가 몇 묶음인지 알려 줘요. 샘플 수 ÷ batch 크기를 올림한 값이에요. 10개, batch 4면 3이에요.
train setTraining set
모델이 보고 배우는 데이터예요. 이걸로 weight를 고쳐요.
validation setValidation set
학습에 쓰지 않고 따로 떼어 둔 데이터예요. 처음 보는 데이터에서 얼마나 잘하는지 재는 시험지 역할이에요.
test setTest set
마지막에 최종 성능을 재는 데이터예요. 학습에도, 중간 점검에도 쓰지 않아요.
model.train()model.train()
모델을 학습용 모드로 바꿔요. Dropout 같은 층이 학습 때 방식으로 일해요.
model.eval()model.eval()
모델을 평가용 모드로 바꿔요. gradient를 끄지는 않아서 torch.no_grad()를 따로 함께 써요.
과적합Overfitting
학습 데이터는 잘 맞히는데 처음 보는 데이터에서는 못 맞히는 상태예요. 문제집 답만 외운 것과 같아요. validation으로 확인해요.
epoch lossEpoch loss
한 epoch의 전체 평균 loss예요. batch loss × batch 샘플 수를 모두 더한 뒤 전체 샘플 수로 나눠요.
딥러닝Deep learning
층을 여러 겹 쌓은 인공신경망으로 데이터에서 규칙을 스스로 배우게 하는 방법이에요.
인공신경망Neural network
숫자를 받아 곱하고 더하는 층을 여러 겹 쌓은 계산 구조예요. 층의 weight를 학습으로 고쳐요.
학습Training
데이터를 보며 loss가 줄어들도록 weight를 반복해서 고치는 일이에요.
추론Inference
학습이 끝난 모델로 새 입력의 답을 계산하는 일이에요. 이때는 weight를 고치지 않아요.
파라미터 초기화Initialization
학습 시작 때 weight를 randn 같은 랜덤 값으로 채우는 거예요. 그래서 처음 예측은 틀리는 게 정상이에요.
수렴Convergence
학습을 거듭하면서 loss가 더는 줄지 않을 만큼 작은 값에 가까워지는 거예요. w가 정답 2에 가까워지는 모습이에요.