플로라도의 data workout

EECS 498-007 Lecture 05 : Neural Networks 정리 본문

기초 노트/EECS 498-007 (ComputerVision)

EECS 498-007 Lecture 05 : Neural Networks 정리

플로라도 2024. 3. 17. 02:09

 

이번 강의 주제는 드디어 Neural Networks(신경망)이다.

 

 

지금 까지 배운 내용에 대한 요약이다.

 

1. 먼저 우리는 knn과 같은 non-parametric classifier가 아닌, parametric classifier를 만들기 위해서  Linear model에 대해서 다뤘다. 

2. 다양한 weight의 세팅에 대해서 우리의 happiness or unhappiess를 표현하기 위한 수단인 loss function에 대해서 다뤘다.

3. 그 다음 weight를 업데이트 하는 방법인 Iterative method - gradient descent의 변형들 (SGD+momentum 그리고 Adam , RMSProp) 등의 optimization에 대해서 배웠다.

 

 

우리는 다시 1번에서 등장한 Linear Model로 돌아가서, classifier의 관점에서 Linear Model로 부터 Neural Network모델까지의 과정을 살펴보려 한다.

 

우리는 Linear Classifier가 가지는 한계점에 대해서 배우고, Linear Classifier의 Geometric View와 Visual Viewpoint에 대해서 배웠다.

 

먼저 Geometric 관점에서 Linear Classifier는 유클리디언 공간 내에서 존재하는 high dimensional feature space를 두개의 청크로 분리하는 hyper plane을 만드는 것이었다.

그래서 Linear Classifier로는 좌측의 그림과 같이 파란점과 초록점을 선형을 분리하는 것이 불가능했다.

 

Linear Classifier를 Visual Viewpoint로 바라보면, Linear Classifier는 단지 클래스당 하나의 template만을 학습할 수 있었다. 그래서 같은 물체의 카테고리에 대해서 multiple mode를 표현할 수 없었다.

예를 들어. horse template에 대해서는 왼쪽으로 보는 말과 오른쪽으로 보는말을 blend해서 표현할 뿐이었다.

Linear Classifier는 표현력에 한계가 있었다.

 

Neural Network로 곧장 가기 전에, 먼저 이러한 Linear Classifier의 한계를 극복하기 위한 방법들을 다뤄본다.

첫번째로는 "Feature Transforms"라는 개념이다.

Feature Transform는 Original Space의 Input 좌표들을 Classification할 수 있기를 기대하며

어떤 수학적 공식에 의해 변환하는 것이다.

 

위와 같은 예시에서는 데카르트 좌표계를 극 좌표계로 변환하면 classification의 목적에 더 잘 부합하는 데이터의 표현이라 생각하는 것이다.

 

이제 우리는 우리가 선택한 극좌표 변환에 Orginial space에서 Feature Space라 불리는 공간으로 옮겨 왔다. 

 

 

위의 예시에서 극좌표 변환을 통해 데이터들이 Linearly sparable하게 표현 된 것을 알 수 있다.

Feature space의 Linear decision boundary를 원래의 Orginial space로 다시 porting하는 경우를 상상해보면,

linear decision boundary가  non-linear decision boundary에 대응되는 것을 볼 수 있다.

 

이렇듯 데이터에 잘 맞는 변환을 적절히 선택하면, 아마도 이러한 linear classifier의 한계를 극복 할 수 있다.

극좌표 변환은 간단한 예시처럼 보이지만, 일반적으로는 이러한 변환의 선택에는 반드시 데이터의 구조를 세심히 살펴야한다. 또, downstream에서 linear classification을 잘 수행할 수 있는지에 대한 고려도 동반되어야 한다.

 

feature transfrom의 개념은 이론적이기만 한 것이 아니라, 실제로 컴퓨터 비전에서 널리 쓰이고 있는 방법이다.

 

 

이러한 feature transform에 관한 컴퓨터 비전의 예시중 하나는 "Color Histogram"이다.

 

color histogram의 방법에서는 rgb feature space를 어떤 불연속 구간(discrete bins)의 개수로 나눈다.

input image인 개구리 사진의 각각 픽셀이 히스토그램 상의 특정bin의 위치에 해당하는 것을 알 수 있다.

feature representation은 각 이미지에 어떠한 형태의 색깔이 나타났느냐에 관한 normalized histogram의 형태가 된다.

 

