본문 바로가기

그냥, 코딩

[개발자를 위한 머신러닝&딥러닝] 자연어 처리를 위한 순환 신경망

반응형

지난 포스팅

https://jamjamzo.tistory.com/127

 

[개발자를 위한 머신러닝&딥러닝] 임베딩을 사용한 감성 프로그래밍

지난 포스팅 https://jamjamzo.tistory.com/124 [개발자를 위한 머신러닝&딥러닝] 자연어 처리 소개 지난 포스팅 https://jamjamzo.tistory.com/123 [개발자를 위한 머신러닝&딥러닝] 텐서플로 데이터셋으로 공개..

jamjamzo.tistory.com

 

참고

https://github.com/rickiepark/aiml4coders

 

GitHub - rickiepark/aiml4coders: <개발자를 위한 머신러닝&딥러닝> 도서의 코드 저장소

<개발자를 위한 머신러닝&딥러닝> 도서의 코드 저장소. Contribute to rickiepark/aiml4coders development by creating an account on GitHub.

github.com

 

Part 1

7장 자연어 처리를 위한 순환 신경망

 감성 측면에서 의미가 없는 두 단어가 합치면 감성을 갖게 될 수도 있다. 그렇다면 모델 구조에 순환(Recurrence)를 추가하는 것이다. 시퀀스 정보를 학습하는 방법과 이 정보를 사용해 텍스트를 더 잘 이해하는 모델 구조인 순환신경망(Recurrent Neural Network; RNN)을 만드는 방법을 알아보자. 

7.1 순환 구조

  • 모델은 데이터를 레이블에 매핑하는 규칙을 학습
  • 데이터는 세분화가 일어나지 않고, 데이터의 발생 순서를 이해하려는 노력이 없음. 
  • ex) 'today I am blue, becuase the sky is gray.(오늘 나는 좀 우울해. 왜냐하면 하늘이 흐려.)"와 'today I am happy. and there's a beautiful blue sky.(오늘 나는 행복해. 아름다운 화창한 날씨야)"
  • 위의 예문과 같은 문장에서 'blue'와 'sky' 단어가 가진 다른 의미를 고려하지 않는다는 뜻
  • 피보나치 수열 계산 

출처: 개발자를 위한 머신러닝&딥러닝 7장 자연어 처리를 위한 순환 신경망

  • X0을 연산에 사용해 Y0과 다음 타임스텝으로 전달
  • X1을 받아 Y1과 다음 타임스텝으로 전달

 

7.2 순환을 언어로 확장하기

  • 여러 타임 스텝에 걸쳐 순환 신경망이 시퀀스의 문맥을 유지하기 위해 RNN 사용
  • RNN의 특징: 단기기억
    • 타임 스텝이 가면 갈수록 영향이 작아진다 step1>step2>step3>...>stepN
    • 멀리 떨어진 문장일수록 문맥 보존이 어려움
  • LSTM: 길어진 문맥 보존하는 방법
    • https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 참고
    • 스텝 사이, 시퀀스 전체에 걸친 문맥을 유지할 수 있도록 도움
    • X => 정방향 계산 / 역방향 계산 => Y
      • 예문) 
      • I live in Ireland, so in high school I had to learn how to speak and write <something> (정방향)
      • I live in <this country>, so in high school I had to learn how to speak and write Gaelic. (역방향)
    • 양방향 LSTM은 문장의 감성을 매우 잘 이해할 수 있으나, 많은 연산을 수행하므로 훈련속도가 느리다. 

 


7.3 RNN으로 텍스트 분류기 만들기 

 6장에서는 단어를 먼저 벡터로 변환한 후, 이를 모아 밀집 층에 주입했다. LSTM/RNN층을 사용할 때는 단어를 모을 필요없이 임베딩 층의 출력을 바로 순환 층에 주입할 수 있다. 임베딩 차우너을 어휘 사전의 네제곱근으로 맞춘다고 언급했으나 RNN을 사용할 때는 순환 층의 크기를 작게 만들기 떄문에 규칙이 잘 지켜지지 않는다. 

 

※ 나머지 내용은 colabortory notebook을 참고하십시오. 

https://colab.research.google.com/drive/1UasSWMR82ylFkz28-z6vwxeuHCd1ExGL?usp=sharing 

 

개발자를 위한 머신러닝&딥러닝_7장 자연어 처리를 위한 순환 신경망.ipynb

Colaboratory notebook

colab.research.google.com

 

반응형