Day80

김재현·2023년 9월 14일

JUPYTER/DL/ML

목록 보기
53/73

CNN - 이미지 분류
RNN - 텍스트 분류
분류 정확도는 분류해야 할 종류와 반비례
ImageDataGenerator가 1개인 경우 : train, test 통합
ImageDataGenerator가 2개인 경우 : train, test가 이미 분할

문자열 데이터

문자열을 위 해 Meca-kor-dor을 설치(한글 형태소 분석을 위해 필요)

one-hot 인코딩으로 표현하면 이미지 형태로 변경 -> softmax

희소 표현 (원-핫 백터)

원-핫 인코딩과 비슷
표현하고자 하는 단어의 인덱스 값만 1이고 나머지 인덱스에는 전부 0으로 표현되는 백터 방법으로 원-핫 백터라고도 한다.
전체 단어의 수가 4개 이므로 각각의 단어를 4개의 원소를 갖는 리스트 안에서 one-hot 인코딩으로 표현한다.

one-hot 인코딩으로 표현하면 이미지 형태로 변경 -> softmax 사용 가능

[ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0] ]
[ [1, 0, 0, 0], [0, 0, 0, 1] ]

밀집표현

희소 표현의 반대

벡터의 차원을 단어 집합의 크기로 결정하지 않고 분석가가 설정한 임의의 값으로 모든 단어 벡터의 차원을 맞춘다.

01이 아닌 실수를 원소로 갖는다.

RNN(순환 신경망)

RNN 순서와 맥락을 고려하지는 않음
-> 일치하는 단어가 얼마나 있는가를 확인

IMDB RNN, LSTM, GRU

#01. 텍스트 분석 알고리즘

1. 텍스트 분석을 위해 개선된 알고리즘의 종류

RNN
  • Embedding층은 단순하게 데이터의 표현을 학습하여 데이터 사전을 구축하는 것
  • 하지만 유사한 의미의 단어를 비슷한 공간에 매핑할 수 있지만, 시퀀스 데이터의 중요한 특성인 순서와 맥락까지 고려한 것은 아니다.
  • 순환 신경망은 이 문제를 해결하기 위해 고안된 층
  • 완전연결층, 컨볼루션 신경망의 반대되는 개념.
  • 완전연결층과 컨볼루션 신경망은 피드 포워드 네트워크(feed-forward network)라고 표현
  • 피드 포워드 네트워크는 신경망이 가지는 모든 출력값이 마지막층인 출력층을 향한다.
  • 하지만 순환 신경망은 각 층의 결과값이 출력층을 향하면서도 동시에 현재 층의 다음 계산에 사용된다.
LSTM
  • RNN의 그래디언트 손실문제를 보완한 방법
  • 정보를 여러 시점에 걸쳐 나르는 장치(‘Cell state’)가 추가되었다.
  • 이로 인해 그래디언트를 보존할 수 있어 그래디언트 손실 문제가 발생하지 않도록 도와준다.
GRU
  • 게이트 메커니즘이 적용된 RNN의 일종으로 LSTM에서 영감을 받았으며 더 간략한 구조를 갖는다.
  • 한국인 조경현 박사님이 제안한 방법

2. 텍스트 분석 알고리즘 적용하기

전체 소스코드는 지금까지의 예제들과 동일하게 진행된다.

💡 패키지 준비 → 데이터셋 준비 → 데이터 전처리 → 탐색적 데이터 분석(문자열 토큰화, 데이터를 동일한 길이로 맞추기) → 데이터 셋 분할 → 모델 개발(정의+학습) → 학습 결과 평가 → 학습결과 적용

이 과정에서 학습 모델을 정의하는 부분에서 적용할 알고리즘만 변경하면 되기 때문에 여기서는 RNN을 먼저 적용해 본 후, 학습 모델을 LSTM과 GRU로 각각 변경하여 다시 학습을 수행해 보도록 한다.

학습 시간이 매우 오래 걸리는 예제이므로 가급적 GPU가 탑재된 컴퓨터에서 실습하는 것이 좋다.

0개의 댓글