우리의 뉴런 네트워크가 인상적인 성과를 보여주었지만, 이러한 성과는 약간 미스테리 합니다. 가중치들과 bias들은 자동적으로 조정되었습니다. 그리고 이는 네트워크가 이뤄낸 일을 도데체 어떻게 이루어 낸건지에 대한 설명을 즉시 할 수 없음을 의미합니다. 우리의 네트워크가 손글씨를 판별하고 있음에 대한 원리를 이해하기 위한 방법을 찾을 수 있을까요? 그리고, 그 원리들을 통해, 더 좋은 결과를 만들어 낼 수 있을까요? 이 질문들을 더 완벽히 하자면, 수십년 후에 뉴런 네트워크가 인공지능(Artificial Inteligence)을 이끌어 간다고 가정해 봅시다. 우리가 어떻게 지능적인 네트워크가 작동하는지 이해할 수 있을까요? 어쩌면 네트워크는 스스로 학습하였기 때문에 우리가 이해하지 못하는 가중치들과 $..
좋습니다, 이제 확률적 기울기 하강 알고리즘과 MNIST 학습 데이터를 이용하여 손글씨를 인식하는 프로그램을 작성하여 봅시다. 우리는 파이썬 2.7로 작성된 단지 74줄의 프로그램을 작성하게 될것입니다! 첫번째로 필요한것은 MNIST 데이터를 가져오는것입니다. 여러분이 git 사용자라면 이 책의 코드 레포지토리를 복사함으로써 데이터를 얻을 수 있습니다. git clone https://github.com/mnielsen/neural-networks-and-deep-learning.git 여러분이 git 사용자가 아니라면, 이곳에서 데이터와 코드를 다운로드할 수 있습니다. 그런데 제가 MNIST 데이터를 앞에서 설명할 때, 제가 이 데이터가 60,000개의 학습 이미지들과 10,000개의 테스트 이미지로 ..
이제 우리는 우리의 뉴런 네트워크를 위한 설계도를 가지고 있습니다. 어떻게 하면 이 네트워크가 숫자를 인식하도록 학습을 할 수 있을까요? 우리에게 필요한 첫번째는 학습 데이터 셋이라고 불리는 데이터 입니다. 우리는 MNIST 데이터 셋을 사용할 것 입니다. 이는 정확한 분석결과와 함께 손으로 쓰인 수만개의 숫자들을 스캔한 이미지를 가지고 있습니다. MNIST의 이름은 NIST에 의해 수집된 두개의 데이터 셋을 수정한 별도의 셋이라는 사실로 부터 지어졌습니다. NIST는 United States' National Institute of Standards and Technology의 약자 입니다. 아래 사진은 MNIST로 부터 가져온 몇장의 사진 입니다. 위에 보이는 것 처럼, 이 숫자들은 사실 이 챕터의 ..
뉴런 네트워크에 대해 정의하면서, 다시 손으로 쓴 숫자를 인식하기 위한 문제로 돌아와 봅시다. 우리는 이 문제를 크게 두개의 문제로 나누어 생각할 수 있습니다. 첫째로, 많은 숫자가 포함된 이미지를 여러개의 조각난 이미지로 나누는 것입니다. 각각의 조각난 이미지는 하나의 숫자를 가지고 있습니다. 예를 들어, 다음과 같은 이미지는 다음과 같이 여섯 개의 이미지로 나누어 질 수 있습니다. 우리와 같은 인간들은 이 분리 문제를 쉽게 해결할 수 있으나, 이를 정확히 나누는 컴퓨터 프로그램에게는 꽤 도전적입니다. 일단 한번 이미지가 분리되고 나면, 프로그램은 각 이미지를 판별해야 합니다. 그래서, 예를 들면, 우리는 위에 있는 이미지중 첫번 째 이미지의 숫자를 판별하는 프로그램을 작성하고자 합니다. 첫번째 이미지..
다음 차례에서는 손글씨를 꽤 잘 인식할 수 있는 뉴런 네트워크를 소개해 드릴겁니다. 그 전에, 네트워크의 각 부분을 부르는 몇 개의 전문 용어들을 설명하는 것이 도움이 되겠군요. 우리가 아래와 같은 네트워크를 가지고 있다고 해봅시다. 앞서 언급했듯이, 가장 왼쪽에 위치한 층은 입력 층이라고 불리고, 그 안에 있는 뉴런들은 입력 뉴런이라고 불립니다. 가장 오른쪽에 있는 출력층은 출력 뉴런들을 가지고 있습니다. 위 예시에서는 하나의 뉴런만을 가지고 있군요. 가운데 있는 층은 입력 뉴런 또는 출력 뉴런을 가지고 있지 않으므로 은닉층이라고 불립니다. "은닉"이라는 용어는 이상하게 들릴 수 있습니다. (제가 처음 이 단어를 들었을때는 이 은닉층이 꽤 깊은 철학적 의미 또는 수학적 중요성을 가지고 있는줄 알았습니다..
학습 알고리즘은 매우 획기적으로 들립니다. 하지만 어떻게 우리가 뉴런 네트워크를 위한 그런 알고리즘을 창안할 수 있을까요? 우리가 어떤 문제를 풀기위해 학습을 할 퍼셉트론의 네트워크를 가지고 있다고 가정해 봅시다. 예를 들어, 네트워크의 입력값은 손으로 쓴 숫자 이미지를 스캔한 픽셀 데이터 일 것입니다. 그리고 우리는 가중치와 bias값들을 조정하여 정확한 숫자의 결과를 내놓는 네트워크를 원할 것 입니다. 어떻게 학습이 이뤄지는지 보기 위하여 우리가 네트워크에서 가중치 또는 bias에서 작은 변화를 주었다고 가정해 봅시다. 우리가 원하는 결과는 우리가 가중치 또는 bias에 준 작은 변화가 오직 네트워크의 출력값에 원하는 작은 변화가 일어나는 것 입니다. 이런 특징이 학습이 가능토록 하는 부분..
뉴런 네트워크란 무엇인가요? 시작하기에 앞서, 저는 퍼셉트론이라고 불리는 가상 뉴런의 한 종류에 대해 설명하고자 합니다. 퍼셉트론은 워렌 맥클로치와 월터 피치의 선행 연구에 영감을 받아 과학자 프랭크 로젯블랫에 의해 1950년과 1960년대 사이에 개발되었습니다. 오늘날에는 다른 뉴런 모델을 사용하는 것이 일반적입니다. 이 책과 대부분의 현대적 연구에서 사용되는 주된 뉴런 모델은 시그모이드 뉴런 이라고 불리는 뉴런입니다. 곧 시그모이드 뉴런에 대해 다룰것 이지만 왜 시그모이드 뉴런이 왜 그렇게 정의되었는지 알기 위해서는 퍼셉트론을 첫번째로 이해하는 시간을 가지는 것이 좋겠습니다. 그래서, 퍼셉트론 어떻게 작동할까요? 퍼셉트론은 x1, x2, ...와 같은 몇개의 이진 입력을 받습니다. ..
인간의 시각 체계는 세계에서 불가사의한 것들 중 하나입니다. 다음과 같은 손으로 쓴 숫자들을 한번 보세요.대부분의 사람들은 큰 노력없이 이 숫자들을 504192라고 읽을 수 있습니다. 우리 뇌의 각 좌뇌 우뇌에서, 인간은 V1이라고 알려진 첫번째 시각피질을 가지고 있고 이는 1억 4천만개의 뉴런들과 그것들 사이의 100억개 이상의 연결을 가지고 있습니다. 또한 V1 뿐만 아니라 V2, V3, V4, V5의 여러개의 시각피질들을 통해 더욱 복잡한 이미지 처리를 합니다. 우린 시각적 세계를 이해하기 위해 수십억년동안 진화한 슈퍼컴퓨터를 머리에 이고 다니는 셈이죠. 손으로 쓴 숫자를 인식하는 것은 쉽지 않습니다. 그러나 우리 인간은 매우 놀랍게도 우리 눈이 우리에게 보여주는 것에 대한 감..
- Total
- Today
- Yesterday