본문 바로가기
컴퓨터공학/AI

인공지능 7. 자연어 처리(NLP)

by Jinger 2024. 5. 7.

서론

   컴퓨터는 기본적으로 전기를 통해 0과 1을 통해 정해진 말을 이해해 왔다. 그러나 최근에는 텍스트 기반으로 오타, 사투리, 다른 나라 언어 등 인간이 사용하는 자연어(NL: Natural Language)로 자유롭게 질문 혹은 요구를 하여도 인공지능이 전부 이해한다. 이게 가능한 이유는 자연어 처리(NLP: Natural Language Processing)분야가 많이 발전하였기 때문이다. 자연어 처리에 대해 알아보자.


자연어 처리(NLP)

    자연어 처리(Natural Language Processing, NLP)는 인간의 언어를 컴퓨터가 이해하고 해석하여 처리할 수 있게 하는 인공지능(AI)과 컴퓨터 과학의 한 분야이다. 이 기술은 텍스트나 음성 데이터를 분석하고 해석하여 다양한 응용 분야에서 사용될 수 있는 유용한 정보나 의미를 추출하고 생성하는 것을 목표로 한다. NLP는 기계 번역, 감정 분석, 질문 응답 시스템, 챗봇, 음성 인식 시스템 등 다양한 분야에서 활용된다.
   사용 예시로 아래와 같다.

  • 연관검색
  • 자동완성
  • 구글 Assistant, 애플 시리, 아마존 에코, 삼성 빅스비

   컴퓨터에게 "단어의 의미" 이해시키기는 방법으로 아래와 같은 기법이 있다.

  • 시소러스 (thesaurus, 유의어 사전)를 활용한 기법
  • 통계 기반 기법
  • 추론 기반 기법
  • 딥러닝 기법 (순환신경망)

시소러스 기법

    시소러스 기법은 자연어 처리(NLP: Natural Language Processing)의 초기 방법 중 하나로, 단어나 구(phrase) 사이의 관계를 체계적으로 분류하고 조직화하여 정보를 추출하거나 텍스트를 이해하는 데 사용된다. 시소러스는 사전과 유사하지만, 단어의 정의보다는 단어들 사이의 관계에 중점을 둔다는 점에서 차이가 있다. 예를 들어, 시소러스는 동의어(synonyms), 반의어(antonyms), 상위어(hypernyms), 하위어(hyponyms) 등의 관계를 포함할 수 있다.

  1. 동의어 확장(Synonym Expansion): 검색 엔진이나 정보 검색 시스템에서 사용자의 쿼리에 동의어를 추가하여 검색 결과의 범위를 확장하고, 더 많은 관련 정보를 찾아낼 수 있도록 한다. 예를 들어, 사용자가 "자동차"를 검색했을 때, "승용차", "차량" 등의 동의어를 포함한 결과를 제공한다.
  2. 의미 분석(Semantic Analysis): 문장이나 문서에서 단어의 의미를 분석할 때, 시소러스를 참조하여 단어들 사이의 의미적 관계를 파악한다. 이를 통해 텍스트의 전반적인 주제나 내용을 이해하는 데 도움을 준다.
  3. 언어의 다양성 처리: 서로 다른 표현이나 단어를 사용하는 텍스트에서도 동일한 의미나 개념을 추출할 수 있게 해준다. 이는 다양한 표현 방식을 포괄할 수 있도록 시소러스 내에서 매핑된 정보를 활용한다.
  4. 정보 검색 및 분류: 시소러스를 이용하여 텍스트 데이터에서 특정 주제나 카테고리와 관련된 단어나 구를 추출하고, 이를 기반으로 정보를 분류하거나 관련 문서를 찾아내는 작업에 활용된다.

