이러한 linear classifier의 문제를 극복하기 위해 고안한 방법이 Feature Transforms
Feature Transforms의 주요 아이디어는 classification을 하는데 더 의미있게 만들어 주기 위해 우리에게 주어진 원래의 공간을 수학적으로 영리하게 변환
위의 그림을 직관적으로 봤을때 cartesian(데카르트 좌표)에서 polar(극좌표) coordinates로 변환하면 분류하는데 있어서 데이터를 더 잘 표현
Feature Transform을 하고 나면 Feature space(새로운 공간)에 input 데이터들이 존재.
여기서 유용한 점은 cartesian에서 polar 좌표로 변환했을때 위와 같은 데이터 셋은 선형으로 분류가 가능해짐.
polar 에서 Linear classifier를 다시 cartesian으로 가져오면 Nonlinear classifier.
데이터에 따라서 알맞은 Feature Transform을 하면 linear classifier의 한계를 극복하는 것이 아마 가능.
Computer Vision에서 쓰이는 Feature transforms의 예시로 Color Histogram
RGB 스펙트럼의 color space를 나누고,이를 이산적인 bin으로 나타낸다고 가정.
input 이미지의 픽셀들을 bin에 할당할 수 있고, 히스토그램을 통해서 이미지의 color가 어떻게 분포하는지 확인 가능.
이는 input 이미지에서 공간적인 정보는 버리고, 색 정보만 신경씀.
이는 빨간색, 파란색, 노란색 등 색들을 항상 linear 하게 classification 할 수 있게 함.
Color Histogram Approach에서는 input 이미지의 질감이나, 위치 정보는 모두 버리고 어떤 색이 있는지에만 집중.
Histogram of Oriented Gradients 는 색 정보는 모두 버리고, 이미지의 모든 위치에서의 local edge의 방향과 크기에만 집중.
빨간색은 강력한 대각방향을 가진 edge
파란색은 모든 방향을 가진 edge
노란색은 정보가 거의 없는 edge
이는 2000년대 중후반 컴퓨터 비전에서 object detection과 같은 매우 다양한 분야에서 사용.
실무자들은 feature represents에서 그들이 얻길 원하는 데이터의 어떤 데이터가 좋은 품질일까 생각
이미지 학습 데이터에서 다양한 크기의 패치들을 무작위로 추출.
"codebook"의 "visual words"(저수준의 특징 설명자)의 집합을 얻기 위하여 패치들을 clustering
codebook의 visual words를 활용하여 이미지를 해석하여 histogram으로 나타냄
한 종류의 feature representation만을 사용할 필요 없음.
여러 종류의 feature representation을 하고 이르 concatenate하여 하나의 긴 feature vector를 얻음.
여러 feature representation을 묶어서 사용하는 것은 2010년대 초반까지 많이 쓰임
--> Neural Networks의 탄생
가장 간단한 neural network 모델은 linear classifier 보다 그렇게 복잡하지 않음.
여전히 input data로 이미지 데이터를 하나로 길게 늘어뜨린 single vector를 가지고, 학습 가능한 weight를 2개 가짐(W1, W2)
h 차원의 벡터를 만드려고 입력 데이터 X와 W1을 곱
--> X(x,) * W1(x,h) --> h(h,)
h 차원의 벡터에 c차원 벡터를 element-wise maximum function을 적용하여 (h,c) size를 갖는 W2얻음
--> (h,)(,c) --> (h,c)
h 차원의 벡터와 W2를 곱하여 c차원의 벡터 얻음
--> (h,)* (h,c) --> (c,)
bias term은 주로 생략해서 식을 쓰지만 실제로는 사용.
weight matrix는 이전에 있는 레이어가 다음에 있는 레이어에 영향을 미치는 정도를 나타냄
위의 그램에서 W1의 (i,j)는 x_i가 h_j에 영향을 미치는 정도를 나타냄.
레이어에 있는 모든 유닛들이 다음 레이어에 있는 모든 유닛들에 이어져 있는 것을 Fully-connected neural network 라고 함.
Linear classifier가 하나의 클래스에 대해 하나의 template을 학습하는 것과 비슷한 형태지만
W1의 크기 만큼 template을 가진다는 차이.
이를 통해 하나의 class에 대해서 여러 템플릿을 가질 수 있다는 장점.
W2에서는 W1에서 만든 템플릿을 recombine시켜서 이미지를 판단.
Neural Network에서 Dept는 layer의 수를 뜻하고, layer의 수는 weight matrices의 수를 뜻함.
Nerual Network에서 Width는 layer안에 있는 유닛의 수를 뜻함.
이때 neural network에서 파란색 네모박스에 해당하는 max(0, 는 무슨 뜻인가?
neural network에서 매우 중요한 요소이며 0~input 사이에서 element-wise maximum을 취함.
Activation function으로 Relu(Rectified linear unit)라고 불리며 대부분의 문제에서 사용
non linear activation function을 사용하지 않고 weight matrix를 연산하면 linera classifier에 불과.
위는 20줄짜리 간단한 Neural Network 코드이며
Random data, Random Weight 세팅
Compute loss
Compute gradients
SGD step으로 구성
Neural network가 왜 강력한지 Space Warping 개념을 통해 설명 가능
x1, x2로 이루어진 input space가 있다고 할때, 2개의 linear classifier를 사용하면 2개의 선을 얻을 수 있고,
x1, x2를 4등분하는 h1, h2로 이루어진 space로 Feature transform 할 수 있음.
4개의 ReLU 함수를 이용해서 bump function을 만들 수 있는데
~s1 구간에서 0으로 flat하다가
s1~s2 구간에서 t까지 상승
s2~s3 구간에서 값t를 가지며 flat
s3~s4 구간에서 0까지 하락
s4~ 구간에서 0으로 flat
각 구간마다 shifted or scaled 된 ReLU 함수를 더해주어 bump function을 만듦.
히든 레이어에서 ReLU 함수를 4,8,16 개와 같이 여러개 사용하여 여러개의 bump function을 만듦.
이를 통해 two-layer Neural Network를 사용하면 어떤 함수도 근사화 가능!
실제로는 bumpfunction을 학습하지는 않고, 이를 통해서 어떤 함수도 근사화 가능하다는 사실만 알려줌.
고차원에서의 convex 함수는 그릇의 형태로 나타남.
convex함수는 optimize하기 쉬움.
그동안 배운 linear 모델에서는 loss function이 convex하게 나타나지만
Neural Network에서는 convex하다는 보장 X
Neural Network에서는 nonconvex를 optimize하는 방안이 필요