미래내일일경험 - 빅리더(23.06~23.12)/교육

[스터디챌린지] ICT융합대학 스터디 챌린지 7주차(8/12 ~ 8/18)

NINE1ll 2023. 8. 18. 19:30

사실 문제 선지 4개가 제일 헷갈렸던 문제입니다. 

  1. 등장 빈도가 적은 단어 제거: 텍스트 데이터에서 특정 단어가 매우 적게 등장한다면, 그 단어는 분석에 큰 영향을 미치지 않을 가능성이 높습니다. 이러한 단어를 제거함으로써 데이터의 크기를 줄이고 계산 효율성을 높일 수 있습니다.
  2. 길이가 짧은 단어 제거: 길이가 짧은 단어(예: "a", "an", "the" 등)는 종종 노이즈로 작용할 수 있으며, 분석에 큰 의미를 가지지 않을 수 있습니다. 이러한 단어를 제거하면 분석의 정확성을 높일 수 있습니다.
  3. 대소문자 구분: 대소문자 구분은 텍스트 정제 작업에 일반적으로 포함되지 않습니다. 대소문자 구분은 분석의 목적과 데이터의 특성에 따라 선택적으로 적용될 수 있으며, 일반적인 텍스트 정제 작업과는 직접적인 관련이 없습니다.
  4. 어간 추출: 어간 추출은 단어의 기본 형태를 찾기 위해 접사나 변형을 제거하는 과정입니다. 이 작업은 텍스트 데이터를 정제하고 표준화하는 데 중요한 역할을 하며, 텍스트 분석에서 자주 사용됩니다

라고 합니다. 문제가 출제가 애매모호하게 되긴 한 것 같습니다.

LSTM (Long Short-Term Memory)은 RNN (Recurrent Neural Network)의 한 종류로, 긴 시퀀스 데이터에서 장기 의존성 문제를 해결하기 위해 설계되었습니다. LSTM 셀은 각 시간 스텝에서 두 가지 상태를 출력합니다:

  1. 은닉 상태 (Hidden State): 이 상태는 LSTM 셀의 출력으로 간주되며, 다음 레이어로 전달되거나 다음 시간 스텝의 해당 LSTM 셀로 다시 전달될 수 있습니다.
  2. 셀 상태 (Cell State): 이 상태는 LSTM 셀의 내부 메모리로, LSTM의 핵심 요소 중 하나입니다. 셀 상태는 LSTM 셀 간에 전달되며, 정보를 장기간 유지할 수 있도록 도와줍니다.

LSTM 셀은 이 두 상태를 업데이트하기 위해 여러 게이트를 사용합니다: 입력 게이트, 삭제 게이트, 및 출력 게이트. 이 게이트들은 셀 상태와 은닉 상태를 어떻게 업데이트 할지 결정합니다.

사실 히든만 기억이 나고 셀인지 임베딩인지 모르겠어서 찍은 문제입니다. 하하 마지막까지 셀상태가 2개 있는데 셀상태로 찍을까 고민한던 문젠데 틀리니 아쉽지만, 개념을 다시 정리하고 넘어가서 좋습니다.

BERT (Bidirectional Encoder Representations from Transformers)는 2018년에 Google에서 발표된 자연어 처리 (NLP) 모델로, 문맥을 기반으로 단어의 표현을 얻기 위해 양방향 Transformer 인코더를 사용합니다. BERT는 많은 NLP 작업에서 최첨단 성능을 달성했으며, 그 이후로 NLP 분야에서의 딥러닝 기반 접근법에 큰 영향을 주었습니다.