color histogram은 이미지의 공간적 정보(spatial information)는 무시하고 오직 이미지 내에 존재하는 색상에만 초점을 맞추는데, 이러한 점 때문에 공간적으로 불변(spatially invariant)의 특징을 갖는다.

color histogram은 빨간 뭉텅이가 얼만큼... 초록색 뭉텅이가 얼만큼... 등 색상만을 고려하기 때문에

개구리가 이미지 내에 어디에 있든지 상관이 없다.

 

또다른 방식은 정말 널리 쓰이는 feature representation 방법인데, Histogram of Oriented Gadients(HoG) 라 불리는 방법이다.  HoG는 Color histogram 방식과 반대다. 색상의 정보를 사용하는 것이 아니라, local edge의 방향과 강도(local edge of orientations and strengths)에 관한 정보를 사용한다.

 

 

HoG는 매 input image마다 엣지의 local orientation과 local strength를 알려준다.

 

 

예시를 보면 blurry한 배경 부분에는 edge가 약하게 표현되며, 빨간 박스 영역은 대각방향의 edge가, 개구리의 눈 부분은 모든 방향이 표현된 것을 볼 수 있다.

 

여기서 짚고 넘어가야할,  feature representation에서 연구자들에게 반드시 요구되는 질문사항은 아래와 같은데

"feature representation을 통해서 무엇을, 얼마 만큼을 capture하기를 원하는 가?"

"어떠한 타입의 feature representation을 디자인 해야되는가? " 이다.

 

 

또 다른 feature representation방식은 data-driven한 방식이 있는데, Bag of words representation이라 불리는 것이다.

이것은 이미지로 구성된 큰 훈련데이터셋에서, 이미지를 다양한 크기와 랜덤한 비율의 패치로 나눈뒤 이들을 cluster로 묶는다.  그러한 cluster를 code book 혹은 set of visual words라고 부르며, 우리의 이미지 속에서 어떠한 피쳐가 표현되어야 되는가를 나타낼 수 있다.

 

이것의 아이디어는 많은 훈련데이터 이미지 속에서 흔하게 관찰되는 feature structure가 존재하는데,  이것을 통해 일종의 visual word representation을 학습하기를 기대하는 것이다.

 

이 스텝은 visual word의 codebook을 만드는 첫단계이다.

 

두번째 스텝은 학습된 code book으로 이미지를 인코딩하는 것이다.

이것은 일종의 histogram representation을 계산하는 것인데, 입력 이미지가 훈련데이터로 부터 미리 계산된 local patch들의 cluster 중심이 얼마나 나타났는가를 살펴보는 것이다. 

"입력된 이미지에서 visual word가 얼마나 등장하였는가?" 를 살피는 것과 같다.

 

이것은 연구자가 별도로 feature representation에 대한 특별한 functional form을 규정하지 않아도 되기 때문에 꽤나 강력한 방법이다. 단지 여기서 feature representation에 사용되는 code book의 feature는 데이터로 부터 학습된 것이다.

따라서 다른 feature representation 방식에 비해 더욱 유연성이 있다.

 

그러나 이러한 Image feature를 만들 때 한가지 방법 뿐 아니라 여러개의 방식으로 feature representation을 한 뒤 

이들을 concat하여 하나의 long-high dimensional feature로 만드는 방법도 있다.

예를 들면, 제일 첫단에는 color histogram을 통한 feature를 사용하고, 두번째 단에는 Bag of visual words 방식의 feature를, 세번째에는 HoG을 사용하는 등의 식이다.

이러한 feature representation을 결합하는 방식은 2000년대 후반과 2010년대 초반 컴퓨터비전에서 굉장히 많이 사용되었다.

 

 

과거의 예인 2011년 ImageNet 챌린지를 살펴보면, 이 때가 2012년 AlexNet이 등장하기 바로 직전인데,

이 때의 우승자는 low level feature부터 high level feature까지 복잡하고 다양한 feature들을 결합하여 사용하였다.

 

SIFT와 color histogram을 사용하여 feature extract한 뒤, PCA를 통해 차원을 축소하고 이들을 fisher vector에 적용하여 

마지막으로 compression과정을 거쳐 feature repesnetation 을 마치고 최종적으로 SVM Classifier를 사용하였다.

 

 

