Image Classification
고양이 사진을 보고 고양이임을 컴퓨터는 어떻게 인지해야 할까? 우리는 고양이 사진을 보면 야옹이다! 라고 생각하겠지만 컴퓨터는 그냥 졸라많은 숫자 matrics를 보는 것이다. 이러한 사람과 컴퓨터간의 차이를 Semantic gap이라고 한다. 고양이는 밝아지거나 어두워지거나 숨거나하는 등 다양한 사진이 나올텐데 이러한 변화에 Robust해야 겠다.
처음에는 사진을 보고 졸라 분석해서 알고리즘을 만들려고 했으나 robust하지도 않고 비효율적이라 포기했다. 결론적으로 Data-Driven Approach를 생각해내게 된다. 컴퓨터한데 고양이 5억개를 주고 새로운 고영희를 마추라고 한 것이다.
train함수: images와 label을 input으로 학습한 다음 model을 내뱉는 것이다. 이 model을 가지고 predict에 넘겨주면 test_images를 예측해출 것이다.
Nearest Neighbor Classifier
직역하면 가장 가까운 이웃 분류기이다.
CIFAR10데이터셋에서 왼쪽의 1열은 우리가 제시한 사진이고 오른쪽 사진들은 제시한 사진과 비슷한 사진들이다. 육안으로만 봐도 비슷함을 알 수 있다. 그럼 어떻게 비슷한지 판별했을까?
- Distance Metric - L1 distance & L2 distance
L1: 개무지성으로 두 행렬에서 각 픽셀끼리 차로 이루어진 행렬을 구한 뒤 행렬값을 다 합쳐서 거리를 구한 것이다.
L2: 우리가 흔히 하는 피타고라스 공식으로 거리를 구한 것이다.
위의 마름모는 원점으로부터 L1방식으로 거리를 구했을 때 거리가 같은 점들의 모임이고 원은 L2방식으로 했을 때 거리가 같은 점들의 모임이다.
시간복잡도 측면에서 봤을 때 학습은 O(1)이지만 예측은 O(n)이다. 예측이 크면 버려야 된다. 그게 단점이다.
NN을 이용해서 decision regions를 그려보면 위와 같다. 점은 train data이고 점의 색은 label이다. 아무데나 점을 찍었을 때 가지는 색이 가장 가까운 학습데이터의 색이라는 것이다.
- K-Nearest Neighbor Classifier
이건 가까운 K개의 이웃을 찾고 그 중 제일 많은 색이 예측이다. k가 커질수록 경계가 부드러워진다.
Hyper Parameter
모델이 데이터 학습하다가 알아서 배우는 값이 아닌 우리가 귀찮게 지정해줘야 되는 값이다. 예를 들어 아까 배웠던 KNN에서 k가 하이퍼보이이다. 하이퍼파라미터를 어떤 기준으로 정해야 하는지 알아보자.
목적: 처음 보는 데이터를 잘 분류하는 것
1. train과 test로 나누고 train에서 여러 하이퍼파라미터 값들로 학습 후 test 데이터에 가장 잘 맞는 하이퍼파라미터 선택 => 땡! 한 번도 보지 못한 데이터에 대한 방어책은 되지 못함. 테스트셋만을 위한 하이퍼파라미터일 수 있음.
2. train, validation, test로 나누고 validation set에서 가장 좋았던 하이퍼파라미터 선택 후 test셋은 딱 한 번만 수행
3. cross validation이라는 것도 있다 하지만 계산량이 많아 딥러닝에서 잘 사용되지 않는다
<cross validation 과정>
- 일단 딱 한번 사용할 테스트 데이터 빼놓기
- 나머지 데이터들을 여러 부분으로 나누기
- 번갈아가며validation set을 바꾸어준다.
- 노란색에서 평가 후 최적의 하이퍼파라미터 결정
Linear Classification
f(입력이미지: X, 가중치: W) => 10 numbers giving class scores
함수에 고양이 사진을 넣어주면 함수는 가중치와 입력값을 가지고 10개의 숫자를 출력하는데 이중에 고양이 값이 가장 크면 고양이를 예측한 것이라고 불 수 있다.
입력 이미지 32x32x3을 하나의 열벡터로 피면 3072x1이다. 결과적으로 10x1이 나와야 하므로 W는 10X3072를 가질 수 밖에 없다. b는 bias로 절편을 뜻한다.
이를 템플릿 매칭의 관점에서 재해석해보자면 가중치 행령 W의 각 행은 각 이미지에 대한 템플릿이다. w의 각 행과 x는 내적이 되고 이는 유사도를 측정하는 것으로 이해할 수 있다.(모르겠으면 코사인 유사도 공부 ㄱㄱ)
조금 더 추상적으로 이해해보자면 이미지를 고차원 공간의 한 점일 때, Linear classifier은 아래와 같이 각 클래스를 구분시켜주는 선형 boundary 역할을 한다.(이해될 듯 하면서도 헷갈린다)
<문제점>
아래와 같이 parity problem(반전성문제), multimodal problem 에서는 하나의 선으로 클래스를 분류할 수 없다.
'수업 내용 정리 > CS231n' 카테고리의 다른 글
Lecture 3 | Loss Functions and Optimization (0) | 2023.07.09 |
---|---|
Lecture 1 | Introduction to Convolutional Neural Network for Visual Recognition (0) | 2023.06.11 |