Machine Learning - RNN
RNN (Recurrent Neural Networks)
지금까지 배웠던 것들을 생각해보자. 처음에 DNN (Deep Neural Networks)에 대해 배웠고, 다음으로 영상과 이미지 처리에 효과적인 CNN (Convolution Neural Networks)을 배웠으며 이제는 series에 대한 정보를 다룰 때 유용한 RNN에 대해 배울 차례이다.
DNN
Parameter가 급격하게 많아지는 단점이 있다.
CNN
Parameter를 줄일 수 있다. backpropagation을 수행하는 점은 DNN과 동일함.
RNN
RNN은 순차적인 데이터의 처리에 적합하다.
ex. 시간에 따라 순차적인 입력이 들어오는 음성, 음악 상태 정보 등..
RNN을 음성인식에 사용하는 예시를 생각해보자.
우리는 음성을 직관적으로 받아들일 수 있지만, RNN은 음성 신호를 나누어서 이전에 인식한 음성에서 정보를 얻고, 얻은 정보를 바탕으로 다음 음성 신호를 인식한다.
이전의 음성에서 정보를 얻는 과정을 전체적인 흐름을 파악하는 행동으로 생각하자.
문법도 스스로 build 할 수 있다. 여러 가지 문장을 학습시키면 기계 스스로 좋은 문장을 작성할 수 있게 된다.
감정 분석도 가능하다. 이전의 정보를 계속해서 참고해서 진행한다.
이 외에도 다양한 분야에 적용할 수 있다.
RNN을 분석해보자. 어떤 구조로 이루어져 있을까?
h는 brain으로 생각하자. 앞쪽 입력의 모든 히스토리를 저장하는 역할을 한다. 현재의 입력과 과거의 정보를 종합해서 tanh 함수를 사용해 h를 구하고 구한 h를 바탕으로 출력값인 y 를 구한다.
여기서 v w u 는 학습해야 하는 parameter이고 모든 hidden state에서 동일하고 공유하는 속성이다.
RNN은 순차적으로 계산하기 때문에 입력 길이가 다양해도 처리할 수 있는 장점이 있지만, 병렬 처리가 불가능해 계산 시간이 오래 걸린다는 단점이 있다.
위와 같이 여러 종류의 RNN이 있다.
여러 가지 사례에 대해 적절한 RNN을 적용해 사용하자.
RNN은 입력의 길이가 길어지게 되면 앞쪽에서 입력한 내용이 뒤쪽까지 잘 전달되지 않는 등 학습에서 어려움을 겪는다.
(gradient가 없어진다. vanishing exploding 문제라고 함)
이런 문제때문에 RNN을 잘 사용하지 않았는데 이를 해결하기 위해 LSTM이 도입됐다.
어떤 정보 중 유의미한것으로 판단된 정보는 업데이트해서 반영하고, 무의미하다고 판단된 정보는 날린다. 이를 통해 선별적으로 학습을 진행하게 한다.
RNN으로 기계 번역을 수행해보자.
번역을 수행하려면 전체 맥락을 먼저 이해해야 한다.
그 과정 없이 번역을 진행하면 위와 같이 번역이 제대로 진행되지 않는다.
여기서 RNN의 특성이 다시 한 번 역할을 한다.
앞쪽에서 받아온 정보를 뒤쪽까지 전달하기 때문에 전체적인 맥락을 살릴 수 있다.
여기에 추가해, ENCODER과 DECODER를 통해 입력을 압축하고 출력을 생성하는 과정을 거친다.
위의 ENCODER DECODER를 사용해 문서 요약 / 질의 응답 부분에도 적용할 수 있다.
잘 동작하지만, 문제도 있다.
정보의 Bottleneck 문제인데, 긴 문장을 압축해서 넣고, 압축 정보로 긴 문장을 생성하는 부분에서 문제가 생긴다.
위 문제를 ATTENTION 기법을 사용해서 해결했다. ENCODER과 DECODER를 계속 활용하되, ATTENTION을 사용해 출력 생성 시 어떤 부분에 주목할 지 정해 줘서 문제를 해결한다. (Computation 속도에도 개선)
'Machine Learning > AI Introduction' 카테고리의 다른 글
Pytorch - Tensor (0) | 2022.03.16 |
---|---|
정리 (0) | 2021.12.13 |
Deep Learning - CNN (0) | 2021.12.05 |
Advice for Applying ML/DL (2) (0) | 2021.12.04 |
Advice for Applying ML/DL (1) (0) | 2021.12.04 |
댓글
이 글 공유하기
다른 글
-
Pytorch - Tensor
Pytorch - Tensor
2022.03.16 -
정리
정리
2021.12.13 -
Deep Learning - CNN
Deep Learning - CNN
2021.12.05 -
Advice for Applying ML/DL (2)
Advice for Applying ML/DL (2)
2021.12.04