(Deep Learning) 딥 러닝(Deep Learning) > Preview

딥 러닝(Deep Learning) 이란?


  • 데이터에 존재하는 패턴을 복잡한 다계층 네트워크로 모델화하는 머신러닝의 일종
  • Deep learning 은 문제를 모델화하는 방법으로, 컴퓨터 비전과 자연어 처리 같은 어려운 문제 또한 해결 가능 합니다.
  • 트레이닝 할 모델의 Input 과 Output 사이에 숨겨진 계층(hidden layer)이 한 개 이상 존재 해야 하며.  Deep learning 은 심층 신경망(Deep Neural Networks, DNN)을 사용하는 것을 의미합니다.. 
  • 참고로 신경망 외에도, 다른 종류의 숨겨진 계층을 사용해 딥 러닝을 구현하는 알고리즘들이 소수 존재 합니다..
  • 딥러닝 모델 트레이닝에는 아주 높은 컴퓨팅 성능이 필요 하며, 딥 러닝 모델 해석이 어려  것이 대표적인 단점 입니다. 





1. 딥 러닝 vs 머신러닝
  • 딥 러닝은 머신러닝의 한 종류로 볼 수 있습니다.


2. 딥 러닝 애플리케이션 분야
  • 자연어 처리 (Natural Language Processing, NLP)가 대표적인 예로
    • 자동 요약(Automatic Summarization)
    • 대용어 해소(Co-reference Resolution)
    • 담화 분석(Discourse Analysis)
    • 형태론적 구분(morphological segmentation)
    • 개체명 인식(Named Entity Recognition, NER)
    • 자연어 생성
    • 자연어 이해
    • POS(Part of Speech) 태깅
    • 감성 분석(sentiment analysis)
    • 스피치 인식(speech recognition) 
    • 등이 있다.

  • 이미지 관련 문제의 경우
    • 객체 탐지(Object detection)
    • 객체 분할(Object segmentation)
    • 이미지 스타일 전이(Image style transfer)
    • 이미지 색상화(Image colorization)
    • 이미지 재구성(Image reconstruction)
    • 이미지 슈퍼레졸루션(Image super-resolution)
    • 이미지 합성(Image synthesis) 등 이 있으며

  • 이미지 분류는 비디오에서 개별 프레임을 추출해 비디오 관련 문제로 확대 적용 가능 
    • 비디오에서 탐지한 객체를 프레임 별로 추적할 수 있습니다.
      • 각 프레임은 한장의 이미지 이기에..

            3. 딥러닝 필수 개념
            • 신경망
              • ‘인공’ 신경망의 개념은 1940년대 처음 만들어졌으며
              • 서로 연결된 한계 스위치(Threshold switches)를 통해 만든 인공 신경(뉴런) 네트워크를 학습시켜, 동물의 뇌와 신경계(망막 포함)처럼 패턴을 인식할 수 있게 만들 수 있다는 개념

            • Backpropagation(역전파)

            • 뉴런(신경 단위)
              • 모델화한 뉴런은 어떨까? 각각 연결된 뉴런의 아웃풋(많은 경우 가중합과 함께)을 전이시키는 전파 함수(Propagation function)를 갖고 있습니다. 
              • 이 전파 함수의 아웃풋은 활성화 함수(Activation function)로 전달된다. 인풋이 한계 값을 초과할 때 작동을 시작하는 함수

            • 활성화 함수(Activation function)
              • 논리(Logistic), 시그모이드 함수(Sigmoid function), 쌍곡선 탄젠트(hyperbolic tangent), ReLu(Rectified Linear Unit)가 여기에 해당된다. 
              • 빠른 수렴(Convergence)에는 일반적으로 ReLU가 가장 좋다 그러나 학습 계수(Learning rate)를 너무 높게 설정하면 트레이닝 동안 뉴런이 '죽는’ 문제가 있으며 
              • 활성 함수 아웃풋을 아웃풋 함수로 전달할 수 있습니다. 
            • 신경망 토폴로지 
              • 피드포워드 망(Feed-forward network)에서 뉴런은 별개의 계층으로 구성된다. 1개의 인풋 계층, 몇 개의 숨겨진 처리 계층, 1개의 아웃풋 계층 
              • 각 계층의 아웃풋은 다음 계층으로만 전달 
              • 빠른 연결 형태를 가진 피드포워드 망의 경우, 일부 연결이 하나 이상의 중간 계층을 건너뛸 수도 있으며
              • 순환 신경망(Recurrent Neural Network, RNN)의 경우, 뉴런은 직접, 또는 다음 계층을 통해 간접적으로 스스로에게 영향을 줄 수 있습니다.

            • 트레이닝
              • 신경망 학습의 지도 학습(Supervised learning)은 다른 머신러닝과 유사하게 이뤄진다. 네트워크에 트레이닝 데이터 그룹을 제시하고, 네트워크 아웃풋을 원하는 아웃풋과 비교하고, 오류 벡터를 생성하고, 오류 벡터를 토대로 네트워크에 수정을 적용합니다.
              • 수정을 적용하기 앞서 함께 실행하는 트레이닝 데이터 배치를 에포크(Epoch)라고 부릅니다.
              • 좀 더 세부적인 내용을 설명하자면, 오차역전파는 모델의 가중치 및 편향에 대해 오류(또는 대가) 함수의 기울기를 사용해 오류를 최소화시킬 수정의 방향을 찾으며, 
              • 최적화 알고리즘(optimization algorithm)과 학습 계수 변수(learning rate variable) 이 두 가지가 수정을 적용하는 것을 통제합니다.
              • 통상 수렴이 보장되고, ReLU 뉴런이 죽는 문제를 방지하기 위해 가능한 작아야 합니다.

            •  Optimizer
              • 신경망의 옵티마이저(Optimizers)는 일반적으로 경사 하강(Gradient descent) 알고리즘을 사용해 오차 역전파를 견인 합니다.
              • 임의로 선택한 미니-배치(확률적 경사 하강)을 최적화하는 등 국소 최소한도 문제가 발생하는 것을 피하고, 경사에 탄성 수정치를 적용하는 데 도움을 주는 메카니즘을 사용하는 경우도 많습니다.
              • 일부 최적화 알고리즘은 경사(기울기) 기록들인 AdaGrad, RMSProp, Adam을 조사해 모델 파라미터의 학습 계수를 조정 합니다.
              • 다른 모든 머신러닝과 마찬가지로, 별개의 검증 데이터 세트를 대상으로 신경망의 예측치를 확인할 필요가 있다. 이렇게 하지 않으면, 일반화된 예측 도구가 될 학습 대신 인풋만 기억하는 신경망이 만들어질 위험이 있습니다.


            4. 딥 러닝 알고리즘

            • 대부분의 딥 러닝에 DNN (Deep Neural Network) 을 사용하며
            • CNN(Convolutional Neural Networks)는 컴퓨터 영상에 많이 사용
              • CNN은 통상 콘볼루션, 풀링, ReLu, 완전 연결, 손실(loss) 계층을 사용
              • 풀링 계층은 일종의 비선형 다운 샘플링을 실시합니다.
              • ​완전 연결 계층의 경우, 뉴런은 앞선 계층의 모든 활성체와 연결 됩니다. 
              • 손실 계층의 경우, 예측한 레이블과 진짜 레이블 간 편향을 파악해 조정하는 네트워크 트레이닝에 대해 계산 합니다.
                • 분류에는 소프트맥스(Softmax)나 크로스 엔트로피(Cross-entropy) 손실 함수, 
                • 회귀에는 유클리드(Euclidean) 손실 함수를 사용

            • RNN(Recurrent Neural Networks) , LSTM(Long Short-Term Memory) 네트워크와 어텐션(Attention) 기반 신경망의 경우 자연어, 기타 시퀀스 프로세싱에 주 사용.
              • feed forward 신경망은 input 에서 hidden layer, output 순으로 정보가 전달.
                • 이는 네트워크가 한 번에 1개의 상태만 처리하도록 제약.
              • RNN의 경우, 정보가 순환식으로 흐른다.
                • 따라서 네트워크는 이전의 아웃풋을 기억하게 됩니다.. 
                • 이를 통해 시퀀스와 시계열을 분석할 수 있습니다.
              • RNN에는 2가지 일반적인 문제가 있다.
                • 경사도를 중첩시켜 쉽게 고칠 수 있는 ‘경사도 폭발(Exploding gradients)’ 문제와 쉽게 고치기 힘든 ‘경사도 사라짐(Vanishing Gradients)’ 문제
              • LSTM의 경우, 
                • 가중치를 수정하는 방법으로 이전 정보를 잊거나, 기억하도록 만들 수 있다.
                • 이는 LSTM에 장단기 기억 능력을 제공하며, ‘경사도 사라짐’ 문제를 해결한다. LSTM은 과거 인풋의 수백 시퀀스를 처리할 수 있습니다.
              • Attention 모델은 인풋 벡터에 가중치를 적용하는 일반화된 게이트 
                • 계층적인 뉴럴 어텐션 인코더는 여러 어텐션 모듈 계층을 사용, 수 많은 과거 인풋을 처리

            • 랜덤 포레스트(Random Forests)
              • 다양한 분류와 회귀 문제에 유용하지만 신경망이라 할 수 없습니다.
              • DNN이 아닌, 또 다른 종류의 딥 러닝 알고리즘이 랜덤 포레스트 
                • 랜덤 포레스터는 수 많은 계층으로부터 구성 
                • 그러나 뉴런이 아닌 의사결정 트리로부터 구성.
              • 또 아웃풋은
                • 개별 트리의 통계적인 예측치 평균이다(분류의 경우 최빈값, 회귀의 경우 평균). 
                • 랜덤 포레스트는 임의성(무작위성, 확률성)을 갖습니다. 
                • 개별 트리에 부트스트랩 총계치를 사용하고(일명 bagging), 임의의 특징 하위 집합을 가져오기 때문 입니다.


            5. 딥 러닝 프레임워크의 종류
            • 딥 러닝 프로그램을 만들기 위해 딥 러닝 프레임워크를 사용하는 것이 훨씬 더 효율적
              • GPU와 기타 액셀레이터(가속기)와 함께 사용할 수 있도록 최적화 
            • 주요 프레임워크는
              • 파이썬(Python)이 기본인
                • 구글이 만든 텐서플로우
                  • 텐서플로우에서 인기있는 고수준 API는 케라스(Keras) 이며
                  • 다른 백엔드 프레임워크와 함께 사용할 수도 있습니다.
                • 페이스북 등의 파이토치(PyTorch)
                  • 동적 신경망을 지원한다는 특징 
                  • 에포크마다 네트워크 특징을 변경할 수 있다는 의미 
                • 아마존 등의 MXNet
                  • 확장성이 더 뛰어나다고 주장
                  • MXNet에 반드시 필요한 고수준 API는 글루온(Gluon)
                  • IBM과 인텔 등의 체이너(Chaniner)가 파이토치에 일정 수준 ‘영감’을 줬다. 신경망을 실행(run)으로 정의하며, 동적 신경망을 지원하기 때문입니다.
              •  자바(Java)와 스칼라(Scala)
                • DL4J(Deeplearning4j)
                  • 스카이마인드(Skymind)에서 시작됐고 지금은 아파치 프로젝트가 된 DL4J는 아파치 스파크 및 하둡과 호환.


            6. 딥 러닝 전이 학습
            • 전이 학습(Transfer Learning)이란?
              • 하나의 데이터 세트에 트레이닝 된 모델을 다른 데이터 세트에 맞춰 조정하는 프로세스 입니다. 
              • 전이 학습을 이용하는 것이 처음부터 모델을 트레이닝시키는 것보다 빠르다. 또 트레이닝에 필요한 데이터가 더 적습니다. 
              • 주로 Cloud 사업자가 제공하는 모델로는
                • 구글 클라우드 AutoML(Cloud AutoML) :  영상, 번역, 자연어용 딥 러닝 전이 학습이 구현되어 있으며
                • 애저 머신러닝 서비스(Azure Machine Learning Service) 또한 이와 유사한 딥 러닝 전이 학습 서비스를 맞춤형 비전, 맞춤형 스피치, 번역, 맞춤형 검색에 대해 제공하고 있습니다.


            7. 딥 러닝 관련 책과 자료



            Comments

            Popular posts from this blog

            [MaritimeCyberTrend] Relationship and prospects between U.S. Chinese maritime operations and maritime cybersecurity

            인공지능 서비스 - 챗봇, 사전에 충분한 지식을 전달하고 함께 학습 하기!

            [Curriculum] Sungkyunkwan University - Department of Information Security - Course Sequence by Areas of Interest