[2025] CS231n 2강: Image Classification with Linear Classifiers - CS231n 강의 노트

2025. 9. 19. 00:43·[2025] CS231n
반응형

2강 : Image Classification with Linear Classifiers

이번 강의에서는 이미지 분류를 통해서 컴퓨터 비전의 핵심 과제에 대해서 살펴보고 머신러닝을 어떻게 활용하는지 최근접 분류기(Nearest Neighbor Classifier)와 선형 분류기(Linear Classifier)를 활용하여 이미지 분류가 무엇인지 어떻게 할 수 있는지에 대해서 알아본다.

 

 

이미지 분류란?

컴퓨터 비전의 가장 핵심적인 과제는 이미지 분류(Image Classification)이라고 할 수 있다. 사진을 입력으로 받고나서 가능한 답들(labels)인 강아지, 고양이, 트럭 그리고 비행기들이 있다고 가정할 때 답 중 하나를 정답으로 고르면 된다. 예를 들어, 아래 사진과 같이 고양이 이미지를 입력을 받았을 때 cat(또는 고양이)라고 정답을 고르면 된다.

하지만 이러한 분류는 인간의 눈에서는 쉽게 보이지만 컴퓨터와 기계가 이 사진을 인식하기 위해서는 문제가 존재한다. 바로 기계는 사진을 숫자로 밖에 바라볼 수 없다는 점이다. 하나의 사진에 800x600x3(세로 800, 가로 600, 색상 RGB 3채널)의 픽셀수가 있다면 하나의 픽셀 당 0부터 255까지의 정수가 들어가있으며 이러한 점들이 모여 하나의 사진을 이룬다. 결국 인간의 인식 능력고 픽셀들의 집합만 인식할 수 있는 컴퓨터의 인식 능력간의 차이를 극복해야한다. 

인식 능력간의 차이로 인해서 발생하는 문제들이 다양하게 있다: 

  • 시점 변화(view point)  변화에 따른 픽셀 변화
  • 조명(Illumination) 
  • 배경의 색과 유사하거나 객체의 일부분만 보임(Occlusion)
  • 다양한 자세을 취함(Deformation)
  • 같은 종류의 다양한 변주가 있는 객체들이 있거나(Intracalss)
  • 인식하기 헷갈리는 상황(Context) 등이 존재 

우리는 소파가 있으므로 장소는 집이고 집에서는 고양이를 많이 키우기 때문에 고양이 꼬리라고 생각한다. 하지만 컴퓨터도 고양이라고 인식할 수 있을까?

 

이제 이미지 분류에 관한 문제들을 극복하기 위해서 구별할 수 있도록 코드를 짜서 학습시켜야한다. 이미 존재한 시도들로 사진의 모서리를 인식하여서 컴퓨터가 인식하도록 하는 연구있었다. 머신 러닝, 기계 학습의 방법으로 데이터를 이용한 접근 방법은 이미지와 정답이 한 세트로 있는 데이터셋을 수집하고 머신러닝의 알고리즘을 사용하여 분류기를 학습시키며 마지막으로 새로운 이미지를 통해서 분류기를 평가한다.

 

 

최근접 분류기 (Nearest Neighbor Classifier)

 컴퓨터가 이미지를 분류하기 위해 사용하는 방법 중에서 가장 간단한 방법으로 최근접 알고리즘을 사용한다. 분류하는 방법으로는 학습을 시켰던 이미지 중에서 가장 닮은 이미지의 답을 정답으로 고른다는 아주 간단한 방법이다. 얼마나 닮았는지 계산하는 방법으로 Distance Metric를 이용하는데 이는 픽셀간의 차이를 빼서 이미지의 유사도를 계산한다.

입력데이터(query)와 학습 데이터 간의 차이를 계산한다.

최근접 알고리즘을 이용한 K-Nearest Neighobrs(KNN)은 K개의 점들 중에서 가장 많이 속해있는 그룹을 정하는 방법으로 K의 수를 직접 설정하여 적정 K를 찾아야한다. KNN에서 거리를 계산하는 방법은 단순하게 좌표의 차이를 구하거나 제곱의 차이를 루트를 씌워서 계산하는 유클리디언 방법이 존재한다. 사람이 직접 설정해줘야하는 변수를 하이퍼파라미터라고 하는데 KNN에서는 K의 값과 거리 방법 2가지를 선택해서 최고의 성능을 뽑아야한다. 하이퍼파라미터를 선택하는 방법을 강의에서 3가지 방법을 주고 있는데 :

  1. 학습 데이터에서 가장 좋은 성능을 뽑자 : 최종 목표는 새로운 데이터를 잘 분류해야하기 때문에 안 좋은 방법이다.
  2. 테스트 데이터에서 가장 좋은 성능을 뽑자 : 답지를 보고 베끼는 행위와 같으며 절대 해서는 안된다.
  3. 학습,검증,테스트로 나누고 검증 데이터에서 뽑자: 가장 좋은 방법이다.

하지만 3번에서 검증 데이터셋이 작아서 불안정할 수 있는데 이때 교차검증(Cross-Validation)을 이용해서 여러 번 반복해서 평균 성능이 가장 좋은 하이퍼파라미터를 선택하면 된다.

 

