순환 신경망(RNN)이 갖추어야 할 세가지 필수 기능
시간성
- 특징을 순서대로 한 번에 하나씩 입력해야 한다.
가변 길이
- 길이가 T인 샘플을 처리하려면 은닉층이 T번 나타나야 한다. T는 가변적이다.
문맥 의존성
- 이전 특징 내용을 기억하고 있다가 적절한 순간에 활용해야 한다.
RNN의 구조
깊은 신경망과 유사성
깊은 신경망과 차이점
- 은닉층이 순환 연결(recurrent connection)을 가진다는 점
- 시간성, 가변 길이, 문맥 읜존성을 모두 처리할 수 있음
- 순환 연결은 t-1순간에 발생한 정보를 t순간으로 전달하는 역할
순환 연결을 가진 은닉층
- 새로운 샘플에 대한 연산을 수행할때 이전 연산 결과를 사용함
- 처음 샘플의 연산 결과가 끝까지 영향일 끼침
- 쎄타는 순환 신경망의 매개변수
순환 신경망의 매개변수
- 순환 신경망의 매개변수는 5가지
- U는 입력층과 은닉층을 연결하는 p*d 행렬
- W는 은닉층과 은닉층을 연결하는 p*p 행렬
- V는 은닉층과 출력층을 연결하는 q*p 행렬
- b,c는 바이어스로서 각각 p*1과 q*1 행렬
- RNN 학습은 훈련집합을 최적의 성능으로 예측하는 쎄타값을 찾는일
매개변수 공유
- 매 순간 다른 값을 사용하지 않고 같은 값을 공유함
- 공유의 장점
- 추정할 매개변수가 수가 획기적으로 줄어듦
- 매개변수의 수가 특징 벡터의 길이 T에 무관
- 특징이 나타나는 순간이 뒤바뀌어도 같거나 유사한 출력을 만들 수 있음 -> "어제 이 책을 샀다"와 "이 책을 어제 샀다"를 비슷한 영어 문장으로 변역할 수 있음
기본 RNN 연산 그래프
- 문자 모델을 보면 3개의 다른 방향으로 같은 가중치를 사용하고 있다는걸 알 수 있음
다양한 RNN 구조
- 기본 그래프는 입력개수와 출력개수가 같은경우
- 위 사진은 입력개수와 출력개수가 다른 경우의 수
다대일 구조
- 여러 문장에 의한 입력값에 대해 한단어의 출력이 나옴
- "지난주 화요일 저녁에 먹은 음식은?" 이라는 문장에 "파스타"라는 단어 출력이 나옴
일대다 구조
- 한개의 단어나 샘플이 들어가면 문장형태의 출력이 나옴
- "사과" 라고 입력하면 " 사과는 아침에 먹으면 좋은 과일중 하나다" 라고 나옴
문장 대 문장 (다대일과 일대다의 조합)
- 두가지가 합쳐서 만들어지는 다대다(many to many) 형태 연산
- 다대일로 연산이 끝나면 그 단일 값을 가지고 일대다 연산을 순차적으로 수행하는 형태
- 통역같은 경우 다 듣고 번역을 하는것이 좋기 때문에 이런 구조가 적합
- 왼쪽이 인코더 오른쪽이 디코더
다대다 구조
- 입력에 대한 연산과정을 시행하면서 결과값이 실시간으로 출력됨