Python의 순환 신경망: 초보자를 위한 궁극적인 안내서
게시 됨: 2020-04-27일일 주가, 센서 측정 등의 시퀀스를 프로그램에서 처리해야 하는 경우 순환 신경망(RNN)이 필요합니다.
RNN은 한 단계의 출력이 새 단계의 입력으로 전송되는 일종의 신경망입니다. 기존 신경 시스템에서 모든 데이터 소스와 출력은 서로 자율적입니다. 그러나 문장의 다음 표현을 예상해야 하는 경우와 같이 이전 단어가 필요하므로 결과적으로 과거 단어를 기억할 필요가 있습니다.
여기서 RNN이 등장합니다. 이러한 문제를 해결하기 위해 Hidden Layer를 만들었습니다. RNN의 기본적이고 가장 중요한 요소는 시퀀스에 대한 일부 데이터를 기억하는 숨겨진 상태입니다.
RNN은 가장 일반적인 실제 응용 프로그램에서 정확한 결과를 생성해 왔습니다. RNN은 텍스트를 효과적으로 처리할 수 있기 때문에 일반적으로 NLP(자연어 처리) 작업에 사용됩니다.
- 음성 인식
- 기계 번역
- 작곡
- 필기 인식
- 문법 학습
이것이 RNN이 딥 러닝 분야에서 엄청난 인기를 얻은 이유입니다.
이제 Python에서 순환 신경망의 필요성을 살펴보겠습니다.
세계 최고의 대학에서 온라인으로 머신 러닝 인증을 받으십시오. 석사, 대학원 대학원 과정, ML 및 AI 고급 인증 프로그램을 통해 경력을 빠르게 추적할 수 있습니다.
목차
Python에서 RNN이 필요한 이유는 무엇입니까?
이 질문에 답하려면 먼저 바닐라 신경망이라고도 하는 CNN(Convolution Neural Network)과 관련된 문제를 해결해야 합니다.
CNN의 주요 문제는 미리 정의된 크기에서만 작동할 수 있다는 것입니다. 즉, 고정 크기 입력을 수락하면 고정 크기 출력도 제공합니다.
반면 RNN을 사용하면 이 문제를 쉽게 해결할 수 있습니다. RNN을 통해 개발자는 입력과 출력 모두에 대해 가변 길이 시퀀스로 작업할 수 있습니다.
다음은 RNN이 어떻게 생겼는지 보여줍니다.
출처: Andrej Karpathy
여기서 빨간색은 입력, 녹색 RNN 및 파란색 출력을 나타냅니다.
각각을 자세히 이해합시다.
일대일 : 일반 또는 일반 신경망이라고도 합니다. 고정 입력 크기에서 고정 출력 크기로 작동하며 이전 입력과 독립적입니다.
예 : 이미지 분류.
일대다 : 입력된 정보의 크기는 고정되어 있지만 출력은 데이터 시퀀스입니다.
예 : 이미지 캡션(이미지가 입력되고 출력이 단어 집합).
다대일 : 입력은 일련의 정보이고 출력은 고정된 크기입니다.
예 : 감정 분석(입력은 단어 집합이고 출력은 단어 집합이 긍정적인 감정을 반영하는지 부정적인 감정을 반영하는지 알려줍니다).
다대다 : 입력은 정보의 시퀀스이고 출력은 데이터의 시퀀스입니다.
예 : 기계 번역(RNN은 영어로 된 문장을 읽고 원하는 언어로 문장을 출력합니다.)
가변 길이의 시퀀스 처리는 RNN을 매우 유용하게 만듭니다. 방법은 다음과 같습니다.
- 기계 번역 : 이것의 가장 좋은 예는 Google 번역입니다. 다대다 RNN에서 작동합니다. 아시다시피 원본 텍스트는 RNN에 입력되어 번역된 텍스트를 생성합니다.
- 감정 분석 : Google이 긍정적인 리뷰와 부정적인 리뷰를 어떻게 구분하는지 알고 있습니까? 이것은 다대일 RNN에 의해 달성됩니다. 텍스트가 RNN에 입력되면 입력이 있는 클래스를 반영하여 출력을 제공합니다.
이제 RNN이 어떻게 작동하는지 봅시다.
RNN은 어떻게 작동합니까?
예제를 보고 파이썬에서 순환 신경망의 작동을 이해하는 것이 가장 좋습니다.
하나의 출력 레이어, 3개의 은닉 레이어 및 하나의 입력 레이어를 포함하는 더 깊은 네트워크가 있다고 가정해 보겠습니다.
다른 신경망과 마찬가지로 이 경우에도 각 은닉층에는 고유한 가중치 및 편향 세트가 있습니다.
이 예를 위해 레이어 1의 가중치와 편향은 (w1, b1), 레이어 2는 (w2, b2), 레이어 3은 (w3, b3)이라고 가정해 보겠습니다. 이 세 레이어는 서로 독립적이며 이전 결과를 기억하지 않습니다.
이제 RNN이 하는 일은 다음과 같습니다.
- 모든 레이어가 동일한 가중치와 편향을 포함하도록 하여 독립 활성화를 종속 활성화로 변환합니다. 이는 결과적으로 출력을 다음 은닉층에 대한 입력으로 제공하여 매개변수를 늘리고 이전 결과 각각을 기억하는 복잡성을 줄입니다.
- 따라서 세 레이어 모두 동일한 가중치와 편향을 포함하는 단일 순환 레이어로 얽혀 있습니다.
- 현재 상태를 계산하려면 다음 공식을 사용할 수 있습니다.
어디에,
= 현재 상태
= 이전 상태
= 입력 상태
- 활성화 기능(tanh)을 적용하려면 다음 공식을 사용하십시오.
어디에,

