본문 바로가기
IT

[Deep Learning] 인공신경망

by 검은바람땅 2022. 12. 27.

요즘 세상은 인공지능 시대다.

특히 인공지능 중 Deep Learning 분야는 생물의 신경망을 모사하여 마치 생각하는 것과 같은 효과를 낼 수 있게 된다.

 

Deep Learning 분야가 굉장히 다양한 곳에서 쓰이는 만큼

Neural Networks(인공신경망)의 종류도 매우 다양하게 쓰인다.

 

대개 인공신경망은 종류에 따라 사용에 적합한 데이터라던지, 적합한 상황이 있기 때문에

자신이 Deep Learning을 활용한 인공지능을 만들고 싶다면, 알맞은 인공신경망을 구성할 필요가 있다.

 

오늘은 이를 위해 다양한 인공신경망의 구조를 알아보고자 한다.

출처 : https://www.asimovinstitute.org/neural-network-zoo/

위는 다양한 인공신경망을 그려놓은 그림이다.

여기서 우리들은 우리가 자주 쓸만한 인공신경망 몇 가지를 간단하게 알아볼 것이다.

다루지 않은 인공신경망도 언젠가는 개별적으로 모두 포스팅을 쓸 예정이다.

(까먹어서 못 알아본다면 그건 모른다)

 

 

1. Deep Feed Forward(DFF)

DFF image

DFF라고 하는데 여러분들은 DNN으로 더 유명할 수 있겠다.

(DNN : Deep Neural Network, DFF : Deep Feed Forward, DFN : Deep Feedforward Network..)

DFF나 DNN, DFN 모두 같은 인공신경망을 가리키므로 별 상관하지 않아도 된다.

앞으로의 포스팅에서는 모두 DNN으로 기술할 예정이다.

 

DNN을 배우기 전 ANN을 알아야 한다.

사실 별거는 아니고 Artificial Neural Network의 준말으로

모든 인공신경망을 의미하나, 여기서는

위 그림의 Hidden Node(초록색 노드)의 깊이가 1인 인공신경망을 의미한다고 하자.

 

결과적으로, DNN은 ANN에서 그림에서 보듯이 Hidden Node의 깊이가 2 이상인 인공신경망으로

깊이가 1인 인공신경망에 비해 복잡한 구조를 띄고 있기 때문에

더 복잡한 상황을 학습할 수 있다.

 

2. Recurrent Neural Network(RNN)

RNN image

RNN은 우리말로 하면 순환신경망이다.

DNN에서 초록색 노드가 파랑색 노드로 바뀌었는데

이 노드의 의미는 스스로 기억을 보존한다는 점이 있다.

 

파랑색 노드도 Hidden Node이지만, 전 단계의 결과를 가지고 이번 결과를 계산한다.

 

뭔소린가 하면 어떤 RNN에

첫 번째 입력에 1을 입력해서 2를 얻어냈다고 가정하자.

이 때, 두 번째 입력에 1을 입력해서 3이 나올 수 있다.

 

같은 1을 입력했음에도, 결과가 다른 이유는 첫 번째에 1을 입력했을 때, Hidden Node가

그 결과를 보존하고 있기 때문이다.

따라서, 두 번째에 1을 입력했을 때, 다른 결과가 나올 수 있다.

 

이러한 RNN은 인간의 언어와 같이 데이터에 순서의 상관이 있는 시계열 데이터를 처리할 때, 매우 유용하다.

 

3. Long / Short Term Memory(LSTM)

LSTM image

기존의 RNN은 매우 큰 문제점을 지니고 있다.

RNN의 구조 특성상, Gradient Vanishing, Gradient Exploding 문제, 즉 기울기 소실과 폭발의 문제가 있다.

결과적으로, RNN의 강점은 이전의 입력한 데이터에 대한 정보를 보존하고 있는 것이 강점이 되는데,

기울기 소실과 폭발의 문제로 인해, 점차 입력한 데이터에 대한 정보가 사라지거나, 매우 커지게 된다.

 

이를 해결하기 위해 등장한 것이 LSTM이다! (사실 GRU도 이를 해결한 인공신경망이긴 한데...)

 

게이트라는 개념을 통해 만들어진 인공신경망인데,

게이트의 종류는 Input Gate, Output Gate, Forgot Gate가 있다.

Gate 의미
Input Gate 현재 정보를 기억하기 위한 게이트.
Forgot Gate 이전의 정보를 어느정도 보존할 것인지 결정하는 게이트.
Output Gate 출력을 결정하는 게이트.

로 나뉩니다.

 

RNN, LSTM, GRU는 언젠가는 포스터로 다루어야 할 내용이므로 그 때가서 더 자세히 다루도록 하겠습니다.

 

4. Auto Encoder(AE)

AE image

AE는 매우 특이한 인공신경망이다.

물론, 인공신경망 중 안 특이한 인공신경망이 어딨겠느냐만은..

 

기본적으로 인공신경망은 Input에서 Output으로 진행하는 과정에서

Hidden Node가 Input의 정보에서 여러 과정을 거쳐 가공된 데이터를 가지고 있는 상태이므로,

