본문 바로가기
AI · 인공지능/알기쉬운 AI

[알기쉬운 AI - 29] RNN(Recurrent Neural Network)

by 두우우부 2020. 5. 23.
반응형

 

지난번에 콘볼루션 신경망(Convolutional neural network)에 대해 설명했지만, 이번에는 순환 신경망(Recurrent Neural Network)에 대해 설명합니다. CNN과의 차이, 어떤 용도에 적합한가, RNN의 구조 등을 이해해 봅시다.

 

콘볼루션 신경망

CNN(Convolutional neural network)과 비교하기 위해 복습해 봅시다. 그림 1은 Semantic  Scholar에서 공개하고 있는 숫자를 이미지로 인식하는 CNN의 블록 다이어그램입니다. Input(입력 층)의 28 × 28 픽셀의 이미지 (숫자 5)가 Feature Extraction(특징 추출) 과정에서 Convolution 및 Sub-Sampling(풀링)을 반복하면서 Feature maps(특징 맵)이 작아지면서 많아집니다. 그리고 마지막으로 Fully Connected Layer에서 전결합하여 Outputs(출력층)에서 5의 신뢰성이 95%라는 식으로 Classification(분류)되는 구성입니다.

 

그림 1 : CNN의 구조

 

이러한 일련의 처리는 위에서 아래로 흐르기 때문에 피드 포워드(순 전파형) 신경망이라고 하며, 이미지 인식처럼 정적인(시간의 요소가 없는) 케이스에 적합합니다. 오차는 역 전파하여 필터를 변경하지만, 원래 이미지에서 특징을 추출해가는 신호는 추적할 수 없습니다. 

 

순환 신경망

한편, RNN(Recurrent Neural Network)은 한 층의 출력이 순환하며 다시 입력되는 재귀 결합을 가진 리커런트(순환형) 신경망입니다(그림 2). 자신의 출력을 다시 자신에게 먹이는 까다로운 구조를 가진 네트워크인데, 왜 이런 작업을 할 필요가 있을까요? 

 

그림 2 : 순전파 NN과 재귀형 NN

 

그 열쇠는 시계열가변 길이입니다. 이전에 문자의 OX여부를 판단했던 CNN은 고정 길이의 이미지를 간직해서 처리할 뿐이었습니다. 그러나 예를 들어, 자연 언어 처리(NLP) 등의 영역에서는 시간의 개념이 필요하며, 입출력 데이터의 크기도 조정됩니다.

 

예를 통해 알아봅시다. 

 

당신은 TV 프로그램에서 어느 쪽이 '영희를 더 잘 알고있는지' AI와 승부하게 되었습니다. 상대는 영희를 학습하는 AI이므로 빨리 제압하지 않으면 이길 수 없을지도 모릅니다. 그런데, 그림 3과 같은 문제가 나왔습니다. '영희가', '좋아하는' 까지만 듣고는 아직 해답을 알 수 없지만, 이미 머릿속은 격렬하게 회전하며 말풍선으로 '혹시 사람? 아니면 음식? 장소인가?' 등이 떠오르고 있을 것입니다.

 

그림 3 : 언어는 시계열 

 

계속되는 음성으로 '케이크'까지 들었을 때, AI놈이 힘차게 버튼을 눌렀습니다(아차, 알고 있었는데...). 그리고 AI는 자신 있게 '치즈'라고 대답했습니다. 

 

이 흐름을 시계열로 보면, 시점(t -1) = '영희가', 시점(t) = '좋아하는' 까지 듣고 시점(t + 1)에서 '케이크' 라고 나왔으니까 문제의 의도를 이해할 수 있는 것입니다. 이렇게 인간이라면 당연한 것이 순 전파 NN에서는 조금 어렵습니다. 왜냐하면 '케이크' 뿐이라면 문장의 의도를 읽을 수 없기 때문에, 그 이전의 '영희가' 랑 '좋아하는' 을 기억하고 있어야 합니다. 여기서 그것을 가능하게 해주는 구조가 바로 재귀입니다. 

 

순환(재귀) 신경망의 전개도

시간축으로 전개하여 설명해 봅시다. 그림 4는 재귀 구조를 시계열로 확장한 모델입니다. 문제의 문장은 4절로 이뤄지므로, 4단계의 신경망으로 전개할 수 있습니다. 시간 (t) 때의 은닉층은 입력층으로 들어온 「좋아하는」과 전 단계에서 「영희가」라는 2개의 입력이 있어, 이를 조합하여 계산합니다. 계속되는 시점 (t + 1)의 입력층에 「케이크」가 들어오면 전 단계의 은닉층으로부터 「영희 × 좋아하는」을 조합해서, "아, 알겠다"라고 AI는 버튼을 누른 것입니다. 

 

