머신러닝 & 딥러닝/NLP(자연어 처리) 11

[NLP] 검색 기반 질의응답에서 사용할만한 모델에 대하여?

검색 기반 질의응답에서 중요한 것은? 1. 정확성: 모델이 제공하는 답변은 정확하고 신뢰성 있어야 합니다. 사용자에게 부정확한 정보를 전달하거나 오류가 있는 답변을 제공하지 않도록 해야 합니다. 2. 문맥 이해: 모델은 질문과 관련된 문맥을 올바르게 이해해야 합니다. 질문의 의도와 문맥을 고려하지 않으면 잘못된 답변이 생성될 수 있습니다. 3. 다양한 문서 고려: 검색 기반 모델은 다양한 문서에서 정보를 검색하므로, 모델이 다양한 소스에서 문맥을 파악하고 정보를 종합할 수 있어야 합니다. 4. 문서의 신뢰도 평가: 검색된 문서의 신뢰도를 평가하여 신뢰성 있는 정보를 선별해야 합니다. 신뢰도 없는 정보로 인해 오해나 혼란을 야기하지 않도록 해야 합니다. 5. 데이터 양과 다양성: 모델을 학습시키거나 평가할..

[NLP] ResNet / BERT / InstructGPT에 관하여?

ResNet DNN은 Layer가 깊어질수록 성능이 향상 되는 특징을 가졌습니다. 하지만 layer가 깊어지면 grdiant vanishing문제가 심해지기 때문에 ResNet은 이를 해결하기 위해 Skip connection 기법을 사용했습니다. 그래서 100층이 넘는 깊은 구조가 가능해졌습니다. 그리고 ReLU를 non-inear function을 사용한 것도 gradiant vanishing 문제를 개선시킵니다. 추가적으로 ResNet은 주로 Residual Block으로 구성되어 있습니다. Residual Block은 입력과 출력 사이에 잔차(Residual)를 학습하는 부분으로, 이전 층의 출력과 새로운 특징을 더하거나 합치는 방식으로 동작합니다. ResNet을 학습시킬때는 이미지를 224 X ..

[NLP] MSE(Mean Square Error)/ CrossEntropy / BinaryCrossEntopy에 대하여?