머신러닝 파이프라인의 전체적인 과점에서 Feature Extraction을 다시 복기해보자.

image classification은 결국 두 부분으로 나뉘는데 하나는 feature extractor가 되는 부분과 하나는 feature vector를 다루는 learable model이다. 

Feature extraction단계가 방금 막 본, Bag of words방식처럼 data-driven 하더라도, 이들이 feature extraction stage에서 직접적으로 classification accuracy를 최대화를 위해 스스로 튜닝을 하지는 않는다. (그저 사람이 지정한 방식대로 할 뿐이다.)

 

단지 시스템의 전체 파이프라인의 일부분인 classifier만이 classification accuracy를 최대화하기 위해서 그들의 weight를 스스로, 자동으로 튜닝할뿐이다. (SVM part)

 

 

Neural Networks0의 motivation중 하나가 바로 이러한 점이다. 입력값인 raw image에서 출력값인 classfication probablity까지 가는 과정 끝까지 스스로 튜닝하는 end-to-end 파이프라인을 만들고자 하는 것이다. Neural Networks는 이전 파이프라인과 크게 다르지 않은데, 다만 바뀐것이 있다면 feature extraction부분이 classifier부분과 합쳐져서 동일하게 classification score를 maximize하기 위해 스스로 튜닝하는 점만 바뀌었다.

조금더 수학적인 형태로 설펴보자.

이제는 너무나도 친숙한 Linear function이다. $x$는 거대한 column vector형태로 데이터의 정보가 담겨 있고, $W$는 learnable weight matrix형태이다.

 

 

가장 가단한 형태의 Neural Network는 Linear Classifier보다 대단히 복잡한 것이 아니다. hidden size의 크기 $H$를 나타내는 shape을 갖는 weight matrix $W_1$이 있고, $W_1$과 column vector $x$와 계산된 column vector로부터 두번째 weight matrix $W_2$가 계산된다. 물론 여기에는 learnable bias도 포함되는데 간단하게 하기 위해서 통상 생략해서 적는다. 

여기서 feature vector가 갖는 hidden size, $H$는 표현하고자 하는 feature representation의 차원의 수이다.

 

더 복잡한 Neural Network라고 해도, 그저 이 것을 계속해서 반복할 뿐이다.

 

이 과정을 다이어그램으로 시각화 해서 나타내면 위와 같다.

가장 좌측에는 모든 픽셀의 정보가 담겨있는 3072차원의 column vector $x$가 존재하고, (32*32의 해상도를 가진 RGB 3채널 CIFAR-10과 같은 이미지) 중간에는 100차원의 size를 갖는 hidden vector $h$가, 마지막에는 열개의 카테고리의 확률을 담고있는 probability vector $s$가 존재한다.

 

가중치 행렬에 대한 해석을 조금 덧 붙이자면, weight matrix $W$는 이전 단계의 layer가 다음단계의 layer에 얼마나 영향력을 끼치는지를 나타낸다.

예를 들면, 첫번째 $W_1$ matrix의 한 요소 $w_{1_ij}$ 는 $x_j$를 통해서 $h_i$의 영향을 주고,  두번째 $W_2$ matrix의 요소 $w_{2_ij}$는 hidden vector $h$를 통해 score probabilty  $s$에 영향을 준다. 

하나의 요소가 아니라 다른 요소들도 마찬가지 동일한 방식으로,

가중치 행렬 $W$에 의해서 column vector $x$의 모든 요소들은 hidden vector $h$의 모든 요소에 영향을 주고, hidden vector $h$의 모든 요소들은 score probability $s$의 모든 요소들에 영향을 준다.

이러한 'dense connectivity' 패턴을 보통 신경망에서 Fully-connected Network라고 부른다.

 

Network의 모든 unit이 서로다른 모든 unit들과 연결되어 있다. 다시 말해 Full-connected이다.

때때로는 퍼셉트론을 배웠던 관점으로 MLP, Multi-Layer Perceptron 이라고도 부른다.

 

이전까지 Linear classifier는 클래스 당 하나의 템플릿밖에 학습하지 못하는 것을 배웠다.

이제 방금 구성한 2-layer Nueral Network는 어떻게 작동하는지 살펴보자.

 

