본문 바로가기
프로그래밍/인공지능

순환 신경망(Recurrent Neural Network)

by austag 2023. 7. 30.

방학이여서 일주일간 쉬고 왔습니다. 하하

너무 나태했어

원래 글을 쓰려고 했지만 결국 하지 않았습니다,,,

다시 12시에 자서 4시 반에 일어나고 열심히 살아보려 합니다.

글 자주 올려보도록 노력해볼게요.


오늘은? RNN입니다.

순환 신경망(RNN)은 여러 개의 데이터가 순서댈로 입력되었을 때 앞서 입력받은 데이터를 잠시 기억해 놓는 방법입니다. 모든 입력 값에 이 작업을 순서대로 실행하여 다음 층으로 넘어가기 전에 같은 층을 맴도는 것처럼 보여 '순환' 신경망이라고 하는 것이죠.

음 예를 들어볼게요.

인공지능한테 '내일 인만이가 어딨을까?' 를 입력해본다고 합시다. (참고: 인만이는 본인이 다니는 학교에 사는 고앵이이다.)

그럼 단어 하나하나를 처리할 때마다 기억해서 출력을 결정할 것입니다.

이렇게 되면 앞서 나온 결과가 뒤에 나오는 입력값에 영향을 준다는 것을 알 수 있습니다.

입력1이 '오늘'이면 시간의 기준이 달라지겠죠.

입력2가 '내가'가 되면 주체가 달라지는 것이구요.

입력3이 '놀까?'면 행동이 달라집니다.

이렇게 입력값이 다르면 기준이 다르게 계산되어야 합니다.


RNN의 결과를 개선하기 위해 현재로선 LSTM(Long Short Term Memory)를 가장 많이 쓰고 있습니다.

LSTM은 한 층 안아세 반복을 많이 해야 하는 RNN의 특성상, 일반 신경망보다 기울기 소실문제가 더 많이 발생하고 이를 해결하기 어렵다는 단점을 보완한 방법입니다.

반복되기 직전에 다음 층으로 기억된 값을 넘길지의 여부를 관리하는 단계를 하나 더 추가하는 것입니다.

- 기울기 소실 문제(vanishing gradient problem): 신경망의 활성함수의 도함수 값이 계속 곱해지다 보면 가중치에 따른 결과값의 기울기가 0이 되어 버려서, 경사하강법을 이용할 수 없게 되는 문제


RNN의 장점은 입력값과 출력값을 설정하는 것에 따라 여러 가지 상황에서 적용할 수 있다는 것입니다.

그림들로 예시를 들어볼게요.

 

1. 다수 입력 단일 출력

예) 문장의 뜻 파악

2. 단일 입력 다수 출력

예) 사진의 캡션 제작

예. 진심으로 똑같습니다. (여기에 장발이었던 본인 추가..?)

3. 다수 입력 다수 출력

예) 번역


이번엔 RNN 개념을 공부해보았고 다음글에선 RNN 학습을 해보겠습니다.

 

참고: [모두의 딥러닝]

'프로그래밍 > 인공지능' 카테고리의 다른 글

RNN - LSTM & CNN  (0) 2023.08.01
RNN - LSTM 활용  (0) 2023.07.31
NLP - 긍정, 부정 예측하기  (0) 2023.07.24
NLP - 원-핫 인코딩, 단어 임베딩  (0) 2023.07.23
자연어 처리(Natural Language Processing) - 토큰화  (0) 2023.07.23