성장에 도움이되는 NEWS

HOME >     >     

테크

인공신경망(Artificial Neural Network, ANN)의 종류와 구조 및 개념

페이지 정보

  • 작성자테라에너지
  • 조회1,174회
  • 작성일23-08-09 09:26

본문

5ab2505df8be2f8264be27848f920a7a_1691558479_0155.png 

 

1. Deep Feedforward Network (DFN)

DFN은 딥 러닝에서 가장 기본적으로 이용되는 인공신경망입니다. 그림에서도 볼 수 있듯이 DFN은 입력층, 은닉층, 출력층으로 이루어져 있으며, 보통은 2개 이상의 은닉층을 이용합니다. DFN에서 입력 데이터는 입력층, 은닉층, 출력층의 순서로 전파됩니다.

구조에서 알 수 있듯이 DFN은 현재 입력된 데이터가 단순히 입력층, 은닉층, 출력층을 거치면서 예측값으로 변환된 뒤에 현재 데이터에 대한 정보는 완전히 사라집니다. 즉, 입력되었던 데이터들의 정보가 저장되지 않기 때문에 입력 순서에 따라 데이터 간의 종속성이 존재하는 시계열 데이터를 처리는 데는 한계점이 존재합니다. 이러한 문제점을 해결하기 위해 제안된 것이 아래에서 소개할 Recurrent Neural Network (RNN)입니다.


2. Recurrent Neural Network (RNN)

은닉층의 각 뉴런에 순환 (recurrent) 연결을 추가하여 이전 시간에 입력된 데이터에 대한 은닉층의 출력을 현재 시간의 데이터를 예측할 때 다시 은닉층 뉴런에 입력합니다. 이러한 방식으로 RNN은 이전 시간에 입력된 데이터를 같이 고려하여 현재 시간에 입력된 데이터에 대한 예측을 수행합니다. 그러나 그림 3과 같이 단순한 형태의 RNN은 역전파 (backpropagation) 알고리즘을 기반으로 오랜 시간에 걸쳐 경향성이 나타나는 데이터를 학습할 때 Gradient가 비정상적으로 감소하거나 증가하는 vanishing/exploding gradient problem이 발생한다는 문제점이 있습니다. 이를 해결하기 위해 제안된 것이 다음에 설명할 Long Short-Term Memory (LSTM)입니다.


3.Long Short-Term Memory

STM은 gradient 관련 문제를 해결하기 위해 Forget Gate, Input Gate, Output Gate라는 새로운 요소를 은닉층의 각 뉴런에 추가했습니다. 그림 4를 보면 기본적인 RNN의 구조에 Memory Cell이 은닉층 뉴런에 추가된 것을 볼 수 있으며, Memory Cell은 추가된 3개의 Gate를 의미합니다. LSTM에서 각 Gate의 역할은 아래와 같습니다.


  • Forget Gate: 과거의 정보를 어느정도 기억할지 결정한다. 과거의 정보와 현재 데이터를 입력 받아 Sigmoid를 취한 뒤에 그 값을 과거의 정보에 곱한다. 따라서, Sigmoid의 출력이 0일 경우에는 과거의 정보를 완전히 잊고, 1일 경우에는 과거의 정보를 온전히 보존한다.
  • Input Gate: 현재의 정보를 기억하기 위해 만들어졌다. 과거의 정보와 현재 데이터를 입력 받아 Sigmoid와 Tanh 함수를 기반으로 현재 정보에 대한 보존량을 결정한다.
  • Output Gate: 과거의 정보와 현재 데이터를 이용하여 뉴런의 출력을 결정한다.


4. Autoencoder

Autoencoder는 입력층, 은닉층, 출력층을 거쳐 입력 데이터가 그대로 다시 출력되도록 동작합니다. 왜 입력을 그대로 다시 출력하는 인공신경망을 이용하는 지에 대해 의문을 가질 수 있습니다. 그러나 Autoencoder는 출력층의 출력이 아니라, 은닉층의 출력을 이용하는 것에 목적이 있습니다. Autoencoder에서 은닉층의 출력은 다음과 같은 의미와 활용을 갖습니다.

  • Data Compression: 일반적으로 Autoencoder에서는 은닉층 뉴런의 수를 입력층이나 출력층 뉴런의 수보다 작게 설정하기 때문에 은닉층의 출력은 입력 데이터에 대한 압축 데이터로 볼 수 있다.
  • Latent Representation: 은닉층은 그 자체로 입력 데이터를 잘 표현하기 위한 새로운 공간을 형성하기 때문에 은닉층의 출력은 입력 데이터에 대한 Latent Representation으로 활용될 수 있다.

5.Variational Autoencoder (VAE)

VAE는 기존 Autoencoder에 확률 개념을 추가한 모델입니다. Autoencoder에서는 입력 데이터를 그대로 복원하기 위해 학습이 진행되었다면, VAE에서는 입력 데이터의 확률 분포를 근사하기 위해 학습이 진행됩니다. 간단하게 이해하자면, Autoencoder는 입력 데이터를 사상하기 위한 함수를, VAE는 입력 데이터를 생성하는 확률 분포의 확률밀도함수를 학습한다고 생각할 수 있습니다. 이 과정에서 VAE는 계산 및 학습의 편의성, 범용성 등을 위해 입력 데이터의 확률 분포를 Gaussian이라고 가정합니다. VAE는 입력 데이터가 생성되는 확률 분포 자체를 학습하기 때문에 Generative Model로도 활용할 수 있습니다.


6. Convolutional Neural Network (CNN)