= 반복 뉴런에서의 무게
= 입력 뉴런에서의 가중치
- 출력을 계산하려면 다음 공식을 사용하십시오.
어디에,
= 출력
= 출력 레이어에서의 가중치
다음은 RNN이 어떻게 훈련될 수 있는지에 대한 단계별 설명입니다.
- 한 번에 네트워크에 입력이 제공됩니다.
- 이제 현재 입력 세트와 이전 상태를 사용하여 현재 상태를 계산해야 합니다.
- 현재는 시간의 다음 단계를 위해 될 것입니다.
- 원하는 만큼 시간 단계를 수행하고 모든 이전 상태의 데이터를 결합할 수 있습니다.
- 모든 시간 단계가 완료되는 즉시 최종 현재 상태를 사용하여 최종 출력을 계산합니다.
- 이 출력을 실제 출력, 즉 목표 출력과 둘 사이의 오류와 비교하십시오.
- 오류를 네트워크로 다시 전파하고 가중치를 업데이트하여 RNN을 훈련시킵니다.
결론
결론을 내리기 위해 먼저 Python에서 Recurring Neural Network의 장점을 지적하고 싶습니다.
- RNN은 수신한 모든 정보를 기억할 수 있습니다. 이전 입력을 기억할 수 있어 계열 예측에서 가장 많이 사용되는 특성입니다.
- RNN에서는 동일한 매개변수를 사용하는 동일한 전환 기능을 모든 시간 단계에서 사용할 수 있습니다.
Python의 순환 신경망에는 언어 이해가 없다는 것을 이해하는 것이 중요합니다. 충분히 고급 패턴 인식 기계입니다. 어쨌든 Markov chains 또는 frequency analysis와 같은 방법과 달리 RNN은 시퀀스의 구성 요소 순서에 따라 예측을 수행합니다.
기본적으로 사람은 그저 비범한 패턴 인식 기계일 뿐이고, 이런 식으로 순환 신경 시스템은 인간-기계처럼 행동하는 것입니다.
RNN의 사용은 콘텐츠 생성을 넘어 기계 번역, 이미지 캡션 및 저자 식별에 이르기까지 먼 길을 가고 있습니다. RNN이 인간을 대체할 수는 없지만 더 많은 교육 정보와 더 큰 모델을 사용하면 신경 시스템이 새롭고 합리적인 특허 초록을 통합할 수 있는 옵션이 있을 수 있습니다.
또한 기계 학습에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제를 제공하는 IIIT-B & upGrad의 기계 학습 및 AI 경영자 PG 프로그램을 확인하십시오. , IIIT-B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.
CNN이 RNN보다 빠릅니까?
CNN과 RNN의 계산 시간을 보면 CNN이 RNN에 비해 매우 빠릅니다(~5배). 예를 들어 더 나은 방법으로 이것을 이해하려고 노력합시다.
레스토랑 리뷰가 '서비스가 엄청나게 느렸고 이 레스토랑에 상당히 실망했습니다. 음식의 질도 보통이었습니다.' 여기에 진술에 순차적인 데이터가 있으며, 여기서 감정이 좋은지 나쁜지 알아내려고 할 수 있습니다. CNN 모델은 '믿을 수 없을 정도로 느리다', '보통', '실망하다'와 같은 특정 문구만 보기 때문에 여기에서 계산을 더 빠르게 할 수 있습니다. 여기에서 RNN은 몇 가지 다른 매개변수를 보고 혼란스러울 수 있습니다. CNN은 RNN보다 더 효율적인 모델입니다.
RNN의 응용 프로그램은 무엇입니까?
RNN은 많은 영역에서 사용되는 매우 강력한 기계 학습 모델입니다. RNN의 주요 목표는 사용 가능한 순차적 데이터를 처리하는 것입니다. 순차 데이터의 가용성은 다양한 도메인에서 찾을 수 있습니다. 다른 도메인의 일부 응용 프로그램에는 기계 번역, 음성 인식, 콜 센터 분석, 예측 문제, 텍스트 요약, 비디오 태깅, 얼굴 감지, 이미지 인식, OCR 응용 프로그램 및 음악 구성이 포함됩니다.
RNN과 CNN의 주요 차이점은 무엇입니까?
RNN은 비디오 또는 텍스트와 같은 순차적 및 시간적 데이터를 분석하는 데 유용합니다. 반면 CNN은 이미지와 같은 공간 데이터와 관련된 문제를 해결하는 데 유용합니다. RNN에서는 입력과 출력의 크기가 다를 수 있지만 CNN에서는 결과 출력뿐만 아니라 입력에 대한 고정 크기가 있습니다. RNN의 일부 사용 사례는 기계 번역, 음성 분석, 감정 분석 및 예측 문제인 반면 CNN은 의료 분석, 분류 및 얼굴 인식에 유용합니다.