(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

            Examining the Reality of Cyber Incidents and the Shortfalls in Compliance Frameworks

            Comprehensive List of Shipboard Systems in Commercial Vessels