시소러스의 한계점

  • 시대 변화 (신조어)에 대응이 어려움
  • 사람이 시소러스를 유지 / 보수 (영어 단어수 : 1,000만개 v.s. wordnet 20만 개 )
  • 단어의 미묘한 차이를 표현할 수 없음

    시소러스 기반 방법은 단어 사이의 명시적인 관계를 활용한다는 장점이 있지만, 언어의 복잡성과 다양성을 완전히 반영하기 어렵고, 지속적으로 변화하는 언어 사용 패턴을 실시간으로 반영하기 어렵다는 단점도 있다. 따라서 현대의 NLP 시스템에서는 시소러스 기법을 다른 기술, 예를 들어 통계 기반의 방법이나 머신러닝, 딥러닝 기법과 결합하여 사용하는 경우가 많다. 

통계 기반 기법

    통계 기반 기법은 자연어 처리(NLP)에서 매우 중요한 역할을 한다. 이 방법은 대량의 텍스트 데이터로부터 언어의 패턴을 학습하여, 단어, 구, 문장의 의미와 구조를 이해하는 데 사용된다. 이 접근법은 언어의 사용과 구조가 통계적 패턴을 따른다는 가정 하에 작동한다.
  즉, 통계 기반 기법은 단어의 출현 빈도, 문장 내에서의 위치, 다른 단어와의 공존 관계 등의 통계적 정보를 분석하여 언어를 이해한다. 이러한 방식은 특히 머신 트랜스레이션, 정보 검색, 감성 분석, 텍스트 분류 등 다양한 NLP 작업에서 유용하게 사용된다.

더보기

말뭉치 (corpus) : 대량의 텍스트 데이터 (사람이 작성한 글)

말뭉치 → 단어로 분할 → 단어 ID 목록으로 변환: 데이터 전처리 작업

분포 가설: 단어 주변 맥락(context)에 의해 단어의 의미를 정확하게 파악할 수 있다

통계 기반 기법: 특정 단어 주변에 단어의 등장 빈도

벡터 사이의 유사도: 단어 벡터사이의 유사도에 cosine similarity 사용

벡터 사이의 유사도

    벡터 사이의 유사도를 측정하는 것은 문서, 문장, 또는 단어 간의 유사성을 판단하는 데 중요하다. 가장 일반적인 방법은 코사인 유사도이다. 코사인 유사도는 두 벡터 간의 코사인 각도를 사용하여 유사성을 측정한다. 이는 두 벡터의 방향성에 초점을 맞추며, 벡터의 크기는 고려하지 않는다. 코사인 유사도는 -1과 1 사이의 값을 가지며, 값이 1에 가까울수록 두 벡터는 유사하다고 판단한다.

차원 감소 (Dimensionality Reduction)

    차원 감소는 고차원 벡터 공간을 저차원으로 축소하는 과정이다. 이는 계산 복잡성을 줄이고, 데이터의 핵심적인 특성을 유지하면서 노이즈를 줄이는 효과가 있다.(중요한 정보는 최대한 유지하면서 차원 줄이면서 표현의 안정성을 높이기 위한 방법이다.) PCA(주성분 분석), t-SNE(t-distributed Stochastic Neighbor Embedding), 그리고 LSA(잠재 의미 분석) 등이 대표적인 차원 감소 기법이다. 특히 LSA에서는 SVD를 사용하여 차원을 축소한다.

특이값 분해 (SVD: Singular Value Decomposition)

    SVD는 행렬을 특이 벡터(singular vectors)와 특이값(singular values)으로 분해하는 과정이다. 이 방법은 데이터의 구조를 파악하고, 중요한 특성을 추출하는 데 유용하다. LSA에서 SVD는 문서-단어 행렬을 분해하여 차원을 축소시키고, 단어와 문서 간의 잠재적인 의미 구조를 발견하는 데 사용된다.

    SVD로 분해된 행렬은 U(문서와 잠재 의미 사이의 관계를 나타내는 행렬), Σ(잠재 의미의 중요도를 나타내는 대각 행렬), 그리고 V^T(단어와 잠재 의미 사이의 관계를 나타내는 행렬)로 구성된다. 이를 통해 원래의 고차원 데이터를 저차원의 잠재 의미 공간으로 매핑하여, 데이터의 핵심적인 패턴이나 구조를 파악할 수 있다.

   이러한 기법들은 텍스트 데이터의 복잡성과 차원을 효과적으로 다루며, 언어 모델링, 정보 검색, 문서 분류 등 다양한 NLP 작업에서 중요한 역할을 한다.