$w_1$ matrix는 역시 마찬가지로 어떤 하나의 템플릿을 학습한다. hidden vector의 요솟값을 input image $x$로부터 학습한 템플릿이라고 봐도 좋을 것이다. 바로 위에 보이는 템플릿 이미지는 알아보기 쉽지 않아서 이것이 어떠한 것을 예측할지 상상할 수 없지만, 2-layer neural network system에서 첫번째 레이어는 클래스 별로 무언가 구별되는, 어떤 구조적인 템플릿을 학습한다.

 

때때로 운이 좋으면 보이는 빨간 박스처럼 뚜렷하게 클래스의 특징이 구별되는 것을 볼 수 있다.

아마도 두 빨간색 박스는 오른쪽을 바라보고 있는 말과 왼쪽을 바라보고 있는 말로 보인다.

이것은 우리의 앞전 Linear Classifier의 한계의 주요 포인트이기도 하였다.

 

두번째 layer는 앞선 첫번째 layer의 정보들을 조합하여 class score를 만든다. 

오른쪽을 보고 있는말과 왼쪽을 보고 있는 말의 정보를 조합하여 하나의 template으로 재조합하는 것이다.

 

이것은 때때로 "distributed representation"이라고 불린다.

말의 예시는 알아보기 쉬웠지만,  현재 박스친 부분들은 나중에 어떠한 예측을 하게 될지 알기 어려워 보인다.

대부분의 첫번째 레이어의 결과는 무엇을 의미하는지 도통 해석하기 어려렵지만, 단지 어떠한 구별되는 spatial 정보만을 distributed하게 담고 있다. 

 

신경망에서 Depth는 레이어의 수 , 즉 weight Matrix $W$의 갯수를 나타내며,  Width는 feature representation에 사용되는 hidden size의 dimension을 나타낸다. 

 

 

그리고 신경망의 수식을 보면 max함수가 있는데, 어쩌면 신경망의 수식에서 가장 중요한 부분이라고 할 수 있다.

이것은 activation function(활성화 함수)이라고 불리며,  활성화 함수로 ReLU를 사용 할 경우, 양수는 그대로 채택하고 음수값은 모두 날려버리는 효과를 갖는다.

 

Neural Network에서 학습가능한 Weight Matrix $W$ 외에 이러한 활성화 함수를 두는 이유가 무엇인가?

매우 매우 중요한 부분이다.

 

 

 

먼저, 만약 활성화 함수가 없으면 어떻게 될 것인가?

 

그저 신경망이 Linear Classifier로 남게 된다.

input vector $x$에  $W_1$ matrix가 곱해지고, 이에 다시 $W_2$ matrix가 곱해질텐데

이러한 matrix multiplcation연산은 서로 연관되어 있어 두개의 matrix가 하나의 group으로 묶여서 계산될 수 있다.

즉, 활성화 함수가 없으면 그저 다시 Linear classifier로 돌아가버리고 마는 것이다.

 

이러한 ReLU와 같은 non-linear 함수가 없으면 신경망에는 어떠한 추가적인 표현력이(additional representation power) 없기 때문에 신경망에서 매우 매우 중요한 부분이다.

 

 

앞서는 활성화함수로 ReLU를 소개했지만, 사람들이 사용하는 활성화 함수에는 많은 종류가 있다.

 

어떤 활성화함수를 사용해야 하는가에 대한 이유는 이후 자세히 다시 다루도록 하겠다.

오늘날에는 대부분의 문제에서 ReLU를 기본적인 선택으로 하면 된다.

 

지금까지 배운 Neural Net을 파이썬 numpy를 통해 매우 간단히, 20줄 이내에 적을 수 있다. 

 

 

 

조금은 다른 이야기를 해보려고 한다.

딥러닝의 신경망(Neural Network)에서 "Neural"이라는 단어를 마주하게 되는데 Neural이 무엇인지 조금만 다루어 보려고 한다.

 

구글에서 찾아보면 우리의 뇌세포인 뉴런은 위와 같이 생겼는데, 뉴런에는 매우 중요한 요소들이 있다.

중앙에는 모든일이 일어나는 중심인 cell body가 있고, 전기적 자극의 통로인 Axon이 있다. 

그리고 그 자극의 수용체은 Dendrite가 있다.

 

 

