일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- mobilenet
- deeplearning
- 알렉스넷
- learning
- 재정의
- 신경망
- Backpropagation
- 이미지 분류
- 텐서플로우
- vggnet
- Network
- 자바
- 컨볼루션 신경망
- 메소드
- 리눅ㅅ
- 안드로이드
- Machine Learning
- ResNet
- TensorFlow
- 클래스
- 사용자 매크로
- deep learning
- convolutional neural network
- Machine
- NeuralNetwork
- 콘볼루션 신경망
- 딥러닝
- 컴퓨터비전
- MNIST
- 분류기
- Today
- Total
강몬드의 프로그래밍 이야기
신경망과 딥러닝 4.손 글씨 문자를 분류하는 신경망 본문
손 글씨 문자를 분류하는 신경망
문자분류 문제는 두 가지 세부 문제로 나누어서 풀 수 있다. 첫 번째, 우리는 손 글씨들이 작성된 문자들을 각각을 세분화해서 하나의 문자를 포함하는 분리된 이미지를 만들어야한다. 그림 1.5.1은 여러 문자들이 나열된 이미지이다.
<그림 1.5.1 손 글씨 문자>
그림 1.5.2는 그림 1.5.1의 문자들을 세분화하였다.
<그림 1.5.2 세분화된 이미지>
인간은 이 세분화 문제를 쉽게 할 수 있지만, 이를 컴퓨터 프로그램이 정확하게 나누기란 어려운 문제다. 세분화 된 이미지를 구했으면 그 다음은 각각의 문자 이미지들을 분류해야 한다. 예를 들어, 위 문자들 중에 첫 번째 문자부터 인식하려고 한다면 프로그램은 ‘5’라고 인지해야 할 것이다. 우리는 두번째 문제, 즉 각각의 숫자를 분류하는 문제를 해결하는 프로그램을 짜는데 집중할 것이다. 왜냐하면 여러분이 하나의 숫자를 구분할 수 있다면, 분할 문제를 해결하는 것은 크게 어렵지 않기 때문이다. 이미지 분할 문제를 해결하는 방법에는 여러가지가 있다. 한가지 방법으로는 여러번 이미지를 나눠 본 후 시도한 분할을 단일 숫자 분류기로 점수를 내는 것이다. 만약 단일 숫자 분류기가 작은 이미지들을 분류하는데 어려움을 겪지 않았다면 높은 점수를 받을 것이고, 숫자를 인지하는데 어려움을 겪는다면 낮은 점수를 받을것이다. 이 방법의 핵심 아이디어는, 만약 단일 숫자 분류기가 어딘가에서 난항을 겪는다면, 아마 이미지 분할이 제대로 이루어지지 않았을 가능성이 높다는 데에 있다. 이러한 아이디어 뿐만 아니라 다른 여러가지 방법으로 이미지 분할 문제를 잘 해결할 수 있을 것이다. 그렇기 때문에, 이미지 분할 문제 보다는 더 흥미롭고 어려운 단일 숫자를 분류할 수 있는 neural network를 만드는 데에 집중할 것이다.
하나의 문자 인식을 위해 다음과 같은 신경망을 설계하였다. 그림 1.5.1은 세 개의 층을 갖는 신경망이다.
<그림 1.5.1. A three-layer neural network>
입력 층의 뉴런들을 입력 이미지의 픽셀 값을 받는다. 여기서 사용된 학습데이터는 28 x 28 크기의 손 글씨 문자 이미지이다. 입력은 흑백 화소 값으로 흰색을 표현하는 0.0부터 검정색을 표현하는 1.0사이의 실수 값이다.
두 번째 층은 히든 층이다. 뉴런의 수를 n으로 표기하였지만 여기선 15개의 뉴런을 사용한다.
출력 층은 10개의 뉴런이다. 이 뉴런 중 첫 번째의 뉴런이 1에 가까운 값을 출력하면 이는 입력이 ‘0’이라고 분류 결과를 가리킨다. 마찬가지로 두 번째 뉴런이 1에 가까운 값을 가지면 입력의 분류 결과가 ‘1’이다.
출력 층의 뉴런이 10개인 이유는 신경망이 0~9까지의 수를 분류하는 목적을 갖기 때문이다. 이진 표기 방법을 이용해서 4개의 뉴런으로도 결과를 가질 수 있다. 이기 때문에 10개보다 많은 분류를 할 수 있다. 그러나 이 방법은 효율적이지 않다. 이유는 두 가지 방법을 사용해보고 실험 결과 10개의 뉴런을 사용하는 모델이 더 좋은 결과를 얻었다.
출처 : http://neuralnetworksanddeeplearning.com/index.html
'학습 > 딥러닝' 카테고리의 다른 글
신경망과 딥러닝 6.Network to Classify Digits (0) | 2016.03.20 |
---|---|
신경망과 딥러닝 5.Gradient descent 학습법 (0) | 2016.01.28 |
신경망과 딥러닝 3.신경망의 구조 (0) | 2016.01.25 |
신경망과 딥러닝 2.시그모이드 뉴런 (0) | 2016.01.23 |
신경망과 딥러닝 1.퍼셉트론 (0) | 2016.01.19 |