아키텍처란?

박민서·2023년 8월 29일

딥러닝 공부

목록 보기
2/9

딥러닝에서 아키텍처는 기본적으로 뉴럴 네트워크의 구조나 디자인을 의미합니다. 아키텍처는 어떻게 레이어가 배열되는지, 뉴런들이 어떻게 연결되는지, 어떤 활성화 함수를 사용하는지 등을 결정합니다.

딥러닝 아키텍처의 몇 가지 주요 유형

  1. 완전 연결 계층 (Fully Connected Layers; FC or Dense Layers):

가장 기본적인 형태의 아키텍처로, 각 뉴런이 이전 레이어의 모든 뉴런과 연결됩니다.
주로 분류 문제나 회귀 문제에서 출력 레이어로 사용됩니다.

  1. 컨볼루션 신경망 (Convolutional Neural Networks; CNN):

이미지 처리에서 가장 많이 사용됩니다.
컨볼루션 레이어, 풀링 레이어, 완전 연결 레이어 등을 포함할 수 있습니다.
공간적 구조를 가진 데이터에서 패턴을 학습하는 데 효과적입니다.

  1. 순환 신경망 (Recurrent Neural Networks; RNN):

시퀀스 데이터(예: 텍스트, 시계열 데이터) 처리에 적합합니다.
이전 스텝의 출력(상태)을 현재 스텝의 입력으로 사용합니다.
LSTM(Long Short-Term Memory)나 GRU(Gated Recurrent Units) 같은 변형 구조도 있습니다.

  1. 트랜스포머 (Transformer):

주로 자연어 처리 작업에 사용되며, 병렬 처리와 어텐션 메커니즘에 의존합니다.
BERT, GPT 등의 유명한 모델들이 이 아키텍처를 기반으로 합니다.

  1. 자동 인코더 (Autoencoders):

입력 데이터를 압축적으로 표현하는 내부 표현으로 변환한 후 다시 복원하는 구조입니다.
노이즈 제거나 차원 감소에 사용될 수 있습니다.

  1. Generative Adversarial Networks (GAN):

두 개의 네트워크(생성자와 판별자)가 경쟁하는 방식으로 동작합니다.
주로 데이터를 생성하는 데 사용됩니다.
아키텍처는 딥러닝 모델의 성능과 학습 능력에 큰 영향을 미칩니다. 따라서 문제의 특성에 따라 최적의 아키텍처를 선택하는 것이 중요합니다.


딥러닝이 할 수 있는 작업

딥러닝이 할 수 있는 작업은 인식, 예측, 분류, 판별, 탐지, 자연어처리 등 여러가지가 있습니다. 더 빠르고 정확하게 이 작업을 할 수록 성능이 좋다고 말합니다.
앞서 지피티가 말해주었듯 레이어의 구조, 어떤 활성화함수를 쓰는지, 뉴런들이 어떻게 연결되는지에 따라서 아키텍처가 결정되고, 이름 붙여집니다. 아키텍처의 크기도 천차만별이며, 서로다른 아키텍처가 연결되어 새로운 아키텍처가 되기도 합니다.


유명한 딥러닝 아키텍처