선형 분류기란?

Linear Classifier의 가장 간단한 예시로 y=ax+b의 직선의 방정식을 예로 들 수 있다. x라는 입력값으로 y의 결과를 도출하기 위해서 적절한 기울기 a와 절편 b를 찾으면 된다. 이렇게 찾아햐 하는게 정해진(기울기 a와 절편 b) 방식을 모수적 접근(Parametric Approach)라고 한다. 강의에서는 고양이 이미지를 입력으로 넣고 기울기이자 가중치인 W를 통해서 점수를 매긴다. 

 

선형 분류기는 간단하지만 블록처럼 쌓기를 통해서 신경망(Neural Network)를 만들 수 있으며 실제로 사용된 유명한 딥러닝 모델의 신경망 구조에서 선형 층이 존재하는 것을 확인할 수 있다. 다음으로 좋은 가중치 W를 찾는 방법에 대해서 보면 학습한 모델과 실제 정답간의 차이를 줄일 수 있는 손실 함수(loss function)을 사용한다. 손실 함수는 어느 정도의 성능을 나타내고 있는지에 대해서 보여주며 손실함수를 최소화하는 방향으로 가중치를 조정한다. 

 

 

소프트 맥스 (Softmax Classifier) 

이번에는 손실 함수를 어떻게 정의할 것인지에 대해서 알아보면 손실 함수 L은 현재 가중치 W에 대해서 얼마나 나쁜지를 수치화하고 이를 최소화하도록 w를 조정하는데 손실 함수 L을 정의하는 방법으로 소프트맥스 분류기가 있다. 고양이 사진을 분류한다고 하였을때 각각의 답에 대해 어느정도의 가중을 두었는지 점수를 매기고 양수로 나타내기 위해서 지수를 취하고 수를 모두 더하였을 때 1이 되도록 정규화 해준다. 이 과정이 바로 소프트맥스 함수이다. 

 

 

소프트맥스를 적용한 뒤 확률은 0과 1사이에 존재한다. 현재 모델이 이 이미지를 보고 고양이라고 생각할 확률이 13%이므로 가중치를 수정하여 손실함수를 줄여야한다. 로그를 적용하여 계산을 쉽게 하고 0과 1사이의 로그 값은 음수이기 때문에 -를 붙여 양수로 바꿔준다. 이러한 방법은 최대우도추정(Maximum Likelihood Estimation)와 동일하다. 마지막으로 고양이 사진이기 때문에 정답 확률인 고양이일 확률 100%와 비교하여 가중치를 조정한다. 조정하는 원리와 방법에 대해서는 다음 강의인 정규화와 최적화에서 다룰 예정이다.

 

 

강의 자료

CS231n 강의 공식사이트 - cs231n.stanford.edu

CS231n Spring 2025 유튜브 강의 - youtube

CS231n 강의 슬라이드 - cs231n.stanford.edu/slides/2025

CS231n 과제 및 자료 - cs231n.stadford.edu.github.io

 

반응형
저작자표시 비영리 동일조건 (새창열림)

'[2025] CS231n' 카테고리의 다른 글

[2025] CS231n 5강: Image Classification with CNNs - CS231n 강의 노트  (0) 2025.11.17
[2025] CS231n 4강: Neural Networks and Backpropagation - CS231n 강의 노트  (0) 2025.11.06
[2025] CS231n 3강: Regularization and Optimization - CS231n 강의 노트  (1) 2025.09.22
[2025] CS231n 1강:Introduction - CS231n 강의 노트  (0) 2025.09.15
[2025ver] Intro: CS231n 가이드  (0) 2025.09.13
'[2025] CS231n' 카테고리의 다른 글
  • [2025] CS231n 4강: Neural Networks and Backpropagation - CS231n 강의 노트
  • [2025] CS231n 3강: Regularization and Optimization - CS231n 강의 노트
  • [2025] CS231n 1강:Introduction - CS231n 강의 노트
  • [2025ver] Intro: CS231n 가이드
코드짜는 오리
코드짜는 오리
AI에 대한 글을 올립니다.
  • 코드짜는 오리
    코드짜는 오리
    코드짜는 오리
  • 전체
    오늘
    어제
    • 전체 글 (41)
      • AI숏츠 (17)
      • 논문 리뷰 (10)
      • [2025] CS231n (10)
      • 컴퓨터비전 (2)
      • LLM (1)
  • 링크

    • GitHub
  • 인기 글

  • 최근 글

  • 반응형
  • 태그

    Optimizer
    lstm
    논문
    GPT
    논문리뷰
    rnn
    pytorch
    인공지능
    attention
    CS231n 강의노트
    ADAM
    computer vision
    AI숏츠
    SGD
    ComputerVision
    컴퓨터비전
    머신러닝
    경사하강법
    옵티마이저
    쉽게배우는
    llm
    cs231n
    CV
    딥러닝
    트랜스포머
    AlexNet
    deeplearning
    transformer
    AI
    ChatGPT
  • hELLO· Designed By정상우.v4.10.5
코드짜는 오리
[2025] CS231n 2강: Image Classification with Linear Classifiers - CS231n 강의 노트
상단으로

티스토리툴바