뉴런은 거대한 Network로 연결되어있는데 Axon은 전기적 자극을 또 다른 Axon으로 흘려 보내고 그러한 자극은 Dendrite라고 하는 수용체에 의해서 받게 된다. 그리고 Dendrite와 다른 뉴런의 Axon의 간극을 Synapse라고 부른다.

 

 

뉴런의 중앙에는 Axon으로부터 흘러들어온 전기적 자극을 모으는데, 시냅스의 연결성은 이러한 Axon으로 부터 흘러들어온 전기적 자극을 Denrite를 위해 모듈화하거나 변환한다. 모아진 전기적 자극이 일정한 수치값을 넘으면 downstream 뉴런으로 또 다시 자극을 흘려 보낸다.

 

 

 

여기서 우리는 신경망에서 Firing rate라는 개념을 차용하게 된다.  (특정 임계값을 전기적 자극을 다른 뉴런으로 보내는 것) 

 

 

생물학적 뉴런과, 인공신경망(Artificial Neural Network) 사이 이러한 비유까지는 각 요소들이 비슷한 동작을 한다.

 

그러나 생물학적 뉴런은 인공신경망이 일부 모사한 부분과는 달리 뉴런 사이에 매우 매우 매우 매우 매우 복잡하다.

일부는 연결되고 일부는 끊겨 있다거나한 random한 관계와

전기적 자극이 일방향이 아니라 여러 방향, 다시 돌아가는 방향 등의 여러 연결성과 topological 구조가 있다.

 

Facebook AI 리서치팀에서는 이러한 생물학적 뉴런을 모방한 connectivity random을 연구하기도 했는데 아직 괄목할만한 성과가 나오지는 못하고 있다.

 

이제 본 강좌에서 생물학적인 뇌와 비유에 대한 이야기는 여기까지만 하려고 한다.

일부 개념을 차용하였지만 인공신경망과 실제 생물학적 뉴런에 대한 이러한 비유를 너무 진지하게 받아들이진 않아도 된다.

다시 수학과 엔지니어링의 관점으로 돌아오자.

 

왜 Neural Network가 image classification 및 function approximation 시스템으로서 강력한지는 앞서

 distributed representation이라는 특징을 살펴 보았지만 한가지 더, Space Warping이라는 개념 때문이다.

 

우선 $h = Wx$ 라는 선형 변환과 $x_1$ , $x_2$로 이루어진 2차원 공간을 생각해보자.

 

 

$x_1$ , $x_2$는 선형 변환 $h=Wx$에 의해 $h_1$, $h_2$로 기저 변환되고

두 개의 classifier에 의해 나눠진 A,B,C,D 각 영역도 마찬가지 선형의 방식으로 변환되어 사분면을 형성하게 된다.

 

이번에는 data point cloud를 생각해보자.

 

 

동일하게 feature transform을 적용하면 Linearly하게 transform 할 뿐이기 때문에

data point들은 Linear transformation이후에도 여전히 Linearly separable하지 않다.

 

여기에 non-linear인 ReLU를 적용하면 어떻게 될까?

ReLU는 각 사분면에 대해 다르게 작용한다.

 

 

A의 영역은  ReLU를 통과한 이후에도 선형변환된 사분면에 그대로 위치하게 된다.

 

그러나 B사분면을 생각할때는 좀 흥미로운데,

빨간색의 feature에 대해서는 양의 값을 갖지만 초록색의 feature에 대해서는 음의 값을 갖는다.

ReLU는 음의 값을 모두 0으로 보내버리기 때문에 초록색의 feuatre는 0이 된다.

이 경우를 기하학적으로 어떻게 변환되는지를 살펴보면 전체 B사분면은 $h_2$의 축에 collapsed 되는 것을 볼 수 있을 것이다.

 

비슷한 상황이 D 사분면에도 동일하게 적용된다, $h_1$축에 collasped 된다.

 

C 사분면은 원점(origin)에 collapse하게 된다.

 

다시 data cloud의 예시로 돌아가서 이들이 어떻게 변환되는지 살펴보자.

data cloud를 선형적으로 변환 한뒤, 

 

non-linearity를 가진 ReLU를 통해 변형하면 위와 같이 변형되어 linearly sepearable한 것을 알 수 있다.

 

feature space에서 다시 원래의 input space로 porting하면 decision boundary가 non-linear한 decision boundary의 형상을 띄게 된다. 이것은 ReLU를 기반으로한 Neural Network Classifier의 해석적인 설명이 된다.

 