MSE(Mean Square Error) MSE는 회귀모델에서 가장 기본적으로 사용되는 손실 함수 중 하나입니다. 이 손실 함수는 예측값과 실제값의 차이를 제곱하여 오차를 계산하고, 이를 데이터 샘플 수로 나눈 후 평균을 취합하는 특징을 가지고 있어 모델의 성능을 평가하는데 사용됩니다. MSE는 오차가 작을수록 모델의 예측이 실제 데이터에 더 잘 맞는 것을 의미합니다. 따라서 MSE는 최소화해야 하는 값으로, 더 낮은 MSE를 가진 모델일수록 더 우수한 모델로 평가됩니다. MSE는 회귀 모델에서 주로 사용됩니다. 회귀 모델은 연속적인 출력 값을 예측하는데 사용되며, 출력 값과의 오차를 측정하는 데에 MSE가 적합합니다. 그 예로 선형 회귀(Linear Regression), 다변수 회귀(Multiple ..

[NLP] Recall / Precision / F1-score and AP(Average Precision) or AUC(Area Under the Curve)에 정의와 예시

Recall / Precision / F1-score Recall(재현율)은 실제로 긍정인 데이터 중 긍정으로 예측한 비율을 말합니다. 오차 행렬을 기준으로 재현율은 TP / (FN + TP)으로 계산할 수 있습니다. 예시 : 실제 감염된 사람은 7명인데 진단키트로 6명을 잡아낼때, 재현율은 6/7입니다. Precision(정밀도)은 예측을 긍정으로 한 데이터 중 실제로 긍정인 비율을 말합니다. 오차 행렬을 기준으로 정밀도는 TP / (FP + TP)으로 계산할 수 있습니다. 예시 : 코로나 진단키트로 8명이 나왔을 때, 실제로 확진판정을 받은 사람이 6명이라면 정밀도는 6/8입니다. F1-score은 정밀도와 재현율 한 쪽에 치우치지 않고 둘 다 균형을 이루는 것을 나타낸 것입니다. F1은 (2 * p..

[NLP] 일본어 자연어 처리할 때 주의해야 할 점과 사용하는 도구

일본어가 영어에 비해서 토큰화가 어려운 이유는? 1. 형태소 분석 및 품사 태깅: 영어와 같은 공백으로 구분된 문장과 달리, 일본어 문장은 구두점이나 줄 바꿈 외에는 명시적인 구분 기호가 없기 때문에 '단어' 같은 것이 애초에 불분명하다. 따라서 형태소 분석기와 같이 툴이나 옵션 설정마다 분할되는 방법이 다릅니다. 예를 들어, 「おじいさん」을 「お、じい、さん」이라고 토큰화가 가능하기 때문에 담당 관계에 대해서도 도구마다 경향이 다릅니다. 2. 텍스트 정규화: 일본어에는 형태 변화나 발음 변화에 의한 다양한 텍스트 변형이 존재합니다. 이러한 변형을 고려하여 데이터를 정규화하는 전처리 과정이 필요합니다. 3. 문화적 차이 고려: 일본어는 문화적 차이로 인해 표현이나 의미가 달라질 수 있습니다. 이러한 문화적..

[NLP] 워드 임베딩(Word Embedding)

이번 포스팅에서는 워드 임베딩에 대하여 알아보도록 하겠습니다. 워드 임베딩(Word Embedding) 워드 임베딩(Word Embedding)은 단어를 벡터로 표현하는 방법으로, 단어를 밀집 표현으로 변환합니다. 희소 표현(Sparse Representation) 앞서 원-핫 인코딩을 통해서 나온 원-핫 벡터들은 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 벡터 표현 방법이었습니다. 이렇게 벡터 또는 행렬(matrix)의 값이 대부분이 0으로 표현되는 방법을 희소 표현(sparse representation)이라고 합니다. 원-핫 벡터는 희소 벡터(sparse vector)입니다. 이러한 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 한없이 커진다는..

[NLP] 한국어 경진 대회 Tip(Kospeech)

전 포스트에서는 대회에서 사용한 Kospeech에서 사용한 모델 Deep Speech2를 알아보았습니다. 이번에는 작년에 참가한 대회에서 현재는 학습을 다시하기에는 제약이 많지만 어떠한 변화를 주었는지에 대해 알아보려고 합니다. 대회 Tip 1. Epoch 변화주기 : Epoch 20회까지 숫자를 늘려주어서 학습을 시켰을 때 가장 train_loss, train_cer, val_loss, val_cer이 가장 낮았습니다. 그리고 20회이상 학습을 진행하니까 타임에러가 나왔고 유의미한 학습결과가 나오지 않았습니다. args = argparse.ArgumentParser() # DONOTCHANGE: They are reserved for nsml args.add_argument('--mode', type=..

[NLP] Deep Speech2 분석하기(Kospeech)

작년 8월~9월까지 한국어 AI경진대회 네이버 CLOVER 부분에 본선에 진출을 하여 주요 영역별 회의 음성인식 성능향상을 위하여 모델을 개선을 하였습니다. 아래 포스트는 Kospeech 분석 및 대회를 위해서 어떤 개선사항이 있었는지 적어볼려고 합니다. Kospeech란? https://github.com/sooftware/kospeech GitHub - sooftware/kospeech: Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition leveraging PyTorch and Hydra Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition levera..

[NLP] 한국어 자연어 처리 관점에서 RNN이란?

RNN(Recurrent Neural Network)이란? RNN : 피드 포워드 신경망 같이 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향한 신경망 들은 피드 포워드 신경망(Feed Forward Neural Network)이라고 합니다. 그와는 다르게 RNN(Recurrent Neural Network)은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고있습니다. 위의 그림에서는 x는 입력층의 입력 벡터, y는 출력층의 출력 벡터입니다. 실제로는 편향 b도 입력으로 존재할 수 있지만 앞으로의 그림에서는 생략합니다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를..

[NLP] 한국어 텍스트 전처리 과정(2)

한국어 자연어 처리에 필요한 전처리 과정 1. 한국어에서 정수 인코딩하기 : 한국어에서 정수 인코딩은 자연어 처리 과정 중 하나로, 각 단어를 고유한 정수로 매핑하는 과정입니다. 이를 통해 모델이 텍스트 데이터를 처리하고 예측하는 데 용이해집니다. 정수 인코딩을 수행하기 위해서는 먼저 텍스트 데이터에 대해 토큰화와 같은 전처리 과정이 필요합니다. 이후, 각 단어에 고유한 인덱스를 부여하는 방법으로 정수 인코딩을 수행합니다. 가장 간단한 방법은 파이썬의 기본 자료형인 dict를 이용하여 단어와 인덱스를 매핑하는 것입니다. 아래는 예시 코드입니다. # 예시 문장 text = "나는 자연어 처리를 배운다" # 문장을 띄어쓰기로 토큰화 tokens = text.split() # 단어에 고유한 정수 인덱스 부여 ..