초보 개발자의 이야기, 릿허브

[논문리뷰] ResNet (Deep Residual Learning for Image Recognition) 본문

논문/📚 논문 리뷰

[논문리뷰] ResNet (Deep Residual Learning for Image Recognition)

릿99 2023. 1. 25. 18:49
728x90
반응형

ResNet

https://arxiv.org/abs/1512.03385

 

Deep Residual Learning for Image Recognition

Deeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. We explicitly reformulate the layers as learning residual functions with

arxiv.org


 

 

1. INTRODUCTION

 

Deep convolutional neural network(DCNN)는 이미지 분류 문제를 해결하는데 큰 기여를 해왔다.

최근에는 네트워크의 깊이(depth)가 중요한 포인트로 떠올랐으며,

ImageNet dataset과 같은 challenge에서 "매우 깊은" 모델들이 좋은 성능을 보여주었다. [각주:1][각주:2]

 

그렇다면, 이렇듯 여러 Layer를 깊게 쌓은 네트워크가 학습 시 더 용이할까?

결론부터 이야기하자면, 아니다.

ResNet의 전체적인 아이디어 및 구조는 바로 이 의문에서부터 시작한다.

깊게 Layer를 쌓는데 있어 많은 문제들이 있는데, 그 중 하나가 바로 vanishing/exploding gradient 문제[각주:3]이다.

하지만 해당 문제는 그동안 많이 제기 되어왔고, normalization 기법 등으로 어느정도 해결이 가능했다.

 

출처 : Deep Residual Learning for Image Recognition

하지만, Layer가 일정 깊이보다 깊어질 경우 또 다른 문제가 발생하게 되는데,

바로 Degradation 문제다.

Degradation이란, 네트워크의 깊이가 깊어질수록 정확도가 점차 안정화되다가 빠르게 감소하는 현상이다.

 

상단의 그림을 보자.

Figure 1. 은 각각 20-Layer와 56-Layer의 training error와 test error를 나타낸 그림이다.

이 역시 degradation으로 인해 training과 test 부분 모두에서 더 깊은 Layer가 더 높은 error를 보였다.

overfitting(과적합)으로 인한 문제일 것 같지만, 사실은 깊은 Layer로 인해 발생하는 문제이다.

(overfitting이면, 깊은 Layer의 train accuracy는 높고 test accuracy는 낮아야 한다)

 

해당 논문에서는 이 Degradation 문제를 해결하기 위해

Deep residual learning이라는 framework를 제안했다.

몇몇 Layer가 기존 mapping으로 바로 적합되는 것이 아닌, residual mapping 하도록 했다.

여기서 residual mapping이라는 개념이 잘 이해가 가지 않을 텐데, 아래 그림을 자세히 보자.

 

출처 : https://gaussian37.github.io/dl-concept-resnet/

왼쪽 (a)가 기존 방식, 오른쪽 (b)가 Residual 방식이다.

왼쪽이 일반적인 구조(Plain Network)의 네트워크로,

input x에 대해 Layer를 거쳐 H(x)라는 결과가 나오게 된다.

 

반면, 오른쪽 Residual 구조에 따르면,

input x에 대해 Layer를 걸쳐 나온 F(x)라는 결과에 입력인 x를 그대로 다시 더해준다.

즉, output에 input 값을 다시 더해주는 residual한 구조를 가지며,

input x에 대해 Layer를 거쳐 F(x) + x 라는 결과가 나오게 된다.

여기서, 하나 이상의 Layer를 건너뛰는 것을 "shortcut connection"이라 하는데,

identity x는 이러한 shortcut connection을 통해 mapping 되었다고 보면 된다.

여기서 한 가지 더 설명을 덧붙이자면, residual이란 "잔여, 잔차"를 뜻하는데,

잔여인 input 값을 output에 한번 더 더해준다는 느낌으로 받아들이면 편하겠다.

 

이렇듯 Residual mapping 구조는 input 의 값을 그대로 전달 받아 작은 변화에도 더 민감하게 반응하며,

ImageNet dataset에 해당 구조를 적용함으로서 다음과 같은 결과를 입증했다.

 

1. 제안된 Deep Residual Networks은 Optimize하기 쉬운 반면,

