딥러닝 / CS231N
CS231N
- CS231n Lecture 17 - Robot Learning reinforcement learning, model-based planning, imitation learning, vision-language-action models Robot learning은 action으로 환경을 바꾸며 장기적인 reward를 높이는 policy를 학습하는 sequential decision-making 문제이다. Supervised learning은 고정된 데이터셋의 입력 에서 label 를 예측한다. #LECTURE
- CS231n Lecture 16 - Vision and Language CLIP, multimodal language models, grounding, model chaining Vision-language foundation model은 이미지와 텍스트를 공통 representation으로 정렬하거나 visual token을 language model의 context로 주입해 여러 과제를 하나의 pretrained model로 풀며, grounding과 promptable output, tool chaining을 더해 텍스트 응답을 실제 픽셀과 전문 vision model의 동작으로 연결한다. 전통적인 computer vision pipeline은 과제마다 데이터셋과 모델을 따로 만든다. #LECTURE
- CS231n Lecture 15 - 3D Vision 3D representations, neural fields, NeRF, Gaussian splatting 3D vision은 geometry와 appearance를 point cloud, mesh, voxel, implicit function 등으로 표현하고, 2D·3D 관측에서 이를 학습해 장면 복원과 새로운 시점의 이미지 합성에 사용한다. 2D 이미지는 보통 일정한 grid 위의 pixel tensor로 표현한다. 반면 3D 물체는 geometry뿐 아니라 질감, 재질, 조명에 따른 appearance까지 포함하며, 이를 표현하는 표준적인 형식이 하나로 정해져 있지 않다. #LECTURE
- Assignment 3-3: Denoising Diffusion Probabilistic Models Forward Diffusion, Reverse Diffusion, U-Net 기반 Noise Prediction, Reverse Sampling, Classifier-Free Guidance 구현 및 평가 이번 과제에서는 Denoising Diffusion Probabilistic Model(DDPM)의 핵심 구성요소를 구현하고, noisy image를 점진적으로 denoise하여 이미지를 생성하는 과정을 배운다. DDPM은 데이터 분포에서 바로 샘플을 생성하는 대신, 먼저 실제 이미지에 Gaussian noise를 점진적으로 추가하는 Forward Diffusion을 정의하고, 반대로 노이즈에서 이미지를 복원하는 Reverse Diffusion을 학습한다. Forward process 자체는 고정된 noise schedule에 의해 결정되며, 실제로 학습되는 부분은 각 timestep에서 noisy image를 보고 노이즈 또는 원본 이미지를 예측하는 denoising model이다. 이 denoising model로 U-Net을 사용한다. #ASSIGNMENT
- CS231n Lecture 14 - Generative Models 2 Generative adversarial networks, rectified flow, latent diffusion GAN은 discriminator와 generator의 adversarial game으로 data distribution을 암묵적으로 맞추고, diffusion과 rectified flow는 노이즈와 데이터 사이의 경로를 학습해 반복적인 reverse process로 샘플을 생성한다. 명시적 밀도 모델(explicit density model)은 데이터 에 대한 확률밀도 를 명시적으로 정의한다. Autoregressive model은 이를 정확하게 계산하고, VAE는 로그우도의 하한인 ELBO를 계산한다. #LECTURE
- CS231n Lecture 13 - Generative Models 1 Maximum likelihood, autoregressive models, variational autoencoders Generative model은 data를 만든 probability distribution을 학습하는 모델이며, autoregressive model은 chain rule로 exact likelihood를 계산하고 VAE는 latent variable과 ELBO를 도입해 tractable한 lower bound로 학습한다. Supervised learning에서는 input과 target의 pair가 주어진다. #LECTURE
- Assignment 3-2: Self-Supervised Learning for Image Classification SimCLR의 data augmentation, NT-Xent loss 구현과 self-supervised representation의 image classification 평가 이번 과제에서는 label 없이 image representation을 학습하는 self-supervised learning과 SimCLR의 contrastive learning을 구현하고, 학습된 representation이 downstream image classification에 얼마나 유용한지 평가한다. Supervised learning은 이미지와 사람이 붙인 class label의 관계를 학습한다. 반면 self-supervised learning은 data 자체에서 학습 신호를 만든다. SimCLR에서는 같은 이미지에 서로 다른 random augmentation을 적용해 두 view를 만들고, 이 둘을 positive pair로 취급한다. Model은 positive pair의 representation을 가깝게 만들고, batch 안의 다른 이미지에서 나온 view는 멀어지게 학습한다. #ASSIGNMENT
- CS231n Lecture 12 - Self-Supervised Learning Pretext task, MAE, contrastive representation learning Self-supervised learning(자기지도학습)은 label이 없는 data 자체에서 학습 목표를 만들고, reconstruction이나 contrastive objective를 통해 다양한 downstream task에 재사용할 수 있는 representation을 학습하는 방법이다. Supervised learning은 input과 사람이 만든 label의 쌍을 사용한다. Image classification의 class label도 비용이 들지만, object detection의 bounding box나 semantic segmentation의 pixel label은 훨씬 더 많은 작업을 요구한다. 새로운 domain으로 옮길 때마다 같은 규모의 label을 다시 만드는 것도 어렵다. #LECTURE
- CS231n Lecture 11 - Large-Scale Distributed Training GPU cluster의 memory, communication, parallelism Large-scale distributed training은 거대한 model과 batch를 여러 accelerator에 나누는 것만으로 끝나지 않으며, GPU와 cluster의 계층적인 memory bandwidth에 맞춰 computation과 communication을 겹치고 data, parameter, sequence, layer 축의 parallelism을 조합해 Model FLOPs Utilization을 높이는 문제이다. Computer가 수행하는 작업은 크게 computation과 communication으로 나눌 수 있다. Computation은 input bit로부터 새로운 output bit를 계산하는 작업이다. Communication은 data를 한 memory 또는 device에서 다른 곳으로 옮기는 작업이다. #LECTURE
- CS231n Lecture 10 - Video Understanding Spatiotemporal representation과 action recognition Video understanding은 image에 time dimension을 더한 spatiotemporal data에서 appearance와 motion을 함께 표현하는 문제이며, frame pooling부터 3D CNN, optical flow 기반 two-stream network, recurrent model, space-time attention까지의 차이는 결국 temporal information을 언제 어떻게 결합하느냐에 있다. RGB image 한 장은 일반적으로 다음과 같이 표현한다. #LECTURE
- CS231n Lecture 9 - Object Detection, Image Segmentation, and Visualization Dense prediction과 모델 시각화 Image segmentation과 object detection은 image-level classification을 pixel, region, object 단위의 dense prediction으로 확장한 문제이며, saliency map과 CAM(Class Activation Mapping) 계열 기법은 예측 score를 다시 image 공간에 연결해 model이 어느 영역을 사용했는지 해석한다. 같은 image를 입력받더라도 무엇을 출력하느냐에 따라 task가 달라진다. #LECTURE
- Assignment 3-1: Image Captioning with Transformers Attention 및 Transformer Block 구현, Image Captioning Transformer 의 Multi-Headed Attention 을 구현하고, Positional Encoding 의 원리와 구현, Transformer Block 을 만들고 COCO Dataset 으로 이미지 캡셔닝과 ViT를 구현한다. Multi-Headed Attention은 embedding을 여러 head로 나누어 각 head가 서로 다른 표현 공간에서 token 사이의 관계를 포착하도록 한다. #ASSIGNMENT
- CS231n Lecture 8 - Attention and Transformers Attention 연산과 Transformer 구조 Attention은 query와 key의 유사도로 value를 가중합하는 연산이며, Transformer는 self-attention으로 token 사이의 정보를 섞고 FFN으로 각 token을 독립적으로 변환하는 block을 반복해 sequence를 처리한다. Sequence-to-sequence model은 길이가 다른 두 sequence 사이의 mapping을 학습한다. 기계번역에서는 영어 문장을 입력받아 이탈리아어 문장을 출력할 수 있으며, 두 문장의 단어 수와 어순은 서로 다를 수 있다. #LECTURE
- Assignment 2-5: RNN Captioning COCO image feature와 RNN language model을 연결한 image captioning 구현 미리 추출한 image feature를 초기 hidden state로 투영하고, 한 timestep씩 어긋난 caption을 teacher forcing으로 학습하여 매 시점의 다음 token을 예측하는 RNN image captioning model을 구현한다. 이번 과제는 2014 COCO Dataset의 image-caption pair를 사용한다. Image는 ImageNet으로 사전 학습한 VGG-16의 fc7 feature를 사용하며, 4096차원 feature를 PCA로 줄인 512차원 입력을 model에 넣는다. Caption은 각 word를 integer ID로 바꾼 sequence로 처리한다. #ASSIGNMENT
- Assignment 2-3: Convolutional Networks Convolution, Max Pooling, Spatial Batch Normalization, Group Normalization 구현 이번 과제에서는 CNN을 구성하는 convolution과 max pooling layer의 forward, backward를 직접 구현한다. 이어서 CNN의 activation shape인 에 맞춰 Spatial Batch Normalization을 구현하고, 채널을 여러 group으로 나누어 정규화하는 Spatial Group Normalization까지 구현한다. #ASSIGNMENT
- CS231n Lecture 7 - Recurrent Neural Networks RNN 구조와 sequence modeling RNN은 이전 hidden state와 현재 입력을 같은 가중치로 반복 처리해 가변 길이 sequence를 모델링하며, BPTT로 시간축을 따라 학습하지만 순차 계산과 vanishing gradient라는 한계가 있어 LSTM과 현대적인 state space model로 발전했다. 일반적인 image classifier는 하나의 고정된 크기 입력을 받아 하나의 고정된 크기 출력을 만든다. Sequence modeling에서는 입력이나 출력이 가변 길이 sequence가 될 수 있다. #LECTURE
- Assignment 2-2: Dropout Dropout 개념 및 구현 드롭아웃의 개념과 효과, 순전파 및 역전파를 구현한다. 드롭아웃(Dropout)은 훈련 시 drop probability 만큼 뉴런의 출력을 무작위로 0으로 만드는 규제 기법이다. #ASSIGNMENT
- Assignment 2-1: Batch Normalization Batch Norm, Layer Norm 이번 과제에서는 Batch Normalization 의 개념과 BatchNorm 레이어의 forward, backward 를 구현한다. 또한 Batch Norm과 Weight Initialization 의 관계, Batch Norm과 Batch Size와의 관계를 Baseline 기반으로 비교한다. #ASSIGNMENT
- CS231n Lecture 6 - Training CNNs and CNN Architectures CNN 구성 요소와 아키텍처, 초기화, 데이터 증강, 전이 학습, 학습 방법 CNN을 안정적으로 학습하려면 합성곱만 쌓는 것이 아니라 정규화, Dropout, 활성화 함수를 목적에 맞게 배치하고, 잔차 연결과 Kaiming 초기화로 깊은 신경망의 최적화를 안정화하며, 데이터 증강과 전이 학습, 올바른 디버깅 절차까지 하나의 학습 과정으로 연결해야 한다. CNN을 다룰 때는 두 문제를 구분해야 한다. 어떤 계층을 어떤 순서와 형태로 연결해 아키텍처를 만들 것인가? 만들어진 아키텍처가 실제 데이터에서 안정적으로 학습되도록 어떻게 준비하고 검증할 것인가? #LECTURE
- Assignment 1-5: Training a fully connected network FullyConnectedNet 구현, Momentum, RMSProp, Adam 이번 과제에서는 임의의 개수의 hidden layer를 갖는 FullyConnectedNet을 구현하고, 여러 optimizer를 직접 구현해본다. 앞에서 만든 TwoLayerNet이 하나의 hidden layer만 갖는 구조였다면, 여기서는 hidden layer 개수를 리스트로 받아 더 깊은 fully-connected network를 구성한다. 기본 구조는 다음과 같다. #ASSIGNMENT
- CS231n Lecture 5 - Image Classification with CNNs CNN 이미지 분류 CNN은 작은 필터를 이미지 전체에 공유하며 적용해 공간 구조를 보존하고, 단순한 경계부터 복잡한 물체 특징까지 계층적으로 학습하는 신경망이다. 앞선 강의에서는 이미지 분류를 예제로 딥러닝 시스템을 구성하는 기본 요소를 배웠다. 전체 흐름은 다음과 같이 정리할 수 있다. 입력과 출력을 텐서로 표현한다. 입력으로부터 출력 점수를 계산하는 모델을 정의한다. 모델의 예측이 얼마나 나쁜지를 측정하는 손실 함수를 정의한다. 역전파로 손실에 대한 파라미터의 기울기를 계산한다. 경사하강법 기반 최적화 알고리즘으로 파라미터를 갱신한다. #LECTURE
- Assignment 1-4: Higher Level Representations: Image Features HOG, HSV feature 추출과 feature 기반 분류기 학습 이번 과제에서는 원본 픽셀을 그대로 사용하는 대신, 이미지에서 hand-crafted feature를 추출한 뒤 분류기를 학습한다. 사용한 feature는 Histogram of Oriented Gradients, HOG와 HSV color histogram이다. 전체 흐름은 다음과 같다. 각 이미지에서 HOG feature를 추출한다. 각 이미지에서 HSV hue channel 기반 color histogram을 추출한다. 두 feature vector를 이어 붙여 하나의 feature vector로 만든다. 추출된 feature 위에서 Softmax linear classifier를 학습한다. 같은 feature 위에서 TwoLayerNet을 학습한다. #ASSIGNMENT
- Assignment 1-3: Two-Layer Neural Network 완전연결계층 구현 Fully-Connected Neural Nets 과제에서는 neural network를 구성하는 기본 layer들을 모듈 단위로 구현한다. 이번 과제에서 직접 구현한 핵심은 affineforward, affinebackward, reluforward, relubackward, softmaxloss, 그리고 이들을 조합한 TwoLayerNet이다. 전체 구조는 다음과 같다. #ASSIGNMENT
- CS231n Lecture 4 - Neural Networks and Backpropagation Neural Networks, Backprop Neural network는 여러 linear transformation 사이에 nonlinearity를 넣어 복잡한 함수를 표현하고, backpropagation은 chain rule을 이용해 loss가 각 parameter에 미치는 영향을 효율적으로 계산하는 방법이다. Lecture 3에서는 loss function을 정의하고, regularization과 optimization으로 좋은 weight를 찾는 방법을 봤다. 하지만 지금까지의 모델은 여전히 linear classifier라서, 선 하나로 나눌 수 없는 데이터에는 한계가 있다. #LECTURE
- Assignment 1-2: Implement a Softmax classifier softmaxloss 구현, SGD 구현 softmaxloss 에 대해서 이해하고, svm loss와 softmaxloss의 차이를 확인하고, SGD를 적용해서 훈련을 수행하고, 검증 데이터로 하이퍼파라미터 결정하기 softmaxloss 는 모델이 정답 클래스에 얼마나 높은 확률을 부여했는지를 기준으로 손실을 계산하는 방법이다. score를 softmax로 변환하여 각 클래스의 확률을 계산 정답 클래스의 확률이 1에 가까울수록 loss가 작아짐 SVM loss와 달리 margin을 넘겨도 정답 확률을 더 키우는 방향으로 계속 학습 수식: logit(점수): #ASSIGNMENT
- CS231n Lecture 3 - Regularization and Optimization Regularization의 목적, L1/L2 정규화, gradient descent, SGD, momentum, RMSProp, Adam과 learning rate schedule Regularization은 모델이 training data에 너무 잘 맞는 것을 막아 test data에서 더 잘 동작하게 만드는 장치이고, optimization은 loss를 줄이는 방향으로 파라미터 를 찾는 과정이다. 이번 강의의 흐름은 loss function -> regularization -> gradient descent -> SGD -> momentum / RMSProp / Adam -> learning rate schedule로 이어진다. #LECTURE
- Assignment 1-1: k-Nearest Neighbor classifier kNN 구현, training, testing, cross-validation L1, L2 distance 에 대해 이해하고, k-Nearest Neighbors(kNN) 분류기를 직접 구현하고, 학습 데이터에 대해 성능을 측정하고, Cross-Validation (k-folds) 를 이용해 최적의 하이퍼파라미터 k를 찾기 k-Nearest Neighbors(kNN)는 테스트 샘플과 훈련 샘플 간의 거리를 계산하여 가장 가까운 k개의 이웃을 찾고, 다수결을 통해 클래스를 예측하는 분류 알고리즘이다. 학습 과정이 거의 없음 (Lazy Learning) 가장 가까운 k개의 데이터로 분류 거리 척도로 주로 Euclidean Distance(L2 distance) 사용 거리 계산: #ASSIGNMENT
- CS231n Lecture 2 - Image Classification with Linear Classifiers 이미지 분류 문제, 데이터 기반 접근, Nearest Neighbor와 K-NN, 선형 분류기의 입력 shape와 score 계산 정리 CS231n Lecture 2 내용을 개인 학습용으로 정리한 글이다. 이미지 분류는 이미지를 텐서 입력으로 받아, 미리 정해진 클래스 중 하나의 라벨을 예측하는 문제이다. #LECTURE
- CS231n Lecture 1 - Introduction 컴퓨터 비전의 문제 정의, 데이터 기반 접근, 이미지 분류와 딥러닝으로 이어지는 흐름 정리 CS231n Lecture 1 내용을 개인 학습용으로 정리한 글이다. 컴퓨터 비전은 픽셀 배열에서 의미를 뽑아내는 문제이며, 현대적 접근은 사람이 규칙을 만들기보다 데이터로 모델을 학습시키는 것이다. 우리 뇌에서 뉴런은 계층 구조를 지닌다. 강의에서는 Hubel과 Wiesel의 고양이 시각 피질 실험을 통해 단순한 선과 모서리에서 점차 복잡한 객체로 인식하는 계층적 구조가 밝혀졌다고 언급한다. 컴퓨터 비전은 이미지를 숫자 배열로 보고 의미를 예측하는 문제이다. 이미지 분류 모델은 픽셀의 표면적 차이를 넘어서 객체의 본질적인 패턴을 학습해야 한다. 데이터 기반 접근은 규칙을 직접 설계하지 않고, 대량의 데이터셋을 통해 모델이 분류 기준을 스스로 학습하게 하는 방식이다. 대표적인 예로 ImageNet이 있다. #LECTURE
딥러닝 / CS231N
CS231N
- CS231n Lecture 17 - Robot Learning reinforcement learning, model-based planning, imitation learning, vision-language-action models Robot learning은 action으로 환경을 바꾸며 장기적인 reward를 높이는 policy를 학습하는 sequential decision-making 문제이다. Supervised learning은 고정된 데이터셋의 입력 에서 label 를 예측한다. #LECTURE
- CS231n Lecture 16 - Vision and Language CLIP, multimodal language models, grounding, model chaining Vision-language foundation model은 이미지와 텍스트를 공통 representation으로 정렬하거나 visual token을 language model의 context로 주입해 여러 과제를 하나의 pretrained model로 풀며, grounding과 promptable output, tool chaining을 더해 텍스트 응답을 실제 픽셀과 전문 vision model의 동작으로 연결한다. 전통적인 computer vision pipeline은 과제마다 데이터셋과 모델을 따로 만든다. #LECTURE
- CS231n Lecture 15 - 3D Vision 3D representations, neural fields, NeRF, Gaussian splatting 3D vision은 geometry와 appearance를 point cloud, mesh, voxel, implicit function 등으로 표현하고, 2D·3D 관측에서 이를 학습해 장면 복원과 새로운 시점의 이미지 합성에 사용한다. 2D 이미지는 보통 일정한 grid 위의 pixel tensor로 표현한다. 반면 3D 물체는 geometry뿐 아니라 질감, 재질, 조명에 따른 appearance까지 포함하며, 이를 표현하는 표준적인 형식이 하나로 정해져 있지 않다. #LECTURE
- Assignment 3-3: Denoising Diffusion Probabilistic Models Forward Diffusion, Reverse Diffusion, U-Net 기반 Noise Prediction, Reverse Sampling, Classifier-Free Guidance 구현 및 평가 이번 과제에서는 Denoising Diffusion Probabilistic Model(DDPM)의 핵심 구성요소를 구현하고, noisy image를 점진적으로 denoise하여 이미지를 생성하는 과정을 배운다. DDPM은 데이터 분포에서 바로 샘플을 생성하는 대신, 먼저 실제 이미지에 Gaussian noise를 점진적으로 추가하는 Forward Diffusion을 정의하고, 반대로 노이즈에서 이미지를 복원하는 Reverse Diffusion을 학습한다. Forward process 자체는 고정된 noise schedule에 의해 결정되며, 실제로 학습되는 부분은 각 timestep에서 noisy image를 보고 노이즈 또는 원본 이미지를 예측하는 denoising model이다. 이 denoising model로 U-Net을 사용한다. #ASSIGNMENT
- CS231n Lecture 14 - Generative Models 2 Generative adversarial networks, rectified flow, latent diffusion GAN은 discriminator와 generator의 adversarial game으로 data distribution을 암묵적으로 맞추고, diffusion과 rectified flow는 노이즈와 데이터 사이의 경로를 학습해 반복적인 reverse process로 샘플을 생성한다. 명시적 밀도 모델(explicit density model)은 데이터 에 대한 확률밀도 를 명시적으로 정의한다. Autoregressive model은 이를 정확하게 계산하고, VAE는 로그우도의 하한인 ELBO를 계산한다. #LECTURE
- CS231n Lecture 13 - Generative Models 1 Maximum likelihood, autoregressive models, variational autoencoders Generative model은 data를 만든 probability distribution을 학습하는 모델이며, autoregressive model은 chain rule로 exact likelihood를 계산하고 VAE는 latent variable과 ELBO를 도입해 tractable한 lower bound로 학습한다. Supervised learning에서는 input과 target의 pair가 주어진다. #LECTURE
- Assignment 3-2: Self-Supervised Learning for Image Classification SimCLR의 data augmentation, NT-Xent loss 구현과 self-supervised representation의 image classification 평가 이번 과제에서는 label 없이 image representation을 학습하는 self-supervised learning과 SimCLR의 contrastive learning을 구현하고, 학습된 representation이 downstream image classification에 얼마나 유용한지 평가한다. Supervised learning은 이미지와 사람이 붙인 class label의 관계를 학습한다. 반면 self-supervised learning은 data 자체에서 학습 신호를 만든다. SimCLR에서는 같은 이미지에 서로 다른 random augmentation을 적용해 두 view를 만들고, 이 둘을 positive pair로 취급한다. Model은 positive pair의 representation을 가깝게 만들고, batch 안의 다른 이미지에서 나온 view는 멀어지게 학습한다. #ASSIGNMENT
- CS231n Lecture 12 - Self-Supervised Learning Pretext task, MAE, contrastive representation learning Self-supervised learning(자기지도학습)은 label이 없는 data 자체에서 학습 목표를 만들고, reconstruction이나 contrastive objective를 통해 다양한 downstream task에 재사용할 수 있는 representation을 학습하는 방법이다. Supervised learning은 input과 사람이 만든 label의 쌍을 사용한다. Image classification의 class label도 비용이 들지만, object detection의 bounding box나 semantic segmentation의 pixel label은 훨씬 더 많은 작업을 요구한다. 새로운 domain으로 옮길 때마다 같은 규모의 label을 다시 만드는 것도 어렵다. #LECTURE
- CS231n Lecture 11 - Large-Scale Distributed Training GPU cluster의 memory, communication, parallelism Large-scale distributed training은 거대한 model과 batch를 여러 accelerator에 나누는 것만으로 끝나지 않으며, GPU와 cluster의 계층적인 memory bandwidth에 맞춰 computation과 communication을 겹치고 data, parameter, sequence, layer 축의 parallelism을 조합해 Model FLOPs Utilization을 높이는 문제이다. Computer가 수행하는 작업은 크게 computation과 communication으로 나눌 수 있다. Computation은 input bit로부터 새로운 output bit를 계산하는 작업이다. Communication은 data를 한 memory 또는 device에서 다른 곳으로 옮기는 작업이다. #LECTURE
- CS231n Lecture 10 - Video Understanding Spatiotemporal representation과 action recognition Video understanding은 image에 time dimension을 더한 spatiotemporal data에서 appearance와 motion을 함께 표현하는 문제이며, frame pooling부터 3D CNN, optical flow 기반 two-stream network, recurrent model, space-time attention까지의 차이는 결국 temporal information을 언제 어떻게 결합하느냐에 있다. RGB image 한 장은 일반적으로 다음과 같이 표현한다. #LECTURE
- CS231n Lecture 9 - Object Detection, Image Segmentation, and Visualization Dense prediction과 모델 시각화 Image segmentation과 object detection은 image-level classification을 pixel, region, object 단위의 dense prediction으로 확장한 문제이며, saliency map과 CAM(Class Activation Mapping) 계열 기법은 예측 score를 다시 image 공간에 연결해 model이 어느 영역을 사용했는지 해석한다. 같은 image를 입력받더라도 무엇을 출력하느냐에 따라 task가 달라진다. #LECTURE
- Assignment 3-1: Image Captioning with Transformers Attention 및 Transformer Block 구현, Image Captioning Transformer 의 Multi-Headed Attention 을 구현하고, Positional Encoding 의 원리와 구현, Transformer Block 을 만들고 COCO Dataset 으로 이미지 캡셔닝과 ViT를 구현한다. Multi-Headed Attention은 embedding을 여러 head로 나누어 각 head가 서로 다른 표현 공간에서 token 사이의 관계를 포착하도록 한다. #ASSIGNMENT
- CS231n Lecture 18 - Human-Centered AI human-centered computer vision, fairness, privacy, healthcare, assistive robotics Human-centered AI는 단순히 인간과 같은 시각 능력을 만드는 데서 끝나지 않고, 인간이 놓치는 정보를 보완하면서도 편향과 개인정보 보호를 다루고, 최종적으로는 인간이 실제로 원하고 가치 있다고 판단한 일을 안전하게 돕도록 AI의 목표와 평가 기준을 설계하는 관점이다. Computer vision은 오랫동안 인간의 시각 능력을 재현하는 문제로 발전해 왔다. 그러나 모델의 성능이 높아질수록 단순히 무엇을 인식할 수 있는지만으로는 충분하지 않다. 무엇을 보게 할 것인지, 무엇을 보지 않아야 하는지, 그 결과가 누구에게 어떤 영향을 주는지까지 함께 고려해야 한다. #LECTURE
- CS231n Lecture 8 - Attention and Transformers Attention 연산과 Transformer 구조 Attention은 query와 key의 유사도로 value를 가중합하는 연산이며, Transformer는 self-attention으로 token 사이의 정보를 섞고 FFN으로 각 token을 독립적으로 변환하는 block을 반복해 sequence를 처리한다. Sequence-to-sequence model은 길이가 다른 두 sequence 사이의 mapping을 학습한다. 기계번역에서는 영어 문장을 입력받아 이탈리아어 문장을 출력할 수 있으며, 두 문장의 단어 수와 어순은 서로 다를 수 있다. #LECTURE
- Assignment 2-5: RNN Captioning COCO image feature와 RNN language model을 연결한 image captioning 구현 미리 추출한 image feature를 초기 hidden state로 투영하고, 한 timestep씩 어긋난 caption을 teacher forcing으로 학습하여 매 시점의 다음 token을 예측하는 RNN image captioning model을 구현한다. 이번 과제는 2014 COCO Dataset의 image-caption pair를 사용한다. Image는 ImageNet으로 사전 학습한 VGG-16의 fc7 feature를 사용하며, 4096차원 feature를 PCA로 줄인 512차원 입력을 model에 넣는다. Caption은 각 word를 integer ID로 바꾼 sequence로 처리한다. #ASSIGNMENT
- Assignment 2-3: Convolutional Networks Convolution, Max Pooling, Spatial Batch Normalization, Group Normalization 구현 이번 과제에서는 CNN을 구성하는 convolution과 max pooling layer의 forward, backward를 직접 구현한다. 이어서 CNN의 activation shape인 에 맞춰 Spatial Batch Normalization을 구현하고, 채널을 여러 group으로 나누어 정규화하는 Spatial Group Normalization까지 구현한다. #ASSIGNMENT
- CS231n Lecture 7 - Recurrent Neural Networks RNN 구조와 sequence modeling RNN은 이전 hidden state와 현재 입력을 같은 가중치로 반복 처리해 가변 길이 sequence를 모델링하며, BPTT로 시간축을 따라 학습하지만 순차 계산과 vanishing gradient라는 한계가 있어 LSTM과 현대적인 state space model로 발전했다. 일반적인 image classifier는 하나의 고정된 크기 입력을 받아 하나의 고정된 크기 출력을 만든다. Sequence modeling에서는 입력이나 출력이 가변 길이 sequence가 될 수 있다. #LECTURE
- Assignment 2-2: Dropout Dropout 개념 및 구현 드롭아웃의 개념과 효과, 순전파 및 역전파를 구현한다. 드롭아웃(Dropout)은 훈련 시 drop probability 만큼 뉴런의 출력을 무작위로 0으로 만드는 규제 기법이다. #ASSIGNMENT
- Assignment 2-1: Batch Normalization Batch Norm, Layer Norm 이번 과제에서는 Batch Normalization 의 개념과 BatchNorm 레이어의 forward, backward 를 구현한다. 또한 Batch Norm과 Weight Initialization 의 관계, Batch Norm과 Batch Size와의 관계를 Baseline 기반으로 비교한다. #ASSIGNMENT
- CS231n Lecture 6 - Training CNNs and CNN Architectures CNN 구성 요소와 아키텍처, 초기화, 데이터 증강, 전이 학습, 학습 방법 CNN을 안정적으로 학습하려면 합성곱만 쌓는 것이 아니라 정규화, Dropout, 활성화 함수를 목적에 맞게 배치하고, 잔차 연결과 Kaiming 초기화로 깊은 신경망의 최적화를 안정화하며, 데이터 증강과 전이 학습, 올바른 디버깅 절차까지 하나의 학습 과정으로 연결해야 한다. CNN을 다룰 때는 두 문제를 구분해야 한다. 어떤 계층을 어떤 순서와 형태로 연결해 아키텍처를 만들 것인가? 만들어진 아키텍처가 실제 데이터에서 안정적으로 학습되도록 어떻게 준비하고 검증할 것인가? #LECTURE
- Assignment 1-5: Training a fully connected network FullyConnectedNet 구현, Momentum, RMSProp, Adam 이번 과제에서는 임의의 개수의 hidden layer를 갖는 FullyConnectedNet을 구현하고, 여러 optimizer를 직접 구현해본다. 앞에서 만든 TwoLayerNet이 하나의 hidden layer만 갖는 구조였다면, 여기서는 hidden layer 개수를 리스트로 받아 더 깊은 fully-connected network를 구성한다. 기본 구조는 다음과 같다. #ASSIGNMENT
- CS231n Lecture 5 - Image Classification with CNNs CNN 이미지 분류 CNN은 작은 필터를 이미지 전체에 공유하며 적용해 공간 구조를 보존하고, 단순한 경계부터 복잡한 물체 특징까지 계층적으로 학습하는 신경망이다. 앞선 강의에서는 이미지 분류를 예제로 딥러닝 시스템을 구성하는 기본 요소를 배웠다. 전체 흐름은 다음과 같이 정리할 수 있다. 입력과 출력을 텐서로 표현한다. 입력으로부터 출력 점수를 계산하는 모델을 정의한다. 모델의 예측이 얼마나 나쁜지를 측정하는 손실 함수를 정의한다. 역전파로 손실에 대한 파라미터의 기울기를 계산한다. 경사하강법 기반 최적화 알고리즘으로 파라미터를 갱신한다. #LECTURE
- Assignment 1-4: Higher Level Representations: Image Features HOG, HSV feature 추출과 feature 기반 분류기 학습 이번 과제에서는 원본 픽셀을 그대로 사용하는 대신, 이미지에서 hand-crafted feature를 추출한 뒤 분류기를 학습한다. 사용한 feature는 Histogram of Oriented Gradients, HOG와 HSV color histogram이다. 전체 흐름은 다음과 같다. 각 이미지에서 HOG feature를 추출한다. 각 이미지에서 HSV hue channel 기반 color histogram을 추출한다. 두 feature vector를 이어 붙여 하나의 feature vector로 만든다. 추출된 feature 위에서 Softmax linear classifier를 학습한다. 같은 feature 위에서 TwoLayerNet을 학습한다. #ASSIGNMENT
- Assignment 1-3: Two-Layer Neural Network 완전연결계층 구현 Fully-Connected Neural Nets 과제에서는 neural network를 구성하는 기본 layer들을 모듈 단위로 구현한다. 이번 과제에서 직접 구현한 핵심은 affineforward, affinebackward, reluforward, relubackward, softmaxloss, 그리고 이들을 조합한 TwoLayerNet이다. 전체 구조는 다음과 같다. #ASSIGNMENT
- CS231n Lecture 4 - Neural Networks and Backpropagation Neural Networks, Backprop Neural network는 여러 linear transformation 사이에 nonlinearity를 넣어 복잡한 함수를 표현하고, backpropagation은 chain rule을 이용해 loss가 각 parameter에 미치는 영향을 효율적으로 계산하는 방법이다. Lecture 3에서는 loss function을 정의하고, regularization과 optimization으로 좋은 weight를 찾는 방법을 봤다. 하지만 지금까지의 모델은 여전히 linear classifier라서, 선 하나로 나눌 수 없는 데이터에는 한계가 있다. #LECTURE
- Assignment 1-2: Implement a Softmax classifier softmaxloss 구현, SGD 구현 softmaxloss 에 대해서 이해하고, svm loss와 softmaxloss의 차이를 확인하고, SGD를 적용해서 훈련을 수행하고, 검증 데이터로 하이퍼파라미터 결정하기 softmaxloss 는 모델이 정답 클래스에 얼마나 높은 확률을 부여했는지를 기준으로 손실을 계산하는 방법이다. score를 softmax로 변환하여 각 클래스의 확률을 계산 정답 클래스의 확률이 1에 가까울수록 loss가 작아짐 SVM loss와 달리 margin을 넘겨도 정답 확률을 더 키우는 방향으로 계속 학습 수식: logit(점수): #ASSIGNMENT
- CS231n Lecture 3 - Regularization and Optimization Regularization의 목적, L1/L2 정규화, gradient descent, SGD, momentum, RMSProp, Adam과 learning rate schedule Regularization은 모델이 training data에 너무 잘 맞는 것을 막아 test data에서 더 잘 동작하게 만드는 장치이고, optimization은 loss를 줄이는 방향으로 파라미터 를 찾는 과정이다. 이번 강의의 흐름은 loss function -> regularization -> gradient descent -> SGD -> momentum / RMSProp / Adam -> learning rate schedule로 이어진다. #LECTURE
- Assignment 1-1: k-Nearest Neighbor classifier kNN 구현, training, testing, cross-validation L1, L2 distance 에 대해 이해하고, k-Nearest Neighbors(kNN) 분류기를 직접 구현하고, 학습 데이터에 대해 성능을 측정하고, Cross-Validation (k-folds) 를 이용해 최적의 하이퍼파라미터 k를 찾기 k-Nearest Neighbors(kNN)는 테스트 샘플과 훈련 샘플 간의 거리를 계산하여 가장 가까운 k개의 이웃을 찾고, 다수결을 통해 클래스를 예측하는 분류 알고리즘이다. 학습 과정이 거의 없음 (Lazy Learning) 가장 가까운 k개의 데이터로 분류 거리 척도로 주로 Euclidean Distance(L2 distance) 사용 거리 계산: #ASSIGNMENT
- CS231n Lecture 2 - Image Classification with Linear Classifiers 이미지 분류 문제, 데이터 기반 접근, Nearest Neighbor와 K-NN, 선형 분류기의 입력 shape와 score 계산 정리 CS231n Lecture 2 내용을 개인 학습용으로 정리한 글이다. 이미지 분류는 이미지를 텐서 입력으로 받아, 미리 정해진 클래스 중 하나의 라벨을 예측하는 문제이다. #LECTURE
- CS231n Lecture 1 - Introduction 컴퓨터 비전의 문제 정의, 데이터 기반 접근, 이미지 분류와 딥러닝으로 이어지는 흐름 정리 CS231n Lecture 1 내용을 개인 학습용으로 정리한 글이다. 컴퓨터 비전은 픽셀 배열에서 의미를 뽑아내는 문제이며, 현대적 접근은 사람이 규칙을 만들기보다 데이터로 모델을 학습시키는 것이다. 우리 뇌에서 뉴런은 계층 구조를 지닌다. 강의에서는 Hubel과 Wiesel의 고양이 시각 피질 실험을 통해 단순한 선과 모서리에서 점차 복잡한 객체로 인식하는 계층적 구조가 밝혀졌다고 언급한다. 컴퓨터 비전은 이미지를 숫자 배열로 보고 의미를 예측하는 문제이다. 이미지 분류 모델은 픽셀의 표면적 차이를 넘어서 객체의 본질적인 패턴을 학습해야 한다. 데이터 기반 접근은 규칙을 직접 설계하지 않고, 대량의 데이터셋을 통해 모델이 분류 기준을 스스로 학습하게 하는 방식이다. 대표적인 예로 ImageNet이 있다. #LECTURE