LearnRun

[KT AIVLE 3기] 9주차 후기 - 언어지능 딥러닝 본문

KT AIVLE 3기/Weekly Report

[KT AIVLE 3기] 9주차 후기 - 언어지능 딥러닝

PROMPT_ 2023. 4. 1. 23:12

◈  Contents

     

    본 게시글은 AIVLE 기자단 활동의 일환으로 작성되었습니다.

     

    언어지능 딥러닝

    이번 주에는 김정훈 강사님과 함께합니다.

    정말 들으면서도 강의 흡입력이 엄청나서 감탄했습니다.

    제스쳐부터 말의 높낮이, 강조 등등 그냥 입 떡 벌리고 보게 될 뿐.. bb

     

     

    텍스트 전처리

    신경망 모델은 데이터의 품질에 매우 민감합니다. 

    텍스트 데이터에는 오타, 노이즈, 중복, 의미없는 단어 혼입 등 다양한 문제가 발생할 수 있으며, 이를 처리하지 않으면 모델의 성능에 영향을 끼치게 됩니다.

    즉, 텍스트 전처리는 위의 문제를 개선하여 모델이 정확하고 일관된 입력을 받을 수 있도록 만드는 과정입니다.

     

    토큰화

    한국어 토큰화의 경우 형태소에 대한 이해를 기반으로 진행하게 됩니다.

    띄어쓰기에 영향을 받지 않는 언어 특성 상, 일반적으로 주어지는 입력들이 띄어쓰기를 모두 지킨다고 보기 어렵습니다.

    즉, 영어와 달리 띄어쓰기 기준으로 토큰화를 진행할 수 없고 다른 방법을 택해야 한다는 것입니다.

     

    Okt, mecab, kkma 등의 형태소 분석기를 통해 특정 품사를 추출하거나, 또는 각 형태소에 품사를 태깅하는 과정을 거칠 필요가 있습니다.

     

    불용어 처리

    자연어 처리 작업에서는 불용어(Stopwords)라고 불리는 일반적이고 의미 없는 단어들을 제거해야 합니다. 이러한 단어들은 모델 학습에 방해가 되므로 텍스트 전처리를 통해 이들을 제거합니다.

     

    불용어 리스트 참조 : https://gist.github.com/spikeekips/40eea22ef4a89f629abd87eed535ac6a#file-stopwords-ko-txt

     

    정수 인코딩

    컴퓨터는 텍스트보다는 정수를 좀 더 빠르게 잘 처리합니다.

    그래서, 산출된 텍스트를 정수로 맵핑하는 과정을 거쳐 성능을 더 키울 수 있습니다.

     

    그러나, 이 부분은 굉장히 신중하게 접근할 필요가 있었습니다.

    각 단어의 의미가 사라져, 동의어들이 다른 식별자로 분류되거나, 다의어가 같은 식별자로 뭉쳐버리는 문제가 발생하기도 합니다. 

     

    또한, OOV 문제에서도 자유롭지 못합니다.

    단어집에 없다면 별도의 다른 식별자로 리턴하거나, 단어집을 보강할 필요가 생깁니다. 

     

    OOV(Out-Of-Vocabulary) 문제
     - 자연어 처리 분야에서 발생하는 문제이며, 모델이 학습 과정에서 겪은 적 없는 단어를 처리할 때 발생합니다.
     - 학습 데이터에 없는 단어나, 오타, 특수한 용어 등이 이를 유발합니다.

     

    One-hot Encoding (원-핫 인코딩)

    인코딩 된 단어, 또는 각각의 텍스트 단어에 대해 임의의 벡터를 부여하는 행위입니다.

    여러 컬럼을 2진수 바이너리 코드로 만들던 방식의 확장이라고 생각합니다.

     

     

    텍스트 데이터의 특징 표현

    BOW (Bag of Words)

    텍스트를 단어의 출현 빈도로 표현하는 방식.

    자연어 처리에서 널리 사용되는 텍스트 데이터 표현 방법 중 하나입니다. 

    1. 단어의 순서 무시
    BoW는 문장에서 단어의 순서를 고려하지 않고, 각 단어의 출현 빈도만을 고려합니다. 
    이는 문맥 정보를 무시하고 각 단어를 독립적으로 처리하는 한계를 가집니다.

    2. 단어의 중요도 반영
    BoW에서는 빈도가 높은 단어가 더 중요하다고 가정합니다. 
    따라서 텍스트에서 자주 나타나는 단어는 더 큰 가중치를 갖게 됩니다.

    3. 단어 집합 구축
    BoW를 사용하기 위해선 텍스트 데이터에서 단어 집합을 만들어야 합니다. 
    단어 집합은 문서에서 나타나는 모든 고유한 단어의 집합을 의미합니다.

    4. 희소 표현
    대부분의 문서에서는 많은 단어가 나타나지 않으므로 BoW 표현은 희소한 벡터 형태가 됩니다. 
    이러한 희소성은 저장과 연산에서 문제를 발생시킬 수 있습니다.

     

    TF-IDF (Term Frequency-Inverse Document Frequency)

    정보 검색 및 텍스트 분석에서 널리 사용되는 텍스트 데이터 표현 방법 중 하나입니다. 

    1. 단어의 중요도 반영
    단어의 출현 빈도와 역문서 빈도(Inverse Document Frequency)를 고려하여 단어의 중요도를 반영합니다. 
    빈도가 높으면서 동시에 여러 문서에 나타나는 단어는 더 낮은 가중치를 받습니다.

    2. 문서 간 비교 용이
    각 문서를 벡터로 표현하면, 문서 간 유사성을 계산하기 쉽습니다. 이를 통해 문서 검색, 분류, 군집화 등 다양한 자연어 처리 작업에 활용할 수 있습니다.

    3. 불용어 제거
    무의미한 단어들은 TF-IDF 계산 시 제외됩니다. 이로 인해 중요한 단어에 더 집중할 수 있습니다.

    4. 희소성 완화
    BoW와 달리 희소성 문제를 완화하고, 문맥과 의미를 일부 보존합니다.

     

    순환 신경망 및 변형 모델

    RNN

    출처 : https://commons.wikimedia.org/wiki/File:Recurrent_neural_network_unfold.svg

    RNN은 현재 시점의 입력 벡터와 이전 시점의 출력 벡터를 합산하여 현재 시점의 출력을 계산합니다.
    해당 과정은 시퀀스의 각 단계에서 반복됩니다. 즉, 이전 정보를 현재 정보에 반영하므로, 짧은 시퀀스나 간단한 문제에는 잘 작동하지만, 장기적인 의존성을 학습하기 어려운 "그래디언트 소실" 문제가 발생할 수 있습니다.

     

    LSTM

    출처 : https://commons.wikimedia.org/wiki/File:Long_Short-Term_Memory.svg

    LSTM은 RNN의 단점(그래디언트 소실)을 극복하기 위해 개발된 변형된 순환 신경망 아키텍처입니다. 

    장기적인 의존성을 쉽게 학습할 수 있고, 기울기 소실 문제를 해결하기 위한 디자인이 있습니다.

     

     

    마치며..

    이미지보다 훨씬 덜 직관적이라, 이해가 어려웠습니다.

    언어라는 것 자체가 복잡한 탓도 있고, 다의어나 어려운 문법 규칙들을 내포하기에 더욱 그런 것 같습니다.

     

    심지어 이해를 하더라도, 성능을 어떻게 더 올릴 수 있는지에 대해서 많은 고민이 따르게 됩니다.

    문맥을 고려하거나, 상황별로 문장을 다르게 이해할 필요가 있는 경우에 대해서는 더욱 고생을 했습니다.

     

    실습의 경우 난이도가 그렇게 높지 않았으나, 여타 캐글 프로젝트를 비슷하게 재현하려 했을 때에는 벽을 좀 느꼈습니다.

    미니프로젝트 4차에서 좋은 성적을 받을 수 있도록, 열심히 노력해보겠습니다.

     

    ‌ ‌ ‌
    Comments