1. 순차데이터 종류
순환신경망(RNN)을 이해하기 앞서,
순차 데이터가 무엇인지 알아볼 필요가 있습니다.
순서가 의미가 있는 데이터를 말하며,
순서가 달라질 경우 의미가 손상되는 데이터를 순차데이터라고 합니다.
위의 사진에 예시를 보면, 3가지로 나뉘어 질 수 있습니다.
연속적 데이터(Sequential Data)
순서가 의미가 있지만, 시간의 이미가 없는 것
시간적 의미(Temporal Sequence)
시간적 의미가 있고, x축 시간에 따른 y축 변화가 있을때를 말합니다.
일정한 시간차(Time Series)
x축을 시간으로 보지 않고, 1 step 으로 표현으로하면 step 마다 변화를 나타날때를 말합니다.
2. 심층 신경망과 순차 데이터
입력이 만약 음파로 들어온다면??
Input Layer
보통 음파가 초당 44k 라고 하다면 4만개의 입력데이터가 발생 합니다.
그렇게 되면 첫번째 레이어가 4만 입력레이어가 입력되며, 그 이후에 레이어는 더 늘어나게 됩니다.
그리고 음파가 일정하지 않으니 입력데이터도 일정하지 않아 학습하는것이 어렵습니다.
Output Layer
심층 신경망에서는 Output 은 소프트맥스로 분류 합니다.
음성데이터를 소프트맥스를 사용하면, 세상에 모든 문장이 Output Layer에 있어야 합니다.
"피자 먹으러 가자", "치킨 먹으러 갈까?", "콜라 마실래" 등에 엄청 많은 레이어가 필요 합니다.
즉, 심층신경망으로 음성인식을 하면, 입출력 모두 문제가 발생 합니다.
이러한 문제를 RNN 으로 해결 할 수 있는 방법이 있습니다.
3. 입력 - 출력 구분
다중 입력, 단일 출력
시리나, 구글 음성서비스를 생각하면 쉽습니다.
"What time is it?" -> "It's {12시}, {19시}" 등으로 출력되는 것을 말합니다.
지도맵을 열어서 여기가 어디인지 알려주는 서비스 등도 있습니다.
다중 입력, 다중 출력
가장 적합한 예는 번역기 입니다.
영어 -> 한국어 번역을 하는 경우인데, 입력과 출력의 길이가 다를 수 있습니다.
단일 입력, 다중 출력
사진을 묘사하는 경우를 생각해보면, 사람마다 전부 다름니다.
고양이가 밥을 먹고 있다. 고양이가 물을 마시고 있다 등의 결과가 나옵니다.
4. 순환신경망(RNN)의 이해
기억시스템 (Memory System)
순차적인 데이터를 입력을 받아서, 우리가 원하는 출력을 받기 위해서는 기억 시스템 전제가 필요 합니다.
입력을 받을 때마다 그 내용을 기억할 수 있어야 합니다.
일상대화에서 생각해보면,
질문이 무엇인지? (what)
어떤 것을 알고 싶은지? (time)
시점이 언제인지 (is)
이러한 질문의 하나하나 문장을 알아야지 상대방에게 올바른 대답을 얻을 수 있습니다.
이처럼 인공지능도 올바른 입력값을 넣어야, 올바른 출력 값을 얻을 수 있습니다.
그것이 기억시스템 (Memory System) 입니다.
참고로 흔히 알고 있는 CNN, Shallow Neural Network 의 경우 Memoryless System(무기억 시스템) 이라고 합니다.
실제 사용할 때 입력이 들어올때마다 동작이 바뀌지 않으니 Memoryless System 이라고 합니다.
기본적인 순환 신경망
수학적으로 먼저 살펴보면,
일반적인 신경망에서 위의 사진 빨간글씨가 추가 된 것이 순한 신경망(RNN)의 기본적인 구조 입니다.
입력을 그냥 다음으로 넘기는 것이 아니라, n-1 번째 Hidden-Layer를 그대로 가져와서 합쳐집니다.
출력은 마지막 Hidden-Layer 에서 Output layer 로 넘어가는 것은 똑같습니다.
n 번째 출력이
n-1 입력에 대하여 영향을 받고 있다.
n-1 번째 출력은
n-2 입력에 대하여 영향을 받고 있다.
n-2 번째 출력은
n-3 입력에 대하여 영향을 받고 있다.
하나하나 앞으로 쭉 가다보면,
n번째 출력은 입력 처음부터 끝까지 영향을 받을 수 있다는 결론을 얻을 수 있습니다.
RNN의 출력은 이전의 모든 입력에 대하여 영향을 받는다고 할 수 있습니다.
다중 계층 순환 신경망 (Multi-Layer RNN)
순환 신경망도 심층 신경망처럼 쌓아 올릴 수 있습니다.
위에서 한것과 똑같이 Hidden-Layer 에 이전 입력값을 넣어주면 됩니다.
하지만 신경망의 구조가 매우 복잡해지고 학습이 잘 되지 않아서, 현재는 많이 사용되고 있지 않다고 합니다.
'AI > 딥러닝' 카테고리의 다른 글
순환 신경망 (RNN) 이란? - BPTT [3편] (0) | 2022.03.13 |
---|---|
순환 신경망 (RNN) 이란? [2편] (0) | 2022.03.11 |
Alex-net 란? [딥러닝] (0) | 2022.03.06 |
CNN의 구조 (LeNet - 5) (0) | 2022.02.24 |
2. 딥러닝은 학습을 어떻게 할까? (0) | 2022.02.20 |
댓글