반응형
지난 포스팅
https://jamjamzo.tistory.com/127
참고
https://github.com/rickiepark/aiml4coders
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' 단어가 가진 다른 의미를 고려하지 않는다는 뜻
- 피보나치 수열 계산
- 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
반응형
'그냥, 코딩' 카테고리의 다른 글
(python)백준 3단계 : 반복문 (0) | 2022.12.13 |
---|---|
(python)백준 2단계 조건문(파이썬) (0) | 2022.12.10 |
[개발자를 위한 머신러닝&딥러닝] 임베딩을 사용한 감성 프로그래밍 (0) | 2022.10.31 |
[개발자를 위한 머신러닝&딥러닝] 자연어 처리 소개 (0) | 2022.10.26 |
[개발자를 위한 머신러닝&딥러닝] 텐서플로 데이터셋으로 공개 데이터셋 사용하기 (0) | 2022.10.24 |