디퓨전(Diffusion)은 생성 모델의 일종으로, 그 이름과 같은 ‘확산’ 프로세스를 반복적으로 적용하여 데이터 분포를 모델링한다.
출처 : Stable Diffusion이 대체 무엇일까?(Latent Diffusion의 작동 원리)
디퓨전이 모델의 분포를 학습하는 방식은 노이즈를 단계적으로 첨가하고, 또 단계적으로 제거하면서 원래의 데이터 샘플과 유사하도록 변환하는 것이다.
1. 추론:
2. 샘플링:
디퓨전 모델은 뛰어난 생성 능력과 유연성을 가지고 있기 때문에, 복잡한 데이터 분포를 캡처하거나 새로운 데이터 샘플을 생성해야 하는 광범위한 작업에 적합하다.
⭐️ 1. 이미지 합성
실제 이미지 Dataset에 대해 디퓨전 모델을 훈련하면 Train Dataset과 유사한 새로운 이미지를 생성할 수 있다. 디퓨전 프로세스를 통해 노이즈 벡터를 점진적으로 사실적인 이미지로 변환하여 복잡한 디테일과 텍스처를 포착할 수 있다.
⭐️ 2. 이미지 노이즈 제거
입력 이미지에 노이즈가 있으면 확산 모델은 확산 프로세스를 통해 점진적으로 노이즈를 제거하여 노이즈가 제거된 이미지를 생성할 수 있다. 학습을 통해 이미지의 기본 구조를 포착해 내고, 노이즈를 콘텐츠에서 분리해 낸다.
⭐️ 3. 이미지 인페인팅
이미지에서 누락되거나 손상된 부분을 채우는 이미지 인페인팅 작업에도 사용될 수 있다. 이미지의 구조를 학습하여 누락된 영역을 채울 수 있는 그럴듯한 콘텐츠를 생성하여 시각적으로 일관된 이미지 페인팅을 만든다.
⭐️ 4. 텍스트 생성
말뭉치에서 단어 또는 문자 간의 종속성을 모델링하여 학습 데이터와 유사하며 현실적이고 일관된 텍스트를 생성한다.
⭐️ 5. 비디오 생성
디퓨전 기술은 동영상과 같은 순차적 데이터를 처리할 수 있도록 확장되었다. 여러 프레임에 걸쳐 디퓨전 프로세스를 적용하며, 시간적 일관성을 보이는 새로운 비디오 시퀀스를 생성하고 학습 데이터의 동적 특성을 포착할 수 있다.
⭐️ 6. 이상 감지
이미지, 텍스트, 시계열 등 다양한 유형의 데이터에서 이상 징후를 탐지하는 데 사용되어 왔다. 확산 모델을 정상 데이터 샘플에 대해 훈련함으로써 유사한 인스턴스를 재구성하고 생성하는 방법을 학습할 수 있다. 비정상적인 데이터를 제시하면 재구성 오류가 더 높아지는 경향이 있어 이상 징후를 식별할 수 있다.
Word2Vec은 자연어 처리(NLP) 작업에서 단어를 연속적인 벡터로 표현하는 딥러닝 기법이다.
단어를 고차원 벡터 공간에 매핑하여 단어 간의 의미론적, 구문론적 관계를 의미 있는 방식으로 포착하는 것을 목표로 한다.
이러한 워드 임베딩은 컴퓨터가 처리할 수 있는 벡터 형태로 나타나며, 레이블이 없는 대량의 텍스트 데이터를 활용하여 학습된다. Word2Vec의 핵심 가정은 비슷한 문맥에 등장하는 단어는 비슷한 의미를 갖는 경향이 있다는 것이다.
CBOW와 Skip-gram 모델은 모두 신경망을 사용하여 학습되며, 일반적으로 단일 계층으로 구성된다. 학습을 통해 목표 단어 또는 문맥 단어를 정확하게 예측하는 모델의 능력을 최적화한다.
⭐️ CBOW(Continuous Bag of Words)
CBOW 아키텍처에서는 문맥 단어를 기반으로 타겟 단어를 예측한다. 문맥 단어란 주어진 창 크기 안에 있는 타겟 단어 주변 단어를 의미한다. 예를 들어 “The cat sits on the mat." 라는 문장이 주어지면 CBOW 모델은 "the", "sits", "on" 및 "mat"를 입력으로 받아 목표 단어 "cat"을 예측할 수 있다.
⭐️ Skip-gram
Skip-gram 아키텍처에서는 CBOW와 반대로, 문맥이 주어졌을 때 목표 단어를 예측하는 대신 타겟 단어를 기반으로 문맥 단어를 예측한다. 동일한 예제 문장을 사용하여 Skip-gram 모델은 대상 단어 "cat"를 가지고 문맥 단어 "the", "sits", "on", "mat"을 예측할 수 있다.
Word2Vec으로 생성된 이러한 워드 임베딩은 자연어 처리 작업에서 다양하게 활용된다. 텍스트 분류, 정보 검색, 감성 분석, 기계 번역 등 다양한 자연어 처리 모델의 성능을 향상시키는 데 사용할 수 있다. 또한 단어를 연속 벡터로 표현함으로써 모델이 단어 임베딩에서 포착한 풍부한 의미 정보를 활용하여 보다 언어를 보다 효과적으로 이해하고 활용할 수 있게 된다.
keyword extraction from single documents using multiple local features
- unsupervised learning, lightweight statistical method
이 장에서는 단어의 중요도를 계산하는 부분 위주로 설명할 예정이다.
즉, 개별 단어 단위의 점수를 구하는 것이 중요한데, Statistical Method
와 Graph-Based Method
두 가지 방법론으로 나눌 수 있다.
YAKE!는 개별 문서에서 중요한 키워드를 식별하기 위해 단어의 동시 등장 정도(Co-Occurrence) 나 빈도(Term Frequencies)와 같은 지역적인 텍스트 특징와 통계 정보에 의존한다. 대표적으로는 TF-IDF부터 KP-Miner, RAKE 등이 있다. 저자는 YAKE!의 장점을 다음과 같이 말한다.
⭐️ Text Pre-Processing and Candidate Term Identification
segtok rule-based sentence segmeter를 이용해 문서를 문장 단위로 나눈다.
그리고 segtok segmenter의 web_tokenizer을 이용해 이 문장을 다시 띄어쓰기 단위로 쪼갠 후 토큰으로 쪼갠다.
각 토큰들은 다음과 같은 기준으로 분류되어 구획문자 테그가 첨부된다.
그 다음, 입력받는 언어에 대해 Static List로 정의된 Stopwords(불용어)를 사용해 잠재적으로 의미 없는 토큰들을 탐지한다.
이 전처리 단계의 결과는 문장의 리스트이며, 각 문장은 테그가 달린 부분들로 나뉜다.
[출처 | 딥다이브 Code.zip 매거진]