기존의 Plain Networks는 깊이가 깊어질수록 더 높은 train error가 나타난다.

 

2. 제안된 Deep Residual Networks은 기존 네트워크와 비교했을 때,

네트워크의 깊이가 깊고, 보다 높은 정확도를 보였다.

 

 

 

 

2. RELATED WORK

 

2.1. RESIDUAL REPRESENTATIONS

 

이미지 인식분야에서, VLAD[각주:4]란, Residual vector를 이용하여 encoding 하는 방법이다.

Low-level 비전 및 그래픽스 분야에서 Partial Differential Equation(PDEs)를 해결하기 위해

여러 개의 Scale로 Subproblems를 재구성하는 Multigrid Method를 사용했으며,

이 과정에서 Residual Vector를 사용했다.

 

 

 

2.2. SHORTCUT CONNECTIONS

 

이전 연구들 중에서도 shorcut connection을 이용한 방법들은 다양하게 존재했다.

MLP에서 Linear Layer에 Input과 Output을 연결해주는 방법,[각주:5][각주:6]

Inception Module에서도 shortcut branch를 사용한 것[각주:7] 등 여러 연구를 통해 이용되어 왔다.

 

 

 

 

3. DEEP RESIDUAL LEARNING

 

3.1. RESIDUAL LEARNING

 

H(x)를 몇개의 Layer에 대한 기존 mapping 방식의 결과라 하자.

multiple nonlinear layer가 복잡한 함수를 추정한다는 말은, Residual 함수를 추정할 수 있다는 것과 같다.

위에서 언급한 것처럼, Residual Function F(x) = H(x) - x라 하면, 기존 H(x) = F(x) + x 이다.

즉, Residual Function에 input x를 더한 것을 추정하는 과정이 되는 것이다.

 

이러한 재정의는 Degradation 문제에서 비롯되었다.

앞선 introduction에서 언급했듯 identity mapping을 이용해 Layer를 추가하면,

깊이가 깊은 model의 training error은 얕은 model에 비해 작을 것이다.

또한 Degradation 문제는 multiple nonlinear layer를 통해

identity mapping을 추정하는 데 있어 어려움을 겪을 것을 암시한다.

하지만 identity mapping이 optimal 하다면, Residual Learning을 이용해 이를 해결할 수 있다.

(사실 현실적인 부분에서 identity Mapping이 적합한 경우는 많지않다)

적합한 함수가 Identity Function과 유사할 때,

즉 Zero Mapping을 하는 것이 아닐 때, 작은 변화에 더 쉽게 반응할 수 있을 것이다.

 

 

 

3.2. IDENTITY MAPPING BY SHORTCUTS

 

출처 : Deep Residual Learning for Image Recognition

앞선 그림에서의 building block을 식으로 정의하면 식(1)과 같다.

x, y는 각각 layer의 input, output vector, 함수 F(x, {W_i})는 residual mapping function이다.

F + x는 shortcut connection, element wise addition을 통해 계산되며, 이후 Nonlinear function을 거친다.

이러한 shorcut connection은 추가적인 Parameter를 생성하지 않으며,

computation complexity 또한 증가시키지 않는다.

 

단, 위 식(1)은 x 와 F의 dimension이 같아야 적용할 수 있다.

x, F의 dimension이 같지 않은 경우, linear projection W_s를 통해 dimension을 맞춰줄 수 있다.

 

 

출처 : Deep Residual Learning for Image Recognition

위 식 (2)는 (1)과 아이디어는 동일하지만, 입, 출력 Layer의 dimension이 다른 경우의 식이다.

위에서 언급한 것처럼, x와 F의 dimension이 다르므로 x에 linear projection W_s를 적용했다.

 

 

Residual Function F의 구조는 유연하다. (본 논문에서 F는 2~3 Layer 구조로 이루어져 있다)

다만 만약 F가 single Layer일 경우 y = W_1x +x로 정의할 수 있는데,

이는 식(1)의 linear Layer와 매우 유사하며, 이점이 없다.

 

 

 

3.3. NETWORK ARCHITECTURES

 

출처 : Deep Residual Learning for Image Recognition

 

위 그림은 각각 VGG-19, 34-layer plain model, 34-layer residual model을 나타낸 그림이다.