더보기

SVD 를 처리하는 비용: n × n 행렬의 경우 𝒪(n^3) 작업이 필요하다.

차원 감소: 중요도 (특이값)가 낮은 부분을 제거한다.

발전과 한계

    통계 기반 기법은 대규모 언어 데이터를 처리할 수 있는 강력한 도구를 제공하지만, 문맥의 미묘한 차이나 복잡한 언어적 뉘앙스를 완전히 이해하는 데는 한계가 있다. 또한, 고품질의 결과를 얻기 위해서는 대량의 정제된 데이터가 필요하다.
   최근에는 통계 기반 기법과 함께 딥러닝 기반의 기법이 함께 사용되어 이러한 한계를 극복하고 있다. 딥러닝 모델, 특히 Transformer 아키텍처와 같은 모델은 문맥을 더 잘 이해하고, 더 복잡한 언어 패턴을 학습할 수 있는 능력을 보여주었다. 

추론 기반 기법: 신경망을 사용하여 "추론”

    시소러스 기반 기법은 단어들의 관련성을 사람이 수작업으로 하나씩 정의하기에 단어를 모두 정의하기 매우 힘들고 미묘한 차이 표현 힘들다. 또한, 통계 기반 기법은 말뭉치 전체의 통계(동시발생 행렬과 PPMI)를 이용해 단 1회의 처리(SVD)로 단어의 분산 표현을 얻음 à 어마어마한 계산량을 가진다. 이를 해결할 방법으로 추론 기반 기법을 사용한다.

    추론 기반 기법(inference-based techniques)은 자연어 처리(NLP)에서 문맥을 통해 단어의 의미를 학습하는 데 중점을 둔다. 이 기법들은 대규모 텍스트 데이터에서 단어의 의미적 관계를 추론하여 단어 벡터(word vectors)를 생성한다. 가장 대표적인 모델로는 Word2Vec, GloVe(Global Vectors for Word Representation), 그리고 최근의 딥러닝 기반 모델들이 있다.

Word2Vec

     Word2Vec은 Google에서 개발한 모델로, 큰 텍스트 코퍼스에서 단어의 벡터 표현을 학습한다. Word2Vec에는 두 가지 구조가 있다. CBOW(Continuous Bag of Words)와 Skip-Gram입니다. CBOW는 주변 단어들을 사용하여 특정 단어를 예측하는 반면, Skip-Gram은 특정 단어로부터 주변 단어들을 예측한다. 이 모델들은 단어 간의 의미적 유사성을 벡터 공간에서 효과적으로 포착한다.

CBOW : Continuous Bag-of-Words 모델

     CBOW, 또는 Continuous Bag of Words,는 자연어 처리(NLP) 분야에서 단어의 분산 표현(distributed representation)을 학습하기 위한 인기 있는 모델 중 하나이다. Word2Vec 모델의 두 가지 기본 구조 중 하나로, Mikolov와 그의 동료들에 의해 개발되었습니다. CBOW는 주변 단어들의 맥락을 이용해 특정 단어를 예측하는 구조를 가지고 있다.

