준지도 학습 (SSL; Self-supervised Learning) 비지도(Unsupervised), 지도(supervised) 학습은 많이 들어봤어도, 준지도(self-supervised) 학습은 입문자에게 낯설다. 단어 뜻을 토대로 유추해보면, 자기가 스스로 label을 생성하는 것이라고 유추해 볼 수 있겠다. 사람이 레이블링을 하는 것은 많은 리소스가 들어간다(그래서 따로 외주를 주는 것). 준지도 학습에서 레이블들은 입력으로 넣지 않은 나머지 데이터들이 y 삼아서 예측하도록 학습한다. "I love ___ go to school." 위 문장의 예시에서 빈 칸을 예측하는 태스크를 준지도 학습으로 해결하고자 한다면, 빈 칸을 제외한 나머지 단어들을(토큰) 다른 단어(토큰)들로 예측하도록 학습시키는 ..
텍스트 분류는 어떠한 문장이 주어졌을 때, 그 문장이 속할 클래스의 확률을 구하는 것이다. 가격도 싸고 상품 품질은 괜찮은데 배송이 늦어서 화가 나네요. 항목 분류 품질 긍정 배송 부정 가격 긍정 종합 부정 위의 예제와 같이 문장이 input으로 들어오면, 전처리한 임베딩을 통해서 학습된 모델의 분류 방식에 따라서 분류하는 식이다. RNN & CNN ensemble RNN 먼저 one-hot vector를 입력으로 받아서 embedding layer에 넣어주고, Bi-directional RNN을 통해 출력을 얻는다. 마지막 time-step값을 softmax layer에 통과시켜 각 클래스별로의 확률값을 얻는다(BPTT). 자연어 생성과는 다르게 auto-regressive가 아니기 때문에, 입력을 한..
Skip-gram (2013) 딥러닝을 위해 사용되는 Word Embedding 기법 중 그 유명한 Word2Vec에 대해서 알아보자. CBOW와 Skip-gram이라는 두 가지 방법이 있는데, 간단히 정리하면 CBOW는 주변 단어를 통해서 원하는 단어를 예측하는 것이고, Skip-gram은 원하는 단어를 통해서 주변 단어들을 예측하는 것이다. 기본적인 개념(구조)은 오토인코더와 매우 비슷하다. Skip-gram의 구조를 자세히 보면 input 으로 원하는 중심 단어를 one-hot 벡터가 들어가고, hidden layer에서 linear한 계산을 거쳐 주변 단어 들을 softmax로 출력하는 분류(classification) 문제이다. 단어 위치 W(t-2) W(t-1) Wt W(t+1) W(t+2) ..
"파랑"과 "핑크" 중 "빨강"에 가까운 것은? 단어의 형태는 카테고리 형태이지만, 실제로 우리가 생각할 때에는 계층적으로 의미 구조를 지닌다. 따라서 단어들 혹은 문장들 간 '유사한가, 반대인가' 등의 개념이 들어간다. 계층적이라는 말은 카테고리화 할 수 있다는 의미이다. 예를 들면 색(Color)은 Hypernym이라면, 빨강(Red)은 Hyponym으로 색의 하위 카테고리에 속한다. 위의 예시를 보면, 우리는 단순히 vocab의 순서나 인덱스로 단어를 찾는 것이 아니라, 유사도로 찾는 것에 가깝다. 따라서 one-hot encoding 보다는 dense vector로 표현하는 것이 유사성을 머신에게 이해시키기 좋은 표현이다. 샘플(데이터)를 잘 설명하는 특징을 모아서 하나의 vector로 표현한 것..
Minibatch 모델에 넣기 위한 코퍼스의 최종 모양을 만들어줘야 할텐데, 그 tensor의 모양은 다음과 같다. tensor를 보면, 몇 가지 문제점이 보인다. vocab이 sparse해지기 때문에 메모리의 낭비가 생긴다. 따라서 vocab을 one-hot vector가 아닌 index로 처리하는게 좋다. 문장의 길이가 다 다르기 때문에 극단적인 예로 어떤 문장은 두 단어로, 어떤 문장은 100단어로 구성되어있다면 오른쪽의 padding 토큰의 차이가 극명해지고, 계산 낭비가 이뤄진다. 2번의 문제를 해결하기 위해서는 length를 sorting하는 방법이 있다. 그리고 미니배치의 순서를 shuffling하면 된다. 실습 with TorchText 먼저 터미널을 통해서 tsv파일을 shuffle해줘야..
먼저 토큰의 길이에 따라서 어떤 특징을 가지는 지 생각해보자. "나는 오늘 아침에 테니스를 치고, 시리얼을 먹었다."는 문장을 예시로 들자. 토큰의 길이가 길다는 것은 이 문장 자체를 유니크한 토큰으로 가정한다는 것이고, 그 만큼 전체 문서에서 등장할 가능성이 희박해진다. 반면에 토큰의 길이가 짧아지면 "나/는/오늘/아침/에/테니스/를/치/고/,/시리얼/을/먹/었다/." 와 같이 분절되는 것이고, 아침, 테니스 등의 명사와 조사등은 전체 문서에서 자주 등장하여 count가 올라갈 가능성이 높다(즉, 희소성이 낮아진다). 희소성이 높다는 뜻은 OoV(Out of Vocabulary)가 늘어난다는 뜻이다. 즉, 모델의 입장에서 "이게 뭐여? 처음보는 단어(문장)인데?" 라고 인식하게 될 것이다. 모델의 성능..
텍스트 데이터 레이블 텍스트 데이터의 레이블은 다양한 형태로 존재할 수 있다. csv파일(comma-separated variables)은 문장 내의 comma와 혼동 될 수 있어서, tsv(tab-separated variables)를 권장한다. text classification의 경우는 클래스와 sentence가 tab으로 구분된 형태로 존재한다. Class Sentence positive !빠른 배송 좋아요 negative 이게뭐야?진짜이게뭐야?리뷰보고구매했는데!나원참! negative 제품 손잡이가 생각보다 너무약해 사용하기가 불편합니다. ... ... sentence ↔ sentence의 경우 1번과 같은 형태, 또는 대응되는 다른 파일로도 저장되어 있을 수 있다. Sentence Segmen..
본격적으로 자연어처리를 위한 데이터 전처리 파이프라인에 대해서 알아보자. 크게 다음과 같은 절차를 따른다. 데이터(Corpus) 수집 데이터 정제 레이블링 (optional) Tokenization(분절) : 형태소 분석기를 활용하여 분절 수행 Subword Sefmentation (optional) Batchify : 사전 생성 및 word2index Corpus 정제 코퍼스는 문장들로 구성된 데이터셋, 말뭉치를 말한다. 코퍼스는 크게 전형적인 노이즈를 제거(전각문자 등)해야 한다. 전각 문자는 Unicode 이전의 한중일 언어를 예로 들 수 있는데, 쉽게 얘기하면 standard가 아닌 legacy라고 생각하면 될 것 같다. 대소문자는 가능하면 통일하는 것이 좋다. NYC, n.y.c는 같은 뉴욕 시..
- Total
- Today
- Yesterday
- 도커
- mlpipeline
- PM
- DDUX
- Oreilly
- Tennis
- productowner
- 스타트업
- ML
- 파이프라인
- 쿠버네티스
- container
- pmpo
- MLOps
- torch
- docker
- productmanager
- nlp
- 딥러닝
- 자연어처리
- 전처리
- dl
- 머신러닝
- productresearch
- PO
- 머신러닝파이프라인
- Kubernetes
- deeplearning
- 인공지능
- Bert
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |