[Deep Learning] Deep Neural Network (1)

2023. 4. 14. 00:31
🧑🏻‍💻용어 정리

Neural Networks
Feed-forward
Backpropagation
Deep Neural Network

 

 

 

 

지금까지 우리는 Neural Network에 대해 알아보았습니다.

 

지금까지 linear separability, Perceptron 이러한 이야기를 했지만,

 

그것은 모두 Multi-layer perceptron을 얘기하기 위한 것이었습니다.

 

 

그리고, Feed-forward, Backpropagation 각각은 prediction, training과정이라는 이야기를 했습니다.

 

그럼, 본격적으로 Deep Learning이 무엇인지 드디어 알아보겠습니다.

 

Deep Learning

 

 

Simple Neural Network는 Shallow Neural Network라고도 합니다.

 

일단, 이 그림에서 먼저 살펴보면,

 

Simple NN은 그렇게 Simple한 model은 아닙니다.

 

그럼에도 불구하고,

 

상대적인 관점에서 봤을 때 simple하다는 의미입니다.

 

그렇다면, Simple에서 capacity를 증가시키기 위해서는, 다음과 같은 방법이 있습니다.

 

  • width
    • hidden nodes
  • depth
    • hidden layers

 

를 증가시키는 방법이 있습니다.

 

그렇다면, 우리가 input과 output은 고정되어 있다는 사실을 알고 있습니다. (현재 경우에선)

 

여기서 input과 output을 잡고 쭉 depth를 쭉 늘린다면 hidden layer가 늘어납니다.

 

이렇게, hidden layer를 늘린 것,

 

즉, 2개 이상의 hidden layer를 쓰는 것이 Deep Learning이라고 합니다.

 

 

 

그렇다면 Deep Learning이라고 한다면 무조건 Deep Neural Network라고 할 수 있을까요?

 

-> decision tree, SVM, Bayesian Classifier 과 같은 것도 있습니다.

 

Deep Learning 안에서 NN을 쓰지 않은 다른 model들 가지고, Depth를 어떤 방식으로든 길게 해서 Deep Learning 다른 모델이 있을 수 있습니다.

 

그런데, 현재 연구하고 성공한 Deep Learning은 99.9% Deep Neural Network라고 볼 수 있습니다.

 

 

그러므로,

 

Deep Neural Network라고 하면 Deep Learning인가?

 

이것은 맞는 말입니다. 충분조건은 만족했습니다.

 

그런데, 필요조건도 만족할까요?

 

현재, Deep Learning의 99.9%가 DNN이므로, 우리는 이것을 만족한다고 볼 수 있습니다.

 

이 관점은 대부분의 연구와 성공이 이끌어온 방향성으로 살펴본다면 맞다고 할 수 있습니다.

 

그럼에도 불구하고 scientific하게 가능성이 열려있다고 볼 수는 있습니다.

 

그럼에도, 배우는 관점에서 본다면 거의 같다라고 볼 수 있습니다.

 

Deep Learning과 Deep Neural Network는 거의 같다.

 

Universal approximation theorem

이전에 봤던 그림이죠?

 

어떤 의미였나요?

 

정리하자면 이렇습니다.

 

Hidden Layer는 고정시켜 둔 뒤, Hidden Node를 많이 쓰면 어떠한 arbitrary한 함수도 approximation이 가능하다.

 

그렇다면 지금 1980년 후반에 나온 이 개념은,

 

model의 width를 늘리는데 중점을 두었는데,

 

2023년의 우리는 왜 depth를 늘리는 데 중점을 둘까요?

 

High Capacity를 충족하기 위해 width를 늘리지 않고, 왜 depth를 늘리는 방향으로 나아갔을까요?

 

그것에 대해 알아봅시다.

 

Architecture design

 

Deep Architecture를 가지고 있다면, Simple Representation이 가능해집니다.

 

우리가, XOR 문제를 살펴볼 때, input space에서는 linear로 해결할 수 없었습니다.

 

그런데, hidden state하나 올라가니, 그때 공간을 접어서 조금 더 간단한 문제로 바뀌었습니다.

 

그런데, 하나 더 hidden state를 올라가니 보다 더 간단해진 과정을 위 그림을 통해 살펴볼 수 있습니다.

 

 

그렇다면 다음과 같이 정리할 수 있습니다.

 

 

Depth를 늘리면 늘릴 수록 보다 simple한 representation이 가능하다 !

 

 

이 simple한 representation은 generalization power가 좋아진다는 것입니다.

 

이 일반화는, 곧, test performance가 좋다는 것을 의미합니다.

 

 

낮은 층에서는 복잡한 rule이 필요하지만, 높은 층에서는 굉장히 simple하게 decision이 가능하다는 것입니다.

 

우리가 저층에서 representation을 잘 해나가면, 고층에서 간단히 문제를 해결할 수 있습니다.

 

 