각각의 모델의 특징 및 차이점에 대해 간단히 알아보자.

 

 

< PLAIN NETWORK >

 

그림의 Plain baseline은 VGG network에서 영감을 받은 34개의 Layer를 가진 모델이다.

Convolution Layer는 거의 모두 3x3 Filter로 이루어져 있으며, 다음과 같은 2가지 design rule을 따른다.

 

1) 같은 output feature map size 도출을 위해, Layer들은 모두 같은 개수의 필터를 가진다.

2) 만약 feature map size가 절반이 되면, 각 Layer의 시간 복잡도를 유지하기 위해 filter의 개수는 두배가 된다.

 

Stride=2 Convolution을 이용해 Downsampling을 진행하였으며,

네트워크 마지막 단에는 global average pooling Layer, 1000-way FC-Layer, softmax 를 수행한다.

따라서 총 weighted Layer는 34이다.

이 baseline model은 VGG network보다 복잡도도 낮고 Parameter 수도 적다.

 

 

< RESIDUAL NETWORK >

 

Residual network는 위 Plain network에 기반하여, shortcut connection을 추가했다.

input과 output의 dimension이 같은 경우, identity shortcut이 바로 적용되며,

만약 같지 않은 경우, 다음과 같은 2가지 옵션이 있다.

 

1) shorcut이 identity mapping을 그대로 진행하고, 증가된 dimension 만큼 추가적으로 제로 패딩한다.

2) 위 식(2)의 projection shortcut을 이용해 dimension을 맞춰준다.

 

1)의 방식은 추가적인 파라미터를 생성하지 않으며,

두 옵션 모두 feature map을 2 size씩 건너뛰기 때문에 stride=2로 준다.

 

 

3.4. IMPLEMENTATION

 

Input : 224 x 224 RGB image

([256, 480] resize 후, random crop.

crop이미지 또는 Horizontal Flip 이미지 사용하며, 각 픽셀마다 평균을 subtract)

Batch Normalization : 각 convolution 이후, activation 전에 수행

Batch size : SGD with mini-batch size=256

Learning rate : 0.1 and divided by 10 when error plateaus

Wight Decay : 0.0001 (Momentum of 0.9)

Dropout : X

 

 

 

 

4. EXPERIMENTS

 

4.1. IMAGENET CLASSIFICATION

 

1000개의 class로 구성된 ImageNet 2012 classification dataset을 통해 평가했다.

(1.28 million training images, and evaluated on the 50k validation images)

최종 결과는 100k test images를 사용했다.

 

< PLAIN NETWORK >

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

해당 논문에서는 18개 Layer, 34개 Layer의 Plain Network를 사용하였다. 위 사진은 각 모델의 구조이다.

 

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

위 사진은 각각 train error(얇은선), validation error(굵은선)를 나타낸 사진이다.

그림을 보면 알 수 있듯, 34-Layer plain model이 18-Layer plain model보다 validation error가 높았다.

즉, 이를 통해 vanishing gradients로 인해 Optimization이 어렵다는 것을 알 수 있다.

해당 논문에서는 더 깊은 Plain Network가 아주 작은 Convergence Rates를 가져서

Training Error가 줄어드는 것이 약하다고 추측하고 있다.

 

 

< RESIDUAL NETWORK >

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

반면, ResNet의 경우, 34-Layer보다 18-Layer model이 validation error가 높았다.

즉, 모델이 깊어지면서 생기는 성능 악화 문제를 해결했다.

또한 위 표에 따르면, ResNet이 Plain Network보다 3.5% 낮은 Error를 보였으며,

ResNet이 Plain Network보다 초반 단계에서 빠르게 convergence 되는 것을 확인할 수 있었다.

 

 

< IDENTITY VS. PROJECTION SHORTCUTS >

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

지금까지의 training에서 identity shortcut 방식을 사용했다면,

이번에는 projection shortcut에 대해 알아보자.

위 Table 3. 을 보면,  다음과 같은 3가지 옵션을 두고 비교했다.


(A) Zero Padding을 통해 Dimension 증가 (parameter free)

(B) Projection을 통해 Dimension 증가

(C) 모든 Shortcut을 Projection

 

위 3가지 경우 모두 plain network보다 성능이 좋았으며,

