스터디/Machine Learn

6. Deep Learning

elenalee 2024. 8. 28. 20:27

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

RNN의 셀구조

 

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, .. 

DBPN, 여러 solution의 resolution 복원

(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만개 영상 + 클래스 레이블 ) 지도학습

2012년 이전 30% 오류가 Deep Learning적용으로 획기적으로 개선

 

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(희소)로 표현)

    - 단어수가 많아지면 차원이 높아짐, 단어간의 유사도 반영 불가 

Text Corpus에서 추출한 단어를 One Hot Vector로 표현

 

 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 모듈을 이용한 해결 

  - 선택적 주의를 통해 참조하는 방식 : 디코더에서 출력단어 생성시 인코더 전체상태의 선택적 주의

인코더와 디코더 (seq2seq), 정보손실을 최소화(Attention)

 

ELMo(Seq2Seq), BERT/GPT(Transformer)

 

 

(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가지 구성방식)

- 문장간 유사도(질의-응답 적절성), 분류(감성/기사), 질의/응답, 품사태깅