그렇다면, 저층에서는 representation을 학습하는 단계입니다.

 

표현 방법을 학습하죠.

 

그리고 고층에서는 prediction을 담당하죠.

 

그렇다면, low layer는 representation, high layer는 prediction을 담당합니다.

 

그래서, 높은 층을 쌓을 수록 가능하면 simple한 곳에서 분류하면 일반화가 잘 될 수 있다는 것입니다.

 

 

 

 

 

자, x축은 연도이고, y축은 하나의 node 당 붙어있는 connections의 개수입니다.

 

그렇다면, 각 object에 대해서 각 connections이 써있습니다.

 

 

그러면, 우리가 만드는 모델의 capacity가 우리 사람의 capacity와 비슷해야 무언가를 할 수 있지 않을까요?

 

그러나 위 표에서 본 것과 같이 1 ~ 10의 모델들은 capacity 대비 정확도에 근거하여 만들어집니다.

 

그럼, 9번 model이 좋아보인다곤 하지만, 거기서 또 capacity에 대한 다른 issue로 인해 10번 model로 돌아간 것을 살펴볼 수 있습니다.

 

 

그리고, 오른쪽 그림도 마찬가지입니다.

 

이것을 통해서, 우리는 더 capacity를 올려야함을 알았고, 더 많은 widths가 필요함을 알았습니다.

 

더 많은 connection을 통해 더 capacity를 올려야한다는 것입니다.

 

즉, 더 큰 computational power가 필요합니다.

 

 

 

여기서 보자면, 학습 data가 적을 때는 generalizaion gap이 굉장히 큽니다.

 

학습 data가 적담녀 train error와 test error가 차이가 많이 납니다.

 

그런데, 학습 data가 많아질 수록, train error와 test error가 거의 비슷해진다는 것입니다.

 

 

그리고 밑에 그래프에서도, 학습 data가 많으면 많을수록 optimal capacity가 커지므로, 우리는 더 복잡한 모델을 쓸 수 있다는 것입니다.

 

즉, high capacity model을 사용할 수 있습니다.

 

 

 

 

아래는 보고된 image competiton의 layer 수에 따른 test accuracy를 나타냅니다.

 

 

그렇다면, layers의 개수가 늘어날 수록, test accuracy가 늘어난다는 것입니다.

 

즉, test accuracy가 높아진다는 것은 generalization power를 의미하며 over fit이 되지 않고 얼마나 일반화 된 model을 만들 수 있냐는 것입니다.

 

 

그러므로, generalization을 위해서는 많은 훈련 data와 많은 layers가 필요한 것을 알 수 있습니다.

 

  • generalization
    • more data
    • more layers

 

그렇다면, 사람과 비슷한 수준의 capacity를 위해선 어차피 width나 depth를 늘려야합니다.

 

즉, high capacity는 필요합니다.

 

이때 overfitting을 하지 않고 generalization을 잘 하기 위해선 data가 많이 필요합니다.

 

그리고 width를 늘리기보단 depth를 늘려 학습을 시킵니다.

 

이것이 최신 연구에 의해 보도되는 사례입니다.

 

 

 

 

 

여기서, fully connected는 MLP를 의미합니다.

 

모든 node에 connection이 있는 것이죠.

 

그런데, convolutional은 여러분이 아시는 CNN을 나타냅니다.

 

그리고 CNN은 sparse connection이라고 해서, node들의 connection을 조금씩 끊어놓는 경우가 있습니다.

 

 

 

자, x축은 parameters의 개수로 weight의 개수를 의미합니다.

 

weight의 개수가 많을 수록 connection이 많음을 의미하죠.

 

그리고 y축은 test accuracy이므로 높으면 높을 수록 좋은 것입니다.

 

 

보시면, parameters의 개수가 0.3 x 10^8 부근에 있을 때, 3-layer CNN이든 11-layer CNN을 봅니다.

 

이러한 양상을 보입니다.

 

그렇다면, 비슷한 capacity에서도 deep 한 model이 shallow한 model 보다 조금 더 높은 정확도를 볼 수 있습니다.

 

 

그리고 이러한 3-MLP의 뚱뚱한 model을 보아도,

 

Universal Approximation Theory에서 얘기했던 바로 그런 model입니다.

 

 

결국 이것들을 보았을 때, 같은 capacity를 가져도 deep 한 model이 훨씬 성능이 좋음을 알 수 있습니다.

 

그리고, 3-CNN은 sparse하고, 3-MLP는 dense하다고 표현할 수 있는데요,

 

이 차이에 대해선 나중에 다뤄봅시다.

 

지금까지의 결론을 보자면,

 

결국 depth를 늘리는 게 generalization에서 훨씬 유리하겠구나 라는 것입니다.

 

그럼 더 이어서 볼까요?

 

 

 

 

 

 

 

 

 

 

 

BELATED ARTICLES

more