B가 A보다 조금 더 나은 성능을 보였다.

이는  A의 경우 zero-padding 과정에서 Residual Learning을 하지 않아서이다.

또한, C의 경우 B보다 성능이 좋았는데, 이는 많은 Projection Shortcut(13개)에 의해 Extra Parameter생겼기 때문이다.

즉 성능은 A < B < C 의 순으로 좋았다.

 

하지만 이 세 가지 모두 성능 악화 문제에 대해서는 그닥 중요하지 않았다.

이 논문에서는 성능 악화 문제를 해결하기 위해 모델이 큰 C를 굳이 사용하지 않았다.

 

< DEEPER BOTTLENECK ARCHITECTURES >

 

다음으로, ImageNet을 위해 더 깊게 만든 모델에 대해 알아보자.

Training time에 대한 우려로, Bottleneck Design 이라는 building block을 사용했으며,

각 Residual Function F에 대해 3개 Layer를 쌓은 구조를 사용했다.

3개의 Layer들은 각각 1 x 1, 3 x 3, 그리고 다시 1 x 1의 Convolution을 수행한다.

여기서 1x1 Layer는 Dimension을 줄였다가 키우는 역할을 하는데,

이는 3x3 Layer의 Input/Output Dimension을 줄이기 위해서이다.

자세한 구조는 아래 그림을 보자. (두 그림 모두 비슷한 time-complexity를 가진다.)

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

여기서 Identity Shortcuts은 BottleNeck 구조에서 아주 중요하다.

만약 오른편의 그림에서, Identity Shortcut이 Projection으로 바뀐다면

해당 모델의 Time Complexity와 크기는 두배가 된다.

따라서 identity shortcut은 Bottleneck 디자인의 효율적인 구조를 위해 필수적인 요소이다.

 

 

< 50-LAYER RESNET >

 

기존 34-Layer network의 2-layer block을 3-Bottleneck block으로 바꾸었다.

이렇게 바꾼 구조가 50-Lyaer ResNet이다.

Dimension 증가를 위해 옵션(B)를 선택했다.

 

 

< 101-LAYER AND 152-LAYER RESNETS >

 

더 많은 3-Layer block을 이용해 101, 152 Layer ResNet을 만들었다.

깊이를 많이 늘렸음에도 불구하고, 152-Layer ResNet은 VGG16/19 보다 낮은 complexity를 갖는다.

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

위 Table 4.를 보면, 50/101/152-Layer ResNet은 34-Layer 보다 상당히 정확한 성능을 보인다.

Degradation 문제로 인한 성능 악화는 발생하지 않았으며,

모든 evaluation metrics에서 깊이가 깊어질수록 좋은 성능이 나타나는 것을 확인했다.

 

 

< COMPARISONS WITH STATE-OF-ART METHODS >

 

Table 4.에 따르면, 이전의 좋은 성능을 보였던 모델보다 ResNet이 더 좋은 성능을 보인 것을 알 수 있다.

해당 논문의 baseline인 34-Layer ResNet의 경우, 훨씬 더 정확한 성능을 보였으며,

152-Layer 아주 적은 오차율을 보였다.

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

또한 Emsemble Learning을 이용하여 더 낮은 Error를 달성했다.

 

 

 

4.2. CIFAR-10 AND ANALYSIS

 

ImageNet Dataset뿐만 아니라 CIFAR-10 Dataset에 대해서도 실험을 진행했다.

(50k training images, 10k testing images in 10 classes)

 

앞선 모델과 비슷한 구조로 모델을 구성했다.

모델 구조 순서는 다음과 같다.

 

1. input은 32 x 32 이미지로, 각 픽셀에서 평균값을 subtract

2. 첫 번째 Layer는 3 x 3 Convolution을 수행 이어서 6n개의 Layer들 stack

3. 6n개의 Layer들에도 3 x 3 Convolution을 수행

(각각의 feature map size는 32, 16, 8으로 각각 2n개의 Layer. 필터 개수는 각각 16, 32, 64)

4. subsampling은 stride=2  convolution으로 수행

5. 네트워크 끝단에 global average pooling, 10-way FC layer, softmax 수행

 

위 과정을 통해 쪽 6n+2 stacked weighted layers 구조가 만들어지게 된다.

