08 텍스트 분류

2020. 12. 17. 00:04·인공지능(AI)/자연어처리(NLP)

(본 강의 노트는 김기현 교수님의 <자연어처리 딥러닝 캠프> 책을 기반으로 하고 있습니다)

목차

8 텍스트 분류

8.1 텍스트 분류 정의

8.2 RNN을 사용한 텍스트 분류


 

8.1 텍스트 분류 정의

텍스트 분류란?

텍스트 데이터를 입력으로 받아 지정된 카테고리에 대한 수치를 출력하는 것

예) 카테고리 분류, 주제 분류, 감성 분석

텍스트 분류란? (확률 관점에서)

문장이 주어질 때(x), 문장이 속할 카테고리의(y) 확률 분포 함수(p) 근사화

- 문장 x , 단어1 x_1, ...., 단어n x_n

- ML에서의 MLE를 보면 P_data(y|x) : x(SMS)가있을 때 y(SPAM/HAM)에 속할 확률

- y label이 주어지므로 supervised learning

- 이를 신만이 아는 분포 p(y|x)로 approximate하는 방법은 세타를 이용하는 것 -> p(y|x,Θ) 


8.2 RNN을 사용한 텍스트 분류

- 사실 CNN을 사용해서도 텍스트 분류가 가능은 함

다대일 사용 : 마지막 output tensor만 취함

Bidirectional multi-layered RNN사용

non-autoregressive 사용(문장 한꺼번에 넣을 수 있음)

 

마지막 output만 사용

RNN 분류기 작동 방식 : Embedding Layer가 하나 더 들어감

- one-hot vector가 차원이 큼 -> embedding layer를 거치면 차원이 적절하게 줄어듦

- cross entropy loss 사용하여 loss function구현(이 역시 차이를 정의함)

Embedding Layer

- one-hot vectors : one-hot encoding방식으로 word vector를 표현한 것 (sparse)

- embedding layer weight를 곱해줌으로써 압축+의미(dense)

- fully-connected layer(linear 식)란? 

- 해당 레이어의 row만 가져오므로 행렬곱이 필요 없음

- 최종 embedding vector가 RNN에 들어가 ŷ이 나오고 y와 비교하여 loss function계산이 이루어짐

RNN 분류기 내 텐서 관찰

1. X_1:t(input_tensor) : batch_size(bs개의 문장), n(각 time-step), 1(input_size: 각 단어의 인덱스)

2. emb(X_1:t) : batch_size(bs개의 문장), n(각 time-step), embedding_size(embedding vector의 차원)

3. rnn( emb(X_1:t)) : batch_size(bs개의 문장), n(각 time-step), hidden_size x 2(bi-directional)

4. rnn( emb(X_t)) 마지막 time_step만 취함  :  batch_size(bs개의 문장), 1, hidden_size x 2(bi-directional)

5. ŷ :  batch_size(bs개의 문장), 1, number of class(class별 확률 값)==정답레이블

요약

Non-autogressive task이기 때문에 입력을 한 번에 받아도 됨

- 모든 time-step에 대해 병렬 처리 가능

 

Feed-forward 과정

1. one-hot vector를 embedding layer에 입력

2. Embedding vector를 RNN에 넣고 출력 얻음

3. RNN의 출력 중 마지막 time-step의 값만 취함

4. 취한 값을 softmax layer에 통과하여 각 카테고리의 확률 값 얻음

반응형

'인공지능(AI) > 자연어처리(NLP)' 카테고리의 다른 글

[NLP 개념] 언어모델(Language Model)  (0) 2021.05.03
01 자연어처리 소개  (0) 2020.12.17
06 순환 신경망(RNN)  (0) 2020.12.16
05 어휘 분석  (0) 2020.12.16
04 텍스트의 전처리  (0) 2020.12.15
'인공지능(AI)/자연어처리(NLP)' 카테고리의 다른 글
  • [NLP 개념] 언어모델(Language Model)
  • 01 자연어처리 소개
  • 06 순환 신경망(RNN)
  • 05 어휘 분석
계속지나가기
계속지나가기
NLP Engineer
  • 계속지나가기
    코딩스뮤
    계속지나가기
  • 전체
    오늘
    어제
    • 코딩스뮤:)
      • Algorithm
        • 백준 문제풀이
        • 프로그래머스 문제풀이
        • 알고리즘 이론
        • 자료구조
        • SW Expert Academy
      • 인공지능(AI)
        • LLMs
        • 자연어처리(NLP)
        • 컴퓨터비전(CV)
        • 딥러닝(DL)
        • 머신러닝(ML)
        • 인공지능기초수학
        • 선형대수학
      • 컴퓨터 세팅
      • Computer Science
        • 유닉스프로그래밍
        • 프로그래밍언어론
        • 디자인패턴
        • 클린코드
        • SW 영어
        • 리눅스
        • 논리회로
      • Server
        • Docker
      • 바이브 코딩
        • 클로드 코드
  • 블로그 메뉴

    • 홈
    • Who Am I(CV)
    • 태그
  • 링크

    • 깃허브 주소
  • 공지사항

  • 인기 글

  • 태그

    LM
    파이썬 클린코드
    f1-score
    DigitalImageProcessing
    machinelearning
    알고리즘
    에지검출
    최대유량
    손실함수
    MaximumFlow
    선형회귀
    컴퓨터비전
    NLP
    비지도학습
    지도학습
    ComputerVision
    경사하강법
    네트워크플로우
    SIFT
    결정경계
    패턴인식
    군집화
    ML
    DIP
    기계학습
    비용함수
    networkflow
    디지털이미지처리
    언어모델
    머신러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
계속지나가기
08 텍스트 분류

티스토리툴바