
CNN 기반 텍스트 분류 이전에는 이미지의 처리에서 사용되었던 CNN(Convolutional Neural Network)를 자연어처리 과업에도 가져와 사용해본다. 자연어처리 문제에서도 CNN이 사용가능한 이유는 공간의 정보를 보존하는 CNN의 장점때문인데, 자연어의 문장에서도 지역적인 정보가 텍스트안에 내재되어 있으므로 좋은 성능을 보인다. 하지만 이미지를 처리하는 과정과는 조금 다르다. 이미지에 대해서 convolutional 계산을 적용할 때는 가중치를 가진 sliding window가 왼쪽 위부터 오른쪽 아래까지 모두 훑으면서 연산을 진행한다. 하지만 텍스트가 input일 때는 임베딩 벡터 크기는 유지를 해주면서 convolutional 연산이 진행된다. 또한 N-gram처럼 문장에서 몇개의 인접..

텍스트 마이닝 텍스트 마이닝은 NLP에서 필수적으로 필요한 과정이다. 텍스트 마이닝을 통해 NLP를 처리할 수 있는 기계학습/딥러닝 모델이 수월하게 입력을 받을 수 있다. 텍스트 마이닝이란 대규모 텍스트 자료를 분석하여 가치있는 새로운 정보를 찾아내는 과정을 말한다. 이 과정에서는 통계적, 기계학습/딥러닝 기법이 모두 사용된다. 텍스트 마이닝은 우리 주변에서 많이 사용되고 있다. 보통 뉴스나 sns같은 곳에서 업로드되는 문서를 사용하는 텍스트 마이닝을 찾아볼 수 있다. 이는 소셜 미디어 분석 서비스에 속하는데 사람들이 올리는 뉴스나 짧은 게시글을 통해 감성을 분석하거나 키워드에 대한 빈도나 같이 출현한 단어를 가지고 세부사항을 분석하거나 언급량으로 관심도를 파악한다. 문서 Clustering 문서를 분류..

이번에는 기계학습을 통한 자연어처리를 배워보자. 기계학습을 사용해 자연어처리를 하는 방법은 크게 두가지가 존재한다. 당연하지만 지도학습(Supervised-learning)과 비지도학습(Unsupervised-learning)이다. 자연어처리 대부분은 분류를 통해 처리가 가능하기 때문에 지도학습을 주로 이용할 수도 있지만 군집화와 같은 비지도학습을 통해 비슷한 경향의 뉴스를 구분한다던가 할 수 있다. 자연어처리를 어떤 방식으로 처리할 것이냐를 논하기 전에 먼저 해야할 것이 존재한다. 바로 전처리이다. 문서 벡터화와 문서 유사성 어떤 문서가 있을 때 그 문서를 그대로 기계학습 모델의 input으로 넣어줄 수 없기 때문에 전처리를 통해 문서를 숫자화하고 형식에 맞는 Input으로 변화시켜줘야 한다. 이 과정..

규칙 & 패턴 기반 자연어처리 개체명 인식 (Named Entity Recognition, NER) 누가, 무엇(누구)을, 언제, 어디서, 얼마나... 등등 와 같은 핵심적인 의미를 가진 정보 NER은 정보 추출에서 매우 중요한 기초이다. 개체명 카테고리로는 사람, 기관, 상품, 지역, 이슈, 법, 언어 등등 매우 많은 카테고리를 가진다. 개체명 태깅 기법 BIO(Beginning-Inside-Outside) 태깅 위처럼 어떤 뉴스의 일부를 BIO 태깅하면 개체명의 시작하는 부분과 개체명 내부 부분, 개체명이 아닌부분으로 나눌 수 있다. B나 I 뒤에 오는 것은 카테고리이다. 구문 분석 (Syntax Analysis) 언어별 문법과 lexicon(어휘의 품사/속성이 담긴 사전)에 기반하여 문장의 구문 구..

NLP(Natural Language Processing) 개요 컴퓨터가 인간의 언어를 이해, 생성, 조작할 수 있도록 해주는 인공 지능(AI)의 한 분야이다. NLP는 검색, 기계번역, 챗봇, 질의응답(QA), 문서분류, 대화형 인터페이스 등등의 많은 분야에 활용된다. 현재에는 많은 기업에서 NLP를 사용한 서비스 구축으로 편리하게 많은 비용을 절감하고 있다. NLP의 목표는 다음과 같다. - 인간의 언어로 디지털 디바이스(SW, HW)와 interaction하여 원하는 task를 수행. - 자연어로 된 대량의 컨텐츠를 분석하여 business insight 획득. NLP의 Input과 Output Input : 음성 or 텍스트 Output : Task가 완료된 State or Answer 한국어의 ..

