순환 신경망 기본 사항: 알아야 할 사항
게시 됨: 2024-09-19순환 신경망(RNN)은 데이터 분석, 기계 학습(ML) 및 딥 러닝 영역에서 필수적인 방법입니다. 이 기사의 목표는 RNN을 탐색하고 딥 러닝의 더 넓은 맥락에서 RNN의 기능, 애플리케이션, 장점과 단점을 자세히 설명하는 것입니다.
목차
RNN이란 무엇입니까?
RNN 작동 방식
RNN 유형
RNN과 변환기 및 CNN
RNN의 응용
장점
단점
순환 신경망이란 무엇입니까?
순환 신경망은 내부 메모리를 유지하여 순차적인 데이터를 처리할 수 있는 심층 신경망으로, 과거 입력을 추적하여 출력을 생성할 수 있습니다. RNN은 딥 러닝의 기본 구성 요소이며 특히 순차 데이터와 관련된 작업에 적합합니다.
"반복 신경망"의 "반복"은 모델이 과거 입력의 정보를 현재 입력과 결합하는 방식을 나타냅니다. 이전 입력 정보는 '숨겨진 상태'라고 불리는 일종의 내부 메모리에 저장됩니다. 이는 반복되어 이전 계산을 자체적으로 다시 공급하여 지속적인 정보 흐름을 생성합니다.
예를 들어 설명하겠습니다. RNN을 사용하여 "He ate the 파이를 행복하게 먹었습니다."라는 문장의 감정(긍정적 또는 부정적)을 감지한다고 가정해 보겠습니다. RNN은he라는 단어를 처리하고 숨겨진 상태를 업데이트하여 해당 단어를 통합한 다음ate로 이동하여he에서 배운 내용과 결합하는 등의 방식으로 문장이 완료될 때까지 각 단어를 처리합니다. 관점에서 보면, 이 문장을 읽는 인간은 모든 단어에 대한 이해를 업데이트할 것입니다. 일단 전체 문장을 읽고 이해하면 인간은 그 문장이 긍정적이거나 부정적이라고 말할 수 있습니다. 이러한 인간의 이해 과정은 숨겨진 상태가 근사하려고 하는 것입니다.
RNN은 기본적인 딥러닝 모델 중 하나입니다. 자연어 처리(NLP) 작업을 매우 잘 수행했지만 변환기가 이를 대체했습니다. Transformers는 예를 들어 데이터를 병렬로 처리하고 소스 텍스트에서 멀리 떨어져 있는 단어 간의 관계를 발견할 수 있는 기능(주의 메커니즘 사용)을 통해 RNN 성능을 향상시키는 고급 신경망 아키텍처입니다. 그러나 RNN은 시계열 데이터와 더 간단한 모델로 충분한 상황에서는 여전히 유용합니다.
RNN 작동 방식
RNN의 작동 방식을 자세히 설명하기 위해 이전 예제 작업으로 돌아가 보겠습니다. "He ate the 파이를 행복하게 먹었습니다."라는 문장의 감정을 분류합니다.
텍스트 입력을 받아들이고 이진 출력(1은 양수를 나타내고 0은 음수를 나타냄)을 반환하는 훈련된 RNN으로 시작합니다. 모델에 입력이 제공되기 전의 숨겨진 상태는 일반적입니다. 학습 과정에서 학습되었지만 아직 입력에 특정되지는 않습니다.
첫 번째 단어인 He가모델에 전달됩니다. 그런 다음 RNN 내부에서 숨겨진 상태가 업데이트되어(숨겨진 상태 h1로)He라는단어가 통합됩니다. 다음으로ate라는 단어가 RNN으로 전달되고 h1이 (h2로) 업데이트되어 이 새 단어를 포함합니다. 이 프로세스는 마지막 단어가 전달될 때까지 반복됩니다. 숨겨진 상태(h4)는 마지막 단어를 포함하도록 업데이트됩니다. 그런 다음 업데이트된 숨겨진 상태를 사용하여 0 또는 1을 생성합니다.
다음은 RNN 프로세스의 작동 방식을 시각적으로 나타낸 것입니다.
이러한 반복은 RNN의 핵심이지만 몇 가지 다른 고려 사항이 있습니다.
- 텍스트 임베딩:RNN은 숫자 표현에서만 작동하므로 텍스트를 직접 처리할 수 없습니다. 텍스트는 RNN에서 처리되기 전에 임베딩으로 변환되어야 합니다.
- 출력 생성:출력은 각 단계에서 RNN에 의해 생성됩니다. 그러나 대부분의 소스 데이터가 처리될 때까지는 출력이 매우 정확하지 않을 수 있습니다. 예를 들어, 문장의 "He ate" 부분만 처리한 후 RNN은 그것이 긍정적인 감정을 나타내는지 부정적인 감정을 나타내는지 불확실할 수 있습니다. 즉, "He ate"는 중립적인 것으로 나타날 수 있습니다. 전체 문장을 처리한 후에만 RNN의 출력이 정확해집니다.
- RNN 훈련:RNN은 감정 분석을 정확하게 수행하도록 훈련되어야 합니다. 훈련에는 레이블이 지정된 많은 예(예: "그는 화가 나서 파이를 먹었습니다", 부정 레이블이 있음)를 사용하고 RNN을 통해 실행하며 예측이 얼마나 멀리 떨어져 있는지에 따라 모델을 조정하는 작업이 포함됩니다. 이 프로세스는 숨겨진 상태에 대한 기본값과 변경 메커니즘을 설정하여 RNN이 입력 전체를 추적하는 데 중요한 단어를 학습할 수 있도록 합니다.
순환 신경망의 유형
RNN에는 여러 가지 유형이 있으며 각각 구조와 적용이 다릅니다. 기본 RNN은 대부분 입력과 출력의 크기가 다릅니다. LSTM(장단기 메모리) 네트워크와 같은 고급 RNN은 기본 RNN의 일부 제한 사항을 해결합니다.
기본 RNN
일대일 RNN:이 RNN은 길이 1의 입력을 받아 길이 1의 출력을 반환합니다. 따라서 실제로 재발이 발생하지 않으므로 RNN이 아닌 표준 신경망이 됩니다. 일대일 RNN의 예로는 입력이 단일 이미지이고 출력이 레이블(예: "새")인 이미지 분류기가 있습니다.
일대다 RNN:이 RNN은 길이가 1인 입력을 받아 다중 부분 출력을 반환합니다. 예를 들어, 이미지 캡션 작업에서 입력은 하나의 이미지이고 출력은 이미지를 설명하는 일련의 단어입니다(예: "새가 화창한 날 강을 건너갑니다").
다대일 RNN:이 RNN은 다중 부분 입력(예: 문장, 일련의 이미지 또는 시계열 데이터)을 가져와 길이 1의 출력을 반환합니다. 예를 들어 입력이 문장이고 출력이 단일 감정 레이블(긍정적 또는 부정적)인 문장 감정 분류기(우리가 논의한 것과 같은)입니다.
다대다 RNN:이 RNN은 다중 부분 입력을 취하고 다중 부분 출력을 반환합니다. 입력이 일련의 오디오 파형이고 출력이 음성 콘텐츠를 나타내는 일련의 단어인 음성 인식 모델을 예로 들 수 있습니다.
고급 RNN: 장단기 기억(LSTM)
장단기 메모리 네트워크는 표준 RNN의 중요한 문제를 해결하기 위해 설계되었습니다. 즉, 긴 입력에 대한 정보를 잊어버립니다. 표준 RNN에서 숨겨진 상태는 입력의 최근 부분에 큰 가중치를 둡니다. 수천 단어 길이의 입력에서 RNN은 시작 문장의 중요한 세부 정보를 잊어버립니다. LSTM에는 이러한 망각 문제를 해결하기 위한 특별한 아키텍처가 있습니다. 명시적으로 기억하고 잊어버릴 정보를 선택하고 선택하는 모듈이 있습니다. 따라서 최신이지만 쓸모없는 정보는 잊혀지고, 오래되었지만 관련 있는 정보는 그대로 유지됩니다. 결과적으로 LSTM은 표준 RNN보다 훨씬 더 일반적입니다. 복잡하거나 긴 작업에서 더 나은 성능을 발휘합니다. 그러나 그들은 여전히 항목을 잊어버리는 것을 선택하기 때문에 완벽하지 않습니다.
RNN과 변환기 및 CNN
다른 두 가지 일반적인 딥 러닝 모델은 CNN(컨벌루션 신경망)과 변환기입니다. 그들은 어떻게 다릅니 까?
RNN과 변환기
RNN과 변환기는 모두 NLP에서 많이 사용됩니다. 그러나 입력 처리에 대한 아키텍처와 접근 방식이 크게 다릅니다.
아키텍처 및 처리
- RNN:RNN은 입력을 한 번에 한 단어씩 순차적으로 처리하여 이전 단어의 정보를 전달하는 숨겨진 상태를 유지합니다. 이러한 순차적 특성은 RNN이 이러한 망각으로 인해 장기적인 종속성 문제로 어려움을 겪을 수 있음을 의미하며, 이 경우 시퀀스가 진행됨에 따라 이전 정보가 손실될 수 있습니다.
- 변환기:변환기는 "주의"라는 메커니즘을 사용하여 입력을 처리합니다. RNN과 달리 변환기는 전체 시퀀스를 동시에 살펴보고 각 단어를 다른 모든 단어와 비교합니다. 이 접근 방식은 각 단어가 전체 입력 컨텍스트에 직접 액세스할 수 있으므로 망각 문제를 제거합니다. Transformers는 이 기능으로 인해 텍스트 생성 및 감정 분석과 같은 작업에서 탁월한 성능을 보여주었습니다.
병렬화
- RNN:RNN의 순차적 특성은 모델이 다음 단계로 넘어가기 전에 입력의 한 부분 처리를 완료해야 함을 의미합니다. 각 단계는 이전 단계에 따라 달라지므로 이는 매우 시간이 많이 걸립니다.
- Transformers:Transformer는 아키텍처가 순차적인 숨겨진 상태에 의존하지 않기 때문에 입력의 모든 부분을 동시에 처리합니다. 이는 훨씬 더 병렬화 가능하고 효율적입니다. 예를 들어 문장을 처리하는 데 단어당 5초가 걸리는 경우 RNN은 5단어 문장의 경우 25초가 걸리는 반면 변환기는 5초만 걸립니다.
실제적인 의미
이러한 장점으로 인해 변압기는 산업에서 더 널리 사용됩니다. 그러나 RNN, 특히 LSTM(장단기 메모리) 네트워크는 더 간단한 작업이나 더 짧은 시퀀스를 처리할 때 여전히 효과적일 수 있습니다. LSTM은 대규모 기계 학습 아키텍처에서 중요한 메모리 저장 모듈로 사용되는 경우가 많습니다.
RNN 대 CNN
CNN은 처리하는 데이터와 운영 메커니즘 측면에서 RNN과 근본적으로 다릅니다.
데이터 유형
- RNN:RNN은 데이터 포인트의 순서가 중요한 텍스트 또는 시계열과 같은 순차적 데이터용으로 설계되었습니다.
- CNN:CNN은 인접한 데이터 포인트 간의 관계에 초점을 맞추는 이미지와 같은 공간 데이터에 주로 사용됩니다(예: 이미지에 있는 픽셀의 색상, 강도 및 기타 속성은 인근의 다른 픽셀 속성과 밀접하게 관련되어 있음). 픽셀).
작업
- RNN:RNN은 전체 시퀀스의 메모리를 유지하므로 컨텍스트와 시퀀스가 중요한 작업에 적합합니다.
- CNN:CNN은 컨볼루션 레이어를 통해 입력의 로컬 영역(예: 인접 픽셀)을 살펴보는 방식으로 작동합니다. 이로 인해 이미지 처리에는 매우 효과적이지만 장기적인 종속성이 더 중요할 수 있는 순차 데이터에는 효과가 떨어집니다.
입력 길이
- RNN:RNN은 덜 정의된 구조로 가변 길이 입력 시퀀스를 처리할 수 있으므로 다양한 순차 데이터 유형에 유연하게 사용할 수 있습니다.
- CNN:CNN에는 일반적으로 고정 크기 입력이 필요하며 이는 가변 길이 시퀀스를 처리하는 데 제한이 될 수 있습니다.
RNN의 응용
RNN은 순차적 데이터를 효과적으로 처리하는 능력으로 인해 다양한 분야에서 널리 사용됩니다.
자연어 처리
언어는 매우 순차적인 데이터 형식이므로 RNN은 언어 작업에서 잘 수행됩니다. RNN은 텍스트 생성, 감정 분석, 번역, 요약과 같은 작업에 탁월합니다. PyTorch와 같은 라이브러리를 사용하면 누군가 RNN과 몇 기가바이트의 텍스트 예제를 사용하여 간단한 챗봇을 만들 수 있습니다.
음성 인식
음성 인식은 핵심이 언어이므로 매우 순차적입니다. 이 작업에는 다대다 RNN을 사용할 수 있습니다. 각 단계에서 RNN은 이전 숨겨진 상태와 파형을 가져와 파형과 관련된 단어를 출력합니다(해당 지점까지 문장의 컨텍스트를 기반으로 함).
음악 세대
음악도 매우 순차적입니다. 노래의 이전 비트는 미래 비트에 큰 영향을 미칩니다. 다대다 RNN은 몇 개의 시작 비트를 입력으로 사용한 다음 사용자가 원하는 대로 추가 비트를 생성할 수 있습니다. 또는 "멜로딕 재즈"와 같은 텍스트 입력을 받아 가장 가까운 멜로디 재즈 비트를 출력할 수도 있습니다.
RNN의 장점
RNN은 더 이상 사실상의 NLP 모델이 아니지만 몇 가지 요인으로 인해 여전히 일부 용도로 사용됩니다.
좋은 순차 성능
RNN, 특히 LSTM은 순차 데이터에 효과적입니다. 특수한 메모리 아키텍처를 갖춘 LSTM은 길고 복잡한 순차 입력을 관리할 수 있습니다. 예를 들어 Google 번역은 변환기 시대 이전에 LSTM 모델에서 실행되었습니다. LSTM은 변환기 기반 네트워크가 결합되어 더욱 발전된 아키텍처를 형성할 때 전략적 메모리 모듈을 추가하는 데 사용될 수 있습니다.
더 작고 단순한 모델
RNN은 일반적으로 변환기보다 모델 매개변수가 적습니다. 변환기의 주의 및 피드포워드 레이어가 효과적으로 작동하려면 더 많은 매개변수가 필요합니다. RNN은 더 적은 수의 실행과 데이터 예제로 훈련될 수 있으므로 더 간단한 사용 사례에 더 효율적입니다. 그 결과 여전히 충분히 성능을 발휘하면서도 더 작고, 저렴하며, 더 효율적인 모델이 탄생합니다.
RNN의 단점
RNN이 인기를 얻지 못한 이유는 다음과 같습니다. Transformer는 더 큰 크기와 훈련 프로세스에도 불구하고 RNN과 동일한 결함이 없습니다.
제한된 메모리
표준 RNN의 숨겨진 상태는 최근 입력을 크게 편향시켜 장거리 종속성을 유지하기 어렵게 만듭니다. 긴 입력이 있는 작업은 RNN에서 잘 수행되지 않습니다. LSTM은 이 문제를 해결하는 것을 목표로 하지만 문제를 완화할 뿐 완전히 해결하지는 않습니다. 많은 AI 작업에는 긴 입력을 처리해야 하므로 제한된 메모리가 중요한 단점이 됩니다.
병렬화 불가능
RNN 모델의 각 실행은 이전 실행의 출력, 특히 업데이트된 숨겨진 상태에 따라 달라집니다. 결과적으로 전체 모델은 입력의 각 부분에 대해 순차적으로 처리되어야 합니다. 대조적으로 변환기와 CNN은 전체 입력을 동시에 처리할 수 있습니다. 이를 통해 여러 GPU에서 병렬 처리가 가능해 계산 속도가 크게 향상됩니다. RNN의 병렬성이 부족하면 훈련 속도가 느려지고 출력 생성 속도가 느려지며 학습할 수 있는 최대 데이터 양이 줄어듭니다.
그라데이션 문제
역전파 프로세스는 각 입력 단계(시간에 따른 역전파)를 거쳐야 하기 때문에 RNN 훈련이 어려울 수 있습니다. 시간 단계가 많기 때문에 각 모델 매개변수를 조정하는 방법을 나타내는 기울기가 저하되고 비효율적이 될 수 있습니다. 그라데이션이 사라지면 실패할 수 있습니다. 즉, 매우 작아져서 모델이 더 이상 이를 학습에 사용할 수 없거나, 폭발로 인해 그라데이션이 매우 커지고 모델이 업데이트를 초과하여 모델을 사용할 수 없게 될 수 있습니다. 이러한 문제의 균형을 맞추는 것은 어렵습니다.