Hidden Node는 Input의 정보를 담고 있어야 한다.

필연적으로 Hidden Layer의 차원(개수)는 Input/Output Layer의 차원보다 같거나 큰 경우가 많다.

 

그러나, AE는 Hidden Node의 차원이 적은 인공신경망으로

매우 특이한 인공신경망이다.

 

AE에서는 Input과 Output이 동일하거나, 서로 직접적인 상관관계를 가지고 있는 경우가 있다.

결과적으로, Input과 Output 모두 동일한 데이터를 지니고 있게 된다.

 

만약 Input으로 부터 Output을 잘 표현하는 AE가 만들어 졌다면

AE의 Hidden Layer는 Input(혹은 Output)을 표현하는 데이터라는 뜻이다.

 

예를 들어, 의미는 없지만 어떤 수 a에 대하여

[a, a, a, a]의 데이터가 Input이자 Output이라고 가정해보자.

이 정보는 a만 알아도 만들 수 있지 않겠는가?

그렇다면 Hidden Layer의 차원이 1이여도 이를 표시하는 것이 가능하다는 뜻이다.

결과적으로 AE는 이런 식으로 주어진 데이터에 대한 적은 차원의 표현을 만들어내는 것이다.

 

5. Deep Convolutional Network(DCN)

DCN image

DCN보다 CNN을 더 많이 들어봤을 수도 있겠다. (앞으로의 포스팅에서는 CNN으로 이야기한다.)

DCN은 사진에서 우측의 Hidden Node가 2층인 Network이다.

 

CNN은 좌측의 Layer 들이 특이하게 생겼는데, 서로 연결이 매우 느슨하게 되어있다.

기존의 Network들이 Fully Connected(Layer간의 연결이 매우 복잡하게 되어있음)인 것을 생각하면

매우 특이한 형태라고 생각할 수 있다.

CNN은 이미지와 같이 서로 인접한 데이터간의 상관관계가 있는 데이터를 주로 Input으로 사용한다.

 

결과적으로, 두 가지 효과를 가지고 있다.

1. 크기가 큰 데이터를 작게 줄여줘서 연산 속도의 큰 향상을 가지고 올 수 있다.

2. 데이터의 조그마한 변화는 연산에 큰 변화를 가지고 오지 않는다.

 

이러한 강점 덕분에, 이미지를 효과적으로 분석할 수 있는 것이다.

이러한 CNN은 중요한 인공신경망이므로 후에 자세히 다뤄보도록 하겠다.

 

6. Generative Adversarial Network(GAN)

GAN Image

GAN은 요즘 한창 인기를 끌고 있는 인공신경망으로

저 사진을 그대로 사용하기 보다는, 두 인공신경망이 결합된 형태라고 생각하면 좋다.

 

GAN은 결과적으로 두 개의 인공신경망이 결합된 인공신경망인데, 두 인공신경망은 다음과 같다.

Nerual Network 의미
Generator 데이터를 보고 가짜 데이터를 만들어낸다.
Discriminator 가짜 데이터와 진짜 데이터를 보고 무엇이 진짜 데이터인지 구분한다.

이렇게 두 인공신경망은 서로 경쟁하며 학습하게 되는데,

결과적으로 Generator는 점점 더 가짜 데이터를 잘 만들어낼 것이고

Discriminator는 점점 더 구별 능력이 향상될 것이다.

 

7. Deep Residual Network(DRN)

DRN image

DRN은 사실 별거 없다.

정말 별거 없다. 그림만 봐도 충분히 이해할 수 있을 정도로 간단하다.

 

일반적인 인공신경망은 Node의 전파가 인접한 Layer로만 전파된다.

그러나 DRN은 다르다. 인접한 Layer를 넘어서 더 너머의 Layer로도 전파가 되기 때문에

아래와 같은 효과를 얻는다.

1. 더 복잡한 인공신경망의 구성

2. Layer의 수가 늘어난다고 효율이 좋아지지 않는 일반적인 인공신경망의 문제 해결

 

사실 1번 효과는 별거 없다. 큰 차이도 없고..

중요한 것은 (꺾이지 않는 마음) 2번이다.

일반적인 인공신경망은 Layer의 수가 늘어난다고 효율이 좋아지지 않는다.

오히려 매우 크게 증가하는 연산량이 늘어나 연산속도에서도 좋지 않고,

학습 효율이 떨어져 결과적으로 좋지 못한 인공지능이 만들어진다.

 

DRN을 사용하면 이를 해결할 수 있다.

 

 

 

결론

세상에는 매우 다양한 인공신경망이 존재한다.

사실 그렇게 별거 없고, 모든 인공신경망은 DNN에서 약간씩 변형한 인공신경망이다.

그게 아니더라도 그냥 다양한 노드를 다양하게 이어붙이면 그게 인공신경망이 되는 것이다.

자신이 어떠한 인공지능에서 인공신경망을 구성한다면

필자의 포스팅이 조금이라도 구성 아이디어를 얻는 열쇠가 되었으면 한다.

'IT' 카테고리의 다른 글

[인공지능] 인공지능 기초 - Gradient Descent  (0) 2022.12.27

댓글