다음은 각 output map size에 대한 구조를 나타낸 표이다.

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

 

shortcut connection을 이용하게 되면, 한 쌍의 3 x 3 Layer에 연결된다. (총 3n개의 shortcut)

해당 Dataset에서는 모든 경우에 identity shortcut을 사용했으며,

제안된 residual model들은 모두 같은 depth, width, parameter 개수를 갖는다.

실험에 사용한 environment들은 다음과 같다.

 

Data argumentation : 4 pixel padded on each side

& 32 x 32 crop is randomly sampled from the padded image or its horizontal flip

Batch Normalization : O

Batch size : 128 on two GPUs

Learning rate : 0.1

(divided by 10 at 32k and 48k iterations, and terminate training at 64k)

Wight Decay : 0.0001 (Momentum of 0.9)

Dropout : X

 

본 논문에서는 n이 각각 3, 5, 7, 9일 때, 20, 32, 44, 56개의 Layer로 이루어진 모델들을 비교했다.

아래 그림을 보자.

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

가장 왼쪽부터 차례대로 Plain network, ResNet, ResNet110, 1202 Layers이다.

먼저 왼쪽의 Plain Network 그림을 보자.

모델의 깊이가 깊어질수록 training error가 증가하며,

앞서 설명한 ImageNet과 MNIST 데이터 셋과 비슷한 현상이 나타나는 것을 확인할 수 있다.

 

가운데는 ResNet의 양상을 보여주는 그림이다.

이 또한 ImageNet의 결과와 비슷하며,

optimization difficulty와 깊이가 깊어질수록 정확도가 감소하는 문제를 해결했다.

 

마지막 그림은 ResNet 110, 1202 Layers의 양상을 보여주는 그림이다.

이처럼 굉장히 깊은 Layer의 경우, 초기에 설정한 learning rate는 0.1이 수렴하기에는 너무 큰 값이기에,

Training error가 80%(약 400 iterations) 미만이 될 때까지는 0.01을 사용했다.

(나머지 학습 환경은 이전과 동일)

그 결과 모델이 잘 수렴하는 것으로 나타났다.

이 모델의 경우 다른 FitNet, Highway보다 적은 파라미터 수를 가졌고, 더 높은 성능을 보였다.

 

 

< ANALYSIS OF LAYER RESPONSES >

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

위 그림은 Layer responses의 standard deviations(std) 를 나타낸다.

여기서 response 는 각 3 x 3 Layer의 결과로, nonlinearity(RELU/addition) 이전이자 BN 이후 값이다.

ResNet에서, 이 분석값은 residual function의 response 강도를 나타낸다.

 

Figure 7. 을 보면, ResNet은 일반적으로 Plain Net보다 작은 response를 보였다.

이는 앞서 얘기했던 non-residual function보다 residual function이 0에 더 가깝다는 점과 동일하다.

ResNet 20, 56, 110을 비교해보면, 더 깊은 ResNet이 더 작은 response를 가진다는 것 또한 알 수 있다.

즉, Layer가 깊어질수록 signal이 적게 변화하는 경향이 나타났다.

 

 

< EXPLORING OVER 1000 LAYERS >

 

그렇다면 1000개 이상의 Layer를 가진 아주 깊은 모델은 어떨까?

앞선 Figure 6. 에서 언급된 n = 200 인 1202-Layer network를 보자.

 

비교적 더 얕은 모델인 110-Layer의 경우와 Training Error는 비슷하지만,

Testing Error는 더 깊은 모델인 1202-Layer가 더 안좋은 것을 확인할 수 있다.

분명 Residual Function을 사용하면, 깊은 모델일수록 더 잘 학습하는 것 같아 보였는데 왜일까?

논문에서는 해당 현상의 원인으로 Overfitting을 꼽고 있다.

 

1202-Layer는 작은 dataset에 비해 필요이상으로 크고,

maxout, dropout과 같은 강한 Regularization이 좋은 성능을 내는 것을 보였지만,[각주:8]

해당 논문에서는 이를 사용하지 않고 비교적 심플한 구조를 사용했다.

이러한 현상에 대해서는 더 연구해 볼 예정이라고 한다.

 

 

 

4.3. OBJECT DETECTION ON PASCAL VOC AND MS COCO

 