만약 Neural Network의 히든 레이어의 수를 계속 증가시킨다고 하면,

선형변환을 거친 feature space에서 두 영역을 가르는 선형적인 decision boundary가 늘어나고

이를 다시 원래의 input space로 porting하면 매우 복잡한 형태의 non-linear decision boundary에 대응된다.

 

지난번에 모델의 복잡성을 제어하는 Regularization에 대해서도 이야기 했는데, 오른쪽과 같이 모델의 decision boundary가 너무 복잡한 경우, 이를 해소하기 위해서는 hidden layer의 차원을 줄일 수도 있을 것이다.

그러나 이것은 그닥 좋은 아이디어는 아니며, 일반적으로는 Regularzation parameter를 튜닝하는 방법을 사용한다.

 

단순히 L2 Regularization의 strength를 조절함으로서 decision boundary를 조정할 수 있다.

 

 

Neural Network가 Linear Classifier와 달리 매우 복잡한 decision boundary를 형성할 수 있는 매우 강력한 시스템임을 배웠다. 우리는 이러한 성질을 Universal Approximiation라고 부르기도 한다.

 

Universal Approximation의 아이디어는 단 하나만의 히든 레이어로 어떠한 함수의 형태든 근사할 수 있다는 것이다.

 

ReLU를 기반으로한 신경망에서 Universal Approximation이 어떻게 작동하는지 대수적으로 간단한 예를 들어보자.

위의 예시에서는 input으로 single value를, output으로 single value를 취하고 hidden layer는 3개의 unit을 갖고 있다.

 

.

출력 y를 표현하면 다음과 같다. bias에 의해 shift되고 weight matrix에 의해서 scale된 ReLU 결과의 합이라고 할 수 있다.

 

 

기하학적으로는 오른쪽과 같이 표현될 것이다.

임의로 shift되고 scale 된 4개의 ReLU는 "bump function"이라는 형태를 만들 수 있는데

bump function의 경사 $m1$, $m2$ 위와 같이 가정한다면 

첫번째 ReLU함수의 형태는 다음과 같고

bump function은 input값이 s2까지는 아래 함수의 영향을 받아서 쭉 증가하다가,

 

두번째 ReLU함수는 위와 같은 형태로

s2와 s3사이 구간에서는 두 함수의 영향으로 일정해지고

s3구간 부터는 세번째 ReLU함수에 의해서 감소하는 경향을 

s4구간 부터는 4번째 ReLU함수에 의해서 일정해지는 경향을 띄게 된다.

이러한 4개의 ReLU함수의 조합으로 controllable한 weight으로 경사를 조절하는 bump function을 만들 수 있다.

이러한 bump fuction은 히든레이어수가 4개, 8개, 16개 .. 증가할 수록 개별 bump로 그룹화 되고,

NeuralNet의 전체적인 연산 결과는 bump function을 합한 형태를 얻게 된다.

 

bump function으로 어떠한 연속적인 함수의 형태든 근사할 수 있게 되는 것이다.

 

어떠한 함수든 근사하기 위해서는 각 bump를 좁게 만들어서 bump사이 간격을 좁게 해야할 것이고

이를 위해서는 더 많은 bump가 필요하며, underlying function에 대한 더 나은 근사를 하기 위해서는 수 많은 layer가 필요하다는 결론에 다다르게 된다.

 

그러나 두개의 히든 레이어로도 충분히 근사가능하나 이때는 매우 많은 수의 unit을 요구하게 된다.

지금 이야기 한것은 universal approximation에 formal한 증명이 아닌 sketch에 불구하기 때문에

 

관련해서 드는 많은 의문들의 디테일한 부분들은 아래의 reference를 참고하기를 추천한다.

 

(강의자가 언급한 다변수 universal approximation에 관한 reference주소)

http://neuralnetworksanddeeplearning.com/chap4.html

 

Neural networks and deep learning

One of the most striking facts about neural networks is that they can compute any function at all. That is, suppose someone hands you some complicated, wiggly function, $f(x)$: No matter what the function, there is guaranteed to be a neural network so that

neuralnetworksanddeeplearning.com

 

