딥 러닝이란 무엇입니까? 인간의 뇌를 모방 한 알고리즘

정의 된 딥 러닝

딥 러닝 은 데이터의 패턴을 복잡한 다층 네트워크로 모델링하는 머신 러닝의 한 형태입니다. 딥 러닝은 문제를 모델링하는 가장 일반적인 방법이기 때문에 컴퓨터 비전 및 자연어 처리와 같은 기존 프로그래밍 및 기타 기계 학습 기술을 능가하는 어려운 문제를 해결할 수있는 잠재력이 있습니다.

딥 러닝은 다른 방법이 실패하는 경우 유용한 결과를 생성 할뿐만 아니라 다른 방법보다 더 정확한 모델을 구축 할 수 있으며 유용한 모델을 구축하는 데 필요한 시간을 줄일 수 있습니다. 그러나 딥 러닝 모델을 훈련하려면 상당한 컴퓨팅 능력이 필요합니다. 딥 러닝의 또 다른 단점은 딥 러닝 모델을 해석하기 어렵다는 것입니다. 

딥 러닝의 특징은 학습중인 모델이 입력과 출력 사이에 둘 이상의 은닉층을 가지고 있다는 것 입니다. 대부분의 토론에서 딥 러닝은 딥 신경망을 사용하는 것을 의미합니다. 그러나 신경망 외에 다른 종류의 숨겨진 레이어를 사용하여 딥 러닝을 구현하는 몇 가지 알고리즘이 있습니다.

딥 러닝 vs. 머신 러닝

저는 딥 러닝이 기계 학습의 한 형태 라고 언급했습니다 . 일반적인 사용법을 따르기 위해 비 딥 머신 러닝을 고전적인 머신 러닝이라고 부를 것입니다.

일반적으로 고전적인 기계 학습 알고리즘은 딥 러닝 알고리즘보다 훨씬 빠르게 실행됩니다. 하나 이상의 CPU는 종종 클래식 모델을 학습하는 데 충분합니다. 딥 러닝 모델에는 학습 및 대규모 배포를 위해 GPU, TPU 또는 FPGA와 같은 하드웨어 가속기가 필요합니다. 그것들이 없다면 모델을 훈련시키는 데 몇 달이 걸릴 것입니다.

많은 문제에 대해 일부 고전적인 기계 학습 알고리즘은 "충분한"모델을 생성합니다. 다른 문제의 경우, 고전적인 기계 학습 알고리즘은 과거에별로 잘 작동하지 않았습니다.

딥 러닝 애플리케이션

현재 최고의 모델을 생성하기 위해 딥 러닝이 필요한 문제의 예가 많이 있습니다. 자연어 처리 (NLP)가 좋은 방법입니다.

2016 년 가을, 영어-프랑스어, 영어-중국어 및 영어-일본어 쌍에 대한 Google 번역 출력의 품질이 갑자기 단어 샐러드 작성에서 사람이 전문 번역 품질에 가까운 문장을 생성하는 것에 이르기까지 급격히 향상되었습니다. 배후에서 일어난 일은 Google Brain 및 Google 번역 팀이 Google 번역을 기존 문구 기반 통계 기계 번역 알고리즘 (고전적인 기계 학습의 한 종류)에서 Google의 TensorFlow 프레임 워크를 사용하여 단어 임베딩으로 훈련 된 심층 신경망 사용으로 개선 한 것입니다. .

쉬운 프로젝트가 아니 었습니다. 많은 박사 수준의 연구원들이 모델 작업에 수개월이 걸렸고 모델 교육에 수천 주 GPU가 걸렸습니다. 또한 Google 번역을 위해 대규모로 신경망을 실행하기 위해 새로운 종류의 칩인 Tensor Processing Unit (TPU)을 만드는 데 박차를가했습니다.

Google 번역에서 다루는 언어 번역 문제 외에도 주요 NLP 작업에는 자동 요약, 공동 참조 해결, 담론 분석, 형태 학적 세분화, 명명 된 엔티티 인식, 자연어 생성, 자연어 이해, 품사 태깅, 감정이 포함됩니다. 분석 및 음성 인식.

