728x90 Study (Data Science)/NLP25 Transformer 2 - Multi Head Attention / Scaled Dot-Product Attention / Masking / Position-wise Feed Forward Network / Query, Key, Value 잠깐! 잊어버리니깐, 다시 한 번 더.. 트랜스포머 모델이란? Encoder는 input sequence를 continuous한 representation으로 바꾸고, Decoder는 이 representation을 output sequence로 바꾼다. 최종 Output은 Probability가 나옴! 먼저 0. Inputs을 embedding 후 positional encoding 하고 1. Encoder 돌리고 x 6번 Multi-Head Attention 잔차 Add + Normalization ---------------- FFW layer 잔차 Add + Normalization 2. Decoder 돌리고 x 6번 Masked - Multi-Head Attention (현재 위치보다 더 뒤에 .. 2023. 3. 14. Transformer 1 - Positional Encoding Seq2seq의 Encoder-Decoder를 6개 쌓아올린 모델. Enc-Dec x 6 은 아니고, Enc x 6 + Dec x 6임. RNN, LSTM 등의 기존 문장의 연속성을 무시 이를 무시하니 병렬구조가 가능해져서 연산속도가 엄청 빨라졌음. seq2seq처럼 context vector를 중간 병목으로 쓰지 않음. Self attention, 즉 내가 들어가서 내가 나오는 재귀적인 구조임. 문장의 문맥 + 단어의 순서 (위치)까지 attention에 담았음. 논문 : https://arxiv.org/pdf/1706.03762.pdf (Attention is all you need (2017)) 각 모듈이 하는 일을 간단하게 정리하면, Positional Encoding: 입력 문장의 단어들에 위치.. 2023. 3. 9. 모델 발전과정 3 - GNMT (Google's Seq2seq 8 layers w. Residual) Google's Neural Machie Translation System 2016년 구글의 신경망 번역 시스템 8개 층을 쌓은 Encoder-Decoder 구조 Residual Connection 사용 Bahdanau Attention 채택 토큰 처리를 하지 않고 단어를 그대로 복사하여 적당한 위치에 배치하는 Copy Model을 사용 장점 정확도가 올라감 학습속도 빨라짐 기울기 소실 문제 해결가능 https://norman3.github.io/papers/docs/google_neural_machine_translation.html Google's Neural Machine Translation System. 그리고 \(sigmoid, tanh\) 등의 함수와 element-wise 연산인 \( (\.. 2023. 2. 28. 모델 발전과정 2 - Attention (Bahdanau / Luong) Attention https://arxiv.org/pdf/1409.0473.pdf 0. Abstract The models proposed recently for neural machine translation often belong to a family of encoder–decoders and encode a source sentence into a fixed-length vector from which a decoder generates a translation. In this paper, we conjecture that the use of a fixed-length vector is a bottleneck in improving the performance of this basic encoder.. 2023. 2. 28. 모델 발전과정 1 - SLM / NNLM / RNN / Seq2seq 언어 모델(Language Model) 주어진 단어들을 보고 다음 단어를 맞추는 모델 단어의 시퀀스를 보고 다음 단어에 확률을 할당 하는 모델에서 주변 단어를 보고 중심 단어를 예측하는 형태로 발전하게 됨. 통계적 언어 모델 (Statistical Language Model) 단점 한 번도 본 적 없는(학습 데이터에 존재하지 않는) 단어 / 문장에 대해서는 확률을 부여할 수 없다. 따라서 언어 모델이 아우르는 범위를 넓히기 위해 다양한 단어를 포함하는 데이터가 필요하다. (양까지 충분하다면 정의하는 확률이 일반적이므로 더욱 좋다.) 신경망 언어 모델 (Neural Network Language Model : NNLM) NNLM의 시초는 Feed-Forward 신경망 언어 모델인데, 지금의 Embeddin.. 2023. 2. 27. 벡터화 발전과정 4 - 워드 임베딩 (Word2Vec / FastText / GloVe) 2003년 요슈아 벤지오(Yoshua Bengio) 교수가 NPLM(Neural Probabilistic Language Model) 이란 모델을 통해 제안된 워드 임베딩. 하지만 이 모델은 너무 느렸다. 2013년, 구글이 NPLM의 정밀도와 속도를 개선하여 Word2Vec을 만들었고, 그 이후로 FastText나 GloVe 등과 같은 방법들이 제안되었다.. Word2Vec 원핫보다 저차원이고, neighbor words간 유사도를 가짐 word2vec은 워드임베딩 종류의 하나이고, Unsupervised or Self learning 이라고도 한다. 왜냐하면 그 유의미한 Dense Vector들을 자기가 학습하면서 기울기를 조정하여 업데이트해가기 때문이다. 분포 가설(Distributional Hyp.. 2023. 2. 23. 벡터화 발전과정 3 - 임베딩 (Embbeding) / Sparse - Dense - Embedding vector 희소 벡터 (sparse vector) 들이 난무하는 DTM, TF-IDF, 원-핫 벡터 단어장에는 0이 너무 너무 많다. 단어장의 크기가 커지면, 그만큼 차원이 늘어면서 차원의 저주(curse of dimensionality)가 시작된다. 차원의 저주란, 희소벡터의 비율이 같은 일정 데이터를 2D에 표현했을 때보다, 3D로 표현했을때 더 density가 떨어진다는 뜻이다. 골다골증인 것처럼 데이터에 구멍이 송송송송 빈다. 데이터가 많으면 많을 수록 표현이 잘 되고 좋은 것은 맞지만, 필요없는 0 같은 노이즈가 많이 끼면 오히려 학습에 방해가 되고, 학습을 마치더라도 유의미한 결과라고 하기 어렵다. 그래서 Sparse vector 를 Dense vector 로 바꾼다. 즉, 벡터 하나하나 의미가 있는 아.. 2023. 2. 22. 토큰화 / 인덱싱 / 벡터화 / 임베딩 토큰화 split 하는 것. 이 때에 띄어쓰기나 형태소 단위로 끊어줄 수 있음 인덱싱 각 단어를 고유한 번호(인덱스)로 매핑하는 것 의미나 관계를 고려하지는 않음. 벡터화 단어나 텍스트를 수치화하는 작업 중 하나 각 단어나 문장을 수치 벡터로 변환하는 것을 의미 단어나 텍스트를 고차원 벡터로 변환 인덱싱과 다르게 단어의 의미나 관련성을 고려 빈도기준의 DTM, 빈도+문서간관계 TD-IDF, 독립적인 관계 One-Hot, 분포로 잠재 의미를 담아내는 LSA, (LSA는 희소 vector가 아니라 희소 matrix를 밀집 행렬로 바꾼거라 임베딩이라 하지 않고 벡터화에 속함) 분포로 단어의 토픽을 찾아내는 LDA, (LDA는 벡터에 확률 분포가 들어감) 임베딩 (like. 2차 벡터화) 벡터화되어 고차원으로 .. 2023. 2. 22. 벡터화 발전과정 2 - soynlp (비지도학습 한국어 형태소 분석기) Soynlp - 품사 태깅, 형태소 분석 등을 지원하는 한국어 형태소 분석기. - 비지도 학습으로 데이터에 자주 등장하는 단어들을 형태소로 분석함. - 내부에 단어사전 같은 단어 점수표를 만들어 동작하며 . 이 점수는 응집 확률(cohesion probability) 과 브랜칭 엔트로피(branching entropy) 를 활용함. - 학습은 txt string (말뭉치, 진짜뭉치)을 DoublespaceLineCorpus로 띄어쓰기 두개 기준으로 떼어내 문서단위로 구분하고, 이를 WordExtractor로 단어를 추출하여 .train 시키면, 단어점수표가 만들어짐. 단어점수표 구조 응집 확률 (cohesion probability) 내부 문자열(subword)가 "얼마나 응집"하여 "자주" 등장하는가의.. 2023. 2. 20. 벡터화 발전과정 (BoW/DTM/TF-IDF/SVD/LSA/LDA/토픽모델링) 벡터화 분산표현이 대중화되기 전에 쓰이던 방법 단어의 의미! 를 부여하기 위한 인간의 노력들. 크게 빈도 / 분포 를 이용한 두가지 방법으로 나뉨 단어 빈도를 이용한 벡터화 1. BoW (Bag of Words) 문서 내 단어들을 다 쪼개서 >> 하나의 가방에 넣고 순서 무시하고 흔들어버림 >> 단어별 빈도수에 따라 정렬 >> 단어 분포를 보고 문서의 특성을 파악 Keras로는 tokenizer.word_counts를 딕셔너리로 만들면 BoW. sklearn로는 CountVectorizer.fit_transform(sentence).toarray() 로 BoW 만듬. Bow에는 단어별 빈도수까지 들어있기 때문에 단순 단어 색인인 fit_on_texts로 만든 word_index와는 다름. 한계 : 어순에.. 2023. 2. 18. 이전 1 2 3 다음 728x90