# 순환 신경망 (RNN)
- 의의 : 일반적인 피드 포워드 신경망 - 입력 길이 고정
> 문장 등 길이가 긴 입력들을 처리하는 신경망이 필요
ex) RNN, LSTM <- RNN 은 그 중 하나
- 시퀀스 : 순서.
- 단어 시퀀스의 경우, 단어들이 순서대로 나열되어 있는 경우를 의미.
> 문장 = 단어 시퀀스 라고 할 수 있다.
- 시퀀스 모델 : 시퀀스를 처리하기 위해 고안 된 모델.
> ex) RNN, LSTM, GRU
** 왜 b 를 편향값이라고 했었던 걸까?
>> 입력으로 들어오는 데이터 셋은, 어느정도 전체적으로 치우친 경향을 보일 수 있다.
그걸 표현하기 위한 상수값임.
ex) 지문인식 프로젝트에서, 똑같은 지문임에도 불구하고 전체적인 중심 좌표가 어딘가로 치우친 경우.
>> 편향과 regularization 에서 사용하는 값과는 전혀 다른 것이다!! 주의하자
>How? : regularization 은 변수 x 값들을 조금씩 변형해주는 것이고,
편향은 입력 input값들이 특정 지점 전체적으로 치우쳐 있는 경우를 의미한다.
- 피드 포워드와 RNN 의 차이점
1) 방향 :
> 피드 포워드 : 은닉층에서 활성화 함수 거친 값들은 항상 출력층 방향으로만 전달 됨
> RNN : 은닉층에서 활성화 함수 거친 값들이 다시 은닉층으로 전달됨 + 출력층으로도 전달 됨 (2개의 방향)
2) 각 은닉층의 단위
> 피드 포워드 : 각 은닉층에 있는 하나하나의 값들을 "뉴런" 이라고 표현했음
> RNN : 뉴런 단위로 계산 하지 않음. 전체 뉴런들의 집합인 은닉층 하나 자체만을 놓고 계산함
> Why? : RNN에서 중요하게 여기는건, "시퀀스"다. 시퀀스에 더 주목하기 위해서 입력/출력벡터의 차원수는
자세하게 표현하지 않기 위해 셀 하나로 퉁치는것. (물론 셀 자체도 중요하긴 함)
- 이름 : "메모리 셀", "RNN 셀"
> Why? : 각각의 은닉층에 있는 값들을 본인에게 다시 전했으므로, 이전 시점에서
은닉층의 출력값이 뭐였는지 알 수 있다. 이를 "기억한다"라고 표현할 수 있다.
- 은닉 상태 (Hidden State) : 메모리 셀이 갖고 있는 값. 즉, 이전 시점에서 메모리 셀로부터 출력된 값
>즉, 메모리 셀에서는 다음과 같은 연산이 일어난다
: 이전 메모리 셀이 원래 갖고 있는 값(=은닉상태) + 새로운 입력값 = 다음 메모리셀에 전달할 새로운 은닉상태
3) 은닉층 내부에 있는 뉴런들끼리 서로 영향을 주는가?
> 피드 포워드 : 각각의 뉴런들은 서로에게는 전혀 영향을 주지 않는다. 독립된 관계
> RNN : 이전 은닉상태에 있던 값을 가지고 새로운 은닉상태 값을 산출해내기 떄문에, 모든 뉴런들에게 서로 영향을 받는다
- 모델의 기본 종류
1) 일대 다 : ex. 이미지를 통해 제목을 생성해내는 일
2) 다대 일 : ex. 스팸 메세지의 내용을 보고, 스팸인지 판단하는 모델
3) 다대 다 : 외국어 문장을 한국어 문장으로 번역하는 일, 챗봇과의 대화, 개체 명 인식, 품사 태깅
- 주로 사용하는 활성화 함수 : 하이퍼볼릭 탄젠트 함수, 가끔씩 ReLU 함수
- 출력층에서 사용하는 활성화 함수 : 이진 분류시 시그모이드, 다항 분류시 소프트맥스 등
- 입력 층, 출력 층, 은닉 층의 단위 : "벡터"
> 각각의 층들을 연결할 때의 가중치 W 단위는 행렬
- 입력 값 : 3D 텐서 - 배치 크기, input 의 차원, hidden_size 만큼의 크기를 갖는 입력값
> hidden size 의 경우, 몇 개의 은닉 상태(Hidden Size) 를 갖는지를 결정해준다.
- 각 층에 대한 수식
> 사이트를 통해 직접 참조하기
- BPTT : RNN 에서 사용하는 역전파 학습 방식
- Deep Recurrent Neural Network : RNN 의 은닉층이 여러 개 있는 모델을 의미
- 양방향 RNN : (이전 시점 + 이후 시점) 이 두 가지로부터 상태값을 받아서 계산하는 방식
> 사용 예시 : 빈칸 채워넣기
>> 빈칸을 채우기 위해선, 앞 뒤 문맥을 둘 다 고려해야 한다.
'기계학습 > 자연어 처리 머신러닝' 카테고리의 다른 글
LSTM - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
---|---|
RNN 언어모델 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
태깅 작업 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
워드 임배딩 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
기계 언어 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |