Post

[딥러닝] 섹션1-1: 머신러닝/딥러닝 기초

※ 본 포스팅은 인프런 “차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원” 을 참고하여 작성하였습니다.

✅ 딥러닝/텐서플로 응용 분야

  • 딥러닝 알고리즘의 주요 응용 분야

    • Computer Vision: 컴퓨터가 인간의 시각 기능을 수행할 수 있도록 하는 방법을 연구하는 분야

      • 컴퓨터 비전의 대표적인 문제들: Image Classification, Semantic Image Segmentation, Object Detection

      • 컴퓨터 비전 문제를 풀기 위해선 딥러닝의 여러 구조 중 CNN 이 많이 사용됨

      • 컴퓨터 비전의 응용 사례: Tesla Autopilot

        ⇒ 테슬라 자동차는 8개의 카메라와 12개의 초음파 센서를 통해 주변 물체를 감지

        ⇒ 또한 자체 제작한 하드웨어를 통해 빠른 딥러닝 연산을 수행

      • Autopilot: AI 와 컴퓨터 비전 기술을 이용해서 자율 주행을 수행할 수 있음

    • Natural Language Processing(NLP): 컴퓨터가 인간의 언어 처리 기능을 수행할 수 있도록 하는 방법을 연구하는 분야

      • 인간의 언어와 같이 자연어로 표현된 언어를 컴퓨터가 이해할 수 있는 형태로 만드는 방법을 연구하는 학문

      • 자연어 처리의 대표적인 문제들: 문장 분류(Text Classification), 이미지 캡셔닝(Image Captioning), 기계 번역(Machine Translation), 챗봇(Chatbot) 등

      • 자연어 처리를 위해서는 RNN 구조가 많이 사용됨

      • 자연어 처리의 응용 사례

        ⇒ NMT(Neural Machine Translation)

        딥러닝 기법을 이용해 중국어 문장을 영어 문장으로 번역

        ⇒ Google Duplex

        → 구글의 최신 NLP 연구 결과를 토대로 인간과 대화를 자연스럽게 수행할 수 있는 인공지능 기술을 개발

        → 구글에서는 원하는 조건으로 예약을 수행할 수 있도록 도와주는 음성 가상 비서인 Google Duplex 라는 서비스를 공개

    • Speech Recognition: 컴퓨터가 인간의 음성 인식 능력을 수행할 수 있도록 하는 방법을 연구하는 분야

      • 음성 인식은 음성 데이터가 표현하는 문장이 무엇인지를 인식하는 문제

      • 소리를 글자로 바꿔준다고 하여 STT(Speech-To-Text) 라고도 불림

      • 음성 인식 서비스: 애플 Siri, 구글 Now, 마이크로소프트 Cortana

        ⇒ 음성 인식 기법을 사용해서 가상 비서를 구현

        ⇒ 음성 인식은 컴퓨터와 상호작용할 수 있는 차세대 인터페이스

        → 음성 인식을 사용할 경우 양손을 자유자재로 움직일 수 있는 상태에서 컴퓨터에 명령을 내릴 수 있기 때문

      • 음성 인식의 대표적인 응용 사례

        ⇒ 가정용 인공지능 스피커

        → Google Home, Amazon Alexa

        → 사용자의 음성을 인식하고, 사용자의 질문에 대한 적합한 응답을 수행

        ⇒ 자율주행차에 내장된 음성 인식 시스템

    • Game: 게임 환경을 이용해서 인공지능 기술 발전을 연구하는 분야

      • 게임 인공지능의 응용 사례

        ⇒ 최신- OpenAI Five: 강화 학습에 기반한 알고리즘을 통해 복잡한 Dota2 게임의 세계 최고 플레이어들을 상대로 승리를 거둠

        ⇒ 알파고(AlphaGo): 바둑을 플레이하는 인공지능, 2016

        ⇒ 딥블루(Deep Blue): 인공지능 바둑/체스 프로그램, 1996

      • 게임 인공지능을 구현하기 위한 대표적인 머신러닝 알고리즘: 강화 학습

      • 최근: DQN(강화 학습과 딥러닝을 결합한 방법) 기법이 사용되고 있음, 알파고에도 적용

      • 알파고 제작 회사인 딥마인드 사 → 스타크래프트를 플레이하는 인공지능을 연구 중에 있음

    • Generative Model: 학습 데이터의 분포를 학습해서 학습한 분포로부터 새로운 데이터를 생성하는 방법을 연구하는 분야

      • 2014년 GAN(Generative Adversarial Networks) 구조가 발표된 이후 딥러닝을 이용한 생성 모델 기법이 급속도로 주목받게 됨

      • 학습 데이터의 양을 늘려서 분류기의 성능을 높이는 데이터 증대(Data Augmentation) 기법은 생성 모델을 응용할 수 있는 기법

        ⇒ 데이터가 부족한 상황에서 추가적인 트레이닝 데이터를 만들 수 있음

      • 생성 모델 구조

        ⇒ BEGAN: 컴퓨터가 새로운 얼굴 데이터를 생성

      • 생성 모델 응용 사례: Deepfake

        ⇒ Deepfake 기술은 생성 모델 기술에 기반하여 원본 영상의 얼굴을 자연스럽게 다른 사람의 얼굴로 대체할 수 있음

        ⇒ 인공지능 기술의 부작용으로 Deepfake 기술에 기반한 가짜 뉴스 생성 등으로 인한 사회적 혼란이 우려되고 있음

        ⇒ 추가로 요즘 AI 목소리 같은거 유행하는 것도 포함될듯

✅ 머신러닝의 기본 프로세스- 가설 / 손실함수 / 최적화 정의

: 선형 회귀 모델의 가설, 손실함수, 최적화 정의

  • 가설 정의

    학습하고자 하는 가설(문제)을 선형 함수의 형태로 표현

  • 손실함수(= 비용함수) 정의

    성능 측정- 가설로 정의된 선형 함수의 파라미터 값이 적합한 값인가를 측정

    • 대표적인 손실함수: 평균제곱오차(MSE)
  • 최적화 정의

    손실함수를 최소화하는 방향으로 파라미터값을 조정

    • 대표적인 최적화 기법: 경사하강법(Gradient Descent)

      다음 스텝의 파라미터 값 = 현재 스텝의 파라미터 값 - ( 러닝레이트 X 손실함수의 미분 값)

    • 러닝레이트 값을 지정하는 방법

      (원론적) 1. 상황에 맞게 설정

      (실용적) 2. 논문에 있는 러닝레이트 값과 동일한 값을 사용

      (실용적) 3. 러닝레이트 값으로 인해 파라미터 값이 발산하는 형태를 띄면 → 1/2 로 러닝레이트 값 조정

✅ Batch Gradient Descent, Stochastic Gradient Descent, Mini-Batch Gradient Descent

: 최적화 정의의 3가지 기법

  • Batch Gradient Descent

    경사하강법으로 파라미터를 한 번 업데이트할 때 전체 트레이닝 데이터를 하나의 Batch 로 적용

    • 장점: 튀는 데이터로 인해 파라미터 값의 최적화에 방해가 되는 경우를 고려할 필요가 없음
    • 단점: 한 스텝 업데이트 하는데에 시간이 오래 걸림
  • Stochastic Gradient Descent

    경사하강법으로 파라미터를 한 번 업데이트할 때 1개의 트레이닝 데이터를 하나의 Batch 로 적용

    • Batch Gradient Descent 와 반대되는 경우
    • 장점: 파라미터 업데이트의 주기가 짧아짐(자주 업데이트)
    • 단점: 튀는 데이터가 존재한다면 파라미터 값의 최적화가 진행되지 않을 수 있음(이 경우 손실함수 값이 크게 나옴)
  • Mini-Batch Gradient Descent

    전체 트레이닝 데이터가 n 개 있을 경우 m(n개의 데이터를 일정 갯수로 쪼갬) 개의 트레이닝 데이터를 하나의 Batch 로 적용

    • Batch Gradient Descent 와 Stochastic Gradient Descent 의 절충적인 기법

    • 가장 많이 사용됨

    • 장점: 튀는 데이터로 인해 파라미터 값의 최적화에 방해가 되는 경우를 고려할 필요가 없고, 한 스텝을 업데이트 하는데에 시간이 오래 걸리지 않음

    • ex) 1000 개의 트레이닝 데이터가 있으면

      → 100 개 씩 나누어 손실함수의 미분 값을 계산 후 다음 스텝의 파라미터 값을 갱신

