[파이토치로 배우는 자연어처리] 교재 참고
처음부터 공부하는 마음으로 책 정리를 해보았다.
1.1 지도학습
- 머신러닝에서 지도 또는 지도 학습은 샘플(observation)에 대응하는 예측하는 값(target)의 정답을 제공하는 방식이다.
- sample : 예측 시 사용하는 아이템. 즉, input
- target : sample에 상응하는 label, 또는 ground truth
- model : target label을 예측하는 함수
- parameter : 모델을 규정함. weight라고도 불림.
- predict : estimate $\hat{y}$
- loss function : 훈련 데이터에 대한 예측이 타깃과 얼마나 멀리 떨어져 있는지 비교
< (확률적) 경사 하강법을 사용한 훈련 >
① gradient descent
- parameter의 초깃값을 추측한 다음 목적함수 (손실 함수)의 값이 수용할만한 임계점(수렴 조건) 아래로 내려갈 때까지 parameter 반복해서 업데이트
- 메모리 제약과 계산 비용이 높아 매우 느리다.
② stochastic gradient desent
- 데이터 포인트 하나 또는 일부 랜덤 하게 선택하여 gradient 계산.
- 데이터 포인트 하나 시 pure SGD
- 데이터 여려 개 사용 시 minibatch SGD
⊙ backpropagation : parameter를 반복적으로 업데이트하는 과정
- forward pass : 현재 parameter값으로 입력을 평가하여 손실 함수 계산
- backward pass : 손실의 gradient 사용하여 parameter 업데이트
1.2 샘플과 타깃의 인코딩
ⓛ 원-핫 표현
- one-hot representation : 0 벡터에서 시작해 문장이나 문서에 등장하는 단어에 상응하는 원소를 1로 설정
② TF 표현
: 등장 횟수에 비례하여 단어에 가중치 부여
from sklearn.feature_extraction.text import CountVectorizer
import seaborn as sns
corpus = ['Time flies like an arrow.',
'Fruit flies like a banana.']
one_hot_vectorizer = CountVectorizer(binary=True)
one_hot = one_hot_vectorizer.fit_transform(corpus).toarray()
vocab = one_hot_vectorizer.get_feature_names()
sns.heatmap(one_hot, annot=True,
cbar=False, xticklabels=vocab,
yticklabels=['Sentence 1', 'Sentence 2'])
- TF-IDF : idf 벡터 표현에서 흔한 토큰의 점수를 낮추고 드문 토큰의 점수를 높인다.
$IDF(w) = log \frac{N}{n_w}$
- $n_w$ : 단어 $w$를 포함한 문서의 개수
- $N$ : 은 전체 문서의 개수
from sklearn.feature_extraction.text import TfidfVectorizer
import seaborn as sns
tfidf_vectorizer = TfidfVectorizer()
tfidf = tfidf_vectorizer.fit_transform(corpus).toarray()
sns.heatmap(tfidf, annot=True, cbar=False, xticklabels=vocab,
yticklabels=['Sentence 1', 'Sentence 2'])
'Deep Learning > Natural Language Processing' 카테고리의 다른 글
[pytorch] 신경망의 기본 구성 요소 (0) | 2022.07.25 |
---|---|
[pytorch] nlp기술 빠르게 훑어보기 (0) | 2022.07.18 |
감성 분석 Sentiment Analysis (0) | 2022.03.29 |
객체명 인식 Named Entity Recognition (0) | 2022.03.28 |
합성곱 신경망 CNN (0) | 2022.03.28 |