티스토리 뷰
전통적으로 기계 학습 모델은 원시 데이터에서 추출한 수동으로 설계된 기능 또는 다른 단순 기계 학습 모델에서 학습 한 기능을 기반으로 유용한 작업을 수행하도록 훈련되었습니다. 딥 러닝에서 컴퓨터는 이 매뉴얼과 어려운 단계를 거치지 않고 원시 데이터에서 직접 유용한 표현과 특징을 자동으로 학습합니다. 지금까지 딥 러닝에서 가장 일반적인 모델은 인공 신경망의 다양한 변형이지만 다른 모델도 있습니다. 딥 러닝 방법의 주요 공통 특징은 특징 학습에 중점을 두고 있다는 것입니다.: 데이터 표현을 자동으로 학습합니다. 이것이 딥 러닝 접근 방식 과보다 "고전적인"머신 러닝 간의 주요 차이점입니다. 기능을 발견하고 작업을 수행하는 것이 하나의 문제로 병합되므로 동일한 교육 과정에서 둘 다 향상됩니다. 이 분야의 일반적인 개요를 참조하십시오. 의료 영상에서 깊은 학습에 대한 관심은 주로 에 의해 트리거 됩니다 길쌈 신경망 (CNNs) , 이미지 및 기타 구조화된 데이터의 유용한 표현을 배울 수 있는 강력한 방법입니다. CNN을 효율적으로 사용할 수 있게 되기 전에 이러한 기능은 일반적으로 수작업으로 엔지니어링 하거나 덜 강력한 기계 학습 모델로 만들어야 했습니다. 데이터에서 직접 학습 한 기능을 사용할 수 있게 된 후에는 수작업으로 만든 이미지 기능 중 많은 부분이 일반적으로 CNN에서 발견 한 기능 탐지기에 비해 거의 쓸모가 없는 것으로 밝혀졌기 때문에 길가에 남겨졌습니다. 15 CNN의 구성 방식에 따라 CNN에 포함된 몇 가지 강력한 기본 설정이 있으며, 이는 이것이 왜 그렇게 강력한 지 이해하는 데 도움이 됩니다. 따라서 CNN의 구성 요소를 살펴보겠습니다. 컨볼 루션 신경망의 구성 요소 이미지에 신경망을 적용할 때 원칙적으로 위에서 설명한 간단한 피드 포워드 신경망을 사용할 수 있습니다. 그러나 한 계층의 모든 노드에서 다음 계층의 모든 노드로 연결하는 것은 매우 비효율적입니다. 도메인 지식, 즉 이미지 구조를 기반으로 연결을 주의 깊게 정리하면 성능이 훨씬 향상됩니다. CNN은 계층 간 연결이 거의 없는 데이터의 공간적 관계를 보존하기 위한 특정 종류의 인공 신경망입니다. CNN에 대한 입력은 그리드 구조로 배열된 다음 이러한 관계를 유지하는 레이어를 통해 공급되며 각 레이어 작업은 이전 레이어의 작은 영역에서 작동합니다. CNNs는 입력 데이터의 효율적인 표현을 형성할 수 있는 16 이미지 지향 작업에 적합합니다. CNN은 다중 레이어의 컨볼 루션 및 활성화를 가지며 , 종종 풀링 레이어와 함께 산재하며 표준 인공 신경망과 마찬가지로 역 전파 및 경사 하강 법을 사용하여 훈련됩니다. 2.1 절을 참조하십시오. 또한 CNN은 일반적으로 최종 출력을 계산하는 마지막에 완전히 연결된 레이어를 가지고 있습니다. 컨벌루션 레이어 : 컨볼 루션 레이어에서 이전 레이어의 활성화는 텐서 W ( j, i )에 수집된 크기가 3 3 인 작은 매개 변수화 된 필터 세트로 컨볼 루션 됩니다. 여기서 j는 필터 번호이고 i입니다. 레이어 번호입니다. 각 필터가 전체 입력 도메인에서 정확히 동일한 가중치를 공유하게 함으로써, 즉 각 레이어에서 번역 등분 산을 통해 학습해야 하는 가중치 수를 대폭 줄일 수 있습니다. 이 가중치 공유의 동기는 이미지의 한 부분에 나타나는 특징이 다른 부분에도 나타날 가능성이 있기 때문입니다. 예를 들어 수평선을 감지할 수 있는 필터가 있는 경우 표시되는 모든 위치에서 이를 감지하는 데 사용할 수 있습니다. 컨벌루션 레이어에 대한 입력의 모든 위치에서 모든 컨볼 루션 필터를 적용하면 텐서의 기능 맵이 생성됩니다. 활성화 레이어 : 컨볼 루션 레이어의 피처 맵은 비선형 활성화 함수를 통해 공급됩니다. 이것은 전체 신경망이 거의 모든 비선형 함수에 근접할 수 있도록 합니다. 18 활성화 함수는 일반적으로 ReLU ( z ) = max (0, z )로 정의된 매우 간단한 수정 선형 단위 또는 ReLU 또는 누수 ReLU 또는 매개 변수 ReLU와 같은 변형입니다. 19 및 다른 활성 기능에 대한 자세한 내용. 활성화 함수를 통해 기능 맵을 공급 하면 일반적으로 기능 맵 이라고도 하는 새 텐서가 생성됩니다. 풀링 : 하나 이상의 컨볼 루션 레이어를 통해 데이터를 공급하여 생성된 각 기능 맵은 일반적으로 풀링 레이어에 풀링 됩니다. 풀링 작업은 작은 그리드 영역을 입력으로 사용하고 각 영역에 대해 단일 숫자를 생성합니다. 숫자는 일반적으로 max 함수 ( max-pooling ) 또는 average 함수 ( average pooling )를 사용하여 계산됩니다. 입력 이미지의 작은 이동은 활성화 맵에서 작은 변화를 가져오기 때문에 풀링 계층은 CNN에 약간의 변환 불변성을 제공합니다. 풀링의 다운 샘플링 효과를 얻는 다른 방법은 보폭이 늘어난 컨볼 루션을 사용하는 것입니다. 풀링 계층을 제거하면 성능이 반드시 저하되지 않고 네트워크 아키텍처가 단순화됩니다. 많은 최신 CNN의 다른 공통 요소는 다음과 같습니다. 드롭아웃 정규화 : CNN의 성능을 크게 향상한 간단한 아이디어입니다. 앙상블에서 여러 모델을 평균화하면 단일 모델을 사용할 때보 다 더 나은 성능을 얻는 경향이 있습니다. 드롭아웃은 신경망의 확률 적 샘플링을 기반으로 한 평균화 기법입니다. 20 훈련 중에 뉴런을 무작위로 제거하면 훈련 데이터의 각 배치에 대해 약간 다른 네트워크를 사용하게 되고 훈련된 네트워크의 가중치는 네트워크의 여러 변형에 대한 최적화를 기반으로 조정됩니다. 배치 정규화 : 이러한 계층은 일반적으로 활성화 계층 뒤에 배치되며, 각 훈련 배치의 평균을 빼고 표준 편차로 나누어 정규화된 활성화 맵을 생성 합니다. 배치 정규화 계층을 포함하면 훈련 배치가 이러한 계층에 도달할 때 네트워크가 주기적으로 활성화를 0 평균 및 단위 표준 편차로 변경합니다. 이는 네트워크에 대한 정규화 역할을 하고 훈련 속도를 높이며 신중한 매개 변수 초기화에 덜 의존하게 만듭니다. 새롭고 향상된 CNN 아키텍처의 설계에서 이러한 구성 요소는 점점 더 복잡하고 상호 연결된 방식으로 결합되거나 다른 편리한 작업으로 대체됩니다. 특정 작업에 대한 CNN을 설계할 때 해결해야 할 작업과 충족해야 할 요구 사항을 이해하고, 데이터를 네트워크에 가장 잘 공급하는 방법을 파악하고, 계산 및 메모리에 대한 예산을 최적으로 활용하는 등 여러 요소를 고려해야 합니다. 소비. 현대 딥 러닝의 초기에는 Lenet [56]과 AlexNet [1] 에서처럼 빌딩 블록의 매우 간단한 조합을 사용하는 경향이 있었습니다. 이후의 네트워크 아키텍처는 훨씬 더 복잡하며, 각 세대는 이전 아키텍처의 아이디어와 통찰력을 바탕으로 최신 업데이트를 제공합니다. 몇 가지 유명한 CNN 아키텍처의 간단한 목록이 포함되어 있으며 빌딩 블록을 결합하는 방법과 필드가 이동하는 방법을 보여줍니다. 이러한 신경망은 일반적으로 기계 학습 연구를 지배하는 소수의 소프트웨어 프레임 워크 중 하나 이상에서 구현되며 모두 NVIDIA의 CUDA 플랫폼과 cuDNN 라이브러리를 기반으로 구축됩니다. 오늘날의 딥 러닝 방법은 Google Research에서 시작된 프레임 워크 인 Tensor Flow, 원래 Francois Chollet이 구축하고 최근에 Tensor Flow에 통합된 딥 러닝 라이브러리 인 Keras 또는 Facebook Research와 관련된 프레임 워크 인 Pytorch에서 거의 독점적으로 구현됩니다. 예외는 거의 없습니다 (다크 넷 프레임 워크 [85]를 사용하여 구축된 YOLO는 드문 경우 중 하나입니다). 모든 주요 프레임 워크는 오픈 소스이며 활발하게 개발 중입니다.