계속지나가기
코딩스뮤
계속지나가기
전체 방문자
오늘
어제
  • 코딩스뮤:)
    • Algorithm
      • 백준 문제풀이
      • 프로그래머스 문제풀이
      • 알고리즘 이론
      • 자료구조
      • SW Expert Academy
    • 인공지능(AI)
      • LLMs
      • 자연어처리(NLP)
      • 컴퓨터비전(CV)
      • 딥러닝(DL)
      • 머신러닝(ML)
      • 인공지능기초수학
      • 선형대수학
    • 컴퓨터 세팅
    • Computer Science
      • 유닉스프로그래밍
      • 프로그래밍언어론
      • 디자인패턴
      • 클린코드
      • SW 영어
      • 리눅스
      • 논리회로
    • Server
      • Docker

블로그 메뉴

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

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
계속지나가기

코딩스뮤

08 텍스트 분류
인공지능(AI)/자연어처리(NLP)

08 텍스트 분류

2020. 12. 17. 00:04
반응형

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

목차

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

    티스토리툴바