이제 우리가 해야할 것은 실제로 NeuralNetwork가 이러한 bump function을 학습하는지에 관한 것인데, 이러한 수학적 공식은 NeuralNetwork가 어떠한 함수든 근사할 수 있다는 것을 알려줄 뿐, NeuralNetwork가 실제로 bump function을 만드는 것 자체를 학습한다고 말할 수는 없다.

 

universal approxmiation이라는 개념으로 우리가 어떠한 함수든 근사할 수 있다는 사실은 알았지만 이를 너무 많은 믿음을 갖지는 마라. universal approximation은 단지 어떠한 함수를 근사할 수 있는 weight의 setting이 있다는 사실만 알려줄 뿐이다.

 

universal approxiatmion은 여러 질문에 대해 답할 수 없다.

얼마나 많은 데이터가 필요한지 어떠한 방식으로 weight가 학습되는지 알려주지 않는다.

 

또한 universal approximation의 성질로 인해서 NeuralNetwork가 best model이라는 모든 증명이라고 말할 수 없다.

kNN역시 universal approxmiation의 성질을 갖고 있었다는 것을 기억하라.

 

 

우리는 지금까지 Neural Network가 Linear model에 비해 가지는 장점들은 이야기 했는데 optimization 과정에 대해서는 다루지 않았다.

 

어떻게 최적의 해를 찾아가는 가에 대해서는 convex function이 있다. convex funciton은 loss function과도 같은 종류인데

input은 $N$차원의 vector 이고 output은 scalar이다. 

convex function은 위에 보이는 특별한 부등식을 만족한데 이를 대수적으로 보단 시각적으로 이해하는 것이 빠를 것이다.

convex function이 말하는 바를 $x^2$를 예로 들면 이해하기 쉬운데, 

부등식의 왼쪽 부분은 두 벡터에 의한 선형조합이 함수에 input으로 들어가서 어떤 함수의 일정 부분(chunk)를 의미하게 된다.

부등식의 오른쪽은 함숫값의 선형조합으로 위와 같은 직선을 의미하게 된다.

convex function은 이렇게 기하학적으로 보듯 함수에 선형조합의 input의 chunk보다 함숫값의 선형조합이 항상 더 위에 존재하게 된다.

코사인 함수 같은 경우의 예는 convex 함수가 아니게 된다. 

 

이를 일반화하여 고차원에서 살펴보면 convex function은 bowl shape을 갖게된다. 여전히 동일한 성질이 성립한다.

 

convex function은 수학적으로 수학적으로 매우 아름다운 성질이 있는데 컨벡스 함수에 관한 디테일이나 컨벡스 최적화는 다른 강좌에서 살펴보길 바란다.

 

간단히 그 아름다운 성질만을 언급하면 

경사를 따라 내려가다보면 간단히 global minimum에 도달 할 수 있어 최적화 하기 쉬우며

이러한 global minmum이 반드시 존재 하고,

local minima가 곧 global minima이며 , global minimum에 수렴한다는 것이 보장되어 있다.

나이스한 bowl shape의 형상 때문에 가중치의 초기화에 큰 영향을 받지도 않아 최적화 하기 쉽다.

 

이러한 결과를 설명에는 많은 수학 계산이 동반된다.

 

 

 

지금까지 우리가 Linear model에 많은 시간을 할애한 이유이다.

우리가 Linear model를 통해 data를 fit하는 학습을 할때 사용하는 Softmax와 SVM loss 들은 convex optimization의 주제이다. 몇몇이는 수렴의 보장성때문에 NeuralNet보다 Linear model을 선호하기도 한다.

 

NeuralNetwork는 불행히도 loss surface에 대해서는 이러한 수렴 보장성이 없는데

예를 들어 NueralNetwork의 고차원의 loss surface의 1차원 단면중 일부를 시각화 한 형태는 bowl shape를 띄는데

 

일부 loss surface의 단면은 nonconvex하다 

 

이것은 아예 gradient descent와 정반대인 loss surface형상을 갖기도 한다.

 

wild한 형태도 있고

 

NueralNetwork는 아무튼 non-convex optimization문제를 다루어야 한다.

이것은 어떠한 수렴도 보장하지는 않는데, 실전에서는 놀랍게도 어떻게든 작동하긴한다.

아직도 학계에서는 이것에 대해서는 완벽한 이해와 근거하는 이론이 없다.