딥러닝 분야에서는 수많은 아키텍처가 제안되고 검증되었습니다. 그 중 몇몇은 그 성능과 활용도 때문에 매우 유명해졌습니다. 다음은 딥러닝에서 유명한 아키텍처의 리스트입니다:

  1. Convolutional Neural Networks (CNNs) 관련:

    • LeNet: 1998년에 Yann LeCun에 의해 소개되었으며, 초기의 핸드쓴 문자 인식에 사용되었습니다.
    • VGG (VGG-16, VGG-19): Oxford의 Visual Geometry Group에 의해 개발되었으며, ImageNet 대회에서 좋은 성능을 보였습니다.
    • ResNet (Residual Network): Microsoft Research에 의해 소개되었고, 스킵 연결을 도입하여 깊은 네트워크에서도 효과적인 학습이 가능하게 했습니다.
    • Inception (GoogLeNet): Google에 의해 소개되었으며, 복잡한 인셉션 모듈을 사용합니다.
  2. Recurrent Neural Networks (RNNs) 관련:

    • LSTM (Long Short-Term Memory): RNN의 문제점인 장기 의존성 문제를 해결하기 위해 제안되었습니다.
    • GRU (Gated Recurrent Unit): LSTM을 더 단순하게 만든 변형 구조입니다.
  3. Transformer Architecture:

    • BERT (Bidirectional Encoder Representations from Transformers): Google에 의해 소개되었으며, 자연어 처리의 다양한 작업에서 최첨단 성능을 보였습니다.
    • GPT (Generative Pre-trained Transformer): OpenAI에 의해 개발되었으며, 많은 자연어 처리 작업에서 좋은 성능을 보였습니다.
    • T5 (Text-to-Text Transfer Transformer): Google의 연구팀에 의해 소개되었으며, 모든 작업을 텍스트 변환 문제로 간주하는 아이디어를 기반으로 합니다.
  4. Generative Adversarial Networks (GANs) 관련:

    • DCGAN (Deep Convolutional GAN): CNN과 GAN을 결합한 구조입니다.
    • CycleGAN: 이미지 스타일 변환 작업에 사용되며, 서로 다른 도메인 간의 이미지 변환을 가능하게 합니다.
  5. Other Specialized Architectures:

    • U-Net: 의료 이미지 분할 작업에 주로 사용되는 구조입니다.
    • MobileNet: 모바일 기기나 엣지 디바이스에서의 높은 성능과 효율성을 목표로 설계되었습니다.

이들 아키텍처 중 많은 것이 원래의 목적 외의 다양한 작업에도 활용되며, 연구자들과 개발자들 사이에서 널리 인정받고 있습니다.


아키텍처와 모델의 차이점

딥러닝에서 "아키텍처"와 "모델"은 종종 혼동될 수 있는 용어이지만, 구별되는 개념입니다. 다음은 두 용어에 대한 설명입니다:

  1. 아키텍처 (Architecture)

    • 아키텍처는 딥러닝 네트워크의 구조를 나타냅니다.
    • 예를 들면, 네트워크가 몇 개의 레이어로 구성되어 있는지, 각 레이어의 유닛 수는 얼마인지, 레이어들 사이의 연결 패턴은 어떻게 되는지, 어떤 활성화 함수가 사용되는지 등의 구조적인 정보를 포함합니다.
    • 아키텍처는 네트워크의 "설계도"나 "골격"과 같은 개념입니다.
    • 예: CNN, RNN, Transformer, ResNet, LSTM, BERT 등은 모두 특정한 아키텍처를 나타냅니다.
  2. 모델 (Model)

    • 모델은 아키텍처와 그 아키텍처에 대한 학습된 가중치 및 파라미터를 합친 것입니다.
    • 데이터를 사용하여 특정 아키텍처를 학습시키면, 그 결과로 나오는 가중치와 편향값들이 모델을 구성하게 됩니다.
    • 이러한 가중치와 편향값들을 통해 모델은 입력 데이터에 대한 예측이나 분류 작업을 수행할 수 있습니다.
    • 예: Pre-trained BERT, ImageNet에서 학습된 ResNet-50 등은 모델의 예시입니다. 이들은 특정한 아키텍처를 기반으로 특정 데이터셋에서 학습된 가중치와 파라미터를 갖고 있습니다.

간단히 말하면, 아키텍처는 딥러닝 네트워크의 설계나 구조를 나타내며, 모델은 그 설계에 따라 학습된 결과물이라고 할 수 있습니다. 따라서, 아키텍처는 여러 모델들의 기반이 될 수 있으며, 각각의 모델은 동일한 아키텍처를 가지면서도 다른 학습 데이터나 초기화 방법 등에 의해 서로 다른 결과를 낼 수 있습니다.