CBOW의 작동 원리

    CBOW 모델은 주변 단어들(맥락 또는 context words)을 입력으로 받아, 해당 맥락에서 가장 가능성이 높은 타깃 단어를 예측한다. 이 과정은 다음과 같은 단계로 이루어진다.

  1. 입력 및 출력: 입력으로 주변 단어들의 원-핫 인코딩 벡터가 사용되며, 모델은 이를 기반으로 중심이 되는 단어의 원-핫 인코딩 벡터를 출력하려고 한다.
  2. 투영층(Projection Layer): 입력된 원-핫 벡터는 가중치 행렬과 곱해져 임베딩 레이어로 투영된다. 이때, 모든 주변 단어들의 임베딩은 평균화되어 하나의 벡터로 합쳐진다.
  3. 출력층(Output Layer): 평균 임베딩 벡터는 다시 다른 가중치 행렬을 통해 원래의 단어 집합 크기로 변환된다. 이 벡터는 소프트맥스 함수를 통해 최종적으로 확률 분포로 변환된다.
  4. 예측 및 학습: 모델은 최종적으로 확률 분포를 바탕으로 타깃 단어를 예측한다. 학습 과정에서는 실제 단어와 예측된 단어 사이의 오차를 계산하고, 이를 최소화하기 위해 역전파를 사용하여 모델의 가중치를 조정한다.

    CBOW는 맥락 내의 여러 단어를 평균 내어 처리하기 때문에, 비교적 적은 계산양으로 단어 임베딩을 학습할 수 있습니다. 또한, 타깃 단어를 예측하기 위해 맥락 단어들의 정보를 통합하기 때문에, Skip-Gram 모델에 비해 빠르게 학습된다. 이러한 장점으로 이 모델은 기계 번역, 감정 분석, 문서 분류 등 다양한 NLP 작업에 활용될 수 있다. CBOW는 주로 말뭉치의 단어 빈도수가 높은 경우 더 효과적으로 작동한다. 그러나 주변 단어의 순서를 고려하지 않는 한계도 있으며, 이로 인해 언어의 미묘한 의미 차이를 파악하는 데는 한계가 있을 수 있다. 


추론 기반 v.s. 통계 기반 기법

    추론 기반 기법과 통계 기반 기법은 자연어 처리(NLP) 분야에서 단어의 의미를 이해하기 위해 사용되는 두 가지 주요 접근 방식이다. 각각의 방식은 단어 벡터를 생성하고 언어의 복잡성을 다루는 방법에서 차이를 보인다.

통계 기반 기법

    통계 기반 기법은 대규모 텍스트 데이터에서 단어와 그 주변 단어들 사이의 공존(co-occurrence) 정보를 분석하여 단어의 의미를 추출한다. 대표적인 예로는 Latent Semantic Analysis (LSA)가 있으며, 이는 문서와 단어 사이의 관계를 행렬로 표현하고 특이값 분해(SVD)를 사용하여 차원을 축소함으로써 의미적 구조를 발견한다. 이 접근 방식은 전체 문서 집합에서 통계적 패턴을 파악하여 단어 간의 의미 관계를 포착한다.

추론 기반 기법

    추론 기반 기법은 주변 단어의 맥락을 바탕으로 특정 단어의 의미를 추론하는 방식이다. Word2Vec, GloVe와 같은 모델이 이에 해당하며, 이들은 대규모 텍스트 데이터를 통해 단어의 벡터 표현을 학습한다. 이 방식은 맥락이 유사한 단어들이 벡터 공간에서 서로 가깝게 위치하도록 학습한다. 특히, Word2Vec의 CBOW와 Skip-Gram 모델은 맥락을 이용해 타깃 단어를 예측하거나, 반대로 타겟 단어로부터 맥락을 예측하여 단어의 의미를 학습한다.

비교

  • 데이터 처리: 통계 기반 기법은 전체 데이터 셋의 통계적 패턴을 분석하는 반면, 추론 기반 기법은 주변 단어를 사용해 개별 단어의 의미를 추론한다.
  • 성능과 정확성: 추론 기반 기법은 맥락을 기반으로 단어 의미를 학습하기 때문에, 특히 미묘한 의미의 차이를 포착하는 데 더 효과적일 수 있다. 반면, 통계 기반 기법은 대량의 데이터를 처리하고, 전체적인 의미 구조를 포착하는 데 강점을 가진다.
  • 계산 복잡성: 통계 기반 기법은 종종 높은 차원의 데이터를 다루기 때문에 계산 비용이 높을 수 있다. 추론 기반 기법은 최적화된 알고리즘을 통해 효율적인 학습이 가능하다.

   두 접근 방식은 서로 보완적이며, 특정 NLP 문제의 요구 사항과 데이터의 특성에 따라 적절한 방식을 선택하는 것이 중요하다. 최근에는 두 기법의 장점을 결합한 하이브리드 모델도 등장하고 있다.

