23.02.02 과제4 - Augmentation

류소리·2023년 2월 2일
0

4차 과제

목록 보기
2/6

Klue란

출처 : http://www.kbanker.co.kr/news/articleView.html?idxno=98914

  • KLUE란 한국어 자연어 이해 평가 데이터셋(Korean Language Understanding Evaluation Benchmark)의 약자로, 한국어 언어모델의 공정한 평가를 위한 목적으로 8개 종류(뉴스 헤드라인 분류, 문장 유사도 비교, 자연어 추론, 개체명 인식, 관계 추출, 형태소 및 의존 구문 분석, 기계 독해 이해, 대화 상태 추적)의 한국어 자연어 이해 문제가 포함된 데이터 집합체이다.

텍스트 데이터 증식(논문, 설명)

출처 : https://fish-tank.tistory.com/95

  • Data Augmentation
      1. 학습데이터가 부족해서 데이터를 늘리거나
      1. 불균형데이터의 레이블들의 균형을 잡아주기 위하여 진행하곤 한다.
  • 2019년 EMNLP에서 발표된 논문을 참고하자.
    • "Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks"

손쉬운 데이터 확대

손쉬운 데이터 증대는 전통적이고 매우 간단한 데이터 증대 방법을 사용합니다. EDA는 오버피팅을 방지하고 보다 견고한 모델을 훈련시키는 데 도움 이 되는 놀랍도록 훌륭한 작업을 수행하는 네 가지 간단한 작업 으로 구성됩니다.

1. 동의어 교체 (SR)

불용어가 아닌 문장에서 무작위로 n개의 단어를 선택합니다. 이러한 각 단어를 무작위로 선택한 동의어 중 하나로 바꿉니다.

  • 예를 들어 다음과 같은 문장이 주어집니다.
    이 기사 는 NLP의 데이터 증대 기술 을 요약하는 데 중점을 둘 것 입니다.
    이 방법은 n개의 단어(예: 2개), 기사 및 기술 이라는 단어를 무작위로 선택 하고 각각 쓰기 및 방법 으로 바꿉니다 .
    이 글 은 NLP의 데이터 증대 방법 을 요약하는 데 중점을 둘 것 입니다.

2. 임의 삽입 (RI)

정지 단어가 아닌 문장에서 임의의 단어의 임의 동의어를 찾습니다. 해당 동의어를 문장의 임의의 위치에 삽입합니다. 이 작업 을 n 번 수행합니다.

  • 예를 들어 다음과 같은 문장이 주어집니다.
    이 기사 는 NLP의 데이터 증대 기술 을 요약하는 데 중점을 둘 것 입니다.
    이 방법은 n개의 단어(예: 2개)를 무작위로 선택하고 기사 및 기술 이라는 단어는 각각 쓰기 및 방법 과 같은 동의어를 찾습니다 . 그런 다음 이러한 동의어가 문장의 임의의 위치에 삽입됩니다.
    이 기사는 NLP 방법 의 데이터 증대 기술을 요약 하는 글 에 중점을 둘 것 입니다.

3. 랜덤 스왑 (RS) ✔️추천

문장에서 무작위로 두 단어를 선택하고 위치를 바꿉니다. 이 작업 을 n 번 수행합니다.

  • 예를 들어 주어진 문장
    이 기사 는 NLP의 데이터 증대 기술 을 요약하는 데 중점을 둘 것 입니다.
    이 방법은 n개의 단어(예: 2개), 기사 및 기술 이라는 단어를 무작위로 선택 하고 교체하여 새 문장을 만듭니다.
    이 기술 은 NLP에서 데이터 증대 문서 를 요약하는 데 중점을 둡니다 .

4. 임의 삭제 (RD) ✔️추천

확률 p 로 문장의 각 단어를 무작위로 제거합니다.

  • 예를 들어 주어진 문장
    이 기사 는 NLP의 데이터 증대 기술 을 요약하는 데 중점을 둘 것 입니다.
    이 방법은 n개의 단어(예: 2개), 단어 will 및 techniques 를 선택하고 문장에서 제거합니다.
    이것 기사 는 NLP의 데이터 증대를 요약하는 데 중점을 둡니다.
    이러한 기술을 프로젝트에 적용하려면 이 저장소 로 이동할 수 있습니다 .

  • 이를 한국어용으로 코드구현을 한 좋은 자료가 있어 아래 깃허브를 함께 올린다 !
    출처 : github.com/catSirup/KorEDA/blob/master/eda.pygithub.com/catSirup/KorEDA/tree/master


NLP 데이터 증대를 수행하는 동안 명심해야 할 사항

: 증강 데이터로 훈련할 때 직면 하는 주요 문제는 알고리즘이 잘못 수행될 때 증강 훈련 데이터를 지나치게 과적합한다는 것입니다.

