일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ESG
- 면접왕 이형
- 다중분류
- 면접왕이형
- 베스트 모델
- 예측선
- 선형회귀
- 경제신문스크랩
- 안드로이드 구조
- gradiant descent
- 모두의 딥러닝
- nlp
- 밑시딥
- andoriod with kotlin
- 안드로이드
- k겹 교차검증
- 독서 #독서후기 #피로사회 #행동과잉 #긍정과잉
- 학습 자동 중단
- ESG 채권
- 코틀린
- 딥페이크
- GPT-3
- 로지스틱 회귀법
- 경사하강법
- 보이스피싱
- 과적합
- 밑바닥부터 시작하는 딥러닝
- 밑시딥2
- MRC
- 뉴로 심볼릭
- Today
- Total
Practice makes perfect!
Week 9 (1) 인공지능과 자연어 처리 본문
1. 자연어 단어 임베딩
1) 특징 추출과 분류
- 분류를 위해서는 데이터를 수학적으로 표현해야 함.
- 먼저 분류 대상의 특징을 파악하고(Feature extraction), 이를 기준으로 분류 대상을 그래프 위에 표현하고 경계를 수학적으로 나눌 수 있음 (Classification)
- 이러한 특징을 컴퓨터가 스스로 찾고, 스스로 분류하는 것이 '기계학습'의 핵심
2) Word2Vec
- word2vec 알고리즘 : 자연어의 의미를 벡터 공간에 임베딩
- 한 단어의 주변 단어들을 통해, 그 단어의 의미를 파악
- 주변부의 단어를 예측하는 방식으로 학습 수행(Skip-gram 방식)
- CBOW : 주변 단어들을 통해서 중간의 단어를 예측하는 모델
- Skip-Gram : 중심 단어를 통해 주변 단어를 예측하는 모델
- 단어에 대한 dense vector를 얻을 수 있음
장점
- 단어간의 유사도 측정에 용이
- 단어간의 관계 파악에 용이
- 벡터 연산을 통해 추론 가능 ( e.g. 한국-서울+도쿄 = ? )
단점
- 단어의 subword information 무시
- Out of vacabulary (OOV)에서 적용 불가능
3) FastText
- 한국어는 다양한 용언 형태를 가짐 (e.g. 모르다 -> 모르네, 모르지, 모르더라..)
- Word2Vec의 경우 다양한 용언 표현들이 독립된 vocab으로 관리됨
- 기존의 word2vec과 유사하나, 단어를 n-gram으로 나눠 학습을 수행함
- n-gram으로 쪼개진 단어는 독립된 vocab으로 여김(별도의 n-gram vector 형성)
- 단어를 n-gram으로 분리 후, 모든 n-gram vector를 합산한 후 평균을 통해 단어 벡터 획득
- 오탈자, OOV, 등장 횟수가 적은 학습 단어에 대해 강세를 보임
word2vec이나 FastText와 같은 word embedding 방식은 주변 단어를 통해 학습이 이뤄지기 때문에 '문맥'을 고려할 수 없다. 따라서 동형어, 다의어 등에 대해서는 임베딩 성능이 좋지 못하다는 단점이 있다.
2. 언어모델
- 자연어의 법칙을 컴퓨터로 모사한 모델
- 주어진 단어들로부터 그 다음에 등장할 단어의 확률을 예측하는 방식으로 학습 (이전 state로 미래 state를 예측)
1) Recurrent Neural Network(RNN) 기반의 언어모델
- RNN은 히든 노드가 방향을 가진 엣지로 연결돼 순환구조를 이룸 (directed cycle)
- 이전 state 정보가 다음 state를 예측하는데 사용됨으로써,시계열 데이터 처리에 특화
- 마지막 출력은 앞선 단어들의 문맥을 고려해 만들어진 최종 출력 vector -> Context vector
- 출력된 context vector 값에 대해 classification layer를 붙이면 문장 분류를 위한 신경망 모델
2) Seq2Seq
- Encoder layer : RNN 구조를 통해 문맥을 고려한 context vector 획득
- Decoder layer : context vector를 입력으로 출력 예측
- 음성 인식기, 이미지 캡셔닝, 형태소 분석, 번역 등을 수행할 수 있음
3) Attention
RNN 구조의 문제점
- 입력 시퀀스의 길이가 매우 긴 경우, 앞쪽에 나온 토큰에 대한 정보가 희석됨
- 고정된 context vector size로 인해 긴 시퀀스에 대한 정보를 함축하기 어려움
- 모든 토큰이 영향을 미치기때문에 중요하지 않은 토큰도 영향을 줌
> Attention 모델
- 인간이 정보처리를 할 때, 모든 시퀀스를 고려하지는 않음
- 이와 마찬가지로 중요한 feature는 더욱 중요하게 고려하자는 것이 attention의 모티브
- 문맥에 따라 동적으로 할당되는 encode의 attention weight로 인한 dynamic context vector 획득
- 기존 seq2seq의 encoder, decoder 성능을 비약적으로 향상시킴
- 하지만 여전히 RNN 연산이 순차적으로 이뤄저 속도가 느리다는 한계가 있었음.
> Self-Attention
- 모든 token을 all-to-all로 연결
4) Transformer 모델
- 기존 seq2seq 모델은 Encoder RNN 구조와 Decoder RNN 구조가 따로 존재
- transformer network는 encoder와 decoder를 따로 분리하는 것이 아니라 하나의 네트워크 내에 합쳐서 구성됨.
3. 자연어 전처리
모델을 아무리 바꾸고, 튜닝하더라도, 데이터 자체가 문제가 있다면 성능이 나올 수 없음! 가장 중요한 것은 데이터
• Task 설계
: '유튜브 라이브에서 악성 댓글을 필터링해주세요' -> 악성 댓글 classifier를 만들자!
• 필요 데이터 수집
: 댓글 데이터 수집
• 통계학적 분석
: 토큰 개수 -> 아웃라이어 제거
: 빈도 확인 -> 사전 정의
• 전처리
: 개행, 특수문자, 공백, 중복표현(ㅋㅋㅋ), 이메일, 링크, 제목, 불용어, 조사 제거. 띄어쓰기 보정.
• Tagging
• Tokenizing
: 자연어를 어떤 단위로 살펴볼 것인가. (어절, 형태소, WordPiece tokenizing)
• 모델 설계
• 모델 구현
• 성능 평가
- 한글 프로그램의 오타 교정은 어떤 원리일까?
4. 한국어 토큰화
1) 토큰화(Tokenizing)
- 주어진 데이터를 토큰(Token)이라 불리는 단위로 나누는 작업
- 토큰이 되는 기준은 다를 수 있음(어절, 단어, 형태소, 음절, 자소 등)
문장 토큰화(SentenceTokenizing)
• 문장 분리
단어 토큰화(WordTokenizing)
• 구두점 분리, 단어 분리 “Hello, World!”->“Hello”,“,”,“World”,“!”
한국어 토큰화
• 영어는 New York과 같은 합성어 처리와 it's와 같은 줄임말 예외처리만 하면, 띄어쓰기를 기준으로도 잘 동작하는 편
• 한국어는 조사나 어미를 붙여서 말을 만드는 교착어로, 띄어쓰기만으로는 부족
예시)he/him->그,그가,그는,그를,그에게
• 한국어에서는 어절이 의미를 가지는 최소 단위인 형태소로 분리
예시)안녕하세요 ->안녕/NNG, 하/XSA, 세/EP, 요/EC
'Study > AI Tech' 카테고리의 다른 글
Week 11 (1) MRC Intro (0) | 2021.10.12 |
---|---|
Week 10 (1) GPT 언어 모델 (0) | 2021.10.05 |
Week 9 (4) 한국어 언어 모델 학습 및 다중 과제 튜닝 (0) | 2021.10.01 |
Week9 (3) BERT 학습 (0) | 2021.09.29 |
Week9 (2) BERT 언어모델 (0) | 2021.09.28 |