파이토치를 활용하여 임베딩 학습 and 모델 학습하기
순환신경망 (Recurrent Neural Network, RNN)
: 연속적인(sequencial) 데이터를 처리하는데 적합한 구조
- 현시점의 데이터가 이전까지에 영향을 받는 경우(독립적이지 않은 경우) 효과적으로 작동
- 문장 역시 시퀀스데이터임 -> 이전까지 단어들의 의미와 패턴을 고려하여 다음에 올 단어를 유추할 수 있음
모델 구조
- ht, 은닉상태 : 각 시점마다 은닉상태의 형태를 다음 셀로 전달하여 다은 셀은 입력과 은닉상태를 계산한다
- ot, 출력
- xt, 입력
- cell, 셀 : 입력을 받아 은닉상태와 계산하여 출력하는 노드
입력-출력 구조
- 일대다 구조 (One-to-Many) : 하나의 입력 시ㅁ퀀스에 대해 여러개의 출력값을 가진다
- 출력 시퉌스의 길이를 미리 알고 있어야 한다
- 예시) 이미지 캡셔닝 : 이미지를 입력하면 출력으로 문장이 각 셀별 단어 단위로 출력된다
- 다대일 구조 (Many-to-One) : 여러개의 입력 시퀀스에 대해 하나의 출력값을 생성
- 예시) 문장 분류, 감정분석 등 : 문장의 단어단위로 입력하면 해당 문장이 어느 분류에 속하는지 출력
- 다대다 구조 (Many-to-Many) : 입력, 출력 시퀀스가 여러개인 경우
- 예시) 문장 번역
- 시퀀스-시퀀스 구조 (seq2seq) : 인코더(encoder)-디코더(decoder)
순환신경망의 종류
- 양방향 순환신경망(Bidirectional Recurrent Neural Network, BiRNN)
- 기존 RNN은 이전의 히든상태를 고려해서 결과를 출력하지만 양방향 순환 신경망은 ht-1, ht+1 모두를 고려
- 예시 ) 두 단어 사이에 들어갈 단어 찾기
- 다중 순환 신경망(Stacked Recurrent Neural Network) : 층이 많은 RNN
- 층이 깊어질수록 복잡한 패턴 학습 가능
양방향 다층신경망 실습
pytorch 기반
input_size : 입력 크기
output_size : 출력 크기
num_layers : 층의 수 (단층 순환 신경망의 경우 num_layers = 1)
non_linearity : 활성함수 (tanh or relu)
batch_first : 배치 크기를 우선으로 사용할지 if True, [배치크기, 시퀀스 길이, 입력 특성 크기] else [시퀀스 길이, 배치 크기, 입력 특성 크기]
bidirectional : 양발향을 사용할건지 if True 양방향 else 단방향
LSTM (Long Short Term Memory)
: 메모리 셀, 게이트라는 구조를 도입
- RNN의 장기 의존성 문제, 기울기 소실/폭주 발생 문제를 해결
- 망각게이트: 장단기 메모리에서 이전 셀 상태에서 어떠한 정보를 삭제할지 결정하는 역할
- 입력 게이트 : 새로운 정보를 어떤 부분에 추가할지 결정하는 역할
- 출력 게이트 : 셀 상태의 정보 중 어떤 부분을 출력할지 결정하는 역할
LSTM 문장분류 실습 - pytorch로 구현
: 문장 긍정 부정 분류 모델
데이터셋 : Korpora 의 데이터셋 사용
데이터 전처리 : okt 토크나이저 사용, 단어사전 구축, <pad>와 <unk>을 스페셜 토큰으로 추가
* <pad> : 시퀀스의 길이를 맟춰주기 위함
<unk> : OOV
정수 인코딩 및 패딩
- 인코딩 : 나눈 토큰들을 정수화하여 컴퓨터가 사용할 수 있도록 (<pad> : 0, <unk> : 1)
- 패딩 : 입력시퀀스의 길이가 동일해야하기 때문에 길이를 맞춰주는 용도
데이터 로더 : 파이토치 텐서 형태로 데이터를 변환
TensorDataset클래스는 파이토치 텐서 형태를 입력값으로 받는다.
하이퍼 파라미터 설정
hidden_dim, 은닉상태 크기 : 64
embedding_dim, 임베딩벡터 크기 : 128
n_layers, 층 : 2
optim.RMSprop, RMSprop 옵티마이저 사용, learning rate = 0.001
모델 학습 및 테스트
학습 결과 :
검증셋 loss변화 : 0.0488 -> 0.3923 => loss감소
검증셋 accuracy변화 : 0.76 -> 0.82 => accuracy 증가
https://product.kyobobook.co.kr/detail/S000209621433
'기타 > 파이토치 서포터즈' 카테고리의 다른 글
[파이토치 서포터즈] 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터 비전 심층학습 (1) | 2024.01.19 |
---|