Keras를 사용한 딥 러닝-딥 러닝

서론에서 말했듯이 딥 러닝은 엄청난 양의 데이터로 인공 신경망을 훈련시키는 과정입니다. 일단 훈련되면 네트워크는 보이지 않는 데이터에 대한 예측을 제공 할 수 있습니다. 딥 러닝이 무엇인지 설명하기 전에 신경망 훈련에 사용되는 몇 가지 용어를 빠르게 살펴 보겠습니다.

신경망

인공 신경망의 아이디어는 우리 뇌의 신경망에서 파생되었습니다. 일반적인 신경망은 아래 그림과 같이 입력, 출력 및 히든 레이어의 세 계층으로 구성됩니다.

이것은 또한 shallow은닉층이 하나만 포함되어 있기 때문입니다. 더 복잡한 아키텍처를 만들기 위해 위의 아키텍처에 더 많은 숨겨진 레이어를 추가합니다.

딥 네트워크

다음 다이어그램은 4 개의 은닉 계층, 입력 계층 및 출력 계층으로 구성된 심층 네트워크를 보여줍니다.

숨겨진 계층의 수가 네트워크에 추가됨에 따라 필요한 리소스와 네트워크를 완전히 훈련하는 데 걸리는 시간 측면에서 훈련이 더 복잡해집니다.

네트워크 교육

네트워크 아키텍처를 정의한 후 특정 유형의 예측을 수행하도록 훈련시킵니다. 네트워크 훈련은 네트워크의 각 링크에 대한 적절한 가중치를 찾는 프로세스입니다. 훈련 중에 데이터는 다양한 히든 레이어를 통해 입력에서 출력 레이어로 흐릅니다. 데이터가 항상 입력에서 출력으로 한 방향으로 이동하므로이 네트워크를 Feed-forward Network라고하고 데이터 전파를 Forward Propagation이라고합니다.

활성화 기능

각 계층에서 입력의 가중 합계를 계산하여 활성화 함수에 제공합니다. 활성화 함수는 네트워크에 비선형 성을 가져옵니다. 출력을 이산화하는 것은 단순히 수학적 함수입니다. 가장 일반적으로 사용되는 활성화 함수는 시그 모이 드, 쌍곡선, 탄젠트 (tanh), ReLU 및 Softmax입니다.

역 전파

역전 파는지도 학습을위한 알고리즘입니다. 역 전파에서 오류는 출력에서 ​​입력 계층으로 역방향으로 전파됩니다. 오류 함수가 주어지면 각 연결에 할당 된 가중치와 관련하여 오류 함수의 기울기를 계산합니다. 기울기 계산은 네트워크를 통해 거꾸로 진행됩니다. 마지막 가중치 레이어의 기울기가 먼저 계산되고 첫 번째 가중치 레이어의 기울기가 마지막에 계산됩니다.

각 레이어에서 그라데이션의 부분 계산은 이전 레이어의 그라데이션 계산에 재사용됩니다. 이를 Gradient Descent라고합니다.

이 프로젝트 기반 튜토리얼에서는 피드 포워드 심층 신경망을 정의하고 역 전파 및 경사 하강 법 기술로 훈련합니다. 운 좋게도 Keras는 네트워크 아키텍처를 정의하고 경사 하강 법을 사용하여 교육하기위한 모든 고급 API를 제공합니다. 다음으로 Keras에서이를 수행하는 방법을 배웁니다.

손글씨 숫자 인식 시스템

이 미니 프로젝트에서는 앞에서 설명한 기술을 적용합니다. 손으로 쓴 숫자를 인식하도록 훈련 될 딥 러닝 신경망을 생성합니다. 모든 기계 학습 프로젝트에서 첫 번째 과제는 데이터 수집입니다. 특히 딥 러닝 네트워크의 경우 방대한 데이터가 필요합니다. 다행히 우리가 해결하려는 문제에 대해 누군가 이미 훈련 용 데이터 세트를 만들었습니다. 이것은 Keras 라이브러리의 일부로 제공되는 mnist라고합니다. 데이터 세트는 손으로 쓴 숫자의 28x28 픽셀 이미지로 구성됩니다. 이 데이터 세트의 주요 부분에서 모델을 훈련시키고 나머지 데이터는 훈련 된 모델의 유효성을 검사하는 데 사용됩니다.

프로젝트 설명

그만큼 mnist데이터 세트는 손으로 쓴 숫자의 70000 개 이미지로 구성됩니다. 참조를 위해 여기에 몇 가지 샘플 이미지가 재현되어 있습니다.

각 이미지의 크기는 28 x 28 픽셀이므로 다양한 그레이 스케일 레벨의 총 768 픽셀입니다. 대부분의 픽셀은 검은 색 음영을 향하는 경향이 있지만 그중 일부만 흰색을 향합니다. 이 픽셀들의 분포를 배열이나 벡터에 넣을 것입니다. 예를 들어, 숫자 4와 5의 일반적인 이미지에 대한 픽셀 분포가 아래 그림에 나와 있습니다.

각 이미지의 크기는 28 x 28 픽셀이므로 다양한 그레이 스케일 레벨의 총 768 픽셀입니다. 대부분의 픽셀은 검은 색 음영을 향하는 경향이 있지만 그중 일부만 흰색을 향합니다. 이 픽셀들의 분포를 배열이나 벡터에 넣을 것입니다. 예를 들어, 숫자 4와 5의 일반적인 이미지에 대한 픽셀 분포가 아래 그림에 나와 있습니다.

분명히, 픽셀의 분포 (특히 흰색 톤으로 향하는 경향이있는 픽셀)가 다른 것을 볼 수 있습니다. 이것은 픽셀이 나타내는 숫자를 구별합니다. 이 784 픽셀 분포를 네트워크에 입력으로 제공합니다. 네트워크의 출력은 0에서 9 사이의 숫자를 나타내는 10 개의 범주로 구성됩니다.

우리의 네트워크는 4 개의 레이어 (입력 레이어 1 개, 출력 레이어 1 개, 은닉 레이어 2 개)로 구성됩니다. 각 숨겨진 레이어에는 512 개의 노드가 포함됩니다. 각 레이어는 다음 레이어에 완전히 연결됩니다. 네트워크를 훈련 할 때 각 연결에 대한 가중치를 계산합니다. 앞에서 논의한 역전 파와 경사 하강 법을 적용하여 네트워크를 훈련시킵니다.