
BERT : Pre-training of Deep Bidirectional Trnasformers for Language Understanding BERT 모델은 Transformer의 Encoder 모델을 겹겹이 쌓아 만든 모델이다. BERT의 경우 Encoder가 매우 많기 때문에 복잡한 모델에 속한다. 때문에 일반적인 기업이나 개인이 학습하기 어렵다. 이런 이유들로 인해 BERT는 대형 기업들이 학습을 해놓은 모델을 가져다가 fine-tuning 방법으로 사용하는 것이 맞다. 위와 같이 기존에 pre-trained 된 BERT 모델을 fine-tuning하여 다양한 task에 적용시키는 것을 추천한다고 논문에서는 언급하고 있다. BERT는 다른 자연어처리 모델들이 적용하는 word embedding..

Transformer Transformer는 RNN의 단점을 개선한 Attention 기법을 활용하여 인코더와 디코더 구조를 갖추고 있으며 Attention 기법의 장점 때문에 sequence를 순차적으로 계산할 필요가 없어 계산속도가 비교적 빠르다. Transformer는 이 후 제안되는 현재 state-of-the-art 기법들인 GPT나 BERT에 큰 영향을 주었다. Transformer는 앞서 언급했듯이 인코더와 디코더로 이루어져 있는데 구조는 아래와 같다. Transformer의 Encoder Transformer의 인코더는 multi-head Attention 기법과 feed forward층으로 이루어져 있으며 residual 층도 가진다. Positional Encoding Transform..

Seq2Seq (시퀀스 투 시퀀스) seq2seq 기법은 transformer가 2017년에 제안되기 전까지 딥러닝 기계번역에서 state-of-the-art였던 기법이다. 이전까지의 기계번역 기법들보다 훨씬 큰 성능을 나타냈으며 Context Vector라는 새로운 개념의 도입으로 이 후 제안된 유명 기법 논문들에도 영향을 많이 끼치게 된다. seq2seq는 RNN 또는 LSTM을 사용하여 구현할 수 있다. 여기서는 LSTM 기반의 seq2seq라고 가정하자. seq2seq의 구조는 위 그림과 같다. 인코더에서 LSTM 한 개, 디코더에서 LSTM 한 개를 사용해 기계번역과 같은 task를 처리한다. 이 때 인코더에서는 순차적으로 sequence를 받아 내부적으로 hidden state를 누적하여 최종..

RNN RNN은 Recurrent Neural Network의 약자로 순환 신경망이라고 부르는 sequence model이다. sequence형태의 input을 받아 sequence 형태의 output을 내뱉는다. 위의 그림은 RNN의 구조이다. 왼쪽 그림은 RNN의 진짜 구조이고 오른쪽은 시간에 따라 unfold한 모습이다. RNN은 위 그림과 같이 task에 따라 one-to-many, many-to-one, many-to-many 방식으로 결과값을 조절할 수 있다. RNN의 작동방식 RNN은 입력으로 들어오는 x와 직전 시점(t-1)의 h(hidden state)의 가중치 합에 의해서 현재 시점의 hidden state를 도출하고 이를 다시 선형, 비선형 계산을 통해 결과값을 도출해낼 수 있다. t..

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 한국어의 ..