CNN은 아마도 가장 유명한 인공신경망 중 하나일 것입니다. CNN은 생명체의 시각 처리 방식을 모방하기 위해 Convolution이라는 연산을 인공신경망에 도입함으로써 이미지 처리 분야에서 기존의 머신 러닝 알고리즘들을 압도하였습니다. 2016년에 공개된 알파고에서도 CNN 기반의 딥 러닝 알고리즘이 이용되었습니다. CNN의 자세한 구조와 학습 방법은 이 글에서 볼 수 있습니다.

또한, 그림 7에서 볼 수 있듯이 CNN에서는 입력 및 출력 부분에서 뉴런들이 느슨하게 연결되어 있습니다. 이러한 구조적 특징에 의해 CNN은 DFN이나 RNN에 비해 학습해야하는 가중치의 수가 적으며, 이 덕분에 학습 및 예측이 빠르다는 장점이 있습니다. 최근에는 CNN의 강력한 예측 성능과 계산상의 효율성을 바탕으로 이미지뿐만 아니라 시계열 데이터에도 CNN을 적용하는 연구가 활발히 진행되고 있습니다.


7. Deep Residual Network (DRN)

인공신경망이 깊어질 수록 성능이 하락하는 문제는 계층이 많아질수록 학습이 어려워진다는 점 때문에 발생하는데, 이를 해결하기 위해 DRN 논문의 저자들은 Skip Connection이라는 것을 제안했습니다. 일반적인 인공신경망에서는 데이터가 계층의 순서에 따라 순차적으로 전파되는 것에 비해 DRN에서는 데이터가 그림 8과 같이 다음 계층 뿐만 아니라, 더 이후의 계층까지 직접 전달됩니다.

DRN은 주로 CNN과 결합하여 CNN에 Skip Connection이 추가된 형태로 이용되며, 이러한 인공신경망을 ResNet이라고 합니다. ResNet은 다양한 이미지 처리 분야에서 뛰어난 성능을 보여주었습니다.


8. Generative Adversarial Network (GAN)

즘 가장 인기 있는 인공신경망을 하나 선택하라면 아마도 대부분은 GAN을 말할 것이다. GAN은 VAE와 같은 Generative Model이며, 특히 이미지를 생성하는데 있어서 뛰어난 성능을 보여주고 있습니다. 이외에도 데이터셋에 없는 사람의 얼굴을 스스로 생성하거나, 고흐의 화풍을 모방하여 새로운 그림을 그리는 등 놀라운 결과물들을 보여주었습니다.

기존의 인공신경망과는 다르게 GAN은 두 개의 인공신경망이 서로 경쟁하며 학습이 진행됩니다. 이러한 두 개의 인공신경망을 Generator와 Discriminator라고 하며, 각각은 서로 다른 목적을 가지고 학습됩니다. Generator는 주어진 데이터를 보고 최대한 데이터와 비슷한 가짜 데이터를 생성합니다. Discriminator는 진짜 데이터와 Generator가 만든 가짜 데이터가 입력되었을 때, 어떤 것이 진짜 데이터인지를 판별합니다. 이러한 GAN의 동작은 그림 10과 같은 위조 지폐 판별에 관한 문제로 쉽게 생각할 수 있습니다.

5ab2505df8be2f8264be27848f920a7a_1691540330_9833.png

9. 그 외의 인공신경망

가장 대표적인 것으로는 그래프 데이터 처리를 위한 Graph Neural Network (GNN)과 생물체를 더욱 정교하게 묘사한 Spiking Nueral Network (SNN)이 있습니다.

GNN을 구현하는 것에는 다양한 방법이 존재할 수 있지만, 가장 많이 이용되는 것은 Spectral Graph Theory를 기반으로 설계된 Graph Convolutional Network (GCN)이다. GCN은 그림 11과 같이 Graph Convolution을 이용하여 Non-Euclidean space에 존재하는 그래프 데이터를 Euclidean Space에 존재하는 Node Embedding Vector들로 변환합니다. 그 다음, 생성된 Node Embedding Vector들은 Fully-Connected Layer에 입력되어 Node나 그래프에 대한 예측이 이루어집니다.


5ab2505df8be2f8264be27848f920a7a_1691540332_7399.png


Spiking Neural Network (SNN)

SNN은 기존 인공신경망보다 더욱 세밀하게 생물학적 뉴런을 묘사하기 위해 제안되었습니다. 그림 12와 같이 SNN에서의 각 뉴런은 완전 연결된 (Fully-Connected) 것이 아니라, 실제 생물의 뇌처럼 연관된 동작을 하는 뉴런들끼리만 연결되어 있습니다. 이에 더하여 기존의 인공 뉴런은 실수값을 출력했는데, SNN에서의 뉴런은 생물학적 뉴런의 전기 신호처럼 Spike의 발생 여부를 나타내는 0 또는 1의 값을 출력합니다. SNN 뉴런의 또 다른 특징은 뉴런 자체에서 시간에 따라 출력값이 변한다는 것입니다. 이는 신경망 자체의 복잡성 증가 없이도 시간에 종속적인 데이터에 대한 처리가 가능함을 의미합니다.


5ab2505df8be2f8264be27848f920a7a_1691540334_3395.png
 

SNN은 여러 연구에서 기존 인공신경망보다 유용하다는 것이 입증되었지만, 아직 SNN을 효과적으로 학습시킬 수 있는 최적화 알고리즘이 개발되지 않았습니다. 또한, SNN에서는 뉴런마다 시간에 따른 출력값의 변화를 지속적으로 계산해줘야 하기 때문에 많은 계산량이 요구됩니다. 이러한 한계점들로 현재는 SNN보다 기존 인공신경망이 주로 이용되고 있습니다.




상단으로 하단으로