티스토리 뷰

728x90

[Day 17] NLP (자연어 처리) - 2

 

 

1. 강의 복습 내용

더보기

NLP (자연어 처리) - 2

 

1. RNN (Recurrent Neural Network)

- 시퀀스 모델

- 입력과 출력을 시퀀스 단위로 처리하는 모델

- 시퀀스의 길이에 상관없이 input과 output을 처리할 수 있다.

- 은닉층의 노드에서 활성화 함수를 통해 나온 결과값들을 출력층 방향으로 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 가짐

- 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를 셀(Cell) 이라고 한다

- 은닉층의 셀은 각각의 시점(time step)에서 바로 이전 시점에서의 은닉층의 셀에서 나온 값을 자신의 입력으로 활용

- RNN 수식과 차원 계산

* 각각의 가중치들은 모든 시점에서 값을 동일하게 공유한다

* 하지만, RNN Layer가 2개 이상이면 각각의 Layer에서의 가중치는 서로 다르다.

 

- 양방향 RNN (Bidirectional Recurrent Nerual Network)

양방향 RNN은 시점 t에서의 출력값을 예측할 때 이전 시점의 데이터 뿐만 아니라, 이후 데이터로도 예측할 수 있다는 아이디어에 기반

단방향은 하나의 셀을 이용했다면, 양방향은 두개의 셀을 이용하여 하나의 출력값을 예측한다.

 

- RNN의 한계

RNN은 비교적 짧은 시퀀스에 대해서만 효과를 보인다.

시점이 길어질수록 (=시퀀스가 긴 데이터일수록) 앞의 정보를 충분히 반영하지 못한다. (장기의존성 문제)

수식처럼 tanh과 같은 활성함수를 사용하게 되면, 몇 time step만 거쳐도 gradient가 0으로 수렴할 수 있다.

ReLU를 사용하는 방법도 있지만, gradient exploding(값이 계속 커져 제어할 수 없을 정도에 도달함)에 이를 수 있다. 물론 gradient clipping과 같은 기법으로 처리 할 수 있지만, gradient 값들이 1보다 작다면 계속된 곱연산으로 인해 gradient vanishing 문제가 치명적이다.


2. LSTM

- RNN의 한계(장기의존성 문제)를 보완하기 위한 다양한 RNN의 변형중 하나

- LSTM은 은닉층의 메모리 셀에 입력 게이트, 망각 게이트, 출력 게이트를 추가하여 불필요한 기억을 지우고, 기억해야할 것들을 정함

 

1. 입력 게이트

- 현재 정보를 기억하기 위한 게이트

- 각각 현재 시점 t의 x값과 이전 시점의 출력 값(은닉 상태)이 가중치와 곱해진 후 더하여 sigmoid와 tanh 함수를 지난다.

- 시그모이드 함수를 지난 값은 0~1의 값을 가지고, tanh함수를 지난 값은 -1~1 값을 가진 두개의 값을 얻는다.

 

2. 삭제 게이트

- 기억을 삭제하기 위한 게이트

- 현재 시점t의 x값과 t-1의 출력 값이 시그모이드 함수를 지나 0~1의 값을 지니게 된다.

- 이 값은 삭제 과정을 거친 정보의 양을 뜻한다. (1에 가까울수록 온전히 기억한 것)

3. 셀 상태

- 삭제 게이트를 지난 값과 곱해져 일부 기억을 잃은 상태

- 입력 게이트에서 나온 두개의 값을 성분 곱한 결과값(=입력게이트에서 선택된 기억)과 전 시점에서 넘어온 일부 기억을 잃은 상태의 값과 더해진다.

- 즉, 삭제게이트는 이전 시점에서 넘어온 정보를 얼마나 반영할 지 결정하고, 입력게이트는 현재 시점의 정보를 얼마나 반영할지 결정한 후 더한다.

 

4. 출력 게이트

- 현재 시점 t의 x값과 이전 시점 t-1의 은닉 상태가 시그모이드를 지난 값

- 이 값은 현재 시점 t의 은닉상태를 결정한다.

- 셀 상태에 흐르는 값 (장기 상태)이 tanh 함수를 지나 -1~1의 값이 되고 위의 시그모이드를 지난 값과 곱해져 값이 걸러지는 효과가 발생하여 은닉 상태가 된다.

- 이 은닉 상태 (단기 상태)는 출력층과 다음 시점의 은닉상태로 보낸다.


3. GRU

- LSTM의 RNN 장기의존성 문제에 대한 해결책을 유지하면서, 연산량을 줄인 구조

- 즉, GRU는 성능은 LSTM과 유사하면서 연산량을 줄이고 복잡했던 LSTM구조를 간단화 시킴

 

 - LSTM에서는 입력, 삭제, 출력의 3개의 게이트가 존재했지만, GRU는 업데이트 게이트, 리셋 게이트 2개의 게이트가 존재한다.

 

 

참조 : https://wikidocs.net/22886

2. 피어 세션

더보기

1. 강의에 대한 토의

- RNN의 Gradient Vanishing, Exploding을 보완할 수 있는 방법?

- 초반 정보를 유지할 수 있는 방법 -> 양방향 RNN -> Concat or Sum

 

- Teacher Forcing

 

- RNN Language Model에서 시퀀스 순서대로 학습하면, 같은 단어의 입력은 무조건 같은 출력을 낼까?

 

2. 피어 미션


3. Conclusion

더보기

1. Embedding

2. 언어 데이터 전처리

 

3. PackedSquence

- 불필요한 pad 계산 줄이기

 

- pack_padded_sequence 입력 차원 -> 왜 transpose를 하는가?

 


'부스트캠프 AI Tech > 학습정리' 카테고리의 다른 글

[Day 19] Transformer  (0) 2021.02.18
[Day 18] NLP (자연어 처리) - 3  (0) 2021.02.17
[Day 16] NLP (자연어 처리) - 1  (0) 2021.02.15
[Day 15] Generative Models  (0) 2021.02.05
[Day 14] RNN  (0) 2021.02.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함