본문 바로가기
CVLab/cs231n (2016)

2024.09.27 Q&A

by print_soo 2024. 9. 27.

1. 수작업 기반 알고리즘 (SIFT, HOG)가 비효율적인 이유

 

수작업 기반의 SIFT나 HOG가 비효율적인 이유는 아래와 같다. 

  • SIFT나 HOG는 이미지 속에서 사람이 직접 정의한 특징(예: 경계, 코너, 모서리 등)을 찾아낸다. 이 과정에서 어떤 특징이 중요한지 사람이 정해야 한다. 사람이 특징을 정하는 과정은 많은 코스트가 들고, 주관적일 수 있어 만드는 사람마다 모델의 성능이 다를 수 있다.
  • 또한, 특정 문제에 대한 도메인 지식이 필요한데, 복잡한 문제에서는 사람이 중요한 특징을 정확하게 정의하기 어렵다.

이렇게 사람이 수작업으로 진행해야하는데 한계가 생긴다. 그리고 딥러닝 기반의 CNN 모델은 수많은 데이터를 통해서 스스로 특징을 할 수 있다. 따라서 SIFT나 HOG처럼 수작업으로 학습시키는 과정은 비효율적이다. 

 

 



2. Nearest Neighbor Classifier가 비효율적인 이유

NNC가 비효율적인 이유는 하나의 이미지를 분류하기 위해서 모든 데이터를 비교해야하기 때문이다.

 

 

 

2-1. Nearest Neighbor Classifier 효율성 높이는 방법

 

모든 데이터를 비교하는 것이 아니라, 각 클래스의 특징을 찾고 그 특징을 기반으로 데이터와 비교하는 것이다.

 

예를 들어 고양이 이미지를 넣었을 때 고양이, 토끼, 거북이 클래스가 있다고 가정하자. 

고양이는 귀가 뾰족하고 꼬리가 길다는 것이 특징이다.

토끼는 귀가 둥글면서 길고 꼬리가 둥글고 짧다는 것이 특징이다.

거북이는 귀가 없고 등껍질이 있다는 것이 특징이다.

 

따라서 이런 특징을 기반으로 고양이가 들어왔을 때 각 클래스의 특징을 비교하고 가장 유사한 클래스를 도출하는 것이다.



3. 가중치란?

 

간단하게 말하면 모델 속의 모델이다. 

 

즉, 가중치란 특정한 이미지를 특정한 결과로 만들어주는 값이다. 

예를 들어 고양이를 분류하는 가중치가 있다고 해보자. 이 가중치가 올바른 가중치라고 가정한다면 고양이 이미지를 모델에 넣어줬을 때 고양이 카테고리의 Score가 가장 높게 만들어준다. 

 

따라서 가중치란 모델 내부에 있는 모델이다.



4.선형 분류의 단점/ 개선 방법?

 

 

선형 분류의 단점은 당연하게도 비선형 분류가 어렵다는 점이다. 

 

 

이렇게 [왼 쪽 그림]선형 데이터는 쉽게 선형 분류기로 분류가 가능하다. 하지만 [오른 쪽 그림] 비선형 데이터는 선형 분류기로 분류가 어렵다.

 

저렇게 비선형 데이터인 경우는 일상에서 얻는 데이터의 대다수의 형태이다.

 

💡 그렇다면 저런 데이터는 어떻게 분류해야할까? 

 

Feature를 추출한다.

즉, 이미지는 2차원 데이터인데, 이 2차원 데이터를 고차원으로 변환 시켜주는게 Feature이다. 

 

 

그럼 이렇게 차원을 높이면 왜 비선형 데이터를 선형 분류할 수 있을까? 단순하게 2차원에서 3차원으로 바꿔줘도 알 수 있다. 

물론 모든 데이터가 이렇게 y축을 기준으로 분류되어 있는건 아니고 고차원에서 분류가 가능한 하나의 예시이다.

 

 

 

5. L1과 L2 차이의 이유 (그래프)

 

왜 L1은 최대한 많은 값을 0으로 변경하려고 하고, L2는 최대한 0에 근접하게 변경하려고 할까?

 

해당 부분은 L1, L2 각각의 공식을 그래프화 해보면 된다. 

 

이렇게 위의 그래프를 보면 L1은 0으로 가는 속도가 일정하다. 따라서 점점 감소하다보면 0이된다.

하지만 L2를 보면 포물선 형태의 그래프를 나타낸다. 따라서 점점 감소하다보면 0으로 근접하지만 시간이 오래걸리게된다.

 

그렇기 때문에 L1은 0으로 변경하려고하고, L2는 최대한 0에게 근접하게 변경하려고한다. 

 



6. SVM에서 Safe margin(1)의 의미

 

Safe margin(1)은 바다에서 넘어서는 안되는 세이프 라인과 같다.

즉, 바다에서 세이프 라인이 없는 곳은 사고가 발생할 상황이 많다. 하지만 바다에서 세이프 라인이 있는 곳은 정상적인 사람이라면 세이프 라인을 넘지 않는다. 따라서 안전하다. 

 

 

 

 

