개발/NLP
[NLP] 파이토치와 구글 코랩으로 배우는 BERT 입문 1장
케이비이
2024. 4. 2. 23:34
용어 정리
- 인공지능>머신러닝>딥러닝
- 신경망 : 단순한 기능만 가진 뉴런이 층을 이루어, 층 사이에서 연결이 수행되는 것을 통해 형태가 만들어진다.
- 딥러닝 : 많을 층을 가진 깊은 신경망을 사용해 학습한다.
- 층의 수가 많아질수록 표현련은 향상하지만, 학습은 어려워진다.
- 역전파(back-propagation) : 신경망에서 한 층씩 거슬러 올라가도록 오차를 전파시켜 기울기를 계산 및 그 기울기에 기반해 매개변수를 갱신한다.
자연어 처리 개념
- 자연어 처리 : 컴퓨터가 사람의 자연어를 이해하는 것을 목적으로 한다.
- DeepL : 일상언어의 미묘한 뉘앙스까지 번역할 수 있다.
- 형태소 분석 : 자연어를 형태소로 분할하는 것
word2vec
- 단어를 벡터화(=텍스트를 숫자화하기)하고, 유사도가 높은 단어를 찾거나, 단어끼리 연산을 수행한다.
- 원핫인코딩: 각 단어를 1과 0으로 구성된 벡터로 나타낸다.
- 분산 표현을 작성할 수 있다. (단순한 수치가 아닌 연관성을 나타낸 벡터)
- CBOW, skip-gram 신경망을 사용한다.
- CBOW : 전후 단어로부터 대상 단어를 예측할 수 있도록 분산 표현을 작성한다.
- skip-gram : 어떤 단어로부터 전후 단어를 예측한다. 학습 시간이 길지만 정확도가 높다.
RNN (순환 신경망)
- 시계열 데이터를 입력으로 받을 수 있다.
- 다음 단어나 문장을 예측하도록 학습시키면 문장을 자동으로 생성할 수 있다.
- 단점
- 장기 기억을 유지할 수 없다. -> LSTM, GRU가 보완할 수 있다.
- 동시에 여러 데이터 입력을 처리하는 병렬처리가 뛰어나지 않다.
- 중간층이 루프를 도는 구조
- 문제점 : 기울기 폭발, 기울기 소멸
Sez2Seq
- 시퀀스를 받아 다른 계열로 변화하는 모델
- 구성 : 인코더, 디코더(RNN으로 구현됨)
- 시계열 데이터를 다른 시계열 데이터로 변환할 수 있다.
트랜스포머
- 시계역 데이터를 처리하며 어텐션 층만 사용한다.
- 병렬 처리에 용이해 대량의 데이터를 빠른 속도로 처리할 수 있다.
- 인코더의 구조
- 임베딩층 : 인코더는 해당 층에서 입력 문장을 벡터로 압축한다.
- 포지셔널 인코딩층 : 위치 정보를 추가한다. (문장 안에서의 위치)
- 멀티헤드 어텐션층 : 여런 어텐션 처리를 동시에 병렬로 수행할 수 있다.
- 정규화 등
- 순방향 신경망
BERT
- 구글에서 발표한 새로운 딥러닝 모델이다.
- 트랜스포머를 기반으로 파인 튜닝(훈련 완료한 모델을 각 태스크에 맞춰 조정하도록 훈련)을 사용한다. + 양방향
- 사전 학습
- 사전에 범용적인 모델을 훈련시켜 둔다.
- 시간이 오래 걸린다.
- 양방향 학습 : 트랜스포머가 문장을 앞에서 뒤로, 뒤에서 앞으로 학습한다.
- 마스크 언어 모델 : 문장에서 특정한 단어를 무작위로 15%가량 선택해 [MASK] 토큰으로 치환한다.
- 다음 문장 예측 : 2개의 문장의 관계성 여부를 판정하도록 학습한다.
- 2개의 문장의 뒤쪽 문장을 50% 확률로 관계없는 문장으로 치환
- 의미적으로 연결O : IsNext
- 의미적으로 연결O : NotNext
- 2개의 문장의 뒤쪽 문장을 50% 확률로 관계없는 문장으로 치환
- 파인 튜닝
- 사전 학습을 통해 얻어진 매개변수를 초기값으로 설정한다.
- 라벨(=정답 데이터)을 붙인 데이터로 추가로 학습을 수행한다.
- 토큰
- [CLS] : 문서의 시작
- [SEP] 문장 사이에 간격을 넣기 위해