딥러닝
-
Encoder source 문장을 압축한 context vecotor를 decoder에 넘겨준다. Encoder 자체만 놓고 보면 non-auto-regressive task이므로 Bi-directional RNN을 사용 가능하다. import torch import torch.nn as nn from torch.nn.utils.rnn import pack_padded_sequecne as pack from torch.nn.utils.rnn import pad_packed_sequence as unpack class Encoder(nn.Module): """ :input: Embedding tensor :return: y, h """ def __init__(self, word_vec_size, hidde..
LSTM sequence-to-sequence with attentionEncoder source 문장을 압축한 context vecotor를 decoder에 넘겨준다. Encoder 자체만 놓고 보면 non-auto-regressive task이므로 Bi-directional RNN을 사용 가능하다. import torch import torch.nn as nn from torch.nn.utils.rnn import pack_padded_sequecne as pack from torch.nn.utils.rnn import pad_packed_sequence as unpack class Encoder(nn.Module): """ :input: Embedding tensor :return: y, h """ def __init__(self, word_vec_size, hidde..
2022.07.04 -
n-gram 모델의 경우 단어를 discrete symbol로 보기 때문에 '애완동물' 이라는 단어 시퀀스는 학습 코퍼스에 존재하지만 '반려동물'이라는 단어 시퀀스는 학습 코퍼스에 존재하지 않는다면 '애완동물'과 '반려동물'의 단어의 유사도를 알 수 없기 때문에 P(보호 단체 | 반려 동물)를 0으로 연산할 것이다. (Unseen sequence에 대한 대처가 미흡) 따라서 Markov Assumption이나 Smoothing 같은 기법들을 도입하여 문제점을 완화하였으나 문제점을 근본적으로 해결하지는 못하였다. Neural Network Language Model 단어의 유사성을 학습할 수 있다면 unseen sequence에 대해 대처를 할 수 있을 것이다. 단어 벡터 간 유사도를 구하는 벡터를 얻어내..
[Language Model] Neural Network Language Modeln-gram 모델의 경우 단어를 discrete symbol로 보기 때문에 '애완동물' 이라는 단어 시퀀스는 학습 코퍼스에 존재하지만 '반려동물'이라는 단어 시퀀스는 학습 코퍼스에 존재하지 않는다면 '애완동물'과 '반려동물'의 단어의 유사도를 알 수 없기 때문에 P(보호 단체 | 반려 동물)를 0으로 연산할 것이다. (Unseen sequence에 대한 대처가 미흡) 따라서 Markov Assumption이나 Smoothing 같은 기법들을 도입하여 문제점을 완화하였으나 문제점을 근본적으로 해결하지는 못하였다. Neural Network Language Model 단어의 유사성을 학습할 수 있다면 unseen sequence에 대해 대처를 할 수 있을 것이다. 단어 벡터 간 유사도를 구하는 벡터를 얻어내..
2022.07.02 -
언어모델(Language Model)은 문장 자체의 출현 확률을 예측하거나, 이전 단어들이 주어졌을 때 다음 단어를 예측하기 위한 모델이다. 많은 문장들을 수집하여, 단어와 단어 사이의 출현 빈도를 통해 확률을 계산한다. 궁극적인 목표는 우리가 일상 생활에서 사용하는 언어의 문장 분포를 정확하게 모델링 하는 것이다. 한국어의 어려움 한국어는 단어의 어순이 중요하지 않고, 생략도 가능하기 때문에 단어와 단어 사이의 확률을 계산하는 것이 어렵다. ex) 나는 버스를 타고 학교에 갑니다. ex) 버스를 타고 나는 학교에 갑니다. ex) (나는) 버스를 타고 학교에 갑니다. 언어모델은 주어진 코퍼스 문장들의 likelihood를 최대화하는 파라미터를 찾아내, 주어진 코퍼스를 기반으로 문장들에 대한 확률 분포 함..
[Language Model] n-gram언어모델(Language Model)은 문장 자체의 출현 확률을 예측하거나, 이전 단어들이 주어졌을 때 다음 단어를 예측하기 위한 모델이다. 많은 문장들을 수집하여, 단어와 단어 사이의 출현 빈도를 통해 확률을 계산한다. 궁극적인 목표는 우리가 일상 생활에서 사용하는 언어의 문장 분포를 정확하게 모델링 하는 것이다. 한국어의 어려움 한국어는 단어의 어순이 중요하지 않고, 생략도 가능하기 때문에 단어와 단어 사이의 확률을 계산하는 것이 어렵다. ex) 나는 버스를 타고 학교에 갑니다. ex) 버스를 타고 나는 학교에 갑니다. ex) (나는) 버스를 타고 학교에 갑니다. 언어모델은 주어진 코퍼스 문장들의 likelihood를 최대화하는 파라미터를 찾아내, 주어진 코퍼스를 기반으로 문장들에 대한 확률 분포 함..
2022.07.01 -
앙상블 학습은 여러 개의 단일 모델들의 평균치를 내거나 투표를 통한 결과를 도출하는 등 여러 단일 모델을 하나로 엮어 더 좋은 결과를 도출해내는 것이 목적이다. 앙상블 학습에는 여러 종류가 있는데 대표적으로는 Voting, Boosting, Bagging이 있다. Voting 서로 다른 알고리즘이 도출해 낸 결과물에 대해 투표로 최종 결과를 선택하는 방식이다. hard vote: 결과물에 대한 최종값을 투표로 결정 A모델의 분류 예측=1, B모델의 분류 예측=2, C모델의 분류 예측=1인 경우 '1'이 2표이기 때문에 최종 분류로 1을 선택 soft vote: 각각의 확률의 평균값을 계산한 다음 가장 확률이 높은 값을 선택 A = {1일 확률: 0.7, 2일 확률:0.2, 3일 확률:0.1} B = {1..
Ensemble Learning앙상블 학습은 여러 개의 단일 모델들의 평균치를 내거나 투표를 통한 결과를 도출하는 등 여러 단일 모델을 하나로 엮어 더 좋은 결과를 도출해내는 것이 목적이다. 앙상블 학습에는 여러 종류가 있는데 대표적으로는 Voting, Boosting, Bagging이 있다. Voting 서로 다른 알고리즘이 도출해 낸 결과물에 대해 투표로 최종 결과를 선택하는 방식이다. hard vote: 결과물에 대한 최종값을 투표로 결정 A모델의 분류 예측=1, B모델의 분류 예측=2, C모델의 분류 예측=1인 경우 '1'이 2표이기 때문에 최종 분류로 1을 선택 soft vote: 각각의 확률의 평균값을 계산한 다음 가장 확률이 높은 값을 선택 A = {1일 확률: 0.7, 2일 확률:0.2, 3일 확률:0.1} B = {1..
2022.06.29 -
RNN은 이전 hidden state을 통해 time-step의 정보를 가공하여 다음 time-step의 계산에 반영하는 구조이다. RNN을 이용한 Text Classification은 Many to One 형태이다. Non-autoregressive task이므로 Bidirectional RNN을 사용할 것이다. 작성할 모델 구조는 아래와 같다. Feed forward step One-hot vector을 입력받아 Embedding layer에 넣어준다. Embedding vector을 RNN에 input으로 넣는다. RNN의 output중 마지막 time-step 값을 softmax layer에 통과시켜 각 클래스별 확률값을 얻는다.
Text Classification using RNNRNN은 이전 hidden state을 통해 time-step의 정보를 가공하여 다음 time-step의 계산에 반영하는 구조이다. RNN을 이용한 Text Classification은 Many to One 형태이다. Non-autoregressive task이므로 Bidirectional RNN을 사용할 것이다. 작성할 모델 구조는 아래와 같다. Feed forward step One-hot vector을 입력받아 Embedding layer에 넣어준다. Embedding vector을 RNN에 input으로 넣는다. RNN의 output중 마지막 time-step 값을 softmax layer에 통과시켜 각 클래스별 확률값을 얻는다.
2022.06.28 -
Skip-gram등을 통해 계산하여 fix된 Word Embedding Vector를 네트워크에 넣어주게 되면 해당 알고리즘의 objective에 최적화된 representation을 넣어주는 것이지 기계번역 같은 task에 최적화된 representation을 넣어주는 것이 아니게 된다. 또한 딥러닝은 end-to-end solution을 만드는 것이므로 단어 임베딩이 최종 목표인 경우는 거의 없다. 따라서 Word embedding vector을 활용하여 서비스를 만드는 일은 거의 없다. 따라서 One-hot Vector 자체를(단어 자체를) Embedding Layer에 input으로 넣어주어 task에 맞는 dense rerpesentation으로 변환한다. 즉, N개의 단어가 있다면 N+@ 차원..
[WordEmbedding] Embedding LayerSkip-gram등을 통해 계산하여 fix된 Word Embedding Vector를 네트워크에 넣어주게 되면 해당 알고리즘의 objective에 최적화된 representation을 넣어주는 것이지 기계번역 같은 task에 최적화된 representation을 넣어주는 것이 아니게 된다. 또한 딥러닝은 end-to-end solution을 만드는 것이므로 단어 임베딩이 최종 목표인 경우는 거의 없다. 따라서 Word embedding vector을 활용하여 서비스를 만드는 일은 거의 없다. 따라서 One-hot Vector 자체를(단어 자체를) Embedding Layer에 input으로 넣어주어 task에 맞는 dense rerpesentation으로 변환한다. 즉, N개의 단어가 있다면 N+@ 차원..
2022.06.28 -
Word2Vec 주변(context window)에 같은 단어가 나타나는 단어일 수록 비슷한 벡터 값을 가져야 한다는 아이디어 Word2vec의 모델은 Continuous Bag Of Word(CBOW)와 Skip-Gram이 있다. CBOW는 주변 단어를 통해 주어진 단어를 예측한다. Skip-gram은 현재 단어를 통해 주변 단어를 예측한다. CBOW보다 성능이 좋아 더 많이 사용된다. "Skip-gram" Window 크기가 2인 경우 학습은 아래 과정을 거친다. 1. 중심 단어는 NLP이고 윈도우 크기가 2이므로 중심 단어 앞 뒤로 2개씩 봐야하지만 중심단어 기준 앞에 단어가 존재하지 않으므로 is와 the만 학습에 사용한다. 중심단어를 NLP로 놓고, 주변단어 is를 정답으로 설정하여 학습하고, ..
[WordEmbedding] Word2Vec & Glove & FastTextWord2Vec 주변(context window)에 같은 단어가 나타나는 단어일 수록 비슷한 벡터 값을 가져야 한다는 아이디어 Word2vec의 모델은 Continuous Bag Of Word(CBOW)와 Skip-Gram이 있다. CBOW는 주변 단어를 통해 주어진 단어를 예측한다. Skip-gram은 현재 단어를 통해 주변 단어를 예측한다. CBOW보다 성능이 좋아 더 많이 사용된다. "Skip-gram" Window 크기가 2인 경우 학습은 아래 과정을 거친다. 1. 중심 단어는 NLP이고 윈도우 크기가 2이므로 중심 단어 앞 뒤로 2개씩 봐야하지만 중심단어 기준 앞에 단어가 존재하지 않으므로 is와 the만 학습에 사용한다. 중심단어를 NLP로 놓고, 주변단어 is를 정답으로 설정하여 학습하고, ..
2022.06.28 -
Word Embedding이 필요한 이유: "Word는 Discrete / not continuous한 형태" 단어는 계층적 의미 구조를 지니고 있기 때문에 단어 사이의 유사성을 지니고 있다. 그러나 컴퓨터 상에서 단어가 One-hot Encoding으로 표현된 값은 유사도를 표현할 수 없다. 따라서 단어의 유사도를 표현하기 위해 단어를 연속적인 값으로 표현(Embedding)하고자 하였다. feature는 샘플을 잘 설명하는/수치화 할 수 있는 특징이다. Neural Network는 x와 y 사이의 관계를 학습하는 과정에서 x의 feature을 추출하는 방법을 학습한다. 그렇다면 단어의 feature vector는 어떻게 나타낼 수 있을까? Traditional Methods "Data-Driven M..
[WordEmbedding] 딥러닝 이전의 단어 임베딩Word Embedding이 필요한 이유: "Word는 Discrete / not continuous한 형태" 단어는 계층적 의미 구조를 지니고 있기 때문에 단어 사이의 유사성을 지니고 있다. 그러나 컴퓨터 상에서 단어가 One-hot Encoding으로 표현된 값은 유사도를 표현할 수 없다. 따라서 단어의 유사도를 표현하기 위해 단어를 연속적인 값으로 표현(Embedding)하고자 하였다. feature는 샘플을 잘 설명하는/수치화 할 수 있는 특징이다. Neural Network는 x와 y 사이의 관계를 학습하는 과정에서 x의 feature을 추출하는 방법을 학습한다. 그렇다면 단어의 feature vector는 어떻게 나타낼 수 있을까? Traditional Methods "Data-Driven M..
2022.06.28