그림을 예시로 설명해보겠다. 

왼쪽은 Safe margin(1)이 없어서 새로운 데이터가 선형 분류기를 넘어갈 수 있다. 이렇게 되면 제대로된 데이터 분류가 되지 않을 수 있어 성능이 안정적이지 못하다.

 

오른쪽은 Safe margin(1)있다. 따라서 어떠한 데이터라도 Safe margin(1)을 넘지 못한다. 이렇게 되면 제대로된 데이터 분류가 가능해서 성능이 안정적이게 된다.

 

 

 

 

 

왜 Safe margin(1)을 넣으면 안정거리가 보장이 되는지 수치적으로 살펴보자.

 

 

 

Safe margin(1)이 없다면  'S(j) - 정답 레이블'이 0인 경우  'S(yi) - 오답 레이블'이 0.1이어도 성립된다. 

'S(j) - 정답 레이블'이 0.5인 경우  'S(yi) - 오답 레이블'이 0.6이어도 성립된다. 

 

즉 스코어가 근소한 차이로 저 식이 성립이 된다.

 

 

 

 

하지만 Safe margin(1)이 있다면 이야기는 달라진다.

'S(j) - 정답 레이블'이 0인 경우  'S(yi) - 오답 레이블'이 1이상인 경우에만 성립된다.

또 'S(j) - 정답 레이블'이 0.5인 경우  'S(yi) - 오답 레이블'이 1.5이상인 경우에만 성립된다. 

 

따라서, 값의 차이가 분명히 있어야 해당 식을 성립하게 된다. 정답 스코어와 오답 스코어의 확실한 차이가 주어야한다는 의미이다.

 

 

7. Cross Entry Loss(Soft Max)에서 확률을 구하는 의미

 

CEL의 전체 공식은 다음과 같다. 

 

 

 

💡 여기서 아래의 P부분은 확률을 뜻하는데 이 확률을 구한다는 말의 의미는 뭘까?

 

 

 

⭐️⭐️⭐️확률을 구한다는 의미는 모든 값을 더했을 때 1이 되게 만든다는 의미와 같다.⭐️⭐️⭐️

 

 

 

이렇게 고양이 이미지에 대한 각 클래스를 SoftMax로 손실값을 구한다고 했을 때 마지막 확률 부분이 이 질문에 핵심이다. 

각 숫자를 모두 더하면 1이된다. 

 

위 이미지에서 확률의 의미는 다음과 같다. 

 

고양이일 확률 13%, 자동차일 확률 89%, 개구리일 확률 0%

(완전히 잘못된 모델)

 

따라서 확률로 했을 때의 장점은 특정 이미지에 대한 각 클래스의 확률을 볼 수 있다는 점이다.

 

 



8. 배치를 사용하는 이유

 

💡 왜 Full - batch 대신에 Mini - batch를 사용할까?  

 

성능이 좋은가? 아니다. (단점)

성능은 Full - batch가 훨씬 좋다. 왜 좋을까? Full - batch는 모든 데이터의 경사를 계산해서 손실을 줄이고, Mini - batch배치는 특정 구역의 경사만 계산해서 손실을 줄여간다. 

 

그럼 왜 성능이 더 떨어지는 걸 사용하냐?(장점)

모든 데이터의 경사를 계산한다는 건 고성능 GPU를 필요로 한다. 따라서 이러한 하드웨어적 문제 때문에 Mini - batch를 사욜한다. 

 

 

 



9. Forward Pass와 Back Pass(역전파)의 정의 및 목적

 

FP를 통해서 모델의 예측 결과를 도출한다.

BP를 통해서 예측 결과를 기반으로 W를 개선하는 것이다. 

 

 

 

 



10.sigmoid 사용 이유 / 비선형

 

 

시그모이드 함수의 그래프를 보면 위와 같다.

 

장점 1

이 함수는 0 ~ 1을 나타낼 수 있다. 즉 각각의 합을 더하면 1이 된다는 말이다.

따라서 확률 값으로 표현이 가능하다!

 

장점2

0.5부분에서 기울기가 가장 크기 때문에 학습을 할 때 가장 애매한 값(0도 아니고 1도 아닌 값)을 처리하는 게 중요한데, 해당 부분은 시그모이드 함수에서 가장 기울기(경사)가 큰 값이기 때문에 학습을 보다 빠르고 효율적으로 할 수 있다.

 

 

11. 비선형 분류가 좋은 이유

 

 

 

선형으로 분류하기 힘든 비선형 데이터를 구분하기 쉽다.

 

다만, 선형 분류에 비해서 학습이 어려워진다는 단점이 있다.

 

 

 

 

 

 

 

따라서 비선형 데이터를 분류하는 방법은 2가지가 있다.

 

1. 비선형 데이터를 선형 데이터로 변환

2. 비선형 분류를 한다.