이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

Machine Learning - RNN

  • 2021.12.05 17:56
  • Computer Science/Machine Learning
반응형

 

 

 

RNN (Recurrent Neural Networks)

 

지금까지 배웠던 것들을 생각해보자. 처음에 DNN (Deep Neural Networks)에 대해 배웠고, 다음으로 영상과 이미지 처리에 효과적인 CNN (Convolution Neural Networks)을 배웠으며 이제는 series에 대한 정보를 다룰 때 유용한 RNN에 대해 배울 차례이다.

 

DNN

 

 

Parameter가 급격하게 많아지는 단점이 있다.

 

 

CNN

 

 

Parameter를 줄일 수 있다. backpropagation을 수행하는 점은 DNN과 동일함.

 

RNN

 

 

 

RNN은 순차적인 데이터의 처리에 적합하다.

ex. 시간에 따라 순차적인 입력이 들어오는 음성, 음악 상태 정보 등..

 

 

RNN을 음성인식에 사용하는 예시를 생각해보자.

우리는 음성을 직관적으로 받아들일 수 있지만, RNN은 음성 신호를 나누어서 이전에 인식한 음성에서 정보를 얻고, 얻은 정보를 바탕으로 다음 음성 신호를 인식한다.

이전의 음성에서 정보를 얻는 과정을 전체적인 흐름을 파악하는 행동으로 생각하자.

 

 

문법도 스스로 build 할 수 있다. 여러 가지 문장을 학습시키면 기계 스스로 좋은 문장을 작성할 수 있게 된다.

 

 

감정 분석도 가능하다. 이전의 정보를 계속해서 참고해서 진행한다.

이 외에도 다양한 분야에 적용할 수 있다.

 

 

RNN을 분석해보자. 어떤 구조로 이루어져 있을까?

 

h는 brain으로 생각하자. 앞쪽 입력의 모든 히스토리를 저장하는 역할을 한다. 현재의 입력과 과거의 정보를 종합해서 tanh 함수를 사용해 h를 구하고 구한 h를 바탕으로 출력값인 y 를 구한다.

 

여기서 v w u 는 학습해야 하는 parameter이고 모든 hidden state에서 동일하고 공유하는 속성이다.

 

RNN은 순차적으로 계산하기 때문에 입력 길이가 다양해도 처리할 수 있는 장점이 있지만, 병렬 처리가 불가능해 계산 시간이 오래 걸린다는 단점이 있다.

 

 

 

 

 

위와 같이 여러 종류의 RNN이 있다.

여러 가지 사례에 대해 적절한 RNN을 적용해 사용하자.

 

 

 

RNN은 입력의 길이가 길어지게 되면 앞쪽에서 입력한 내용이 뒤쪽까지 잘 전달되지 않는 등 학습에서 어려움을 겪는다.

(gradient가 없어진다. vanishing exploding 문제라고 함)

이런 문제때문에 RNN을 잘 사용하지 않았는데 이를 해결하기 위해 LSTM이 도입됐다.

어떤 정보 중 유의미한것으로 판단된 정보는 업데이트해서 반영하고, 무의미하다고 판단된 정보는 날린다. 이를 통해 선별적으로 학습을 진행하게 한다.

 

 

RNN으로 기계 번역을 수행해보자.

번역을 수행하려면 전체 맥락을 먼저 이해해야 한다.

그 과정 없이 번역을 진행하면 위와 같이 번역이 제대로 진행되지 않는다.

 

여기서 RNN의 특성이 다시 한 번 역할을 한다.

앞쪽에서 받아온 정보를 뒤쪽까지 전달하기 때문에 전체적인 맥락을 살릴 수 있다.

 

여기에 추가해, ENCODER과 DECODER를 통해 입력을 압축하고 출력을 생성하는 과정을 거친다.

 

 

 

위의 ENCODER DECODER를 사용해 문서 요약 / 질의 응답 부분에도 적용할 수 있다.

 

 

 

 

잘 동작하지만, 문제도 있다.

정보의 Bottleneck 문제인데, 긴 문장을 압축해서 넣고, 압축 정보로 긴 문장을 생성하는 부분에서 문제가 생긴다.

 

 

위 문제를 ATTENTION 기법을 사용해서 해결했다. ENCODER과 DECODER를 계속 활용하되, ATTENTION을 사용해 출력 생성 시 어떤 부분에 주목할 지 정해 줘서 문제를 해결한다. (Computation 속도에도 개선)

 

반응형

'Computer Science > Machine Learning' 카테고리의 다른 글

Pytorch - Tensor  (0) 2022.03.16
정리  (0) 2021.12.13
Deep Learning - CNN  (0) 2021.12.05
Advice for Applying ML/DL (2)  (0) 2021.12.04
Advice for Applying ML/DL (1)  (0) 2021.12.04

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Pytorch - Tensor

    Pytorch - Tensor

    2022.03.16
  • 정리

    정리

    2021.12.13
  • Deep Learning - CNN

    Deep Learning - CNN

    2021.12.05
  • Advice for Applying ML/DL (2)

    Advice for Applying ML/DL (2)

    2021.12.04
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (677) N
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (9)
    • 💬 기록 (7)
    • 📚 공부 (6) N
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바