순차데이터 : 텍스트나 시계열 데이터와 같이 순서에 의미가 있는 데이터 ex) 글, 대화, 일자별 날씨 등이 있음
순차데이터를 다룰때는 이전에 입력한 데이터를 기억하는 기능이 필요하다.
피드포워드 신경망 (feedforward neural network) 은 입력데이터의 흐름이 앞으로만 전달되는 신경망,
(연결신경망과 합성곱 신경망이 모두 이에 속한다)
순환 신경망 : 순차데이터에 잘 맞는 인공신경망의 한 종류, 이를 위해 고안된 순환층을 1개 이상 사용한 신경망
뉴런의 출력이 다시 자기 자신으로 전달된다.
A에 대한 정보가 들어있고 B를 처리할때 앞에서 A를 사용해 만든 출력 OA를 같이 사용한다.
그래서 OA와 B를 사용해 만든 OB에는 A에 대한 정보가 어느정도 포함되어있을것이고 다음 C를 처리할땐 OB를 함께 사용한다.
타임스텝 : 샘플을 처리하는 한 단계, 오래될수록 순환되는 정보는 희미해진다.
셀 : 순환 신경망에서 순환층을 부르는 말, 하나의 셀은 여러개의 뉴런으로 구성됨
은닉상태 : 순환신경망에서의 셀의 출력, 다음 층으로 전달, 셀이 다음 타임스텝의 데이터 처리시 재사용됨.
은닉층 활성화 함수로는 하이퍼볼릭 탄젠트 함수가 많이 사용된다.
텍스트 데이터가 담긴 IMDB를 분석해보자
맘뭉치 : 자연어 처리에서 사용하는 텍스트 데이터의 모음으로 훈련 데이터셋이다.
토큰은 텍스트에서 공백으로 구분되는 문자열로 종종 소문자로 변환하고 구둣점은 삭제한다.
keras.util 아래에 있는 패키지에서 to_categorical()으로 원핫 인코딩된 배열을 반환해준다.
단어 임베딩 : 순환신경망에서 텍스트를 처리할때 즐겨 사용하는 방법, 각 단어를 고정된 크기의 실수 벡터로 바꿔줌
원핫 인코딩보다 더 의미있는 값으로 채워져있다.
원핫 인코딩보다 SimpleRNN에 주입되는 입력의 크기가 크게 줄었지만 임베딩 벡터는 단어를 잘 표현하는 능력이 있기에 훈련결과는 이전에 못지않을것.
SimpleRNN은 케라스의 기본 순환층 클래스이다.
activation 매개변수엔 활성화함수를, dropout 매개변수엔 드롭아웃 비유릉ㄹ, return_sequences는 모든 타임스텝의 은닉상태 출력결정
원핫 인코딩을 사용한 모델과 비슷한 성능을 냈지만 순환층의 가중치 개수는 훨씬 작고 훈련세트 크기도 훨씬 줄어들었다.
검증 손실이 더 감소되지 않아 훈련이 적절히 조기됨을 확인할 수 있다.
LSTM과 GRU 셀
SimpleRNN보다 계산이 훨씬 복잡하지만 성능이 뛰어나서 순환신경망에 많이 채택된다.
'Data > 딥러닝 & 머신러닝' 카테고리의 다른 글
4장 : 신경망 시작하기 - 분류와 회귀 (0) | 2024.10.28 |
---|---|
2장 : 신경망을 위한 데이터 표현 (0) | 2024.10.28 |
8장. 이미지를 위한 인공 신경망 (0) | 2024.05.15 |
[딥러닝] 인공신경망 (0) | 2024.05.11 |
비지도 학습 (0) | 2024.04.23 |