통시적 오차 역 전파 (Back propagation Through time)
'조합'이라고 간단하게 말했지만, 실제로는 2개의 입력 가중치를 고려한 수학적 행렬 계산입니다. 앞에서 O라는 기호를 판별하는데도 고생했던 것처럼, 인간의 머릿속에선 자연스러운 일이 AI 에게는 꽤 어려운 일입니다. AI가 똑똑해지는 비결은 오차 역 전파(Back propagation)로 가중치를 조정하기 때문이었지요([18] 계층 신경망 참조). RNN의 학습방법 역시 역 전파에 의한 weight 조절인데요, 전 단계의 정보도 추가하기 위해 '통시적 오차 역 전파 (BPTT)'라고 불리고 있습니다.

 

그림 4 : RNN 의 전개도

 

이쯤에서, "입력층과 은닉층은 알 것 같은데, 출력층에서는 무엇이 출력되는 거지?"라는 의문이 듭니다.

 

시점 (t)에서 출력 계층에는 무엇이 출력되는 것일까요?

 

 

사실 이 대답은 AI가 무엇을 목적으로 학습했는지에 따라 달라집니다. 이번 모델은 "문제의 의도"를 출력하는 텍스트 분석(Text Analytics)으로 교육하고 있다고 가정했습니다. 시간 (t)는 영희가 좋아하는 사람을 묻는 건지, 영희가 좋아하는 장소를 묻는 건지 문장의 의미를 아직 모르고, 어떤 후보도 신뢰도가 낮은 상태입니다. 그리고 시점 (t + 1)에서 출력층에 "영희가 좋아하는 케이크"라는 후보의 신뢰도가 임계값을 초과했기 때문에 AI는 버튼을 누른 것입니다. 

 

보통은 문제 문장의 의도가 아닌 문장 전체를 예상하는 모델이 좋겠지요. 시점 (t)에서는 "영희가 좋아하는 〇〇"라는 후보가 너무 많아서 판단할 수 없었던 것이 시점(t + 1)까지 오면 뒤에 "무엇입니까?"를 붙여서 "영희가 좋아하는 케이크는 무엇입니까?"라는 후보가 등장합니다. 즉, ①문장 전체를 상정하여 출력 → ②문장의 의도를 읽음 → ③의도와 정답을 학습(Classification)한 분류기에서 해답을 도출, 이와 같은 3단계로 처리됩니다. 그러나 이 경우 의문문이 된다는 것을 알지 못하기 때문에 퀴즈 전용으로 학습된 모델에는 지고 맙니다.

 

다른 목적이라면 어떨까요. 예를 들어, 감정 분석(Emotion Recognition)이라면, 시점 (t + 1) "영희가 좋아하는 케이크는"까지 joy라는 감정이 0.8 출력되고, 시점 (t + 2)까지 오면 0.3 정도로 떨어지는 느낌입니다(Google Cloud Natural Language에서 시도해보니 이런 느낌이었습니다).

 

기계 번역(Machine  Translation)은 어떨까요? 시점(t + 1)에서 "younghee's favorite cake is"라고 출력되고, 시점(t + 2)에서 "What is younghee's favorite cake?"라고 의문문으로 변환되어 출력됩니다(Google Cloud Translation에서 시도했습니다).

 

이 TV쇼에서 갑자기 영희가 등장하면서 말합니다. "아, 하지만 지금 치즈 케이크는 안 당기는데..." 

 

AI 녀석은 자연 언어 이해(NLU)는 우수했지만, 학습 데이터가 낡고 분류(Classification)의 정밀도가 아쉬웠습니다. AI 녀석이 틀린 후 저는 유유히 버튼을 누르며 쿨하게 "생크림 케잌"이라고 대답했던 것입니다! (^^)

 

인생은 리커런트가 아닌 게 좋은 경우도 있습니다.
사실 장기에서 '다음 수'는 지금까지의 과정에 얽매이지 않고, 현재의 국면만을 보고 최적의 수를 찾는 것이 좋습니다. 대체로 인간은 '이전 수의 체면을 살리기 위해서'라든지 '기세로' 등을 중시하여 수를 두는 경향이 있는데, AI는 그런 요소를 완전히 무시하고 가장 강력한 수를 두도록 되어 있어, 인간도 이를 배우는 것으로 바뀌어가고 있습니다. 작은 거짓말을 해버렸기 때문에 그것을 정당화하기 위해 더 큰 거짓말을 해버리는 식으로, 과거에 붙잡혀 나쁜 방향으로 가 버리는 경우도 있으므로, 리커런트도 때로는 생각해 볼만한 문제입니다. 네, 여담이었습니다(^^).

 

리커런트 뉴럴 네트워크가 사용되는 기술 분야

리커런트 NN이 시간에 따라 순차적으로 들어오는, 길이도 정해지지 않은 데이터를 처리하는데 적합하다는 것은 알 수 있었습니다. 그렇다면 구체적으로 어떤 곳에 사용되고 있는지 살펴봅시다. 

 

그림 5 : 리커런트 뉴럴 네트워크가 사용되는 기술 분야

 

자연 언어 처리(Natural Language Processing)