더보기

1. 학습측면에서 차이

  • 통계 기반: 말뭉치 전체 통계로부터 1회 학습
  • 추론 기반: 말뭉치를 일부분씩 여러 번 보면서 학습(미니배치 학습) à 말뭉치에 추가할 새 단어가 생긴다면? 추론 기반 기법(word2vec) 우세

2. 분산 표현의 성격, 정밀도 차이

  • 통계 기반: 단어의 유사성 표현
  • 추론 기반: 단어의 유사성+복잡한 단어 사이의 패턴 à word2vec: “king – man + woman = queen

word2vec 속도 개선

그러나, 말뭉치에 포함된 어휘 수가 많아지면 계산량도 커짐

문제 1. 가중치 W 계산 à Embedding 계층으로 Feedforward시 지정한 단어 ID 벡터 추출

    이 문제는 자연어 처리에서 단어를 벡터로 변환하는 과정을 다룬다. Embedding 계층은 단어의 ID를 받아 해당하는 단어 벡터를 추출하는 역할을 한다. 이 과정에서 가중치 행렬 (W)는 각 단어 ID에 해당하는 벡터를 저장하는 역할을 한다. 단어 ID가 입력으로 주어지면, Embedding 계층은 가중치 행렬 (W)에서 해당 ID와 일치하는 행을 선택하여 출력한다. 이렇게 추출된 벡터는 신경망의 다음 계층으로 전달(feedforward)됩니다. 이 과정은 연산 효율성을 위해 주로 one-hot encoding 대신 사용된다.

문제 2. 다중 분류 à 네거티브 샘플링으로 이진 분류 문제로 취급

   단어 예측 문제는 기본적으로 다중 분류 문제이다. 예를 들어, 주어진 문맥에서 다음 단어를 예측하는 경우, 모델은 전체 단어 집합 중에서 가장 가능성 있는 단어를 선택해야 한다. 그러나 단어 집합의 크기가 매우 큰 경우, 이는 계산적으로 비효율적이다. 네거티브 샘플링은 이 문제를 해결하기 위한 기법으로, 전체 단어 집합 대신 소수의 '네거티브 샘플'을 무작위로 선택하여, 모델이 주어진 단어를 정확히 예측하는지와 무작위로 선택된 단어들을 거부할 수 있는지를 학습하게 한다. 이 방법으로 다중 분류 문제를 효율적인 이진 분류 문제로 변환할 수 있다.

문제 3. 시계열 데이터의 성질(패턴) 학습 어려움

    시계열 데이터는 시간의 흐름에 따라 순차적으로 발생하는 데이터이다. 주식 가격, 기상 데이터, 언어 데이터 등 다양한 분야에서 시계열 데이터를 찾아볼 수 있다. 시계열 데이터의 패턴을 학습하는 것은 여러 가지 이유로 어려울 수 있다. 우선, 시계열 데이터는 시간의 흐름에 따라 내재된 의존성(dependency)과 패턴이 있기 때문에, 이러한 패턴을 모델이 정확히 파악하는 것이 중요하다. 하지만, 단순한 신경망 구조로는 이런 시간적 의존성을 충분히 학습하기 어렵다.


참고

 

AI를 배우기 전 행렬 이론 기초

서론 AI를 배우는 데 많은 수학적 이론을 알아둬야 한다. 그 중 다른 타 수학 이론과 달리 행렬은 대한민국 교육과정에서 빠져 행렬을 정리해보았다. 벡터란? 여태까지 사용한 숫자는 스칼라이다

jinger.tistory.com

 

반응형

'컴퓨터공학 > AI' 카테고리의 다른 글

비헤이비어트리(Behavior tree) 이해  (0) 2024.07.17
인공지능 8. RNN  (1) 2024.07.07
인공지능 6. CNN  (0) 2024.04.25
인공지능 5. DNN  (1) 2024.04.19
인공지능 4. 다층 신경망  (0) 2024.04.11

댓글