BERT의 주요 특징은 다음과 같습니다:

  1. 양방향성: 기존의 많은 언어 모델들은 단방향 (왼쪽에서 오른쪽 또는 그 반대)으로 텍스트를 처리했습니다. BERT는 양방향 Transformer를 사용하여 주어진 단어 주변의 모든 단어 (왼쪽과 오른쪽)를 동시에 고려합니다.
  2. 전이 학습: BERT는 두 단계의 학습 전략을 사용합니다. 첫 번째는 대규모 텍스트 데이터셋에서 BERT를 사전 훈련하는 것이고, 두 번째는 특정 작업에 대한 미세 조정을 통해 BERT를 최적화하는 것입니다.
  3. Masked Language Model (MLM) 사전 훈련: BERT의 사전 훈련 중 하나는 MLM 작업을 통해 수행됩니다. 이때 일부 단어가 마스크 처리되고, 모델은 마스크된 단어를 예측하려고 시도합니다.
  4. 다양한 크기의 버전: BERT는 다양한 크기로 제공됩니다 (예: BERT-Base, BERT-Large 등). 이를 통해 연구자와 개발자는 자원과 성능 사이에서 균형을 맞출 수 있습니다.

BERT는 NLP 작업의 범위를 확장하고, 모델을 미세 조정함으로써 다양한 작업에 적용할 수 있는 범용 모델을 제공함으로써, 자연어 처리 분야에 혁명을 가져왔습니다.

사실 양방향성에 초점을 맞추면 RNN, BERT 둘다 가능하지 않나..? -> 이게 양뱡향 RNN (Bi-RNN)이라고 언급이 안되어있어서 인 것 같습니다.

제가 선택한 n-gram을 설명하고,

N-gram은 연속된 n 개의 단어나 문자로 구성된 연속적인 항목 시퀀스를 나타냅니다. N-gram은 텍스트 데이터를 처리하거나 모델링할 때 문맥을 부분적으로 포착하기 위해 사용되는 기법 중 하나입니다.

N-gram의 예시:

  • 1-gram (Unigram): 각각의 단어나 문자를 독립적인 항목으로 간주합니다. 예: "I love cats" -> "I", "love", "cats"
  • 2-gram (Bigram): 연속된 두 개의 단어나 문자를 항목으로 간주합니다. 예: "I love cats" -> "I love", "love cats"
  • 3-gram (Trigram): 연속된 세 개의 단어나 문자를 항목으로 간주합니다. 예: "I love cats" -> "I love cats"

N-gram의 주요 특징 및 용도:

  1. 문맥 포착: N-gram은 단어나 문자의 순서를 일부 포착할 수 있습니다. 이를 통해 문장 내에서의 단어나 문자의 상대적인 위치와 관계를 고려할 수 있습니다.
  2. 텍스트 모델링: N-gram은 언어 모델링에서 자주 사용됩니다. 주어진 단어나 단어 시퀀스 다음에 어떤 단어가 올 확률을 예측하는 데 사용될 수 있습니다.
  3. 텍스트 마이닝: N-gram은 텍스트 분류, 감성 분석, 검색 엔진 등의 텍스트 마이닝 작업에서 특성으로 사용될 수 있습니다.

그러나 N-gram은 다음과 같은 한계점도 가지고 있습니다:

  • 높은 차원: N의 값이 크면 생성된 N-gram의 수도 많아져 희소성 문제가 발생할 수 있습니다.
  • 부분적인 문맥 포착: N-gram은 n 개의 단어나 문자의 지역적인 문맥만 포착할 수 있으며, 더 넓은 문맥을 포착하기 위해서는 더 큰 N 값을 선택해야 합니다.

N-gram은 BoW와 함께 사용되어 문맥을 일부 포착하면서도 텍스트를 수치화할 수 있는 방법을 제공합니다.

이후 정답인 BOW를 보겠습니다. 

단어들의 순서를 전혀 고려하지 않고, 단어들의 출현빈도에만 집중하는 텍스트의 데이터 수치화 표현방법은 "Bag of Words" (BoW) 모델입니다.

