6. Deep Learning
1. Deep Learning
1) Deep Learning
- 심층 신경망 기반의 머신러닝 분야 ( ↔ shallow(얕은) 신경망 )
- 많은 수의 은닉층을 가진 MLP, 더 효율적인 표현이 가능
- 느린 수렴 속도와 낮은 일반화 속도로 학습의 어려움
(1) 학습의 어려움을 극복 : GPU, 학습기법, 정교한 모델
- 충분히 큰 데이터베이스(자료)와 높은 컴퓨팅 파워(GPU활용기술)
- 다양한 학습기법의 개발, 정교한 모델 (CNN, LSTM등 영상/음성 데이터처리 가능한 모델의 등장)
(2) 종단간 학습 (end-to end) : 신경망을 통한 처리과정의 패러다임 변화발생
- shallow 신경망 : 특징추출(PCA등) + 분류(MLP, SVM) 별도 진행
- deep 신경망 : 특징추출부터 분류까지 한꺼번에 진행 , 심층신경망을 이용한 종단간 학습
2) 학습의 문제점 ( 지역극소, 느린학습 )
(1) 지역극소 : 학습율, 확률적 기울기 강하 (온라인 모드의 불완전성으로 지역극소 회피)
기울기 강하 학습법의 근본적인 문제 - 오차가 충분히 작지 않은 지역극소에서 학습이 멈춤
- simulated annealing : 학습율(𝜂)를 처음에는 크게 , 차차 줄여감
- 확률적 기울기 강하 (stochastic gradient descent) : 한번에 하나의 샘플만 사용
( on-line학습모드의 불완전한 학습을 이용해 지역극소를 회피 )
(2)느린 학습
① 플라토 문제 (plateau)
- 기울기 강하 학습에서 오차함수의 학습곡선의 평평한 구간
- 오차함수에는 많은 안장점(극대/극소가 아닌 점)이 존재
② 기울시 소멸문제 (gradient vanishing)
- 가중치 수정폭은 기울기의 크기에 의존 𝞓𝜃 ∝∂E / ∂𝜃
- 출력층으로부터 오차신호가 입력층으로 내려오면서 점차 약해져 학습이 느려짐 (셀포화)
(3) 느린 학습의 해결책 : 활성함수, 가중치 초기화 방법개선, 모멘텀 도입, 적응적 학습율, 2차 미분
① 활성화함수 변화
- 기울기 소멸문제 (활성화 함수의 기울기가 작아짐) 개선
- sigmoid, tanh함수 대신 기울기가 줄어들지 않는 함수 사용
ReLU, softplus, leakyReLU, PReLU
② 가중치 초기화
- 셀포화가 일어나지 않도록(활성함수 값이 너무 작거나 커져 그래디언트 소실) 작은 값으로 설정
( 값이 너무 크면 발산하므로 적절히 설정 )
- 각 뉴런의 가중치가 서로 달라지도록 랜덤하게 설정
③ 모멘텀
- 기울기 강하 학습법의 기울기에 이전의 움직임 (관성)을 반영
- 학습 속도 저하를 방지하거나 학습의 불안정성을 감소
- NAG (Nesterov Accelerated Gradient) 모멘텀의 변형 (예측한 다음 예상위치의 기울기 계산)
④ 적응적 학습률
- 가중치마다 서로 다른 학습율 (가중치 변화의 크기누적합을 활용, 변화폭에 따라 학습율 적응적으로 조정)
- RMSProp, AdaDelta, Adam
Adam(Adaptive Momentum) : RMSProp과 Momentum을 결합한 방법
⑤ 배치 정규화 (batch normalization)
- 학습하는 동안 각 노드의 활성화 함수로 들어가는 입력이 셀포화되지 않도록 정규화
- 활성화 함수에 대한 입력분포를 항상 일정하게 유지
⑥ 2차 미분 방법
- 오차 함수의 2차 미분인 곡률(curvature)정보를 활용
- 이론적으로 좋은 방법이나 계산시간이 길어 실질적 사용한계(작은 데이터에 적용)
(4) 과다적합과 해결책
- 학습데이터에 포함된 노이즈까지 학습, 테스트 데이터에 대해 정확도('일반화성능')저하
- 신경망의 복잡도가 높을수록 발생할 가능성이 높음
① 조기종료 (early stopping) - 검증용 데이터 집합활용, 과다 적합전 학습종료시점 결정
② 정규항 (regularization term) - 오차함수에 정규항 추가 (가중치 벡터의 2차 norm)
오차 함수를 조정하여 가중치가 지나치게 커지는 것을 방지 , 정규항 𝝀는 사용자 정의 파라미터
③ 드롭아웃 : 학습에서 가중치 수정할때 임의로 선택한 은닉노드의 일부를 제외
( 가중치 수정할 때만 일부 제외, 실제 테스트시에는 반영 )
전체 모델이 가지는 복잡도보다 낮은 모델로 학습하는 효과,
작은 모델의 앙상블 평균과 유사(일반화 성능향상)
④ 학습데이터 증대 : 충분한 학습데이터 확보 (원 데이터 인위적인 변형, 추가데이터 생성)
일반데이터 - 노이즈 추가 ( Gaussian 분포 )
영상데이터 - 크기 조정, 회전, 위치 이동, 자르기 등
(4)정교화된 심층 신경망 모델
CNN(Convolutional Neiral Networks) 합성곱 신경망
- 인간의 시각피질에서의 정보처리기제, 영상 데이터처리에 적합
RNN(Recurrent Neural Networks)
- 음성, 텍스트와 같은 시계열 데이터처리에 적합한 모델
기본 RNN : LSTM, GRU등
2. CNN (Convolutional Neural Networks)
1) 구성
(1) 기본구성
① 신경세포 - 3가지 유형(층)
콘볼루션 (convolution) - 서브샘플링 subsampling (pooling) - 완전연결 (fully connected)
② 네트워크 구조 - 층상구조
- 입력층 : 2D격자구조 x 다중채널
- convolution layer,pooling layer - 2D feature map(특징맵) x 다중필터 (filter, plane, kernel)
풀링연산 (특징맵 다운샘플링) : 계산속도 향상/정보 추상화 (최대풀링, 평균풀링, 가중치 평균풀링)
** 부분적인 연결 (local connection), 가중치 공유(shared weight, 커널) - 특징학습, 표현학습
- fullt connected layer (MLP구조)
③ CNN의 입력은 2차원, MLP는 flatten하여 1차원 벡터로 입력
④ 학습 알고리즘 - 오류 역전파 알고리즘
(2) Convolution Layer
- 주어진 2D입력에 convolution 연산을 적용하여 특징맵을 생성
( 해당 위치의 요소에 가중치를 곱해서 모두 더하는 연산 )
① 필터 : 𝝎 (학습 대상인 가중치 - 커널, 필터, 마스크, 윈도우 등 여러가지 명칭)
② 패딩 : 입력데이터의 가장자리를 0으로 채우면 입력과 출력의 크기가 같음
- 필터 크기에 따라 패딩의 크기가 달라짐
③ 다중 채널 : 2차원 격자입력이 다중 데이터 채널을 형성
예) 입력영상이 RGB컬러 영상이면 3개의 채널이 있으며, 입력값은 3D tensor에 해당함
④ 다수의 필터 : 다양한 형태의 특징을 추출하는 다수의 특징맵 생성
예) 6 x 6 x 3 : 데이터 크기 6 x 6, 3채널 (필터의 채널은 입력데이터 채널수가 같아야 함)
⑤ Stride(보폭) :필터를 움직이는 간격, stride조정시 특징맵 크기변경
풀링연산 : 특징맵을 작게 하여 계산속도를 높이고 정보를 추상화(학습이 수행되지는 않음)
** 필터의 크기가 1 x 1이고 (입출력 크기가 동일하나, 다중채널 입력에 다중필터 적용시
채널의 데이터를 필터별 1개의 특징맵으로 데이터의 차원축소 )
** 컨볼루션 표현방법
** 필터 3x3 2가지, stride 1, padding none (4 x 4 x 2)
** 원영상에서 의미있는 특징을 추출하기 위해 수작업 설계가 아닌 CNN을 통해 추출
2) LeNet-5
- 1998, Yann LeCun, 필기숫자인식
- 32*32*1 의 입력, 3개의 Convolution층+ 2개의 Pooling층 + 완전연결층
3. RNN ( Recurrent Neural Network )
시간에 따라 순차적으로 제공되는 데이터를 다루기 위한 모델
- 응용 분야 : 기계 번역, 음성 처리
순차데이터 (sequence, 순서 정보를 가진 데이터)
- 대표적 응용 분야 : 음성, 문장, 동영상, 주식 시세
- 데이터의 출현순서가 중요, 데이터 길이가 가변적
- 데이터 요소사이에 문맥적 의존성 존재(이전내용의 기억필요)
1) Vanilla RNN (MLP구조와 유사하지만, 정보전달의 방향에 차이가 있음)
- 노드내에 순환엣지가 존재하며 이전 상태값을 반영(직전 정보 현재 입력에 전달)
- 가중치는 공유 ( 은닉층은 같은층 )
- 순환구조에는 tanh함수, 값 출력시에는 softmax함수를 사용
- 앞 단계의 가중치가 뒷단계에 영향을 미침
- tanh함수로 출력 결정 (기울기 소멸대응, ReLU함수는 순환구조의 hi의 값이 지나치게 커질수 있음)
- 출력함수는 softmax
2) 입출력 관계에 따른 구조와 응용
(1) 은닉층 1개인 경우
- 1:1의 관계
- 1:m (하나의 입력을 순환) - 이미지 설명/묘사
예) 이미지 캡셔닝에 활용 : 특정 시점에 주어진 하나의 이미지(특징벡터)에 대해 이미지를 설명할수 있는
관련 단어를 각 시점에 각 시점에서 결과로서 출력하는 문제
- m:1 (감정분류) - 순차적인 입력을 통해 최종적으로 하나의 결과를 도출하는데 활용
예) 온라인 필기 문자인식(수직/수평의 특징을 차례로 입력),감정 분류(문장을 단어 시퀀스로 긍정/부정 분류)
- m:n - 기계번역 (Seq to Seq, 문장의 경우 마침표로 종료후 출력 생성되므로 입력과 출력의 시퀀스 다름)
프레임수준의 비디오 분류 (동작분류 , 입력과 출력의 시퀀스 동일)
(2) 은닉층 2개 이상
- 역방향 RNN : RNN셀이 확장된 구조이며 각 은닉층은 서로 계층구조나 연결관계를 이루지 않음
정보 처리시 앞쪽의 정보와 뒤쪽의 정보를 모두 활용 (기계번역)
3) RNN의 학습
(1) 지도 학습, { (𝑥ᵢ , 𝑦ᵢ) }ᵢ₌ ₁,₂,...,៷ (실제로는 순차적이기보다는 펼친 상태의 네트워크로 구성하여 계산)
(2) 역전파 학습알고리즘 (BPTT: Back Propagation through Time)
기울기 소멸 혹은 폭발 문제 발생 (가중치와 함수의 미분값의 연속 곱, 역전파 기울기가 급격히 변화)
① 기울기 소멸 : 가중치가 커지면 셀포화가 발생 ( 앞쪽으로 이동할수록 기울기가 소멸 )
시점 1에서 t까지의 길이(time stamp)에 영향을 받음 -> LSTM, GRU로 해결
② 기울기 폭발 : 기울기가 기하급수적으로 커지는 현상
기울기 클리핑 : 기울기가 주어진 임계치보다 크면 그 값을 일정한 범위에 있도록 조정하여 해결
(3) 손실함수 : 평균제곱오차, 교차 엔트로피(cross entropy) , 로그 우도(Log Likelihood)
4) LSTM (Long Short Term Memory)
- RNN의 장기 의존성 문제 해결 : 입력 요소가 시간이 지남에 멀어진 경우 정보와의 연관성에 대한
정보를 사용할수 없음 (앞의 입력정보가 약해지거나 사라짐)
시간의 흐름에 관계없이 셀의 정보를 필요한 만큼 기억(장,단기 기억)
(1) LSTM
- 단기 기억과 장기 기억기능 (여러 종류의 메모리 게이트)
- 메모리 게이트로 입력과 계산결과의 선별적 허용, 각 입력값의 영향범위 확장 및 기울기 소멸문제 개선
- 셀의 게이트는 0.0 ~ 1.0 까지의 실수값으로 셀내 데이터 흐름 제어
- 3개의 입력을 받아 4개의 계산을 수행 ( 망각게이트, 입력게이트, 셀 상태갱신과 출력계산)
(2) LSTM 메모리를 제어 게이트와 연산수행
- 망각게이트, 출력게이트, 입력게이트, 셀 상태갱신
① 망각게이트 : 셀 상태의 정보 cₜ₋₁를 어느 정도 잊어버릴까를 결정하는 부분
망각게이트 가중치 : 입력 가중치(u)와 회귀 가중치(v)를 연결하여 시그모이드 함수처리
[0.0(완전망각) ~1.0(완전기억)]
셀 상태의 정보범위 [ 0, cₜ₋₁ ]
③ 입력게이트 : 셀 상태에 새로운 정보를 추가하는 정보를 조정하는 부분
③ 셀상태 갱신 (cell-state update) : 새로운 셀상태 cₜ를 갱신하는 부분
- 기존 셀상태에 새로운 입력정보를 받아 셀 상태를 갱신함
④ 출력게이트
5) GRU (Gated Recurrent Unit : 게이트 순환 유닛)
- LSTM셀 구조를 단순하게 개선 ( 입력과 게이트의 사용 줄임)
LSTM의 구조 : 중요 입력값을 필요한 기간만큼 기억,유지하는 복잡한 연결구조와 다수의 파라미터
- 2개의 입력 ( 𝒉ₜ₋₁, 𝑥ₜ ), 하나의 출력 (𝒉ₜ) , 셀상태 𝑐ₜ 없음 (𝒉ₜ에 통합됨)
- 2개의 게이트 : 갱신게이트(update gate) 𝑧ₜ ← 입력게이트 + 망각게이트
리셋게이트(reset gate) 𝑟ₜ
- 출력값 : 𝑧ₜ 가 크면 새로운 입력을 크게 반영 (이전 내용 망각)
① 리셋게이트 : 𝒉ₜ₋₁을 얼마나 받아들일지 조정하기 위해 0~1사이의 reset게이트 값(rₜ)을 곱함
② 갱신게이트 : 망각게이트와 입력게이트의 역할 동시수행 (새 입력과 이전의 출력비율 조정 )
z값이 0이면 이전 출력은 망각, z값이 1이면 망각없음 (현시점 𝒉ₜ 차단)
③ 출력계산 : 입력과 리셋게이트로 추가출력 𝒉ₜ bar, 이전 상태와 현재의 비율(갱신게이트)로 𝒉ₜ
- 추가되는 출력 𝒉ₜ bar 계산 : 활성화 함수로 (tanh) 시간 t에서 추가되는 새로운 𝒉ₜ계산
(입력과 리셋 게이트 거친 이전 출력 𝒉ₜ₋₁과 입력 xi로 계산)
- 최종 출력 𝒉ₜ 계산 : 이전 상태정보와 현재 입력정보를 갱신게이트 값에 비율로 계산
4. Deep Learning의 응용_영상처리
1) 컴퓨터비전 응용
컴퓨터 비전
- 영상데이터를 주요처리대상으로 하여 인간의 다양한 시각적인 정보처리를 기계에 구현하려는 분야
- 문제의 주제/종류가 다양(카메라/적외선카메라, 레이더, X-ray, 초음파, CCTV, 블랙박스)
딥러닝 모델의 입력/출력을 기준으로 CV응용구분 - 영상이해, 영상변환, 영상생성, 다양한 입력으로 확장
(1) 영상이해 : 하나의 영상을 입력받아 포함된 의미정보를 분석하여 추상적인 개념, 정량적인 정보량 출력
객체 인식 (object recognition) - 학습데이터 객체 class가 M개,주어진 영상을 M개 객체 class인식
객체 정보 (object detection & localization) - 영상에 포함된 복수개의 객체와 그 위치를 찾아
직사각형 박스로 표시
영상 설명 (object description, image descroption, image captioning)
- 패턴 클래스, 두 영상간의 의미적 유사도 설명
(2) 영상변환 : 영상을 입력받아 정보를 분석하여 원하는 형태로 변환된 새로운 영상을 출력
의미적 영상분할 (image segmentation) : 영상을 의미적 유사성으로 몇개의 그룹으로 묶어서 분할
영상개선 (image enhancement) : 왜곡 혹은 저해상도 영상의 고해상도 변환
기타 다양상 영상변환 : 흑백 컬러 영상변환, 스케치의 색상 추가변환, 특정 화가의 화풍으로 변환등
① 의미적(semantic) 영상분할 ( 화소를 범주로서 표시 )
② Super Resolution (저해상도 영상을 고해상도로 복원 )
- SRCNN 2014, VDSR 2016, SRGAN 2017, EDSR 2017, DBPN 2018, ..
(3) 영상생성 : 새로운 영상을 생성하는 창작과정
- 임의의 값을 입력으로 받아 영상을 생성하거나, 자연어 문장을 입력받아 영상을 생성
GAN : 영상 생성을 위해 개발된 대표적인 딥러닝 모델
(4) 다양한 입력형태로의 확장
① 동영상 ,3D입체영상 (2D정보외에 시간에 따른 순서 정보 혹은 추가적인 축을 처리할 필요)
- 순환 연결을 가진 CNN, 3D CNN (RNN의 원리를 참조)
② Visual Question and Answering (VQA : 시각적 문답) : 영상처리 CNN + 언어처리 RNN
2) 영상 이해 - 객체인식, 영상이해(정보), 영상설명
(1) 객체인식을 위한 CNN모델 - AlexaNet, VGG, GoogLenet, ResNet
ImageNet Large-Scale Visual Recognition Challenge ( ILSVRC, 2010 )
- 객체 분류 및 위치탐지(localization) 문제
- ImageNet 영상 DB ( 1000개의 클래스, 120만개 영상 + 클래스 레이블 ) 지도학습
① AlexNet (ILSVRC, 2012 Winner, Krizhevsky et. al. ) 8개 계층
- LeNet과 유사한 구조이나 필터의 크기와 개수가 크게 확장
- 초기 : 2개 CNN (메모리 한계로 듀얼 네트워크), 5개의 convolution층, 3개의 완전연결층
- 미니배치모드 (크기 128), 모멘텀 (0.9), 드롭아웃 (0.5), 학습율(0.01, 검증오차가 증가 1/10감소)
정규항의 조정파라미터 (0.0005) , 가중치 초기화 (가우시안 분포, 평균 0, 표준편차 0.01)
② VGG (ILSVRC, 2014 2위, 19개 계층 )
- 다양한 층수를 필터크기에 차이를 둔 여러 버전을 제공 ( VGG 13과 VGG 16이 가장 많이 활용 )
- 기존에 학습된 모델을 주어진 데이터에 맞게 관련 내용을 조정하여 학습가능
③ GoogLeNet ( 22개 계층 )
- Inception(인셉션) 모듈 → Inception Net (한 층내에서 서로 다른 크기의 필터로 효과적인 결합 모듈)
22개층의 모델임에도 AlexaNet의 1/12의 파라미터, 1 x 1 convolution으로 차원축소 ( 계산비용 감소 )
** 층의 갯수와 성능 비교 (층이 증가하면서 성능이 증가하나, 일정 이상인 경우는 오히려 역효과)
④ ResNet ( Residual Net, 잔차 모듈 )
- 매우 깊은 층을 가진 네트워크의 학습 가능 (성능저하 없음), 잔차 블록(residual block) 학습 용이
- 스킵 연결을 통해 오차 신호의 효과적인 역전파 가능
(2) 영상이해를 위한 딥러닝 (정보) : R-CNN, YOLO
- 다중 객체 검출 : sliding window(적절한 크기의 윈도우로 전체화면을 스캔)
분할/에지/색상등을 이용해 객체가 있을 가능성 후보영역 제안 (계산이 너무 많아 이를 보완한 모델)
① R-CNN (Regional based CNN)
- 입력에서 최대 2000개의 후보영역을 CNN으로 특징 추출을 통해 분류 (후보 영역이 많아 오래 걸림)
- ROI (region of Interest) 후보집합 추출 후 인식수행 (객체인식 신경망으로 인식)
- Fast R-CNN : convolution으로 영상의 특징을 추출한 다음 병렬적으로 처리하여 속도개선
② YOLO ( You Only Look Once, 2016 )
- 객체 탐지와 인식을 한번에 수행
( R-CNN과 달리 ROI (region of Interest) 또는 영역제안(regional proposal) 사용 X )
- 영상을 Grid로 나누어 객체가 들어간 Bounding Box 위치결정, 각 영상에 대한 출력정의 후 전체학습
- 간단하고 빠르나 Faster R-CNN에 비해 성능이 낮음 ( R-CNN 71.6%, YOLO 65.5% )
(3) 영상설명 모델 : show and tell, show and attend and tell
① Show and Tell
- 영상처리를 위한 CNN, 언어처리를 위한 RNN활용 ( 영상 GoogLenet, 언어처리 LSTM )
- 이전층 출력을 특징값으로 RNN입력 제공, 구글넷 영상 의미정보를 포함하는 특징값으로 변환(인코딩)
(2) Show, Attend and Tell
- 단어 생성시 이미지의 해당 부위에 Attention이 가해지는 형태
3) 영상변환 및 생성을 위한 딥러닝 : 오토인코더 (U-Net), GAN
(1)오토 인코더 모델
- 비지도 학습
- 입력 x와 출력 x'가 같은 형태 (중간층을 중심으로 대칭구조로 압축 후 복원과정), 축약된 특징 z 탐색
- 영상에 대한 의미를 담은 압축된 코드를 만든 후(엔코딩) 이를 이용하여 새로운 영상을 구성(디코딩)
① U-Net
- 의료영상의 영상분할을 위해 개발, 입력영상이 분할되어 마스킹된 영상이 얻어짐
- 정보의 축소(572*572 -> 1024차원)와 확대의 대칭구조
- 대칭의 입력과 출력 사이에 스킵연결이 존재하는 잔차 모듈 특성 반영됨
- 구조적 특징 (U자형)
contracting path (인코더), expanding path (디코더) , skip connection
(2)GAN (Generative Adversarial Networks, 이안 굿펠러우 등 NIPS 2014)
- 2012년 AlexNet 이후 관심을 집중시킨 모델
- 영상생성 → 영상변환으로 활용 범위 확장
- 2개의 네트워크로 구성, 목표 : 판별기를 속일수 있는 진짜 같은 영상을 만드는 것
Generator (생성기) : 주어진 랜덤 입력으로부터 이미지 생성 , 목표 출력값 없음
Discriminator (판별기) : 생성기가 영상이 실제 영상인지 가짜 영상인지 판별 (G의 손실신호)
- G와 D가 서로 상반된 학습을 수행 (G는 D를 속이고, D는 G를 구분)
- Progressive GAN, Style GAN은 매우 자연스러운 출력
① Cycle GAN : 이미지 변환
- unpaired image-to-image translation
② CoGAN : 이미지 변형 , 스타일 속성변환
- image transfer with different attributes (이미지 내의 속성을 바꾸기 위해 쌍을 이뤄 학습)
③ Progressive GAN (ICLR 2018, Kerras )
- 고해상도 영상생성을 위해 G/D를 층별로 점진적으로 학습
④ Style GAN
- 스타일 조정을 위한 매핑 모듈을 추가 ( 성별, 포즈, 머리색, 피부색등 )
5. Deep Learning의 응용_자연어처리
1) 자연어 처리 (NLP , Natural Language Processing)
- 컴퓨터로 자연어를 이해하고, 번역하고, 조작하기 위한 인공지능의 한 분야
자연어 - 인간의 언어 (인공언어에 대비), 정보전달 수단으로서 인간 고유의 능력 예)영어, 한국어
인공언어 - 특정목적을 위해 인위적으로 만든 언어, 자연어에 비해 엄격한 문법 예)파이썬
(1) NLP의 구성요소
① 형태소 분석
- 문장을 이루는 최소의미단위인 형태소(morpheme)으로 분리
- 형태소 분석의 어려움 : 중의성(ambiguity), 접두사/접미사 처리
- 언어에 따라 난이도가 달라짐
예) 감기(명사)+는(조사), 감(동사언어)+기(명사화어미)+는(조사), 감(동사어간)+기는(어미)
un(접두사, prefix)happy(어간, stem)ness(surffix)
② 구문 분석 (파싱)
- 주어진 문장을 문법에 맞춰서 분석 (문법 - 문장의 구조적 성질을 규칙으로 표현한 것 )
- 문법 분석의 어려움 : 구조적 중의성
예) Time flies like light. Time flies(S) + like(V) 혹은 Time(S) + flies(V)
A man see a woman with a telescope. ( telescope를 가진 사람에 따라 의미가 달라짐)
③ 의미 분석
- 구문 분석결과에 의미를 가하여 문장이 가진 의미를 분석
- 형태소가 가진 의미를 표현하는 지식표현 기법 필요, 문법은 맞으나 의미적으로 틀린 문장검사
예) 기차가 구름을 먹는다.
- 문법 분석의 어려움 : 의미적 중의성
예) 말이 많다 (many horses, chatty)
④ 화용 분석 (fragmatic)
- 문장이 실제로 사용될때 연관관계를 분석
- 담화 분석 (discourse analysis)
상호참조(conference) : 대명사가 지시하는 대상확인
예)John's boss said he was getting better. ( he - John인지 John의 boss인지 불명확)
화행분석(speech) : 발화의 의도분석 (정보요구, 정보제공, 거절)
예)Can you give me a salt ? (Can이 능력을 의미하는 것이 아님)
- 실세계의 상식과 지식이 필요함
(2) 자연어 처리의 어려움
① 규칙에 기반 - 많은 예외사항 존재
② 모호성(중의성) 존재 - 문맥정보, 엄청난 양의 지식이 필요
③ 높은 차원 - 다수의 단어가 사용 (효율적인 표현방법 필요)
④ 순차적인 입력과 출력 - 시퀀스가 중요하여 시퀀스 처리능력이 필요
➡ 머신러닝/딥러닝이 자연어 처리의 좋은 도구가 될수 있음
2) 자연어처리의 응용
음성신호 처리(speech signal processing) : 음성인식(speech recognition), 화자인식, 음성합성
대화 수행 (dialogue action) : 정보검색(information retrieval, ), 질의응답(question answering),
목적지향대화(task-oriented dialogue)
텍스트 분석(text analysis) : 텍스트의 의미적 내용과 문맥을 분석하여 결과도출 ( 분류, 군집화 )
- 텍스트 분류 : 스팸필터링, 감성인식 (sentiment classification), 주제분류(text categorization)
- 기계번역 (machine translation) : 문장의 의미 파악 + 새로운 문장 생성 (엔코딩, 디코딩)
- 텍스트 요약(text summarization) : 텍스트 의미파악 + 문맥파악 + 요약된 문장 생성
(1) 음성신호처리 ( 사람의 목소리로 발화된 음성신호에 포함된 언어 정보를 처리 )
① 음성인식 : 음성신호 - ARS시스템 (speech to text) - 텍스트
② 화자인식 : 음성신호 - 화자인식 - 발화자 신원
③ 음성합성 : 텍스트 - 음성합성 (TTS, text to speech) - 음성신호
④ 대화수행 : 상대방과 문장을 주고받는 형식으로 진행되는 작업, AI스피커, 챗봇등의 핵심기술
발달과정 : 정보검색 (의도가 분명)→ 질의응답시스템(정보검색, 순위매기기, 답) → 대화시스템
(문장 의도파악) → 목적지향 대화시스템 (사용자 목적충족을 위한 추가정보를 주고 받아야 하므로
의도파악/대화저장 )
(2) 텍스트 분석 (일련의 텍스트 정보를 입력받아 의미적 내용과 문맥을 분석하여 원하는 결과도출)
① 텍스트 분류 : 텍스트를 정해진 몇개의 클래스로 나눔, 감성인식/주제분류/스팸필터링 예) 영화리뷰
② 기계 번역 : 문장을 입력받아 같은 의미를 가진 다른 언어의 문장으로 생성
③ 텍스트 요약 : 긴 분량의 텍스트를 입력받아 짧게 요약된 문장으로 출력
추출 요약 (extractive) : 가장 적절한 문장을 선택하여 조합
추상적 요약 (abstractive) : 새로운 문장을 사용하여 요약
④ 기계번역 (Neual Machine Translator) : 인코더와 디코더로 구성
- 정보를 압축하여 만들고 디코더가 sequence대로 새로운 언어로 생성
3) 자연어 처리를 위한 머신러닝 기법
데이터 수집 - 데이터 전처리(토큰화) - 데이터 표현(원핫인코딩, BoW, TF-IDF) - 데이터 분석(학습)
데이터 수집 (corpus collection)
데이터 전처리 : Tokenization, Cleaning, Normalization ( 토큰화, 정제, 정규화 )
데이터 표현 : One-hot vector, Bag of words, TF-IDF
데이터 분석 : Word Embedding, Language Model
→ 목적에 맞게 Sentence Similarity, Text Classification, Setence Generation
(1) 데이터 수집
Text Corpus ( 말뭉치 ) : 크고 구조화된 텍스트 데이터 집합
기존에 수집되어 제공되는 주요 말뭉치
구글 n-gram corpus : n개의 연속된 단어로 이루어진 말뭉치 (4-gram - 4개단어의 말뭉치)
COCA( 현대미국영어 말뭉치 ) : 4억 2500만개 단어, 무료온라인검색서비스 제공
국립 국어원 : 모두의 말뭉치, 세종말뭉치
WordNet : 단어 사이의 상관관계를 나타내는 DB (a lexical database of English)
(2) 데이터 전처리
① 토큰화 : 말뭉치를 의미있는 기본단위 (token)으로 나누는 작업
토큰의 기준 : 단어, 문장, 구, 형태소 예) Time is an illusion. → "Time","is","an","illusion"
고려사항
- 구두점, 특수문자의 처리 예) $50.50(특수문자와 구두점), 22/10/04(날짜표시), AT&T, Ph.D등
- 줄임말, 단어내의 띄어쓰기
- 한국어의 경우 조사, 어간과 어미의 분리 (응용에 따라 중요도/처리 방법 상이)
예)철수는 책을 읽었다. 철수, 책(자립형태소), 는, 을, 읽-, -었, -다 (의존형태소)
→ 신문 기사의 주제 구분에는 의존형태소가 중요하지 않지만, 기계번역에서 의존 형태소 중요
② 정제, 정규화
정제 : 말뭉치로부터 데이터 분석에 방해되는 노이즈 제거
- 불필요한 단어제거 : 등장빈도가 적은 단어, 길이가 짧은 단어 예: it, at, to, on, in, by등)
- 정규표현식을 사용하여 특정 표현 제거 예)해시태그, 기사의 날짜(2022/12/22)
정규화 : 표현 방법이 다른 단어들을 하나의 단어로 통합시키는 것
- 표기가 다른 단어통합 예) US, USA
- 대소문자 통합 예) korea, KOREA
③ 토큰의 품사 태깅 작업
- 품사에 따라 단어의 의미가 달라짐 → fly 날다(동사)/ 파리(명사) ,
예) 열심히 공부한 당신 → 열심히(부사), 공부(명사), 한(조사), 당신(명사)
(3) 데이터 표현
① One Hot Ecoding : 단어 집합의 각 단어를 고유정수로 매핑한 후 one-hot vector로 표현
- m개의 단어가 있는 경우에는 m차원의 one-hot vector로 변환 (sparse(희소)로 표현)
- 단어수가 많아지면 차원이 높아짐, 단어간의 유사도 반영 불가
② BoW (Bag of Words) : 단어의 출현빈도수(frequency)를 고려한 텍스트 표현방법 (말뭉치 벡터화)
- 문서에 자주 출현하는 단어가 잘 표현됨, 단어의 발생위치를 고려되지 않음
- 단어 집합에 포함된 각 단어에 고유한 정수 인덱스 부여 → 주어진 입력 텍스트에 대해 각 단어의
출현횟수 계산 → 각 단어의 대응위치(인덱스)에 출현 횟수를 정수값으로 표현
- 말뭉치의 규모에 의해 벡터값 출력 ( 빈도수의 절대값을 그대로 사용, 이를 개선한 TF-IDF)
③ TF-IDF (Term Frequency - Inverse Document Frequency)
- 문서내의 각 단어의 빈도수와 문서의 빈도를 함께 고려한 표현방식
여러 문서에 함께 나타나는 단어는 중요도 낮음 ( 대명사, 관사 등 )
TF-IDF( d ,t ) = TF ( d,t ) x IDF ( t ) = TF ( d,t ) x log(N/(DF(t))), N: 문서갯수
TF-IDF(d,t) - 문서 d에 단어 t가 나타나는 횟수, IDF(t) - 단어 t가 등장하는 문서갯수 DF(t)에 반비례값
Document-Term Matrix : 다수 문서에 등장하는 각 단어의 빈도수를 표현한 행렬
Document Frequency : 각 단어가 나타나는 문서의 빈도수 계산
(4) 데이터 분석
① Word Embedding
단어의 의미를 포함하는 벡터(embedding vector)로 표현하는 방법
- 원핫벡터를 저차원 실수 공간의 벡터로 변환
- 유사한 의미의 단어를 가까운 위치에 표현
② Word2Vec
단어를 One Hot Vector를 저차원 벡터로 변환하는 선형변환행렬 W를 학습으로 찾고,
입력 단어를 사영하여 임베딩 벡터 구함, 2차원 표현가능해짐 (PCA, LDA의 특징추출과 유사)
- 말뭉치의 문맥정보를 활용하여 학습을 수행, n개의 단어씩 학습의 입출력으로 사용
- 은닉층이 1개의 간단한 구조의 신경망 사용
- CBoW(Continous Bag of Words) : 주변단어(문맥 앞 뒤 n개 단어)를 입력받아 중심단어 예측
- Skip-gram : 중심단어를 입력으로 주변단어를 예측 ( 보편적으로 많이 사용 )
사용 예) Word2Vec의 수행결과의 예
4) 언어 모델
(1) 단어 시퀀스를 입력으로 받아 확률값을 출력하는 일종의 함수로 변환
- (𝝎₁, 𝝎₂,...,𝝎ₙ)을 𝐏(𝝎₁, 𝝎₂,...,𝝎ₙ)로 변환
- 확률 𝐏는 단어의 시퀀스가 자연어 표현으로 적절한지 평가값 (확률이 높으면 일상 생활에서 빈번히 사용)
(2) 구현방법
- 조건부 확률 𝜫 𝐏(𝝎ₙ | 𝝎₁, 𝝎₂,...,𝝎ₙ₋₁)를 이용하는 방법
- 신경망(딥러닝)을 이용하는 방법 (주로 RNN사용)
(3) 언어모델의 활용
문장 생성 (요약, 번역 등) 예) P)("나는 버스를 탄다") > P("나는 버스를 태운다")
오타교정 예) P("빠르게 달려갔다") > P("빠르게 잘려갔다")
(4) RNN의 언어모델
LSTM기반으로 구성 (단어를 원핫벡터로 변환하고 임베딩벡터를 구해 LSTM에 학습)
활용 : 텍스트 분류(감성분류, 주제분류), 기계번역 등
** 시퀀스를 입력받아 다른 문장 출력을 위해 모델확장한 것인 seq2seq
(5) Sequence to Sequence 모델 ( Seq2Seq )
① 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력
- 기계번역, 대화, 질의 응답, STT(Speech to text)
② 인코더와 디코더로 구성 ( 각각 RNN(LSTM, GRU)구조 )
- 인코더
입력 : 임베딩 벡터로 표현된 단어의 시퀀스
출력 : 입력 시퀀스를 하나의 벡터로 압축한 문맥벡터 (context vector)
- 디코더
입력 : 인코더에서 출력된 문맥벡터
출력 : 단어벡터를 순차적으로 출력
③ 문제점
- 정보손실 : 인코더로부터 얻어진 정보를 하나의 고정된 특징벡터로 요약/압축하면서 손실 발생
- 입력 문장의 길이가 길어지면 성능저하
④ attention 모듈을 이용한 해결
- 선택적 주의를 통해 참조하는 방식 : 디코더에서 출력단어 생성시 인코더 전체상태의 선택적 주의
(6) Transformer 모델
① Seq2Seq모델의 인코더-디코더 구조사용
- RNN구조를 없애고, 여러개의 인코더와 attention만으로 구현
- 빠른 학습, 우수한 성능
② 인코더와 디코더
- 인코더
한번에 전체 시퀀스를 입력받음 (단어의 순서 정보 positional encoding으로 나타냄)
- 디코더
한번에 하나씩 순차적으로 생성
③ 트랜스포머 기반 : BERT, GPT
④ BERT (Bidirectional Encoder Repesentations from Tansformers)
구글에서 만든 새로운 언어모델, 3종류의 입력 임베딩 수행 ( 인코더 모델에 기반한 언어모델 )
사전학습(pre-training) 단계
- 방대한 양의 데이터를 이용하여 학습언어모델 구축
- 책 말뭉치(800M단어) + 위키피디아(2500M단어)로 학습
미세조정(fine-tuning)단계
- 사전에 학습된 모델을 특정 NLP문제에 맞춰 추가학습
- 12개의 자연어처리 문제에 대해 최고성능기록
응용 (문제유형에 따른 BERT모델의 4가지 구성방식)
- 문장간 유사도(질의-응답 적절성), 분류(감성/기사), 질의/응답, 품사태깅