👌명심해야 할 몇 가지 사항:

    1. 증강 데이터를 사용하여 검증하지 마십시오.
    1. K-폴드 교차 검증을 수행하는 경우 과적합을 방지하기 위해 항상 원래 샘플과 증강 샘플을 같은 폴드에 유지하십시오.
    1. 항상 다른 확대 방법을 시도하고 어떤 것이 더 잘 작동하는지 확인하십시오.
    1. 다양한 증강 방법을 혼합하는 것도 좋지만 과용하지 마십시오.
    1. 최상의 결과를 얻기 위해 증가시킬 최적의 샘플 수를 결정하기 위해 실험하십시오.
    1. NLP의 데이터 증대가 항상 모델 성능 향상에 도움이 되는 것은 아닙니다.

텍스트 데이터 다루기

출처 : https://soohwan-justin.tistory.com/65

  • 이번에는 텍스트, 시계열 또는 일반적인 시퀀스 데이터를 처리할 수 있는 딥러닝 모델에 대해 알아봅니다.
  • 시퀀스 데이터를 처리하는 기본적인 딥러닝 모델은 순환 신경망1D 합성곱 신경망 이렇게 2가지입니다.

1) 백터화

: 딥러닝 모델은 수치형 텐서만 다룰 수 있습니다. 따라서 텍스트도 수치형 텐서로 변환해야 하는데, 이를 텍스트 벡터화(vectorizing text)라고 합니다. 텍스트 벡터화의 방법에는 몇 가지가 있습니다.

    1. 텍스트를 단어로 나누고, 각 단어를 하나의 벡터로 변환하기.
    1. 텍스트를 문자로 나누고, 각 문자를 하나의 벡터로 변환하기.
    1. 텍스트에서 단어나 문자의 n-gram을 추출하여 각각의 n-gram을 하나의 벡터로 변환하기. n-gram은 연속된 단어나 문자의 그룹이며, 텍스트에서 단어나 문자를 하나씩 이동하면서 추출합니다.
  • 텍스트를 나누는 이런 단위(단어, 문자, n-gram)을 토큰이라고 합니다. 그리고 이렇게 텍스트를 토큰으로 나누는 작업을 토큰화(tokenization)라고 합니다. 모든 텍스트 벡터화 과정은 특정 종류의 토큰화를 적용하고, 이렇게 생성된 토큰에 수치형 벡터를 매핑하는 것으로 이루어집니다.

  • 토큰과 벡터를 매핑하는 방법에는 (1)원-핫 인코딩과 (2)토큰 임베딩(또는 단어 임베딩)이 있습니다.

2) 단어 임베딩

: 단어와 벡터를 매핑하는 또다른 방법은 단어 임베딩 입니다. 원-핫 인코딩으로 만든 벡터는 희소(sparse)하고, 차원이 매우 높습니다(사용할 단어의 수와 같습니다).

반면, 단어 임베딩은 저차원의 실수 벡터입니다(희소 벡터의 반대인 밀집 벡터입니다). 단어 임베딩은 데이터로부터 학습되며, 보통 256, 512 또는 큰 어휘 사전을 다룰때는 1024차원의 단어 임베딩을 사용합니다.

  • 단어 임베딩을 만드는 방법에는 두 가지가 있습니다.
    - 관심 대상인 문제와 함께 단어 임베딩도 같이 학습합니다. 랜덤한 단어 벡터로 시작하며, 신경망의 가중치를 학습하는 것처럼 단어 벡터도 학습합니다.
    - 다른 머신 러닝에서 사용했던 단어 임베딩을 불러와서 사용합니다. 이를 사전 훈련된 단어 임베딩(pretrained word embedding)이라고 합니다.

    3) 임베딩 층을 사용하여 단어 임베딩 학습하기

    : 단어와 밀집 벡터를 매핑하는 가장 간단한 방법은, 벡터를 랜덤하게 고르는 것입니다. 하지만 이 방법의 문제는 임베딩 공간이 구조적이지 않다는 것입니다.

  • 단어 벡터 사이에 추상적이고 기하학적인 관계를 얻기 위해서는 그 단어들 사이의 의미 관계를 반영해야 합니다. 단어 임베딩은 언어를 기하학적 공간에 매핑하는 것이므로, 비슷한 단어 끼리는 비슷한 벡터로 임베딩 되어야 합니다.

  • 일반적으로 두 벡터 사이의 L2 거리는 단어 사이의 의미 거리와 관계되어 있습니다. 즉, 비슷한 단어는 가까운 위치에 임베딩되어야 합니다.


https://kaggler-tv.github.io/dku-kaggle-class/lectures/16-data-augmentation.html -
https://neptune.ai/blog/data-augmentation-nlp - NLP의 데이터 증대: Kaggle 마스터의 모범 사례

profile
새싹 빅테이터 개발자

0개의 댓글