지난 블로그 포스팅에서는 RNN(순환 신경망)의 정의, 개념, 그리고 구조에 대해서 알아보았습니다.
RNN은 다양하게 쓰이지만 그중에서도 자연어 처리 분야에서 다양한 성과를 올리고 있습니다. 이번 포스팅에서는 이 RNN을 어떻게 일상에서 실제로 그리고 구체적으로 활용할 수 있는지에 대해서 탐구해 보도록 하겠습니다.
RNN의 활용 범위
언어 모델과 문장 생성
언어 모델이란 문장을 이어나갈 때, 직전의 말을 이용함으로써 다음 말의 출현 확률을 예측한다는 것입니다. 얼마나 자주 문장이 나타날지 예측할 수 있기 때문에 주로 기계 번역 영역에서 많이 활용되고 있습니다.
다음에 어떤 말이 올지 예측하게 되면 출력값의 확률로부터 샘플링 해 나감으로써 새로운 문장을 생성하기 위한 생성 모델 (Generative model)을 얻을 수 있다는 장점이 있습니다.
그런 방식으로 이용하는 학습용 데이터에 따라서 다양한 것을 생성해 가는 것도 가능합니다. 언어 모델에서 입력 데이터는 연속적인 단어의 열이 됩니다. 그렇게 되면 출력값은 예측된 단어들이 나열되는 문장이 되는 것입니다.
기계 번역
기계 번역은 소스 언어(한국어를 비롯한 다양한 언어)의 문장을 입력으로 하는 점에 관해서는 언어 모델과 비슷합니다. 하지만 언어 모델과 다르게 완전한 입력 데이터를 읽고 나서 출력 데이터의 처리를 개시해 갑니다.
그렇기 때문에 번역된 문장의 첫 번째 단어는 완전한 입력 문장에 대한 정보가 필요한 것입니다.
영상 분석
화상 분석에 대해서도, RNN은 활용되고 있습니다.
예를 들어 어떤 세 여성이 맛있게 피자를 먹고 있는 사진을 입력했다고 합시다. 이 경우는, 우선 CNN으로 화상 인식을 실시해, '3명의 여성', '피자', '먹고 있다'라고 하는 태그를 이용할 수 있습니다. 그리고 RNN은 「3명의 여성이 피자를 먹고 있다」라고 하는 설명을 실시하는 것이 가능하게 되는 것입니다.
이러한 기술은 인터넷에 업로드된 사진을 자동으로 설명하는 기능 등으로 응용되기 시작하고 있습니다.
음성 인식
RRN은 음성 인지 분야에서도 다양하게 활용되고 있습니다. 국내외 다양한 제조사가 출시하고 있는 스마트 스피커의 음성 인식 기술은 RNN에 의해 이루어져 있다고 해도 과언이 아닙니다.
이미 이전에 출시된 아마존 에코나 구글 홈을 비롯해 현재는 다양한 스마트 스피커가 출시되고 있는 상황이며, 그 음성 인식 정확도는 매우 높은 편입니다.
목소리 인식은 입력이 가변 길이인 음성이고 출력도 가변 길이 텍스트입니다. 그렇기 때문에 단순한 소리의 문자화가 아니라 문맥을 제대로 이해하고 있어야 합니다. 스마트 스피커는 RNN에 의해서 문맥을 확실히 이해하고 있기 때문에 높은 정밀도로 변환할 수 있는 것입니다.
RNN의 응용
RNN은 다양한 형태로 응용되고 있습니다. 지금부터는 RNN이 어떤 형태로 응용되고 있는지 좀 더 자세히 살펴보도록 하겠습니다.
Bidirectional RNN
Bi-directional RNN 이란 과거의 정보와 더불어 미래의 정보도 추가함으로써 정밀도 향상을 도모하는 모델입니다. 일반적인 RNN의 경우 과거에서 미래로 가는 방향으로만 정보를 학습하지만 Bidirectional RNN은 미래에서 과거로 가는 방향으로도 동시에 학습을 할 수 있습니다.
또 과거로부터 미래라는 한 방향으로만 학습을 할 경우 얼마나 오래전부터 예측해야 오차가 최소화되는지를 결정하기 위한 '지연(delay) 파라미터'라는 것을 조절해야 합니다. 그러나 Bidirectional RNN이라면 그러한 파라미터에 학습이 의존하지 않기 때문에 튜닝의 수고를 덜 수 있는 것입니다.
하지만 Bidirectional RNN은 미래의 정보를 파악해 두지 않으면 사용할 수 없다는 단점이 있으니 유의해야 합니다.
CTC
CTC는 'Connectionist Temporal Classification'을 줄인 말로 음성인식과 문자인식에서 자주 사용되는 기법입니다. 주로 LSTM(Long short-term memory)이나 RNN과 조합하여 사용됩니다.
문자 인식이나 음성에 있어서는 하나의 문자의 가로 폭, 하나의 음소의 시간 길이 등이 가변적입니다. 따라서 디코더 측에서 동일한 문자가 연속된 경우에 지움으로써 이 가변성의 문제를 해결할 수 있습니다.
또한 CTC의 출력을 언어 모델로 보정하면 보다 자연스러운 문장으로 다듬을 수 있습니다.
이상으로 RNN(순환 신경망)의 활용 범위와 응용 방법에 대해서 알아보았습니다. RNN이 쉽지 않은 개념이라서 요런 개념이 있다라고만 이해해 주시면 좋을 것 같습니다. 다음 블로그 포스팅에서는 조금 더 흥미롭고 쉬운 주제를 다뤄보도록 하겠습니다.
'인공지능 (AI)' 카테고리의 다른 글
Word2vec의 활용 범위와 사례 (2) | 2025.01.02 |
---|---|
Word2vec의 개념과 구조 (2) | 2024.12.30 |
RNN(순환 신경망)의 정의, 개념, 구조 (0) | 2024.12.27 |
CNN(합성곱 신경망)의 특징과 활용 사례 (2) | 2024.12.26 |
CNN(합성곱 신경망)의 계층 구조 (0) | 2024.12.26 |