Attention
시퀀스 데이터에서 중요한 부분에 더 많은 가중치 할당
정보를 더 효율적으로 처리하는 기법
개념
- 기본 구성 요소와 동작 방식
Attention 메커니즘
- 자연어 처리(NLP), 시계열 데이터, 기계 번역, 오약, 질의 응답
동작 방식
- 구성
- 답(key)-질문(query)-최종요약(value)
- 입력의 sequence를 분석
- 중요도를 파악
- 가중치 부여(일관되게 부여)
- Attention 스코어(중요도)
- query 와 key 간의 유사도를 측정
- 백터의 내적(dot product) 사용
- softmax = attention스코어를 확률 분포로 변환 = 가중치의 합을 1로
- attention = 가중치 x value
- sel - Multi-head attention
- self : 시퀀스 내의 각 요소
- multi-head : 여러개의 self attentiondmf 병렬로 수행
예시
the cat sat on the mat because it was tired
teacher, "what is 'it'
most of students, "cat"
the others, "mat"
- 선생님이 질문한 "it" 은 query
- 대부분의 학생이 대답한 "cat" 은 key
- 일부 학생이 대답한 "mat"는 value
- it, cat, mat의 유사도를 확인
- 가중치를 계산
- 각 단어의 관계를 확인하여 문장을 더 잘 이해하게 됨
NLP
자연어 처리 모델
워드 임베딩(Word Embedding)
- 단어를 고정된 크기의 백터(숫자)로 변환
- 유사한 단어들은 유사한 숫자로 변환
- Word2Vec, GloVe
- Word2Vec
- CBOW: 주변 단어(context)를 보고 중심 단어(target)를 예측
- Skip-gram: context를 보고 target 예측
- GloVe(Global vectors for Word Representation)
- 단어-단어 공기 행렬(word-word co-occurrence matrix)
- 전역적인 통계 정보를 통해 단어 간의 의미적 유사성을 반영
시퀀스 모델링(Sequence Modeling)
- 순차적인 데이터 처리
- RNN, LSTM, GRU
- transformer
- 순차적인 데이터 병렬 처리
- 자연어 처리에 뛰어난 성능
- Encoder-Decoder 구조
- Encoder: 입력 시퀀스 처리, 인코딩된 표현 생
- self-attention: 문장 내 관계 학습
- Feed-Foward Neural Network -> 새로운 백터로 변환
- Decoder
- 시작 토큰 입력
- taget 단어를 고정된 백터로 변환
- positional encoding 수행
- masked multi-head attenrion self attention
- 이전의 단어들로만 예측하도록 마스킹하여 self attention 수헹
- 인코더-디코더 attention: 디코더가 인코더 연결- 입력 문자 참조
- FFNN를 통해 추가로 백터 변환
- 위 과정을 반복하여 오차를 줄여나감
- 종료 토큰이 예측되면 번역 종료
- BERT
(Bidirectional Encoder Representations from Transformers)
- Transformer인코더 기반 사전 학습된 모델
- 양방향으로 문맥을 이해
- 다양한 자연어 처리 가능
- 사전학습(Pre-Training)
- 대규모 텍스트 코퍼스
- Masked Language Model과 Next Sentence Prediction 작업
- Fine-tuning
- 사전 학습된 BERT를 파인 튜닝하여 사용
- 텍스트의 분류, 질의 응답, 텍스트 생성 등 다양한 자연어 처리 작업
Vision Model
CNN
잔차 연결
ResNet-50, 101, 152 등
ResNet
- 기울기 소실 등 기존 모델들의 수학적 문제에 대안 제시
개념
- ResNet
- 깊은 신경망 학습
- Residual Learning ; 잔차 학습 개념
기존 모델 : 깊게 학습 할 수록 input과 가중치가 희미해짐
ResNet: 입력과 출력의 차이인 "잔차"를 학습 , 최초 input은 그대로 계속 전달
- 특징
- 잔차학습으로 기울기 소실, 기울기 폭발 문제 해결
- 간단한 블록구조: 네트워크를 쉽게 확장
다른 모델
VGG- 크고 단순
- 작은 3x3 필터 사용 - 깊이 증가
- 레이어 16, 19
- 단순하고 규칙적인 구조 - 다양한 변형 모델
Inception - 얕고 복잡
- 네트워크 내의 네트워크 개념
- inception 블록 - 깊이와 너비 동시에 증가
- 다양한 크기의 필터를 동시에 사용
- 1x1 필터 사용 - 채널 수 감소 - 계산량 감소
- 다양한하고 효율적인 학습
YOLO(You Only Look Once)
- 객체 탐지 모델
- 이미지 속의 객체의 위치와 클래스를 동시에 예측
- 이미지 전체를 한번에 탐지
- 단일 신경망(한번에 예측)
- end to end(객체 탐지-분류가 한번에 이루어짐)
- 전역 분석
S x S 크기의 그리드 셀(각 그리드 셀 중 한개만 객체 포함)
B 개의 경계 상자
- 중심 좌표(x,y)
- 상대 크기(w,h)
- cofindence(상자의 정확도-상자가 객체를 포함할 확률)
C 개의 클래스에 대한 확률 분포 예측
각 그리드 셀 : 각 경계상자 컨피던스 점수 x 클래스 확률
최종점수 계산 -> 점수가 높은 상자 최종 예측
non-Maximum suppression 통해 여러개의 상자가 하나의 객체 탐지하는 경우 중복 제거
Image Segmentation
-
이미지를 픽셀 단위로 분해해서 각 픽셀이 어느 객체에 속하는지 분석
-
Sementic Segmentation : 이미지의 각 픽셀을 클래스 레이블로 구분 ex) 사람인지 구분
-
Instance Segmentation : 클래스 내에서도 개별 객체를 구분 ex) 사람 중에 각각의 사람을 구분
-
FCN(Fully Convolution Network)
- 모든 레이어가 CNN으로 구성(완전연결레이어 제거)
- 입력크기에 상관없이 구동
- 픽셀 단위 분류 수행
- 기존 CNN의 마지막 레이어을 fc에서 conc 로 바꾸고 업스케일링 = 원본크기 출력
- 시멘틱 세그멘테이셔에 사용
-
U-Net
- FCN의 발전 모델
- 생물학적 세포 이미지 세그멘테이션 목적
- 인코더(특징추출) - 스킵 연결(인코더의 높은 해상도 특징을 전달) - 디코더(원본 크기로 복원)
- 소량의 데이터에서 높은 성능 - 의료이미지 처리에 사용
-
Mask R-CNN
- 객체 검출, 인스턴스 세그멘테이션 동시 수행
- 다양한 어플리케이션에서 사용
생성형 모델
GAN, VAE
GAN
Generative Adversarial Network
개념
- 두개의 모델이 서로 경쟁
- 이미지 생성, 데이터 증강, 스타일 변화 등 분야
- conditional GAN : 특정 조건을 기반으로 데이터 생성
- unconditional GAN : 무작위 데이터 생성
구조
- 생성자 Generator
- random input을 받아 새로운 데이터 생성
- 판별자 Discriminator
- 생성자가 생성한 데이터 Sample이 진짜인지 판별
- 생성자와 판별자가 경쟁하는 과정에서 성능 향상
단점
- 경쟁이 적적히 조율되지 않으면 학습이 진행되지 않는 문제 발생
- 모드 붕괴: 생성자가 데이터를 제한적으로만 생성하는 문제 발생
- DCGAN, WGAN, CycleGAN 등의 변형 모델에서 개선
VEA
Variational Encoder
개념
- 잠재공간을 통계적인 기법으로 생성
- 확률분포를 모델링
- 데이터의 생성과 분포를 효과적으로 학습
- 일반적인 지식을 학습
구조
- 기본 오토인코더와 동일
- 잠재공간 생성에서 차이
- VAE는 잠재변수를 샘플링
동작원리
- 인코더
- 입력 데이터 x
- 잠재변수 z에 평균과 분산으로 맵핑
- 잠재변수는 정규분포에서 샘플링
- Reparameterization Trick
- 미분하지 못하는 샘플링 데이터의 파라미터를 조정하는 과정
- 디코더
- 잠재변수를 입력 데이터로 받음
- 두가지 손실 함수로 구성
- Reconstruction Loss : 원래 데이터와 복원 데이터의 차이를 최소화
- Kullback-Leibler Divergence : 인코더가 학습한 잠재분포와 정규분포의 차이를 계산
- 참고 P분포 대신 Q분포를 사용할 경우 정보량 변화를 측정
단점
전이 학습
Transfer Learning
Fine-tuning과는 구별
개념
- 기본 개념
- 이전에 학습한 지식을 전이하여 새로운 모델에 적용
- 일부 레이어를 미세 조정하거나 추가해서 사용
- 필요성
- 데이터 부족: 데이터가 불충분 할 때 기존모델의 지식 활용
- 학습시간 단축: 처음부터 모델을 학습하는 것보다 빠름
- 성능 향상: 기존모델은 대규모 데이터를 통해 학습 = 고성능
- 원리
- 특징 추출기 Feature Extractor
- 초기층 : 사전 학습 모델로 고정
- 마지막층 : 새로운 데이터에 맞게 재학습
- 미세 조정 Fine Tuning
- 과정
- 사전 학습된 모델 로드
- PyTorch에서 제공
- ResNet,, VGG, Inception
- 모델 수정
- 마지막 층을 새로운 문제에 맞게 수정
- 초기층은 기존 모델로 고정
- 모델 학습
- 새로운 데이터에 맞게 학습
- 특징 추출기 또는 미세조정 방식 중 선택