✅ Training Data, Validation Data, Test Data & 오버피팅(Overfitting)

  • 트레이닝 데이터

    모델의 최적의 파라미터 값을 찾는 트레이닝 과정 중 필요한 데이터

  • 검증용 데이터

    트레이닝 과정 중간에 사용하는 테스트 데이터

    • 오버피팅

      모델의 표현력이 강력하여 일반적인 상황에서의 데이터를 수용하지 못하는 현상

      • 기준과 조금이라도 어긋나는 데이터는 옳은 결과라고 판단되지 않음

        ⇒ 손실함수가 커지므로 정확도가 떨어짐

      • 검증용 데이터의 에러가 커지는 시점 전에 트레이닝을 멈추어야 함

      • 딥러닝의 경우 오버피팅에 빠지기 쉬움

        ⇒ 오버피팅을 방지하기 위한 기법인 Regularization 기법을 사용함(ex: 드롭아웃)

      • 결정직선이 과도하게 꼬아진 형태를 띔

    • 언더피팅

      모델의 표현력이 부족하여 트레이닝 데이터도 제대로 예측하지 못하는 현상

      • 데이터가 일정 기준만 충족하여도 옳은 결과라고 판단됨

        ⇒ 정확도가 떨어짐

      • 결정직선이 거의 직선의 형태를 띔

  • 테스트 데이터

    최적의 파라미터 값을 갖는 모델로 실제 문제를 풀거나 모델이 잘 학습됐는지 테스트를 하기 위해 필요한 데이터

✅ 소프트맥스 회귀(Softmax Regression) & 크로스 엔트로피(Cross-Entropy Loss Function) & One-hot Encoding & MNIST

  • 소프트맥스 회귀

    n 개의 레이블을 분류하기 위한 가장 기본적인 모델

    • 특징
      • 선형 회귀 함수의 출력 값에 softmax 함수를 적용하면 → 각각의 값들의 합이 1이 됨
      • 모델의 각 출력 값들은 레이블에 대한 확률(= 확신의 정도) 을 나타냄
  • 크로스 엔트로피(Cross-Entropy) 손실 함수

    분류 문제에서 주로 쓰이는 손실 함수

    • H(P,Q)=− ∑ P(x)⋅log(Q(x))

      • P(x): 참 값을 One-hot Encoding 으로 변환한 값
      • Q(x): 예측 값을 One-hot Encoding 으로 변환한 값
    • 특징

      • 분류 문제에서 MSE 보다 더 학습이 잘 됨

      • MSE 의 특성처럼

        → 모델의 예측 값이 참 값과 비슷하면 작은 값을 가짐

        → 모델의 예측 값이 참 값과 다르면 큰 값을 가짐

      • 대부분의 텐서플로 코드들에서 크로스 엔트로피 손실 함수를 사용

  • MNIST 데이터셋

  • One-hot Encoding

    각각의 범주형 데이터에서 벡터의 한 인덱스만 1 값을 갖도록 구분한 것

    • 특징

      • 1 을 제외한 나머지 벡터 성분의 값은 모두 0 의 값을 갖도록 하여 Binary Value 로 표현함

      • 머신 러닝 알고리즘을 구현할 때 타겟 데이터를 One-hot Encoding 형태로 표현하는 것이 일반적

        → 위 크로스 엔트로피 손실 함수에서의 참 값과 예측 값도 One-hot Encoding 으로 변환함(세부 사항은 크로스 엔트로피 손실 함수 참조)

    • Integer Encoding

      n 개의 범주형 데이터가 있을 때 레이블을 각각 1~n 으로 변환하여 표현하는 것

      ⇒ 문제점: 머신러닝 알고리즘이 정수 값으로부터 잘못된 경향성을 학습하게 될 수도 있음

This post is licensed under CC BY 4.0 by the author.