BoW는 다음과 같은 특징을 가집니다:

  1. 순서 무시: BoW는 문장 또는 문서의 단어 순서를 고려하지 않습니다. 따라서 "그는 나에게 왔다"와 "나는 그에게 갔다"는 동일하게 표현됩니다 (동일한 단어들을 포함하고 있기 때문에).
  2. 단어의 빈도: 각 단어의 출현 횟수 (빈도)를 기록합니다. 이 빈도는 특정 문장 또는 문서에 대한 특성 벡터의 요소로 사용됩니다.
  3. 고차원: 일반적으로 전체 어휘 (데이터셋에 있는 모든 고유 단어)의 크기와 같은 크기의 벡터를 생성합니다. 따라서 대부분의 요소는 0이 될 수 있어, 이러한 벡터를 희소 벡터(sparse vector)라고 합니다.

BoW는 매우 단순한 텍스트 표현 방법이지만, 초기의 자연어 처리 작업에서 널리 사용되었습니다. 그러나 단어의 순서와 문맥을 무시하기 때문에, 더 발전된 텍스트 표현 방법들 (예: Word2Vec, BERT)이 인기를 얻게 되면서 BoW는 복잡한 NLP 작업에는 덜 사용되게 되었습니다.

RNN은 텍스트 분류 문제를 해결할 때 "다:1" 구조를 사용합니다. 여기서 "다"는 입력 텍스트의 단어 시퀀스를 나타내며, "1"은 해당 텍스트의 전체적인 분류 레이블 또는 결과를 나타냅니다.

RNN을 사용한 텍스트 분류의 기본 아이디어는 다음과 같습니다:

  1. 시퀀스 처리: RNN은 시퀀스 데이터를 자연스럽게 처리할 수 있습니다. 텍스트 분류에서는 문장이나 문서를 단어의 시퀀스로 간주하고, RNN은 이 시퀀스를 처음부터 끝까지 처리합니다.
  2. 마지막 상태의 정보 활용: 텍스트의 각 부분 (단어나 문자)을 처리할 때, RNN은 내부 상태를 업데이트합니다. 텍스트 분류 문제에서는 통상 RNN의 마지막 상태만 사용하여 전체 텍스트의 의미나 내용을 요약합니다. 이 마지막 상태는 텍스트의 모든 정보를 포함하도록 설계되었기 때문에, 이를 사용하여 텍스트의 전체적인 분류 레이블을 예측하는 데 적합합니다.
  3. 분류 레이어: RNN의 마지막 상태는 완전 연결 레이어 (Dense Layer)를 통과하여 텍스트의 분류 레이블을 예측합니다. 예를 들어, 긍정/부정 레이블을 예측하는 감정 분석 작업에서는 마지막 레이어의 활성화 함수로 softmax를 사용하여 각 레이블에 대한 확률을 출력할 수 있습니다.

따라서 RNN은 텍스트 분류 문제에서 "다:1" 구조를 사용하여 전체 텍스트 시퀀스를 하나의 결과 레이블로 매핑합니다.


8월 15일 화요일, 드디어 백준 골드를 달성했습니다. 생각보다 티어가 빠르게 올라가더라고요. 사실 생각보다 빠르게 올라간다는 말보다는

그냥 많이 풀었다가 정답인 것 같아요. 6월 26일날 55문제에서

8월 15일 화요일부로 200문제를 달성했습니다. 145문제를 50일만에 풀었습니다. 하하 진짜 정말 많은 것을 했는데 풀다보니까 조금씩 이 문제는 이렇게 풀어야겠다라는게 조금씩은 보이기 시작한다고 해야하나?

원하는 티어도 달성했고 하니, 지금부터 차근차근 알고리즘 공부를 하는게 좋을 것 같습니다. 아직 dfs, bfs도 힘들고 부르트포스를 잘 푸냐고 물어보면 그것도 아닌 것같고요, DP를 잘 다루냐고 물어보면 그것도 아니라 아마 내년 하반기에는 공채를 준비해야하니, 차근차근 알고리즘 개념을 채우면서 문제를 꾸준히 풀어야겠습니다.