LeNet5 LeNet5는 1994년에 탄생했으며, 최초의 합성곱 신경망 중 하나이며 딥러닝 분야를 발전시켰습니다. 1988년 이후 여러 차례 성공적인 반복 끝에 얀 르쿤(Yann LeCun)의 이 선구적 연구는 LeNet5로 명명되었습니다(참조: 문서 인식에 적용된 그라디언트 기반 학습).
LeNet5의 아키텍처는 이미지의 특징이 전체 이미지에 분산되어 있다는 생각에 기반하며, 학습 가능한 매개변수를 가진 합성곱이 적은 매개변수로 여러 위치에서 유사한 특징을 효율적으로 추출하는 방법이라는 점에 기반합니다. 그 당시에는 학습에 도움이 될 GPU가 없었고, CPU조차도 느렸습니다. 따라서 매개변수를 저장할 수 있는 기능과 계산 과정이 핵심 발전입니다. 이는 각 픽셀을 대형 다층 신경망의 별도 입력으로 사용하는 것과는 반대입니다. LeNet5는 이미지가 강한 공간적 상관관계를 가지고 있어 독립적인 픽셀을 서로 다른 입력 특징으로 사용하는 것으로는 활용할 수 없기 때문에 해당 픽셀들을 첫 번째 층에 사용하지 말아야 한다고 설명합니다.
LeNet5의 특징들은 다음과 같이 요약할 수 있습니다:
합성곱 신경망은 3개의 층을 순서로 사용합니다: 합성곱, 풀링, 비선형 → 이 논문 이후 이미지 딥러닝의 핵심 특징일 것입니다! 합성곱을 이용해 공간적 특징을 추출합니다 공간 평균에 대한 매핑을 이용한 서브샘플 비선형성은 쌍곡선 접전(tanh) 또는 S자형(시그모이드) 형태로 나타납니다. 다계층 신경망(MLP)은 최종 분류기 역할을 합니다 계층 간 희소한 연결 행렬은 큰 계산 비용을 피할 수 있습니다
전반적으로 이 네트워크는 최근 많은 아키텍처의 출발점이며, 이 분야의 많은 이들에게 영감을 주었습니다.
인터벌 1998년부터 2010년까지 신경망은 인큐베이션 단계에 있었습니다. 대부분의 사람들은 자신의 성장하는 힘을 인지하지 못하며, 다른 연구자들은 이를 이해하는 데 느리다. 휴대폰 카메라와 저렴한 디지털 카메라의 등장 덕분에 점점 더 많은 데이터가 악용되고 있습니다. 컴퓨팅 파워도 증가하고 있으며, CPU는 점점 빨라지고 있으며, GPU는 다양한 용도의 컴퓨팅 도구가 되고 있습니다. 이러한 경향 덕분에 신경망은 느리긴 하지만 발전할 수 있었습니다. 데이터와 컴퓨팅 파워는 신경망이 수행할 수 있는 작업들을 점점 더 흥미롭게 만듭니다. 그 후 모든 것이 명확해졌다......
댄 시레산 넷 2010년, Dan Claudiu Ciresan과 Jurgen Schmidhuber는 가장 초기의 GPU 신경망 구현을 발표했습니다. 이 구현은 NVIDIA GTX 280 그래픽 프로세서에서 구동되는 9계층 신경망으로, 순방향 및 역전파를 포함합니다.
알렉스넷 2012년, 알렉스 크리제브스키는 Alexet(참조: 딥 컨볼루션 신경망을 이용한 ImageNet 분류)를 발표했는데, 이는 LeNet의 더 깊고 광범위한 버전으로, 어려운 ImageNet 경쟁에서 큰 차이로 우승했습니다.
AlexNet은 LeNet의 아이디어를 훨씬 더 복잡한 객체와 객체 수준을 학습할 수 있는 더 큰 신경망으로 확장합니다. 이 연구의 기여는 다음과 같습니다:
비선형성으로 수정된 선형 단위(ReLU)를 사용하세요 Dropout 기법을 사용해 훈련 중 개별 뉴런을 선택적으로 무시하여 모델 과적합을 방지하세요 평균 풀링의 평균 효과를 피하기 위해 큰 풀을 덮어쓰는 것 NVIDIA GTX 580 GPU로 학습 시간을 줄이기
이 시점에서 GPU는 CPU보다 더 많은 코어를 제공할 수 있고, 훈련 시간을 10배로 늘릴 수 있어 더 큰 데이터셋과 더 큰 이미지를 사용할 수 있습니다.
AlexNet의 성공은 작은 혁명을 일으켰습니다. 합성곱 신경망은 이제 딥러닝의 중추가 되었으며, "이제 유용한 작업을 해결할 수 있는 대형 신경망"과 동의어가 되었습니다.
오버페트 2013년 12월, 뉴욕 대학교의 얀 르쿤 연구실은 AlexNet의 파생 개념인 Overfeat(참조: OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks)를 제안했습니다. 이 논문은 학습 경계 상자(learning bounding box)를 제안했으며, 이는 같은 주제에 관한 많은 논문으로 이어졌습니다. 인공 경계 상자를 배우는 것보다 오브젝트를 분할하는 법을 배우는 것이 더 낫다고 생각합니다.
VGG 옥스퍼드 대학교의 VGG 네트워크(참조: 대규모 이미지 인식을 위한 매우 깊은 컨볼루션 네트워크)는 각 컨볼루션 계층에 더 작은 3×3 필터를 사용하고 이를 결합하여 컨볼루션 시퀀스로 처리한 최초의 네트워크입니다.
이는 LeNet의 원리와는 반대로 보이며, LeNet에서는 이미지에서 유사한 특징을 얻기 위해 큰 컨볼루션을 사용하는 방식입니다. AlexNet의 9×9 또는 11×11 필터와 달리, 필터는 점점 작아져, LeNet이 피하려는 악명 높은 1×1 합성곱 이상 현상에 가까워지고 있습니다—적어도 네트워크 1계층에서는요. 그러나 VGG는 5×5, 7×7과 같은 더 큰 수용 필드의 효과를 모방하기 위해 여러 개의 3×3 합성곱을 연속으로 사용하여 큰 진전을 이루었습니다. 이러한 아이디어는 인셉션(Inception)과 ResNet과 같은 최근 네트워크 아키텍처에도 적용되었습니다.
VGG 네트워크는 복잡한 특징을 특성화하기 위해 여러 개의 3×3 합성곱 층을 사용합니다. VGG-E의 3번째, 4번째, 5번째 블록인 256×256, 512×512 3×3 필터는 차례로 여러 번 사용되어 더 복잡한 특징과 이들 특징의 조합을 추출합니다. 이 효과는 3개의 합성곱 층을 가진 큰 512×512 분류기와 동등합니다. 이는 분명히 많은 매개변수와 학습 능력이 있다는 뜻입니다. 하지만 이러한 네트워크는 훈련하기 어렵고 더 작은 네트워크로 나누어 계층별로 쌓아가야 합니다. 이는 모델을 정규화하거나 매개변수 수가 많아 탐색 공간을 대체로 제한하는 견고한 방법이 부족하기 때문입니다.
VGG는 추론이 실행 시간에 소요되기 때문에 많은 계층에서 큰 특징 크기를 사용합니다. 인셉션의 병목 현상과 마찬가지로, 기능 수를 줄이면 일부 계산 비용을 절감할 수 있습니다.
네트워크 내 네트워크 네트워크 인 네트워크(Network in Network, NiN, 논문 참조: Network In Network)의 아이디어는 간단하고 훌륭합니다: 1×1 합성곱을 사용하여 합성 계층의 특징들을 더 조합 가능하게 하는 것입니다.
NiN 아키텍처는 개별 컨볼루션 후에 공간 MLP 계층을 사용하여 다른 계층보다 먼저 특징을 더 잘 결합합니다. 다시 말해, 1×1개의 컨볼루션이 LeNet의 원래 원리와 상충된다고 생각할 수 있지만, 사실 이들은 단순히 더 많은 컨볼루션 피처를 쌓는 것보다 더 나은 방식으로 컨볼루션 특징들을 결합할 수 있습니다. 이는 원래 픽셀을 다음 레이어 입력으로 사용하는 것과는 다릅니다. 1×1 컨볼루션은 컨볼루션 후 특징지도상의 특징을 공간적으로 결합하는 데 자주 사용되어, 실제로 매우 적은 매개변수만으로 이 특징들의 모든 픽셀에 공유할 수 있습니다!
MLP는 개별 합성곱 특징들을 더 복잡한 군으로 결합하여 그 효과를 크게 높일 수 있는 능력입니다. 이 아이디어는 이후 ResNet, Inception 및 그 파생 아키텍처와 같은 최근 아키텍처에서 사용되었습니다.
NiN은 최종 분류기의 일부로 평균 풀링 계층을 사용하는데, 이는 곧 보편화될 또 다른 관행입니다. 이는 분류 전에 네트워크가 여러 입력 이미지에 대한 응답을 평균화하여 수행됩니다.
구글네트와 시작 구글의 크리스티안 세게디는 딥 뉴럴 네트워크의 계산 오버헤드를 줄이기 위한 탐구를 시작했고, 최초의 인셉션 아키텍처인 구글넷(GoogLeNet)을 설계했습니다(참조: Going Deeper with Convolutions).
2014년 가을이었고, 딥러닝 모델이 이미지 프레임과 비디오 프레임을 분류하는 데 점점 유용해지고 있었습니다. 대부분의 회의론자들은 딥러닝과 신경망이 이번에도 정말로 돌아왔으며 앞으로도 계속 진화할 것임을 더 이상 의심하지 않습니다. 이러한 기술의 유용성을 고려할 때, 구글과 같은 인터넷 대기업들은 이러한 아키텍처를 자사 서버에 효율적이고 대규모로 배포하는 데 매우 관심이 많습니다.
크리스천은 딥 뉴럴 네트워크가 ImageNet과 같은 곳에서 높은 성능을 달성하면서 계산 오버헤드를 줄일 수 있는 방법에 대해 많이 고민했습니다. 또는 동일한 계산 오버헤드를 유지하면서 성능 향상을 할 수도 있습니다.
그와 그의 팀은 인셉션 모듈을 고안했습니다:
처음 보면 기본적으로 1×1, 3×3, 5×5 컨볼루션 필터의 병렬 조합입니다. 하지만 인셉션의 훌륭한 아이디어는 1×1 합성곱 블록(NiN)을 가진 값비싼 병렬 모듈 이전의 특징 수를 줄이는 것입니다. 이를 흔히 '병목 현상(bottleneck)'이라고 부릅니다. 이 섹션은 아래의 "병목 계층" 섹션에서 설명할 것입니다.
GoogLeNet은 시작 모듈이 없는 백본을 초기 계층으로 사용하고, 그 다음에 평균 풀링 계층과 NiN과 유사한 소프트맥스 분류기를 사용합니다. 이 분류기는 AlexNet과 VGG의 분류기보다 훨씬 적은 연산을 가집니다. 이로 인해 매우 효과적인 네트워크 설계도 가능해졌으며, 논문: 실용적 응용을 위한 심층 신경망 모델 분석(An Analysis of Deep Neural Network Models for Practical Applications)을 참고하세요.
병목 계층 NiN에서 영감을 받은 인셉션의 병목 계층은 각 계층의 특징 수를 줄이고, 따라서 연산 횟수도 줄입니다; 그래서 추론 시간을 낮게 유지할 수 있습니다. 데이터가 비용이 많이 드는 컨볼루션 모듈을 통과하기 전에 특징 수가 4배 줄어듭니다. 이는 계산 비용 측면에서 상당한 절감과 아키텍처의 성공입니다.
구체적으로 확인해 봅시다. 이제 256개의 피처 입력과 256개의 피처 출력이 있으니, 인셉션 계층이 3×3개의 컨볼루션만 수행할 수 있다고 가정해 봅시다. 이는 총 256×256×3×3개의 컨볼루션(약 589,000건의 곱셈 및 누적(MAC) 연산)입니다. 예를 들어, 구글 서버에서 0.5밀리초 만에 이 계층을 실행하는 것은 우리의 컴퓨트 예산을 초과할 수 있습니다. 대신 복잡하게 처리해야 할 특징 수를 줄여 64개(즉, 256/4)로 줄이기로 결정했습니다. 이 경우 256 -> 64 1×1의 합성곱으로 시작하고, 그 다음 인셉션의 모든 분기에서 64번의 합성곱을 진행하며, 이어서 64 -> 256의 특징에서 1×1 합성곱을 진행합니다. 이제 연산은 다음과 같습니다:
256×64 × 1×1 = 16,000초 64×64 × 3×3 = 36,000초 64×256 × 1×1 = 16,000초
이전 60만 부대와 비교하면 현재 총 계산 부피는 7만 개로, 거의 10배 적습니다.
그리고 우리가 더 나은 작업을 했음에도 불구하고, 이 층에서 그 일반성을 잃지는 않았습니다. 병목 계층은 ImageNet과 같은 데이터셋에서 최고 수준임이 입증되었으며, 다음에 소개할 ResNet 같은 아키텍처에서도 사용되고 있습니다.
입력 특성들이 관련되어 있어 1×1 합성곱과 적절히 결합하여 중복성을 줄일 수 있기 때문에 성공적입니다. 그 후 소수의 특징을 복잡하게 만든 후, 다음 층에서 의미 있는 조합으로 다시 확장할 수 있습니다.
인셉션 V3 (및 V2) 크리스천과 그의 팀은 매우 다작의 연구자입니다. 2015년 2월, 배치 정규화 인셉션이 Inception V2로 도입되었습니다(논문 참조: 배치 정규화: 내부 공변량 이동 감소를 통한 딥 네트워크 학습 가속화). 배치 정규화는 한 층의 출력에 있는 모든 특징 맵의 평균과 표준편차를 계산하고, 이 값을 사용해 응답을 정규화합니다. 이는 데이터를 '화이트닝'하여 모든 신경 지도가 같은 범위에 반응하고 평균이 0이 되도록 하는 것과 같습니다. 이는 다음 계층이 입력 데이터로부터 오프셋을 학습할 필요가 없을 때 훈련에 도움이 되며, 이러한 특징들을 더 잘 결합하는 방법에 초점을 맞추는 데 중점을 둡니다.
2015년 12월, 팀은 인셉션 모듈과 유사한 아키텍처의 새로운 버전을 공개했습니다(논문 참조: 컴퓨터 비전을 위한 인셉션 아키텍처 재고). 이 논문은 원래 GoogLeNet 아키텍처를 더 잘 설명하며, 설계 선택에 대한 더 자세한 내용을 제공합니다. 원래 아이디어는 다음과 같습니다:
네트워크를 신중하게 구축함으로써 깊이와 폭이 균형을 이루어 정보 흐름을 극대화합니다. 각 풀링 전에 특징 매핑을 추가하세요. 깊이가 증가함에 따라 네트워크 계층의 특징 깊이 또는 수도 체계적으로 증가합니다. 각 레이어 깊이 증가를 통해 다음 레이어 전에 특징의 결합을 늘리세요. 3×3개의 컨볼루션만을 사용하면, 5×5와 7×7 필터를 가능하면 여러 개의 3×3으로 분할할 수 있습니다. 아래 이미지를 보세요
그 결과, 새로운 인셉션은 다음과 같아졌습니다:
합성곱을 더 복잡한 모듈로 평탄화하여 필터를 분할할 수도 있습니다:
인셉션 계산을 수행하는 동안, 인셉션 모듈은 풀링을 제공하여 데이터 크기를 줄일 수도 있습니다. 이는 합성곱을 실행할 때 단순 풀링 계층을 병렬로 실행하는 것과 기본적으로 유사합니다:
Inception은 최종 분류기로 풀링 레이어와 softmax를 사용합니다.
ResNet 2015년 12월에는 인셉션 V3와 맞물린 새로운 변화가 있었습니다. ResNet은 간단한 아이디어를 가지고 있습니다: 두 개의 연속된 컨볼루션 층의 출력을 공급하고 입력을 다음 층으로 우회하는 것입니다(논문 참조: Deep Residual Learning for Image Recognition).
이것은 이전의 몇몇 오래된 아이디어와 비슷합니다. 하지만 ResNet에서는 두 레이어를 나누어 더 큰 규모로 적용합니다. 두 겹 뒤에 트라이딩하는 것은 핵심 직관입니다. 한 겹을 나눠도 더 큰 향상이 되지 않기 때문입니다. 레이어 2를 통과하는 것은 작은 분류기나 네트워크 내 네트워크로 생각할 수 있습니다.
네트워크 계층 수가 100을 초과한 것은 이번이 처음이며, 심지어 1000계층까지 훈련시킬 수 있습니다.
많은 네트워크 계층을 가진 ResNet은 Inception 병목 계층과 유사한 네트워크 계층을 사용하기 시작했습니다:
이 계층은 먼저 적은 수의 특징을 1×1로 합성하여 출력량(보통 입력의 1/4)을 사용한 후, 3×3층, 그리고 1×1층을 사용해 더 적은 수의 특징을 처리합니다. Inception 모듈과 유사하게, 낮은 계산 집약도를 보장하면서도 풍부한 기능 조합을 제공합니다.
ResNet은 입력에 비교적 단순한 초기 계층을 사용합니다: 7×7볼륨 기본 계층과 두 개의 풀. 더 복잡하고 직관적이지 않은 인셉션 V3와 V4와 비교해 보세요.
ResNet은 또한 풀링 레이어와 softmax를 최종 분류기로 사용합니다.
ResNet에 관한 다른 인사이트들은 매일 이루어집니다:
ResNet은 병렬과 인접 모두로 간주될 수 있으며, 많은 모듈에서 입력과 출력(inout)을 병렬로 취급하고, 각 모듈의 출력은 연속적으로 연결되어 있습니다. ResNet은 병렬 모듈 또는 연속 모듈의 조합으로도 볼 수 있습니다(논문 참조: Residual Networks are Exponential Ensembles of Relatively Shallow Network). ResNet은 일반적으로 20-30층의 네트워크 블록에서 병렬로 동작하는 것으로 밝혀졌습니다. 네트워크 전체 길이를 따라 계속 흐르는 대신, ResNet이 RNN처럼 입력에 출력을 되돌려 보내면, 네트워크는 더 나은 생물학적으로 신뢰받는 피질 모델로 간주될 수 있습니다(논문 참조: Resilateral Learning, Recurrent Neural Networks and Visual Cortex 간의 간극 연결).
인셉션 V4 다음은 크리스천과 그의 팀이 만든 인셉션 V3와 유사한 또 다른 버전의 인셉션입니다:
Inception V4는 또한 Inception 모듈과 ResNet 모듈을 결합합니다:
아키텍처가 그리 간결하지 않다고 생각하지만, 덜 투명한 휴리스틱들도 많아요. 그 안의 선택지를 이해하기 어렵고, 저자들이 설명하기도 어렵습니다.
네트워크의 단순함과 이해 및 수정이 쉽기 때문에 ResNet이 더 나을 수 있습니다.
스퀴즈넷 SqueezeNet(논문 참조: SqueezeNet: AlexNet 수준의 정확도, 50배 적은 매개변수와 <0.5MB 모델 크기)는 최근 발표된 아키텍처로, ResNet과 Inception의 개념을 재처리합니다. 더 나은 아키텍처 설계 네트워크 모델은 더 작고, 매개변수는 아직 복잡한 압축 알고리즘을 필요로 하지 않습니다.
에넷 우리 팀은 최근 공개된 아키텍처의 모든 기능을 결합하여 더 적은 매개변수와 계산만으로 최고 수준의 결과를 달성하는 매우 효율적이고 저중량 네트워크를 만들 계획입니다. 이 네트워크 아키텍처는 ENet이라 불리며 Adam Paszke가 설계했습니다. 이미 단일 픽셀 마크업과 장면 해상도에 사용했습니다.
ENet에 대한 자세한 내용은 논문 'ENet: 실시간 의미 세분화를 위한 딥 뉴럴 네트워크 아키텍처'를 참조하세요. ENet은 인코딩, 덧셈, 디코딩 네트워크입니다. 인코더는 분류하기 위한 일반적인 CNN 설계입니다. 디코더는 분류를 원래 이미지로 역전파하여 분할하는 업샘플링 네트워크입니다. 이 방법은 신경망만을 사용하며 이미지 분할을 위한 다른 알고리즘은 사용하지 않습니다.
ENet은 시작 시 가능한 최소한의 자원을 사용하도록 설계되었습니다. 그래서 인코더와 디코더의 결합 네트워크가 0.7MB에 16 fp 정확도를 가진 작은 스크립트를 가지고 있습니다. 이처럼 작은 모델임에도 불구하고, ENet은 세분화 정확도 면에서 다른 신경망 솔루션과 비슷하거나 더 높습니다.
모듈 분석 논문(ImageNet에서 CNN 발전에 대한 체계적 평가)에서 수행된 CNN 모듈 분석은 매우 유용합니다:
배치 노름 없이 ELU 비선형성을 사용하거나, 배치 노름을 가진 ReLU를 사용하세요. 배운 RGB 색상 공간 변환을 사용하세요. 선형 학습률 감소 전략을 사용하세요. 평균 층과 더 큰 층의 합을 사용하세요. 약 128에서 256 사이의 미니 배치 크기를 사용하세요. 만약 GPU에 너무 크다면, 학습 속도를 이 크기로 줄이세요. 완전 연결 층을 합성곱으로 사용하고, 모든 예측을 평균화하여 최종 예측을 내세요. 연구가 훈련 세트 크기를 늘릴 때, 도달하지 못한 정체기가 있는지 감지합니다 데이터의 크기보다 데이터의 청결성이 더 중요합니다. 입력 이미지 크기를 키울 수 없다면, 다음 레이어에서 보폭을 줄여도 같은 효과가 있습니다. 만약 귀하의 네트워크가 GoogLeNet과 같이 복잡하고 고도로 최적화된 아키텍처를 가지고 있다면, 이를 수정할 때 신중해야 합니다.
주목할 만한 다른 아키텍처들 FractalNet(논문: FractalNet: 잔차 없는 초심층 신경망 참조)은 ImageNet에서 테스트되지 않은 재귀 아키텍처를 사용합니다. 이 아키텍처는 ResNet 또는 더 일반적으로 ResNet의 파생 형태입니다.
미래 우리는 신경망 아키텍처 구축이 딥러닝 개발의 최우선 과제라고 믿습니다. 저희 팀은 기사에 언급된 논문을 신중히 읽고 이해할 것을 강력히 권장합니다.
하지만 왜 우리가 건축물을 만드는 데 그렇게 많은 시간을 쏟을지 궁금할 수도 있습니다. 왜 데이터를 어떻게 활용할지 알려주지 않나요? 모듈들은 어떻게 결합하나요? 이 질문들은 좋지만 아직 연구 중이며, 참고할 만한 논문이 있습니다: 미분 가능한 구조를 가진 신경망.
이 글에서 다룬 대부분의 아키텍처는 컴퓨터 비전에 관한 것입니다. 유사한 신경망 아키텍처가 다른 분야에서도 개발되었으며, 다른 모든 작업에서의 아키텍처 변화를 배우는 것은 매우 흥미롭습니다.
신경망 아키텍처와 계산 성능을 비교하고 싶다면, 논문: 실용적 응용을 위한 심층 신경망 모델 분석을 참고하세요.
|