동일한 아키텍처를 기반으로 한 다양한 모델들이 있을 수 있는 이유

  1. 다른 학습 데이터: 동일한 아키텍처를 사용하더라도, 다른 학습 데이터셋을 사용하면 모델의 가중치와 파라미터가 다르게 학습될 것입니다. 예를 들어, ResNet 아키텍처를 사용하여 ImageNet 데이터와 CIFAR-10 데이터를 각각 학습시킨 두 모델은 서로 다른 특성을 갖게 될 것입니다.

  2. 다른 초기화: 신경망의 초기 가중치는 보통 무작위로 설정되는데, 이 초기화 값에 따라 학습 결과가 달라질 수 있습니다. 따라서, 동일한 아키텍처와 데이터셋을 사용하더라도, 다른 초기화를 가진 여러 모델을 얻을 수 있습니다.

  3. 다른 학습 파라미터: 학습률, 배치 크기, 최적화 알고리즘 등 학습과 관련된 파라미터들이 다를 경우, 학습 결과가 다를 수 있습니다.

  4. 정규화 및 보강: 드롭아웃, 배치 정규화, 데이터 보강(data augmentation)과 같은 기법들을 사용하면, 모델의 학습 동작과 결과가 달라질 수 있습니다.

  5. 전이 학습 (Transfer Learning): 특히 이미지 분야에서 널리 사용되는 전이 학습은 사전 학습된 모델을 다른 데이터셋으로 미세조정하여 사용하는 방법입니다. 예를 들어, ImageNet으로 사전 학습된 ResNet 아키텍처를 사용하여 다른 작은 데이터셋으로 미세조정하는 것은 널리 행해지는 방법입니다.

이러한 다양한 요소들로 인해 동일한 아키텍처를 사용하더라도, 다양한 모델들을 생성할 수 있습니다. 각 모델은 그 고유의 특성과 성능을 가지게 되며, 특정 응용 분야나 문제에 따라 적합한 모델을 선택하여 사용할 수 있습니다.


아키텍처 내에서 모듈

딥러닝과 관련된 문맥에서, "아키텍처"는 모델의 전반적인 설계나 구조를 의미하며, "모듈"은 이 아키텍처 내에서 재사용 가능한, 독립적이거나 중복되는 하위 구조나 구성 요소를 의미합니다.

모듈의 몇 가지 특징은 다음과 같습니다:

  1. 재사용성 (Reusability): 같은 아키텍처 내에서 여러 번 사용될 수 있습니다. 예를 들어, ResNet 아키텍처에는 동일한 구조의 residual block이 여러 번 사용됩니다.

  2. 독립성 (Modularity): 모듈은 종종 자체적으로 완결된 기능적 단위로 설계되어, 다른 부분에 큰 영향을 미치지 않고도 변경하거나 조정할 수 있습니다.

  3. 결합성 (Composability): 여러 모듈을 조합하여 더 큰 아키텍처나 복잡한 모델을 구축할 수 있습니다.

딥러닝에서의 몇몇 대표적인 모듈 예시:

  1. Residual Block: ResNet 아키텍처에서 사용되며, 입력을 출력에 직접 더하는 skip connection을 포함하는 블록입니다.

  2. Inception Module: GoogLeNet (Inception v1) 아키텍처에 사용되며, 여러 다른 크기의 컨볼루션과 풀링을 동시에 적용하고 그 결과를 합칩니다.

  3. MBConv (Mobile Inverted Bottleneck Convolution) Block: EfficientNet에서 사용되는 모듈로서, 특정한 순서와 구조로 연산이 진행됩니다.

  4. Transformer Block: Transformer 아키텍처에서 사용되며, self-attention 및 feed-forward 네트워크를 포함합니다.

이렇게, 모듈은 아키텍처 내에서 중요한 역할을 하는 하위 구조로, 아키텍처를 이해하고 설계하는 데 도움이 됩니다.

0개의 댓글