R-CNN은 현대의 Object Detection 기법의 시초격으로 최근에 제안되는 알고리즘에도 영향을 끼치고 있다. 당시 Object Detection 문제의 정확도와 속도를 획기적으로 향상시켰다. R-CNN 모델 원리 R-CNN은 위의 그림과 같은 순서로 구조를 가진다. 1. 먼저 Object Detection Task를 처리할 이미지를 Input으로 받는다. 2. Selective Search 알고리즘을 통해 2000개의 Region Proposal을 뽑는다. 3. 모든 Region proposal 박스들을 227 x 227 사이즈로 resize(warp)한다. (기존의 박스에 대한 비율은 고려하지 않고 진행) 4. ImageNet 데이터셋에 대해 학습해놓은 CNN구조에 입력으로 통과시킨다. 5. ..

인공신경망 (ANN) 인공신경망은 은닉층이 적은 neural network 알고리즘에서 은닉층의 개수가 많아 깊어지는 neural network를 의미한다. 머신러닝에서 배운 Linear Regression(회귀)과 Logistic Regression(분류)는 은닉층이 없는 neural network로 구현이 가능하다. NN의 구조 및 구조 해석 NN의 구조는 keras에서 Dense로 불리는 완전연결층을 갖는다. 이전 layer의 노드들과 다음 layer의 노드들이 모두 연결되어 있기에 완전연결이라고 한다. 노드들의 간선에는 W라는 가중치가 존재하여 노드가 갖는 값(feature)에 선형적인 연산이 포함되게 된다. 이때 노드로 표시되지는 않지만 bias라는 편향이 노드가 하나 더 있는 것처럼 작용한다...

Shapley Values (shap) Shapley values는 모델이 예측한 값이 평균과 비교했을 때 어떤 변수들이 감소 또는 증가하도록 기여했는지(회귀, 0 ~ 1 사이의 확률에서 감소 또는 증가하도록 기여했다면 분류) 계산하는 방법이다. 기여도 계산 기여도를 계산하는 방법은 기여도 계산을 원하는 변수를 제외한 모든 feature들의 포함여부에 따라 모든 경우의 수를 뽑고 각각의 경우의 수에 대해서 기여도 계산을 원하는 변수가 포함되었을 때와 포함되지 않았을 때의 예측값의 차이를 계산한다. 이후 이 예측값들의 평균을 구한 것이 해당 변수가 모델이 예측한 값에 대한 기여도가 된다. 예를 들어, 아래와 같은 집값 계산 모델과 데이터가 있다고 가정해보자. 위와 같은 데이터에서 반려동물 허용 변수에 대해..

PDP (Partial Dependence Plot) PDP는 어떤 모델이 예측값을 내보내는데 관심 feature의 값이 변화할 때 그 예측값에 얼마나 영향을 주는지 알 수 있도록 하는 시각화 방법이다. 예를 들어, boston 데이터(다양한 feature들로 집값 예측)에서 rm(방 수)가 예측값에 어떻게 영향을 미치는지 알고 싶을 때 사용할 수 있다. rm을 변경하면서 예측하는 것이 가장 간단한 방법인데 다른 수치형 변수나 범주가 많은 범주형 변수에 대해서도 그 값들을 모두 변경해보면서 예측할 수 있다. 작동 원리 PDP가 작동할 때 함수 내부에서는 위와 같은 데이터에서 rm을 변경하면서 예측값을 뽑아낸다. rm이 될 수 있는 값은 8.704, 6.216, 8.259이므로 모든 행 데이터에 대해서 r..

실제 세계에서는 데이터가 고르게 분포해있지 않다. 물론 모델링할 때 ground truth에 해당하는 class값도 마찬가지이다. classification 과업에 대해서 모델링을 진행할 때 각 class에 대해서 개수의 차이가 극명하다면 개수가 많은 class 위주로 패턴을 학습할 것이다. 이는 개수가 적은 class에 대해서는 학습이 잘 이뤄지지 않아 예측단계에서 큰 오차를 보일 가능성이 높다. SMOTE SMOTE란, Synthetic Minority Over-sampling Technique의 약자인데 적은 class에 대해서 over sampling을 수행해 class별 개수를 맞춰주는 역할을 한다. SMOTE가 필요한 데이터는 일반적으로 정확도(accuracy)는 높지만 재현율(recall)이..