대표적인 적용 분야는 자연 언어 처리(NLP)입니다. 자연 언어 이해(NLU : Natural  Language Understanding)라는 말이 자주 사용되고 있으므로 함께 기억해 둡시다. NLP는 그야말로 인간 다운 분야로, 그림 5에서 보여주는 다양한 용도의 총칭이기도 합니다. 

 

텍스트 분석 (Text Analysis)

텍스트(문장)를 읽고 〇〇를 출력하는 과정입니다. 〇〇의 결과는 목적에 따라 여러 가지가 있습니다. 그림 6은 그 예입니다. 기계 번역은 영문, 감정 분석은 감정의 정도, 태그는 영희와 케이크가 출력되어 있군요. 입력이 음성인 경우는 보통 음성인식(Speech to Text)에서 일단 텍스트로 만든 후 처리하지만, 감정 분석처럼 거기에 더하여 목소리 톤 등 음성정보를 사용하여 처리할 수 있습니다.    

 

텍스트 분석은 사내 문서에 자동 태그 하여 문서 검색을 편리하게 한다거나, 인터넷의 기술 정보를 자동으로 모으는 등 도움이 됩니다. 또한 감정 분석도 콜센터 고객이 화가 났는지, 직원 중에 우울증 초기단계는 없는지 등 다양한 용도로 사용하고 있습니다.

 

그림 6 : 텍스트 분석 및 음성 처리

 

· 기계 번역(Machine Translation) 

2016년에 Google 번역의 정확도가 비약적으로 향상된 이유는 엔진을 딥러닝으로 전환했기 때문입니다. 번역은 입력과 출력의 언어 길이가 다르지만 원래 언어의 이해와 변환된 언어의 문장 생성의 두 가지에 리커런트 기술이 맹활약하고 있습니다.  

 

· 음성 인식(Speech to Text)

요즘에는 스마트 스피커가 여럿 출시되고 있습니다. 저도 사용하고 있습니다만, 항상 감탄하고 있습니다. 음성 인식은 입력이 가변 길이의 음성이고, 출력은 가변 길이의 텍스트입니다. 단순한 소리의 문자화가 아니라 맥락을 제대로 이해하고 있기 때문에 높은 정밀도로 변환할 수 있는 것입니다.    

 

· 이미지 분석 (Image Analysis)

이미지 인식(Image Recognition)은 CNN으로 처리합니다. 하지만 사진을 보고 무엇을 하고 있는지 설명하는 경우는 CNN에 RNN을 함께 사용합니다. 예를 들어, 영희가 맛있게 케잌을 먹고 있는 사진을 입력하면 우선 CNN으로 이미지 인식한 후 인식한 '한 여성', '케이크', '먹고 있다'등의 태그를 사용하여 RNN이 "한 여성이 케이크를 먹고 있다"라고 설명해줍니다. 이러한 기술은 인터넷에 접속된 사진의 자동 설명 지정 등에 응용되고 있습니다.  

 

동영상 분석

사진이 아닌 동영상의 분석은 어떨까요. 이전의 O를 인식하는 AI로 예를 들면, O라는 문자 전체를 모르는 상태에서 그림 7과 같이 위에서 스캔하여 1/3 씩 이미지를 전달하고 그것을 CNN으로 인식하려고 합니다. 시점(t + 1) 일 때, 중간의 이미지만 있는 것보다 시점(t)의 이미지도 함께 있는 게 더 정확하게 판단할 수 있겠군요. 이런 식으로 동영상의 경우 이전 영상을 연속적인 정보로 판단해야 하므로 리커런트 NN에 적합합니다.

 

그림 7 : 동영상 분석

 

아직 적용 분야가 더 있지만, 이 정도로 해 둡니다. 리커런트라는 말의 의미, 왜 재귀 구조를 가질 필요가 있는지, 어떤 분야에 사용되고 있는지 등을 이해하시면 충분합니다.

 

정리

리커런트 신경망은 과거를 기억하고 이용하는 기술입니다. 엄청 긴 문장을 상상해 보십시오. 기억하는 범위가 커지면 경사(과거의 어떤 정보가 얼마나 영향을 미치는지)가 너무 복잡해져서 전달해야 할 오차가 감소하거나(경사 손실 문제), 기억한 것을 어떻게 살릴 것인가 하는 계산량도 폭발적으로 증가합니다. 따라서 리커런트 NN은 기억할 범위를 조금 전까지로 한정하고, 그 이전의 것은 버리고 있습니다. 이 것을 중단형 통시적 역 전파(Truncated Back propagation Through time)라고도 합니다.

 

하지만 현실 사회에서는 좀 더 이전의 정보를 사용하지 않으면 작동하지 않는 경우가 많습니다. 따라서 RNN을 개량하는 형태로 등장한 것이 LSTM(Long Short-Time Memory)이라는 기술로, 장 · 단기 기억 장치라고 합니다. 다음은 이 LSTM 대해 알아보겠습니다.

반응형