자연어처리

트랜스포머를 활용한 자연어처리_1

코딩펭귄 2023. 1. 18. 23:49

- 글을 들어가기 앞서, 개발 공부를 잘하는 방법 -

 

1. 처음배울때 : 기본쌓기

2. 기본이 쌓이면 : 지식강화(다지기)

3. 주기적으로 : 역량강화 + 내가 필요한 지식들 메모하기

 

* 프로그래밍 언어나 프레임워크, 라이브러리를 배울땐 : 공식사이트가 제일 정확함 *

https://pytorch.org/docs/stable/index.html

https://docs.python.org/3.8/

https://pytorch.org/tutorials/

* git nation 의 리스트 참조 *

- 리액트 공부나 유닛테스트에 관심이있다면 Ken.C dodds 분의 블로그 참조

- 리액트 쿼리를 배우고있다면 공식문서 + Dominik dorfmeister 의 블로그 읽어보기

--> 공식문서 + 명성있는 지식인의 블로그 함께 보며 공부하기

 

 

 

트랜스포머 소개

- 트랜스포머가 등장하기전, NLP에서는 순환신경망구조 (LSTM)가 최고수준의 성능을 달성했음. 이 구조는 NLP작업, 음성처리, 시계열작업에 널리 사용되었고, 지금도 사용중.

- 자연어처리 NLP : 인공지능 모델을 활용하여 사람의 언어를 모방하는 모든 분야를 말함

- 트랜스포머 : 모델링 패러다임을 바꿈. 순환을 모두 없애고 셀프 어텐션이라는 특별한 형태의 어텐션에 전적으로 의지하게된것.(신경망의 같은층에있는 모든상태에대해 어텐션을 작동시키는 방식)

 

 

NLP의 전이학습

- 전통적인 지도학습과 비교하면, 전이학습은 다양한 작업에서 적은양의 레이블 데이터로 훨씬 효과적으로 훈련하는 높은품질의 모델을 만듬.

- 컴퓨터 비전에서는 imageNet같은 대규모 데이터셋을 이용하는 전이학습이 표준이 됐지만, NLP에서는 유사한 사전훈련을 정의하지못함. -> 2018년쯤, OpenAI 연구원들이 감성분류작업에 비지도 사전훈련에서 추출한 특성을 사용한 방식(https://arxiv.org/abs/1704.01444 )을 소개. -> ULMFit가 등장

 

 

사전훈련

- 이전단어를 바탕으로 다음단어를 예측하는것 = 언어모델링 이라고 함

- 이 작업은 레이블링된 데이터가 필요하지않으며, 위키피디아등의 풍부한 텍스트 활용

GPT 

- 트랜스포머 아키텍처의 디코더부분만 사용하고, ULMFiT같은 언어모델링 방법을 사용

BERT

- 트랜스포머 키텍처의 인코더부분을 사용하고 마스크언어 모델이라는 형태언어 모델사용

- 마스크언어 모델표는 스트에서 하게 마스어를 예측하는

 

호환되지 않는 프레임워크 사용의 문제를 해결하기위해 : 허깅페이스 트랜스포머 존재

https://github.com/huggingface/transformers

 

 

 

one-stage detections

 Retinanet

- 기존 detection알고리즘에서 classifier의 loss로 사용되던 cross entropy loss에서 변형된'focal loss' 제안함 .-> class imbalance 문제가 발생

- class imbalance : 학습시 두가지문제 야기 : 1) 대부분의sampleeasy negative, 모델이class하기sample이기문에 용한 기여를 하지못해 습이 적으로 진행됨 2) easy negative수가 도적으로 문에 습에 치는 향력커져 모델의

 

Retinanet : 하나의 backbone network와 2개의 subnetwork(각각 classification과 boudingbox regression을 수행)로 구성

 

https://arxiv.org/abs/1708.02002

https://gaussian37.github.io/dl-concept-focal_loss/

 

반드시 읽어볼 모델 논문들

R-CNN -> OverFeat -> Fast R-CNN -> Faster R-CNN -> OHEM -> YOLO v1 -> SSd ->( R-FCN) -> YOLO v2 -> Feature Pyramid Net(FPN) -> TOLO v3 -> RefineDet -> Cascade R-CNN -> M2det

 

https://github.com/hoya012/deep_learning_object_detection