핵심 키워드
- #순차 데이터 #순환 신경망 #셀 #은닉 상태
- 순차 데이터의 특징을 알고 순환 신경망의 개념을 학습하자
순차 데이터
- 순차 데이터
텍스트나 시계열 데이터와 같이 순서에 의미가 있는 데이터를 말함
텍스트 데이터는 단어의 순서가 중요한 순차 데이터이므로, 이런 데이터는 순서를 유지하며 신경망에 주입해야 함
순환 신경망
- 순환 신경망
완전 연결 신경망에 이전 데이터의 처리 흐름을 순환하는 고리 하나를 추가한 신경망
순차 데이터를 다룰 때는 이전에 입력한 데이터를 기억하는 기능이 필요하므로
신경망이 이전에 처리했던 샘플을 다음 샘플을 처리하는데 재사용하기 위해서는 데이터 흐름이 신경망 층에 순환되어야 함
그러므로 뉴런의 출력이 다시 자기 자신으로 전달하여 어떤 샘플을 처리할 때 바로 이전에 사용했던 데이터를 재사용하게 함
예) A, B, C 3개의 샘플을 처리하는 순환 신경망의 뉴런
첫 번째 샘플 A를 처리하고 난 출력(OA)이 다시 뉴런으로 들어가게 되며 이 출력에는 A에 대한 정보가 다분히 들어있으며
그다음 B를 처리할 때 앞에서 A를 사용해 만든 출력 OA를 함께 사용하게 됨
따라서 OA와 B를 사용해서 만든 OB에는 A에 대한 정보가 어느정도 포함되게 되며 이는 다시 C를 처리할 때 사용됨
그러므로 OC에는 B와 A에 대한 정보가 담기게 됨
이렇게 샘플을 처리하는 한 단계를 타임스텝이라고 하며
순환 신경망은 이전 타임스텝의 샘플을 기억하지만 타임스텝이 오래될수록 순환되는 정보를 희미해짐
순환 신경망에서는 특별히 층을 셀이라고 부르며 한 셀에는 여러 개의 뉴런이 있지만 하나의 셀로 층을 표현하며
셀의 출력을 은닉 상태라고 부름
즉, 순환 신경망의 구조는 입력에 어떤 가중치를 곱하고 활성화 함수를 통과시켜 다음 층으로 보내게 되는데
이때 층의 출력(은닉 상태)을 다음 타임스텝에 재사용한다는 특징이 있음
일반적으로 은닉층의 활성화 함수는 하이퍼볼릭 탄젠트 함수인 tanh가 많이 사용되며
tanh 함수도 S자 모양을 띠기 때문에 종종 시그모이드 함수라고도 부르나 시그모이드 함수와 달리 -1 ~ 1 사이의 범위를 가짐
- 타임스텝으로 펼친 신경망
순환 신경망에서의 뉴런은 입력과 가중치를 곱하는데, 이때 이전 타임스텝의 은닉 상태에 곱해지는 가중치가 하나 더 사용됨
Wx는 입력에 곱해지는 가중치이고 Wh는 이전 타임스켑의 은닉 상태에 곱해지는 가중치임
이러한 그림은 셀의 출력(은닉 상태)이 다음 타임스텝에 재사용되기 때문에 타임스텝으로 셀을 나누어 그릴 수 있음
타임스텝 1에서 셀의 출력 h1이 타임스텝 2의 셀로 주입되며 이때 Wh와 곱해지게 됨
마찬가지로 타임스텝 2에서 셀의 출력 h2가 타임스텝 3의 셀로 주입되며 이때도 Wh와 곱해지게 됨
이때 모든 타임스텝에 사용되는 가중치는 Wh 하나이며, 가중치 Wh는 타임스텝에 따라 변화되는 뉴런의 출력을 학습
그러므로 타임스텝에 걸쳐서 가중치를 공유함으로써 모델 파라미터를 효율적으로 사용할 수 있음
셀의 가중치와 입출력
- 순환 신경망의 가중치
예) 순환층에 입력되는 특성의 개수가 4개이고 순환층의 뉴런이 3개일 때
입력층과 순환층의 뉴런이 모두 완전 연결되기 때문에 가중치 Wx의 크기는 4 x 3 = 12개가 됨
순환층의 첫 번째 뉴런의 은닉 상태가 다음 타임스텝에 재사용될 때 첫 번째 뉴런과 두 번째 뉴런, 세 번째 뉴런에 모두 전달됨
즉, 이전 타임스텝의 은닉 승태는 다음 타임스텝의 뉴런에 완전히 연결되게 되는 것
그러므로 순환층에서 다음 타임스텝에 재사용되는 은닉 상태를 위한 가중치 Wh의 크기는 3 x 3 = 9개가 됨
가중치를 모두 구했으므로 모델 파라미터 개수를 계산하면 가중치에 절편을 더하면 되므로
이 순환층은 모두 12 + 9 + 3 = 24개의 모델 파라미터를 가지고 있음
이렇게 은닉 상태가 모든 뉴런에 순환되기 때문에 완전 연결 신경망처럼 그림으로 표현하지 않고 셀 하나로 표현하는 것
- 순환 신경망의 입력
순환층은 일반적으로 샘플마다 2개의 차원을 가지며, 보통 하나의 샘플을 하나의 시퀀스라고 말함
시퀀스 안에는 여러 개의 아이템이 들어있게 되며, 시퀀스의 길이는 타임스텝의 길이가 됨
예) 어떤 샘플에 'I am a boy'란 문장이 들어있을 때
이 샘플은 4개의 단어로 이루어져 있고, 각 단어를 3개의 어떤 숫자로 표현한다고 가정하면 (1, 4, 3)
이런 입력이 순환층을 통과하면 두 번째, 세 번째 차원이 사라지고 순환층의 뉴런 개수만큼 출력되어 (뉴런의 개수, )가 됨
즉, 하나의 샘플은 시퀀스 길이와 단어 표현의 2차원 배열이지만 순환층을 통과하면 뉴런 개수 크기의 1차원 배열로 바뀌게 됨
- 다층 순환 신경망
순환층은 기본적으로 마지막 타임스텝의 은닉 상태만 출력으로 내보냄
이것은 입력된 시퀀스 길이를 모두 읽어서 정보를 마지막 은닉 상태에 압축하여 전달하는 것처럼 볼 수 있음
순환 신경망도 다른 신경망처럼 여러 개의 층을 쌓을 수 있는데 이 때의 셀의 출력은 어떨까
셀의 입력은 샘플마다 타임스텝과 단어 표현으로 이루어진 2차원 배열이어야 하므로
마지막 셀을 제외한 다른 모든 셀은 마지막 타임스텝의 은닉 상태가 아닌, 모든 타임스텝의 은닉 상태를 출력해야만 함
그러므로 아래의 첫 번째 셀은 모든 타임스텝의 은닉 상태를 출력하고, 두 번째 셀은 마지막 타입스텝의 은닉 상태만 출력한 것
- 순환 신경망을 사용한 예측
예) 다중 분류 문제에서 입력 샘플의 크기가 (20, 100)일 경우 하나의 순환층을 사용하는 순환 신경망의 구조
샘플은 20개의 타입스텝으로 이루어져 있으며, 각 타임스텝은 100개의 표현 또는 특성으로 이루어져 있으므로
이 샘플은 순환층의 셀을 통과하면 모든 타입 스텝을 처리한 후의 은닉 상태만 출력하므로
이 은닉 상태의 크기는 셀에 있는 뉴런의 개수가 되므로 (10, )
샘플마다 셀이 1차원 배열을 출력하기 때문에 합성곱 신경망처럼 Flatten 클래스로 펼칠 필요 없이 바로 출력층에 연결
그리고 3개의 클래스를 가진 다중 분류이므로 출력층에 3개의 뉴런과 소프트맥스 활성화 함수를 사용
만약 이진 분류일 경우에는 하나의 뉴런을 두고 시그모이드 활성화 함수를 사용
'ML > 혼자 공부하는 머신러닝 + 딥러닝' 카테고리의 다른 글
[혼공머신] 09. 텍스트를 위한 인공 신경망 - LSTM과 GRU 셀 (0) | 2022.07.21 |
---|---|
[혼공머신] 09. 텍스트를 위한 인공 신경망 - 순환 신경망으로 IMDB 리뷰 분류하기 (0) | 2022.07.20 |
[혼공머신] 08. 이미지를 위한 인공 신경망 - 합성곱 신경망의 시각화 (0) | 2022.07.14 |
[혼공머신] 08. 이미지를 위한 인공 신경망 - 합성곱 신경망을 사용한 이미지 분류 (0) | 2022.07.13 |
[혼공머신] 08. 이미지를 위한 인공 신경망 - 합성공 신경망의 구성 요소 (0) | 2022.07.12 |