딥 러닝 적용의 또 다른 좋은 예는 이미지 분류입니다. 살아있는 유기체는 시각 피질로 이미지를 처리하기 때문에 많은 연구자들이 포유류 시각 피질의 아키텍처를 이미지 인식을 수행하도록 설계된 신경망의 모델로 삼았습니다. 생물학적 연구는 1950 년대로 거슬러 올라갑니다.

비전을위한 신경망 분야의 돌파구는 Yann LeCun의 1998 년 LeNet-5로, 32x32 픽셀 이미지로 디지털화 된 손글씨 숫자를 인식하기위한 7 단계 컨볼 루션 신경망 (CNN)입니다. 고해상도 이미지를 분석하려면 LeNet-5 네트워크를 더 많은 뉴런과 더 많은 계층으로 확장해야합니다.

오늘날 최고의 심층 이미지 분류 모델은 HD 해상도의 다양한 물체 카탈로그를 컬러로 식별 할 수 있습니다. 순수한 딥 뉴럴 네트워크 (DNN) 외에도 때때로 사람들은 특정 하위 작업을 수행하는 고전적인 기계 학습 알고리즘과 딥 러닝을 결합한 하이브리드 비전 모델을 사용합니다.

딥 러닝을 통해 해결 된 기본적인 이미지 분류 외에 다른 비전 문제로는 지역화를 통한 이미지 분류, 객체 감지, 객체 분할, 이미지 스타일 전송, 이미지 색상 화, 이미지 재구성, 이미지 초 해상도 및 이미지 합성이 있습니다.

비디오에서 개별 프레임을 추출하고 각 프레임을 분류하여 이미지 분류를 비디오 분류로 확장 할 수 있습니다. 비디오 클립에서 감지 된 개체는 프레임에서 프레임으로 추적 할 수 있습니다.

Goodfellow, Bengio 및 Courville에 따르면 2016 년에 저술 한 바에 따르면 딥 러닝은 제약 회사가 신약을 설계하고 아 원자 입자를 검색하며 구성에 사용되는 현미경 이미지를 자동으로 파싱하기 위해 분자가 상호 작용하는 방식을 예측하는 데 성공적으로 사용되었습니다. 인간 두뇌의 3 차원지도.

딥 러닝 신경망

"인공"신경망에 대한 아이디어는 1940 년대로 거슬러 올라갑니다. 본질적인 개념은 상호 연결된 임계 스위치로 만들어진 인공 뉴런 네트워크가 동물의 뇌와 신경계 (망막 포함)와 동일한 방식으로 패턴을 인식하는 방법을 배울 수 있다는 것입니다.

역 전파

심층 신경망에서의 학습은 훈련 중에 두 뉴런이 동시에 활성화 될 때 두 뉴런 간의 연결을 강화함으로써 발생합니다. 현대 신경망 소프트웨어에서 이것은 가장 일반적으로 오류 역 전파, 역 전파 또는 BP 라는 규칙을 사용하여 뉴런 간의 연결에 대한 가중치 값을 증가시키는 문제입니다 .

뉴런

뉴런은 어떻게 모델링됩니까? 각각에는 연결된 뉴런의 출력을 종종 가중치 합계로 변환하는 전파 함수가 있습니다. 전파 함수의 출력은 입력이 임계 값을 초과 할 때 실행되는 활성화 함수로 전달됩니다.

활성화 기능

1940 년대와 1950 년대 인공 뉴런은 단계 활성화 기능을 사용했으며 퍼셉트론 이라고 불렀습니다 . 현대 신경망 은 퍼셉트론을 사용 한다고 말할 수 있지만 실제로는 로지스틱 또는 시그 모이 드 함수, 쌍곡선 탄젠트 및 ReLU (Rectified Linear Unit)와 같은 부드러운 활성화 함수를 가지고 있습니다. ReLU는 일반적으로 빠른 수렴을위한 최선의 선택이지만 학습률이 너무 높게 설정되면 훈련 중에 뉴런이 "죽어가는"문제가 있습니다.

활성화 함수의 출력은 추가 셰이핑을 위해 출력 함수로 전달할 수 있습니다. 그러나 종종 출력 함수는 식별 함수이며 활성화 함수의 출력이 다운 스트림 연결된 뉴런으로 전달됨을 의미합니다.

신경망 토폴로지

이제 뉴런에 대해 알았으므로 일반적인 신경망 토폴로지에 대해 배워야합니다. 피드 포워드 네트워크에서 뉴런은 하나의 입력 계층, 임의의 수의 숨겨진 처리 계층 및 하나의 출력 계층과 같은 별개의 계층으로 구성되며 각 계층의 출력은 다음 계층으로 만 이동합니다.

바로 가기 연결이있는 피드 포워드 네트워크에서 일부 연결은 하나 이상의 중간 계층을 건너 뛸 수 있습니다. 순환 신경망에서 뉴런은 다음 계층을 통해 직접 또는 간접적으로 자신에게 영향을 미칠 수 있습니다.

훈련

신경망의지도 학습은 다른 기계 학습과 마찬가지로 수행됩니다. 훈련 데이터 그룹으로 네트워크를 제시하고, 네트워크 출력을 원하는 출력과 비교하고, 오류 벡터를 생성하고, 오류 벡터를 기반으로 네트워크에 수정 사항을 적용합니다. 수정을 적용하기 전에 함께 실행되는 훈련 데이터 배치를 에포크라고합니다.

세부 사항에 관심이있는 사람들을 위해 역전 파는 모델의 가중치 및 편향과 관련하여 오류 (또는 비용) 함수의 기울기를 사용하여 오류를 최소화하기위한 올바른 방향을 찾습니다. 두 가지 요소가 수정 적용을 제어합니다. 최적화 알고리즘과 학습률 변수는 수렴을 보장하고 죽은 ReLU 뉴런의 발생을 방지하기 위해 일반적으로 작아야합니다.

최적화 도구

신경 네트워크에 대한 최적화는 일반적으로 무작위로 선택된 미니 배치 (확률 그라데이션 하강)을 최적화하고 적용되는 것으로, 지역 최소값에 갇혀되는 것을 도움말 방지 할 수있는 메커니즘 종종 역 전파를 구동하기 위해 그라데이션 하강 알고리즘의 일부 양식을 사용 모멘텀의 기울기에 수정 . 일부 최적화 알고리즘은 기울기 기록 (AdaGrad, RMSProp 및 Adam)을 확인하여 모델 매개 변수의 학습률도 조정합니다.

모든 기계 학습과 마찬가지로 별도의 검증 데이터 세트에 대해 신경망의 예측을 확인해야합니다. 그렇게하지 않으면 일반화 된 예측자가되는 것을 배우는 대신 입력 만 기억하는 신경망을 만들 위험이 있습니다.

실제 DNN

실제 문제에 대한 심층 신경망에는 10 개 이상의 숨겨진 레이어가있을 수 있습니다. 토폴로지는 단순하거나 매우 복잡 할 수 있습니다.

네트워크에 계층이 많을수록 더 많은 특성을 인식 할 수 있습니다. 안타깝게도 네트워크에 계층이 많을수록 계산하는 데 더 오래 걸리고 훈련하기가 더 어려워집니다.

딥 러닝 알고리즘

앞서 언급했듯이 대부분의 딥 러닝은 딥 뉴럴 네트워크로 수행됩니다. 컨볼 루션 신경망 (CNN)은 머신 비전에 자주 사용됩니다. RNN (Recurrent Neural Network)은 LSTM (Long Short-Term Memory) 네트워크 및주의 기반 신경망과 마찬가지로 자연어 및 기타 시퀀스 처리에 자주 사용됩니다. 신경망이 아닌 Random Decision Forest라고도하는 Random Forest는 다양한 분류 및 회귀 문제에 유용합니다.

CNN 신경망

