이재원 강사님을 모시고 진행한 세미나 내용을 정리하였습니다.
자연어처리의 AI 트렌드와 기본 지식을 설명드립니다.
자연어란?
일반사회에서 자연히 발생하여 쓰이는 언어
ex. 한국어, 영어, 일본어
인공 언어
ex. 프로그래밍 언어
컴퓨터가 언어를 이해하는건 아기가 언어를 배우는 과정과 같다.
컴퓨터에게 만들어 준 상황, 맥락 안에서 이해해 가는 과정이 '자연어 처리 모델을 학습하는 과정'이다.
이미지 인식도 마찬가지로 픽셀, 주변 사물이라는 상황이므로 유사한 방법으로 사용된다.
자연어 처리란?
컴퓨터를 이용해 인간 언어를 이해, 생성 및 분석을 다루는 인공지능 기술
사람 언어 → 인코딩 → 컴퓨터 언어 → 메시지 → 디코딩 → 사람 언어
자연어 처리를 위한 준비 단계
전처리
- 개행문자 제거
- 특수문자 제거
- 공백 제거
- 중복 표현 제거(ㅋㅋㅋ, ㅠㅠㅠ,,,)
- 불용어 제거 등
Tokenizing
자연어를 어떤 단위로 살펴볼 것인가?
- 어절
- 형태소
- n-gram
- WordPiece
구문분석(Syntax), 의미분석(Sentiment)
다양한 자연어처리 기술
- Symbolic (규칙/지식 기반)
패턴을 컴퓨터에게 알려주고 배우게 해주는 작업
= Pattern Recognition
= Rule-based - Statistical (확률/통계 기반)
모든 걸 규칙으로 정할 수 없기 때문에 확률을 기반해 접근하는 방법
TF-IDF를 이용한 키워드 추출
문서에 등장한 단어 개수(TF)가 높을 수록 중요한 단어.
해당 단어가 등장한 문서의 개수(DF)가 높을 수록 중요하지 않은 단어
자연어에서 특징 추출과 분류
과거에서는 사람이 직접 특징을 추출하여 분류 ▷머신러닝
좀 더 발전되어, 컴퓨터 스스로 특징을 찾고 스스로 분류하는 것 ▷딥러닝
관련 분야
- 감성 분류
- 문서 요약
- Time-series Stock prediction (자연어 처리의 시계열성 특징과 같다)
- RPA
- 신용 위험 평가
- 회계 및 감사
중요한건 해결하고자하는 문제와 데이터에 따라서 모델을 결정하는 것이다
무조건 적으로 pretrained된 transformer 기반이 좋은 것이 아니다.
*fine-tuning: 사전학습된 모델을 내가 가진 데이터로 학습시켜 모델 가중치를 업데이트 시킴
자연어 처리 발전 과정

1. 규칙기반 모델
확률통계기반의 장점이자 단점은 주어진 데이터에 관한 계산만 할 수 있다는 것이다.
새로운 데이터에 취약함.
따라서 많은 데이터를 학습시켜려고 했지만 저장공간이 부족했다.
지역적인 데이터라는 특색이 있음.
2. end-to-end 모델
데이터 저장을 위한 하드웨어가 발전하면서 더 많은 걸 시도하고 규칙기반 모델의 단점을 해결하고자 했다.
머신러닝 알고리즘을 사용하기 시작함.
2013년부터 자연어 처리에 이미지 분류 방법을 따라 딥러닝을 시도해봄.
1) Word2Vec : 인공신경망을 이용해 단어를 숫자로 변환해보기. 단어의 의미를 주변 단어, 문장을 사용.
2) ELMo : LSTM을 bi-direction으로 보는 방법. 단어를 문장 수준의 임베딩으로 보며 문맥을 잘 이해하게 됨.
3) BERT : 문장간의 관계를 학습시킨 방법.
3. pretrain과 fine tuning
이미지 분류에서 사용됐던 방법을 따라해서 시도해봄.
왜 이미지보다 자연어처리의 시도가 늦었는지?
직관적인 이미지보단 같은 데이터라도 누가 어디서 어떻게 쓰냐에 따라 데이터가 달라지기 때문에 발전하는데 시간이 더 걸렸음.
자연어처리 기법
Word2Vec
자연어를 좌표평면에 위치시킴
가장 단순한 표현 방법인 One-hot encoding 사용→ Sparse representation

RNN
순환 구조를 이루는 인공신경망의 한 종류
이전 state가 다음 state를 예측하는데 사용되는 시계열 데이터 구조
그러나, 처음 입력된 token의 정보가 희석되고, 고정된 vector size를 사용하며 긴 sequence의 사용이 어려우며 중요한 token이 무엇인지 모르고 전부 사용된다는 단점이 있음.
Attention
기존 Seq2Seq에서는 RNN의 최종 output인 Context vector만을 활용
Attention에서는 인코더 RNN 셀의 각각 output을 활용
Decoder에서는 매 step마다 RNN 셀의 output을 이용해 dynamic하게 context vector를 생성
기존 Seq2Seq의 encoder, decoder 성능을 비약적으로 향상시킴
하지만, 여전히 RNN이 순차적으로 연산이 이뤄짐에 따라 연산 속도가 느림
Self-Attention
문장 순서대로 입력되는 것이 아니라 문장 전체를 하나의 행렬로 만든 후 학습함. → 속도 향상
제한된 시간동안 RNN보다 훨씬 많은 데이터가 학습되면서 성능 또한 향상!
Transformer 모델
구글 연구 팀이 공개한 딥러닝 아키텍쳐로 뛰어난 성능으로 주목 받았음
Embedding - BERT, Decoding - GPT 등의 모델의 기본 모델로 활용되고 있음

자연어처리에서 결국엔 Encoding, Decoding이 중요하다!

후기
자연어처리의 흐름을 한 눈에 알 수 있어서 좋았고, 왜 발전했는지와 앞으로 해야할 연구에 대해 들을 수 있어서 좋았다.
현재 거대 언어모델의 성능이 매우 좋기 때문에 새로운 모델링 보다는 특정 도메인을 위한 모델 학습이 중요하다는 걸 알았다. 자연어 처리라는 분야가 어려운데 특히 한국어는 더 어려워서 앞으로 많은 공부가 필요할 것 같다..
'KT AIVLE SCHOOL' 카테고리의 다른 글
| [KT AIVLE] 웹프로그래밍 JAVASCRIPT 기초 문법 (0) | 2023.04.26 |
|---|---|
| [KT AIVLE] 웹 프로그래밍 기초 정리 및 VSCODE 환경설정 (0) | 2023.04.25 |
| [KT AIVLE] 미니프로젝트 5차 - 인간 행동 인식 분류 (0) | 2023.04.14 |
| [AICE Associate 자격증 준비] python 코드 공부 (0) | 2023.04.11 |
| [KT AIVLE] 미니프로젝트2 kaggle 참가 (0) | 2023.03.29 |
댓글