출처 :&nbsp;Deep Residual Learning for Image Recognition

해당 method는 recognition에서도 좋은 성능을 보였다.

위 Table 7, Table 8.은 PASCAL VOC 2007, 2012, COCO Dataset와 같은 객체 검출 결과이다.

검출 method로는 Faster R-CNN 모델을 사용했으며, VGG-16을 ResNet-101로 교체했다.

결과적으로 이는 다른 모델들보다 더 높은 성능을 보였고,

이를 통해 ResNet이 Representation을 잘 학습하여 성능이 향상된 것을 확인할 수 있다.

 

 

 

 

<논문 구현>

 

ResNet 논문 구현은 아래 링크를 참고하자.

https://beginnerdeveloper-lit.tistory.com/160

 

[논문구현] ResNet (Deep Residual Learning for Image Recognition) 구현

ResNet에 대한 논문 리뷰 https://beginnerdeveloper-lit.tistory.com/159 [논문리뷰] ResNet (Deep Residual Learning for Image Recognition) ResNet https://arxiv.org/abs/1512.03385 Deep Residual Learning for Image Recognition Deeper neural networks ar

beginnerdeveloper-lit.tistory.com

 

 

 

 


REFERENCE

 

https://codebaragi23.github.io/machine%20learning/3.-ResNet-paper-review/

 

ResNet 논문 리뷰

논문명: Deep Residual Learning for Image Recognition

codebaragi23.github.io

 

https://jxnjxn.tistory.com/22

 

[논문 리뷰] Deep Residual Learning for Image Recognition - ResNet(1)

ResNet ResNet 이라는 이름으로 더 유명한 논문을 리뷰해보겠습니다. 최고의 빅데이터 분석 동아리 '투빅스' 과제 겸사겸사 하는 리뷰입니다. (사실 이게 아니라 구현 과제를 해야되는데 어렵네요...

jxnjxn.tistory.com

 

https://developnote.tistory.com/112

 

[논문 리뷰] ResNet: Deep Residual Learning for Image Recognition

layer가 깊으면서 현재 가장 많이 쓰이는 ResNet을 알아보자. Introduction 오늘 리뷰 할 논문은 K. He가 마이크로소프트에 있을 때 발표한 ResNet의 첫 번째 논문이다. Convolutional Layer가 깊을수록 더 복잡

developnote.tistory.com

 

https://gaussian37.github.io/dl-concept-resnet/

 

ResNet (Residual Network)

gaussian37's blog

gaussian37.github.io

 

https://deep-math.tistory.com/18

 

[논문 리뷰] ResNet

Deep Residual Learning for Image Recognition Abstract 모델이 깊어질수록 학습을 하는 것도 더 어려워진다. 이를 해결하기 위해 이 논문에서는 Residual Learning Framework를 소개한다. 이를 통해 모델의 깊이가 깊

deep-math.tistory.com

 

 

 

 

 

  1. S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift.  In ICML, 2015. [본문으로]
  2. K.  Simonyan  and  A.  Zisserman.    Very  deep  convolutional  networks for  large-scale  image  recognition.  In ICLR, 2015. [본문으로]
  3. vanishing/exploding gradient 문제란, 기울기를 구하기 위해 손실함수의 미분을 오차역전법(Backpropagation)으로 구하는 과정에서 발생하는 문제로, 해당 과정에서 활성화 함수의 편미분을 곱해줌으로서 발생한다. Layer가 클수록 vanishing 문제가 커지며, 미분값이 클수록 exploding 문제가 커지게 된다. [본문으로]
  4. H. Jegou, F. Perronnin, M. Douze, J. Sanchez, P. Perez, and C. Schmid. Aggregating local image descriptors into compact codes. TPAMI, 2012. [본문으로]
  5. B.  D.  Ripley.   Pattern  recognition  and  neural  networks.   Cambridge university press, 1996. [본문으로]
  6. W. Venables and B. Ripley. Modern applied statistics with s-plus.1999 [본문으로]
  7. C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In CVPR, 2015. [본문으로]
  8. I. J. Goodfellow, D. Warde-Farley, M. Mirza, A.Courville, and Y. Bengio. Maxout networks. arXiv:1302.4389, 2013. [본문으로]
728x90
반응형