2. LSTM/GRU 모델활용
1) PyTorch Lightning 개요
(1) PyTorch Lightning 정의
- 기존 파이토치의 복잡한 train, test 코드를 간결한 코드로 제공해 줌.
- 파이토치 vs 라이트 비교
(1) PyTorch Lightning 설치
2) PyTorch Lightning 을 이용한 LSTM 구현
(1) LightningModule 클래스 상속
- class RNNModel 이라는 클래스 새롭게 정의
> 우리가 만들고자 하는 RNN 모델 class 사용
- 우리가 RNN 만들 수 있지만, 파이토치의 LightningModule 상속 받아서 사용할 예정
> light가 아니라 일반 파이토치도 가능은 함.
(2) init 함수 재정의(Override)
- 정의한 class RNNModel 에서 재정의(ovrride) 몇개가 필요 함.
- self는 맴버변수 의미
- embedding : 우리가 분석하고 싶은 자연어의 숫자로 된 결과 데이터.
- 우린 lstm 이용해서 모델을 만들 예정.
> lstm layer 추가 함.
- linear :
> fully connected layer 생각
- lstm layer와 fully connected layer 각각 추가 함.
- loss_function(손실함수) 지정 함.
- 평가 지표로 Accuracy 지정 함.
(3) forward 함수 재정의(Override)
- forword 기능 :
> 실제 feed forword가 진행되면서 각각의 학습되는 가중치로 연산 수행
> 우리 모델이 값을 예측
> 예측값과 실제값의 loss function 통해 오차를 계산
> 줄이기 위해 역전파(Backpropagation)를 수행 하는 함수
- permute 수행
* permute : 순서나 배열을 변경하다
- lstm의 연산값을 return 함.
(4) training, validation, test별 함수 재정의(Override)
- step함수를 통해 학습 및 평가 함.
- training_step에는 학습단계에서 학습과 평가를 수행하는 정의.
> x : batch.text[0].T : batch.text[0]의 0번 째를 transpose 데이터 -> 즉 텍스트
> y : label
- lose_funtion으로 계산
- 정확도 측정
- 여기서 train을 통해 평가 지표가 나옴(각각의 배치사이즈 만큼)
- 위와 같고 validation 부분.
(5) 기타 옵션 함수 재정의(Override)
3) 모델 객체 생성 및 학습 수행
(1) 사용자 정의 모델 클래스 객체 생성
- RNNModel이라는 class 정의 함
- 거기에 상속 받으면 재정의 한 함수를 함.
- 우리가 만든 class에 model이라는 객체 생성
- text_field :
> 영화평에 대한 텍스트 저장
> .vectors값을 가지고 있음.
-embedding 변수
> text_filed.vocab.vectors 전달
> self 맴버 변수로 전달
(2) trainer 클래스를 이용한 학습 수행
- 학습에 필요한 하이퍼파라미터 지정
- gpus = 1 : gpu를 1개 사용하겠다 의미
- max_epochs = 3 : 전체 학습에 수행 수를 3번 진행(중요 옵션)
(3) 학습 수행 결과 평가
'🥾 프로젝트 > (STEP)파이썬을 활용한 인공지능 자연어 처리' 카테고리의 다른 글
6-2회차) 자연어 처리를 위한 Transformer 적용 (0) | 2023.05.11 |
---|---|
6-1회차) 자연어 처리를 위한 Transformer 적용 (0) | 2023.05.10 |
5-1회차) 자연어 처리를 위한 RNN (0) | 2023.05.07 |
4-3회차) 자연어 처리를 위한 토픽 모델링 (0) | 2023.05.04 |
4-2회차) 자연어 처리를 위한 토픽 모델링 (0) | 2023.05.04 |