CS231N Recurrent Neural Networks
CS231N RNN 강의 내용을 바탕으로 sequence modeling의 핵심 아이디어를 복습한 발표 기록입니다.
- 발행일
- 2026년 6월 13일
- 작성자
- YAI
CS231N Recurrent Neural Networks
16기 · 강의복습 · 3주차
CS231N RNN 강의 내용을 바탕으로 sequence modeling의 핵심 아이디어를 복습한 발표 기록입니다.
기초 개념을 다시 정리해 이후 NLP와 multimodal 세미나로 이어지는 발판을 만들었습니다.

Lec5 - Image Classification with CNNs
Feature representation
: 이미지에서 인간이 직접 특징을 함수화함.
예를들어 color histogram은 이미지의 픽셀 색상들을 분류하고 색상 히스토그램이 비슷한 다른 이미지를 같은 이미지로 분류할 수 있음
HoG(Histogram of Oriented Gradients)는 엣지 방향(gradient 방향) 분포를 만듦.
→ 여러 개의 특징 분포들을 합쳐서 하나의 이미지의 특징을 종합함. : Feature Extraction 단계가 업데이트되지 않음. 반면, CNN은 특징을 추출하는 단계를 업데이트함.
Convolutional Neural Networks
: feature extraction(convolution+pooling) → score prediction(Fully-Connected)
그림 기준 6개의 필터가 있음. 각각의 필터는 이미지와 내적을 하게 되는데 각 필터와 해당 이미지 영역의 유사도를 측정할 수 있음. 즉, “A라는 필터가 A라는 특징을 감지하는 역할을 한다면 이미지에서 A라는 특징을 영역별로 슬라이딩하여 요약할 수 있음.“
합성곱이 된 이후에는 이미지를 A,B,..라는 특징으로 요약한 활성화맵이 특징별로 쌓이게 됨.
실제로는 배치 사이즈를 넣어 4차원의 input이 들어가고, 한 필터당 하나의 스칼라 bias를 추가해줌.
Conv layer사이에 activation function을 추가해서 비선형성을 줌.
What do Conv filters learn?
: 처음에는 엣지같은 간단한 특징을 배움. 레이어가 깊어질수록 눈, 문자 등 더 큰 구조의 복잡한 특징을 배움.
“깊을수록 더 큰 구조의 복잡한 특징을 보는 이유는 레이어가 깊어지면 활성화맵 하나의 요소가 input 이미지에서 보는 영역이 커짐.”
Problem : 이미지가 너무 크면 레이어가 많이 필요함.
Solution : stride로 일부를 건너뛰어 크기를 빠르게 축소시킴(downsampling)
Output size : (W-K+2P)/S + 1
Input volume : 3x32x32
10 5x5 filters with stride 1, pad2
Output volume size : 10x32x32
→ 10x((32-5+2*2)/1+1)x((32-5+2*2)/1+1)
Number of learnable parameters : 760
→ (3x5x5+1)x10 = (filter+bias)xnumber of filter
Number of multiply-add operations : 768,000
→ output 위치 개수 : 10240,각 위치마다 연산 수: 75
output 값을 구할 때 75개의 곱셈과 덧셈이 필요함
10240x75 = 768000
PyTorch code
CLASS torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,group=1,bias=True,padding_mode=’zeros’,device=None,dtype=None)
Pooling layer(downsampling 방법 중 하나)
: max pooling, min pooling은 비선형성을 주고, average pooling은 여전히 선형적일 것임.
Convolution and Pooling: Translation Equivariance
입력을 먼저 평행이동(translate)하고 conv/pool을 적용하든, 먼저 conv/pool을 적용하고 그 결과를 평행디오하든 같은 결과가 나옴
→ 이는 Conv,pool 연산이 위치에 의존하지 않고, 같은 필터를 전체 이미지에 공유하기 때문에 입력 이미지가 조금 움직여도 동일한 특징을 그대로 이동해서 나타냄.
Lec6 - CNN Architectures
How to build CNNs
[ Layers in CNNs ]
LayerNorm
: 배치 단위로 평균과 분산으로 정규화(전체 HxWxC에 대해서)하고, 람다로 스케일링하고 베타로 shit함
Dropout
: regularizaiton 방법 중 하나로 오버피팅 방지용. training time 에서만, 순전파에서 뉴런을 랜덤하게 0으로 만듦. 일부 특징에 의존하지 않을 수 있음. 예를들어 강아지 예측에 귀,털,꼬리 등이 있으면 꼬리 뉴런이 꺼지더라도 강아지라고 예측할 수 있게 만듦.
[Activation functions]
Activation은 비선형성을 추가함
Sigmoid : 많은 레이어를 지나갈 때마다 기울기가 작아짐. saturate 구간 때문에
ReLU : zero-cented output이 아님. 0보다 작은 구간에서 항상 기울기가 0임.
GELU(Gaussian Error Linear Unit) : ReLU보다 higher computational cost, 0 주변에서는 기울기가 괜찮지만 큰 음수에서는 여전히 기울기가 0임.
작은 필터를 쓰면 좋은 이유 : 층을 깊게 하면 3x3가 7x7와 같은 효과적인 receptive field를 가짐. parameter도 더 적음.
VGG
단순히 층을 많이 쌓기만 하면 좋을까? 아님. training 결과와 test 결과 모두 안 좋은 걸 보니 overfitting 때문은 아님. 최적화하기 힘든 것이 문제임.
ResNet
→ ResNet은 바로 목적 함수에 최적화하기 보다는 residual mapping을 하는 걸로 해결하려 함. 이미지 혹은 이전 map으로 힌트를 주면서 residual만 최적화하도록 만듦. : 얇은 모델은 최적화하기 좋고 identity로 최소의 성능을 보장하기 때문에 이 구조는 최소한 얇은 모델보다는 좋은 성능이어야 함.
[Weight Initialization]
: 만약 ReLU를 사용한다고 할 때, 값이 음수면 gradient가 0이 되고 너무 큰 값에 몰리면 레이어를 거치면서 값이 infinite로 폭발함. Kaiming/MSRA Initialization 방법들이 해결책이 될 수 있음.
How to train CNNs?
[Data augmentation]
Regularization의 일반적인 패턴
Training : randomness를 줌(일반화 되지 않도록 다양성을 줌)
Testing : Average out randomness (다양성을의 평균적인 결과 사용)
증강 : 데이터셋을 늘릴 수 있고, 일반화 능력도 향상됨
→ 뒤집기, 크기 조정 or crop, color jitter, 일부 잘라 없애기
test time augmentation : test time에 다양한 크기로 이미지 crop하고 예측한 결과들의 평균으로 최종 예측하면 test time에서 1~2%의 성능을 끌어올릴 수 있음
[Transfer Learning]
- train on Imagenet
- Small dataset : 마지막 FC만 학습시키기
- Bigger dataset : Initialize from pretrained model, then finetune everything
관심있는 이미지가 100만개 이하라면
→ 아주 큰 비슷한 데이터셋을 찾아 큰 모델에 training하고, 그 모델에 관심있는 데이터를 학습시키기(Transfer)
[Choosing Hyperparameters]
적은 데이터로 먼저 loss를 낮추는지 확인한 후에 validation set으로 하이퍼파라미터 선정하기
https://docs.wandb.ai/guides/track/app
→ 하이퍼파라미터 선정을 시각화해서 할 수 있음
Lec7 - Recurrent Neural Networks
Recurrent Neural Network
Sequence of data를 위한 모델
각 시점(t)에서 입력(xt)을 받아 은닉 상태(ht)를 갱신하고, 이를 통해 출력(yt)를 만들어냄. 이때 현재 시점의 은닉 상태(ht)를 계산할 때 이전 시점의 은닉 상태(ht-1)를 함께 사용함.
→ 여러 번 반복할 때 사용되는 가중치는 하나임.
hidden state의 activation을 색상으로 문장에 시각화해보면, 문장의 끝을 보는 경우, 부정적인 글과 긍정적인 감정을 감지, 인용구를 탐지하는 등의 모습을 보임.
LSTM
: RNN이 이전 시점 정보를 계속 전달하지만 실제 학습에서는 멀리 있는 정보가 사라짐(gradient vanishing/exploding)
cell state(Ct) : 장기 기억
Hidden state(ht) : 단기 기억
→ 게이트(Gate)
Forget Gate : 정보를 기억할지 말지, cell state에서 버릴 정보를 결정함
Input Gate : 새로운 정보를 얼마나 반영할 지 조정
Output Gate : cell state를 얼마나 내보낼지 조절