Chapter.5 순환 신경망

Garam·2022년 10월 13일
1

Deep Learning

목록 보기
5/5
post-thumbnail

📌 RNN

📖 RNN 탄생 이유

문장을 듣고 무엇을 의미하는지 알아야 서비스 제공이 가능하다.
문장을 듣고 이애한다는 것은 많은 문장을 이미 학습해 놓았다는 것이다.

문장의 의미를 전달하려먼 각 단어가 정해진 순서대로 입력되어야 한다.
과거에 입력된 데이터와 나중에 입력된 데이터 사이의 관계를 고려해야 하는 문제가 생긴다.

그렇기 때문에 시간적 개념이 들어간 데이터들을 해결하기 위해 순환신경망(RNN)이 고안되었다.

RNN : Recurrent Neural Networks (순환하는 신경망)

📖 일반신경망과 순환신경망의 차이

RNN은 여러개의 데이터가 순서대로 입력되었을 때 앞서 입력 받은 데이터의 연산 결과를 잠시 기억해 놓는 방식이다.

기억된 데이터를 가지고 다음 데이터로 넘어가면서 함께 연산한다.

앞에서 나온 입력에 대한 결과가 뒤에서 나오는 입력 값에 영향을 주는 것을 알 수 있다.

예를 들어 비슷한 두 문장이 입력되어도 앞에서 나온 입력 값을 구별 하여 출력 값에 반영 할 수 있다.

모든 입력 값에 이 작업을 순서대로 실행하므로 같은 층을 맴도는 것 처럼 보인다.

  • 같은 층안에서 맴도는 성질 때문에 순환 신경망이라고 부른다.

📋 순차기반데이터(Sequential Data)

분석에 사용되는 특성들이 시간적, 순차적 특징을 지닌 데이터를 순차기반데이터라고 부른다.

📖 RNN 수학적 공식

(Vanilla) Recurrent Neural Network

Ht = Fw(Ht-1, Xt)
Ht = tanh(WhhHt-1 + WxhXt)

Yt = WhyHt

📖 SimpleRNN 신경망 실습

  • units : 퍼셉트론(튜런의 개수)
  • input_shape : (timesteps, features) 형태의 튜플로 들어감
    *timesteps : 순환 횟수 설정
SimpleRNN(units =3,
		  input_shape = (4, 9))


📌 RNN 데이터 구조

📖 다수입력 단일출력

다수입력 단일출력은 주로 문장을 읽고 뜻을 파악할 때에 활용한다.

model = Sequential()
model.add(SimpleRNN(units = output_size,
		  input_shape=(timesteps, features)))

📖 단일입력 다수출력

단일입력 다수출력은 사진의 캡션을 만들 때에 주로 활용된다.

model = Sequential()

model.add(RepeatVector(number_od_times,
		  input_shape = input_shape))

num

profile
숨쉬는 돌멩이, 말하는 감자.

0개의 댓글