컨볼 루션 신경망은 일반적으로 컨볼 루션, 풀링, ReLU, 완전 연결 및 손실 계층을 사용하여 시각 피질을 시뮬레이션합니다. 컨볼 루션 레이어는 기본적으로 많은 작은 중첩 영역의 적분을 취합니다. 풀링 계층은 비선형 다운 샘플링의 한 형태를 수행합니다. ReLU 계층은 비 포화 활성화 함수를 적용합니다 f(x) = max(0,x). 완전 연결 계층에서 뉴런은 이전 계층의 모든 활성화에 연결됩니다. 손실 계층은 분류를 위해 Softmax 또는 교차 엔트로피 손실 함수를 사용하거나 회귀를 위해 유클리드 손실 함수를 사용하여 네트워크 훈련이 예측 레이블과 실제 레이블 간의 편차에 페널티를주는 방법을 계산합니다.

RNN, LSTM 및주의 기반 신경망

피드 포워드 신경망에서 정보는 입력에서 숨겨진 계층을 통해 출력으로 흐릅니다. 이것은 네트워크가 한 번에 하나의 상태를 처리하도록 제한합니다.

순환 신경망에서 정보는 루프를 통해 순환하므로 네트워크가 최근 이전 출력을 기억할 수 있습니다. 이를 통해 시퀀스 및 시계열 분석이 가능합니다. RNN에는 두 가지 일반적인 문제가 있습니다. 즉, 그라디언트 폭발 (그라디언트를 고정하여 쉽게 수정) 및 그라디언트 소멸 (수정하기 쉽지 않음)입니다.

LSTM에서 네트워크는 두 경우 모두 가중치를 변경하여 이전 정보를 잊거나 (게이팅) 기억할 수 있습니다. 이는 LSTM에 장기 및 단기 기억을 효과적으로 제공하고 소실 기울기 문제를 해결합니다. LSTM은 수백 개의 과거 입력 시퀀스를 처리 할 수 ​​있습니다.

주의 모듈은 입력 벡터에 가중치를 적용하는 일반화 된 게이트입니다. 계층 적 신경주의 인코더는 여러 계층의주의 모듈을 사용하여 수만 개의 과거 입력을 처리합니다.

랜덤 포레스트

심층 신경망이 아닌 또 다른 종류의 심층 학습 알고리즘은 Random Forest 또는 Random Decision Forest입니다. Random Forest는 여러 계층으로 구성되지만 뉴런 대신 의사 결정 트리에서 구성되며 개별 트리 예측의 통계 평균 (분류 모드 또는 회귀 평균)을 출력합니다. Random Forests의 무작위 측면은 개별 트리에 대한 부트 스트랩 집계 (일명 배깅 )를 사용하고 기능의 무작위 하위 집합을 취하는 것입니다.

딥 러닝 프레임 워크

첫 번째 원칙에 따라 딥 러닝 프로그램을 작성할 수 있지만, 특히 GPU 및 기타 가속기와 함께 사용하도록 최적화 된 경우 딥 러닝 프레임 워크를 사용하는 것이 훨씬 더 효율적입니다. 탁월한 프레임 워크는 Google에서 시작된 TensorFlow입니다. TensorFlow 용으로 선호되는 상위 수준 API는 Keras이며 다른 백엔드 프레임 워크에서도 사용할 수 있습니다.

Facebook 및 기타 업체의 PyTorch는 TensorFlow의 강력한 대안이며 네트워크 토폴로지가 시대에 따라 변경 될 수있는 동적 신경망을 지원한다는 특징이 있습니다. Fastai는 PyTorch를 백엔드로 사용하는 고급 타사 API입니다.

Amazon 및 기타 업체의 MXNet은 더 나은 확장 성을 주장하는 TensorFlow의 또 다른 강력한 대안입니다. Gluon은 MXNet에 대해 선호되는 고수준 명령형 API입니다.

IBM, Intel 및 기타 업체의 Chainer는 실행별로 신경망을 정의하고 동적 신경망을 지원한다는 점을 감안할 때 PyTorch의 영감을 받았습니다.

위에서 언급 한 모든 프레임 워크는 주로 Python이지만, 원래 Skymind에서 왔으며 현재 Apache 프로젝트 인 Deeplearning4j (DL4J)는 주로 Java 및 Scala입니다. DL4J는 Apache Spark 및 Hadoop과 호환됩니다.

ONNX는 원래 상호 교환 가능한 AI 모델을위한 개방형 생태계로 제안되었습니다. 이제 ONNX에는 교환 파일 형식 외에 런타임이 있습니다.