본문 바로가기

🥾 프로젝트/(STEP)파이썬을 활용한 인공지능 자연어 처리

5-2회차) 자연어 처리를 위한 RNN

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) 학습 수행 결과 평가