2019. 10. 25. 00:06ㆍ카테고리 없음
지금까지 트랜스포머를 배웠다. 하지만, 트랜스포머 자체를 사용하기보다는 (트랜스포머를 바탕으로) 버트 같은 model로 여러가지 태스크에 넣어 사용한다.
버트는 Pre-trained data structure. architecutre/structure에 대한 serious한 설명은 없다. 어떻게, 어떤 구조로 되어있고, 어떤 work에 사용 할 수 있는지 이야기 해보자.
여러가지 pre-trained 모델들의 특성들을 살펴보도록 한다. 개괄적으로 된 자료이기 때문에 비교 중심이다.
버트 이후에 버트의 단점을 개선한 여러 변종들이 나오고 있다. XL NET, Roberta, Distillt BERT, ALBERTA 는 BERT의 기본 골격을 가지고 수정된 Pretrained model.
파이토치버전으로 되어있는 허깅페이스 어떤 것들이고, 어떻게 쓸 수 있는지 살펴본다.
\
BERT를 바탕으로 실제로 파인튜닝해서 문서를 classify 해보도록 한다.
BERT는 단어 하나하나의 단어 Embedding을 produce 하지 않는다. (context)문장에 대한 그 단어의 embedding이다..
필요한 feature, 단어 embedding 추출할 수 있느냐 하는. BERT의 word embedding 다운스트림 웍에 넣거나 실제로 사용할 수 있다.
http://jalammar.github.io/illustrated-bert/
The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning)
Discussions: Hacker News (98 points, 19 comments), Reddit r/MachineLearning (164 points, 20 comments) Translations: Chinese (Simplified), Persian The year 2018 has been an inflection point for machine learning models handling text (or more accurately, Natu
jalammar.github.io
2018년도에 Natural Language Processing에 획기적인 모델들이 굉장히 많이 나왔다.
ELMO부터 시작해서 버트 GPT, Open AI 등.
그 중에서도 BERT 가 release 된 것이 가장 중요한 한 해 이다.
BERT를 가지고 여러 다운 스트림 태스크, 가령 NER, QA 과 등과 같은 여러 태스크에서 놀라운 정도의 성능 향상을 보였다.
NLP를 이런 pretrained model로 적용하는 RNN 이나 CNN대신에 페이퍼도 버트를 넣어서 얼마나 성능을 향상 시킬 수 있는지.
이 제목이 트랜스퍼 러닝인데, 비전이나 그런곳에서도 임베딩이나 그런곳에서 프리트레인된 그런 값을 넣고, 다른 태스크만 가져다가 쓰는..
할때마다 그 태스크에 맞는 트레인하는게 아니라, 거기에 맞는 프리트레인 된 모델을 넣어 여러 태스크에 쓸 수 있는
NLP에는 쓰기 힘들것이란 생각들이 많았는데
ELmo와 BERT가 나오면서 컨텍스쳐를 반영한 임베딩 이 가능해지면서 트랜스퍼 러닝이 엔엘피 에서 가장 핫하다
그래서 큰 데이터에서 프리트레인된 모델을 가지고 여러가지 태스크에 넣어 하는게 가능하게 되었다
버트의 특징이라고 할 수 있는건
첫째, Semi supervised 된 방법으로 트레인 된 데이터.
굉장히 큰 텍스트 (책이나 위키데이터) 를 가지고 트레인 한건데
트레인 한 목적은 랭기지 모델링 하기 위해서이다
랭기지 모델이 뭔지는. 우리가 전통적인 NLP
\우리가 어떤 문제 연쇄가 있다고 하면
이 단어 다음에 다음 단어가 나타나는 것을 예측한다고 할 때
랭기지모델링을 한다고 한다고 한다
가령 나는 이강의가 참 " 지루해 " 가 나타날 확률이 얼마나 되는지
"재밌어" 가 나타날 확률이 얼마나 되는지
어떤 단어가 나오고 다음에 특정한 단어가 나올 확률. 통계적으로 계산하는 것
엄청난 데이터에서 학습을 하면
이런 랭기지 모델을 잘 할 수 있다
이런 랭기지 모델을 하는데 얘가 아주 특별한 방법으로.. 기존에 어떤 방법도 하지 못했던
양방향에서 하도록 시도하게 되어서 성능이 좋아졌다.
Supervised 된 방법
Pretrained 된 버트를 가지고
레이블드 된 데이터를 가지고
스페시픽한 태스크를 할 수 있는데요
이게 중요한게 클래시피케이션
분류. 첫시간에 이야기했던건대
우리가 NLP은 사실 인간과 기계가 서로 커뮤니케이션 할 수 있는
의미를 읽어서 meaning 리스텍? 하는게 쉽지; 않다고 했다
그 중 하나가 클래시피케이션 으로 생각한다고 했다
텍스트가 주어졌을때 포지티브하냐 네거티브하냐
클래시파이어 만들어서
실제로 의미를 알아야지 포지티브/네거티브 아는것이죠.
그렇지만 위의 방법은 실제로 의미를 그렇게 아는것 보다는
실제로 텍스트에 나타난 패턴 스태티스틱한 패턴이나 구조를 파악해서
이런 경우에는 포지티브하고 네거티브하다 이렇게 하는거다
그래서 의미를 포착하는 방법을 클래시피- 로 하기 때문에
대부분 NLP work는 클래시피케이션 하는ㄴ것이다.
이 버트가 클래시피-할 수 있는 좋은 기제를 제공한다는 것이다
그래서 프리트레인된 버트 모델을 가지고 파인튜닝 하게 되는데
클래시파이어를 넣어서 75% 확률ㄹ호 스팸이고 25%확률로 스팸이 아니다 하는 식으로 문서를 분류하는데 직접 쓸 수 있단느 것이다
사진 (Example : Sentence Classification)
그럼 버트가 할 수 있는게 뭐냐
요즘은 크게 2가지를 한다
1. 클래시피케이션 워크
어떠한 인풋. 이런걸 넣으면, 문장
버트를 파인튜닝을하고, 심플한 RNN이나 CNN 피드포워드 뉴럴네트웍
우리가 RNN이나 CNN의 마지막 레이어에 클래시파이어 하기 위해서 붙이는.. 소프트맥스를 하기 위해서 붙이는
그냥 뉴럴 네트웍에 붙이고 나와도
어떠한 문서가 스팸이나 아니다. 하는 것들을 할 수가 있다는 것임.
구글이 배포한 버트 베이스와 버트 라지가 있다.. (2019.10.24 여기까지쓰고잠..)
또하나는 피쳐익스트렉션
특정한 단어의 고정된 임베딩값을 구하는게 아니라, 문맥에 따른 단어의 임베딩 값을 피쳐로 받는데
\엘모 버트 지피티