| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- UI
- rpc
- listen server
- attribute
- local prediction
- photon fusion2
- unity
- gameplay tag
- 보안
- animation
- linear regression
- 게임개발
- C++
- CTF
- 게임 개발
- gas
- os
- gameplay effect
- 언리얼엔진
- Replication
- 유니티
- widget
- MAC
- stride
- 언리얼 엔진
- Aegis
- gameplay ability system
- ability task
- Unreal Engine
- Multiplay
- Today
- Total
Replicated
자연어 처리 : Seq2Seq, Attention, Transformer 본문
Seq2Seq
- 번역과 같은 시퀀스 변환 문제를 다루는데 있어 기존 방법론의 비효율성과 한계를 극복하려는 시도
통계 기반 번역의 한계
- 방대한 특징 공학
- 지역적 문맥 의존성
- 희소성 문제
순환 신경망의 고정길이 입력의 한계
- 기계 번역처럼 입력 문장의 길이와 출력 문장의 길이가 서로 다른 문제를 효율적으로 다룰 수 있는 일반화된 프레임워크 필요
Seq2Seq는 인코더와 디코더라는 두 개의 모듈로 구성
- 인코더는 입력 문장의 모든 단어들을 순차적으로 입력 받은 뒤에 마지막에 이 모든 단어 정보들을 압축해서 하나의 벡터로 만듦
->컨텍스트 벡터
- 입력 문장의 정보가 하나의 컨텍스트 벡터로 모두 압축되면 인코더는 컨텍스트 벡터를 디코더로 전송
- 디코더는 컨텍스트 벡터를 받아서 번역된 단어를 한 개씩 순차적으로 출력
Encoder
- 입력 시퀀스를 읽고 그 시퀀스에 담긴 모든 정보를 압축된 형태의 문맥 벡터로 변환하는 역할
- 입력 문장은 단어 토큰화를 통해 단어 단위로 쪼개지고 단어 토큰 각각은 RNN 셀의 각 시점의 입력
- 인코더 RNN 셀의 마지막 시점의 은닉 상태를 디코더 RNN 셀로 넘겨주는데 이것이 컨텍스트 벡터
Decoder
- 인코더가 생성한 문맥 벡터를 입력받아 이를 기반으로 목표 언어 또는 목표 형식의 새로운 시퀀스를 생성하는 역할
- 초기 입력으로 문장을 시작하는 심볼 <sos>
- 기본적으로 다음에 올 단어를 예측하고 그 예측한 단어를 다음 시점의 RNN 셀의 입력으로 넣는 행위를 반복
- 문장의 끝을 의미하는 심볼인 <eos>가 다음 단어로 예측될 때까지 반복
디코더의 훈련
- 디코더에게 인코더가 보낸 컨텍스트 벡터와 실제 정답인 상황을 입력받았을 때, 그 다음에 나와야 하는 정답 상황을 알려주며 훈련
BART
- 시퀀스-투-시퀀스 모델의 사전 훈련을 위한 denosing autoencoder
- 입력 문장을 망가뜨린 다음 원래 문장을 복구하도록 훈련됨
- 사전 훈련 작업은 원래 문장의 순서를 무작위로 섞고 텍스트의 일부 구간을 단일 마스크 토큰으로 대체하는 새로운 인필링 방식을 포함
- 인코더에는 손상된 토큰이 입력되고 디코더에는 원래 토큰이 입력
BART 활용 분야
- 요약, 기계 번역, 질의 응답, 텍스트 생성
Attention Mechanism
Seq2Seq는 RNN에 기반하여
- 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하다 보니 정보 손실이 발생
- 기울기 소실 문제
Attention 등장
- 디코더에서 출력 단어를 예측하는 매 시점마다 인코더에서 전체 입력 문장을 다시 한 번 참고
- 단, 예측해야 할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)
Attention weight(score)
- 디코더의 현재 hidden state와 인코더의 모든 hidden states 간의 유사성을 계산
- 내적이나 다른 유사도 척도를 사용
- 이렇게 계산된 attention score에 softmax 적용하여 0 ~ 1 사이로 정규화
- 정규화된 attention weight와 인코더의 hidden states를 사용하여 가중 평균 계산
-> 문맥 벡터 생성
Transformer
- 어텐션 메커니즘은 LSTM의 고정된 컨텍스트 벡터 문제를 해결
- 하지만 복잡하고 무거워짐 => 트랜스포머의 등장
트랜스포머 모델은 문장 속 단어와 같은 순차 데이터 내의 관계를 추적해 맥락과 의미를 학습하는 신경망
- 어텐션 또는 셀프어텐션, 서로 떨어져 있는 데이터 요소들의 의미가 관계에 따라 미묘하게 달라지는 부분까지 감지
- 병렬 프로세싱에 적합하여 모델의 실행 속도 또한 빨라짐
어텐션만으로 인코더와 디코더를 구성함
- 인코더와 디코더가 N개로 구성됨
트랜스포머는 단어 입력을 순차적으로 받는 방식이 아닌 일괄 입력 방식
- 단어의 위치 정보를 알려줘여 함
- 각 단어의 임베딩 벡터에 위치 정보들을 더하여 모델의 입력으로 사용.. -> 포지셔널 인코딩
핵심 메커니즘
- 멀티 헤드 어텐션 : 단어 간의 관계를 여러 개의 헤드로 나누어 병렬적으로 처리
- 포지셔널 인코딩
- 피드 포워드 네트워크 : 어텐션을 거친 결과를 받아 일반적인 신경망처럼 비선형적인 변환을 가함
트랜스포머의 인코더와 디코더의 각 부분은 태스크에 따라 독립적 사용 가능
Encoder 모델
- 응용 분야: 문장 분류, 명명된 개체 인식, 질문 답변
- ALBERT, BERT, DistillBERT, ELECTRA, RoBERTa
Decoder 모델
- 응용 분야: 텍스트 생성
- GPT, GPT-2, Transformer XL, Gemini
Encoder-Decoder 모델
- 응용 분야: 번역 또는 요약
- BART, mBART, Marian, T5
주요 생성형 AI 모델들은 왜 디코더만 사용하는가?
- 입력을 모두 하나의 토큰 시퀀스로 보고 이전 토큰만 참고하여 다음 토큰을 확률적으로 생성
-> 인코더가 필요 없음
결론- 트랜스포머가 바꾼 것
RNN의 순차성을 어텐션의 병렬성으로 완전히 대체하여..
- 속도 향상: GPU를 활용한 병렬 처리가 가능
- 장거리 의존성 해결: 문장이 아무리 길어도 모든 단어를 동시에 참고하여 정확한 의미를 파악
- 현대 AI의 기반
LLM의 등장
1950~1980 : 규칙 기반의 언어 처리
- 언어 번역 등의 작업을 엄격한 규칙과 논리적 절차를 따름
1990년대 : 통계적 접근법의 도입
- 언어 패턴을 분석하고 이를 수학적 모델로 표현하려는 시도
2000년대 : 머신러닝과 데이터의 확장
- 머신러닝의 발전, 복잡한 언어 모델의 등장, 인터넷 사용의 증가로 훈련 데이터셋 증가
2018년 : 딥러닝과 트랜스포머 등장
- GPT 개발, 구글 BERT 발표
2020년: GPT-3 출시
2022년: ChatGPT 출시
2023년: 오픈소스 llm, gpt4 출시
LLM : large language model
sLLM : smaller large language model
SLM : small language model
LLM과 소프트웨어 개발
LLM은 소프트웨어 개발 과정에서 코드 생성, 코드 리뷰, TC 생성 등 자동화 및 지원 가능
- 코드 리뷰에 많은 시간을 할애하는 대규모 프로젝트에서 유용
LLM은 자연어로 작성된 요구사항을 바탕으로 코드 생성 가능
코드 분석에서도 활용, 한 프로그래밍 언어에서 다른 언어로 번역하는데도 사용 가능
'학부 > 딥러닝' 카테고리의 다른 글
| LangChain, LangGraph (0) | 2025.12.08 |
|---|---|
| Hugging face (0) | 2025.12.07 |
| 자연어 처리 : RNN, LSTM (0) | 2025.12.07 |
| 자연어 처리 : Word representation (0) | 2025.12.07 |
| 전이 학습 (Transfer Learning) (0) | 2025.12.07 |