신경망은 이미지를 어떻게 인식합니까?


25

신경망이 이미지 인식에서 어떻게 작동하는지 배우려고합니다. 나는 몇 가지 예를 보았고 더 혼란스러워졌습니다. 20x20 이미지의 문자 인식의 예에서 각 픽셀의 값은 입력 레이어가됩니다. 400 개의 뉴런. 그런 다음 숨겨진 뉴런 층과 26 개의 출력 뉴런. 그런 다음 네트워크를 훈련시킨 다음 완벽하지는 않습니다.

신경망에 대해 저를 혼란스럽게 한 것은 그것이 이미지에 무엇이 있는지 배우는 방법입니다. 네트워크가 이미지를 비교하고 인식하는 방법을 배우는 임계 값 설정, 분할 또는 측정을 수행 할 필요가 없습니다. 그것은 지금 나에게 마술과 같다. 신경망을 배우기 시작하는 곳은?


1
내가 올바르게 이해한다면 신경망은 추상적 인 공간에서 다차원 적 표면이며, 지역 극단은 가능한 선택을 초래합니다. 신경망을 가르치는 것은이 추상적 인 표면을 작업에 맞게 조정하는 것입니다. 내 멍청한 이해 야

설명이나 리소스가 NN 작업을 시작하기를 원하십니까? 명확히하는 것이 좋을 것입니다.

2
귀하의 질문에 전념하는 코스 라에는 멋진 무료 코스가 있습니다. coursera.org/course/neuralnets
pat

Coursera NN 수업은 소개만큼 좋지 않은 고급 과정 인 것 같습니다. Andrew Ng에는 예를 들어 Youtube에서 찾을 수있는 더 부드러운 소개가 있습니다.
Douglas Zare

실제로 Coursera 과정은 발전해 왔지만 확실히 구축되어 OP의 질문에 아주 잘 대답 할 것입니다. 또한 숫자 인식에 대한 많은 예제가 있습니다.
Chris A.

답변:


24

1980 년대에 후쿠시마 쿠니히코 교수의 연구를 통해 신경망이 어떻게 이미지 데이터만으로 복잡한 것을 분류하는 법을 배울 수 있는지에 대한 주요 통찰력이 나에게 전해졌다. 그의 네트워크에 많은 이미지를 보여주지 않고 자신의 것을 파악하기 위해 역 전파를 사용하는 대신 다른 접근 방식을 취해 네트워크를 계층별로, 노드별로 교육했습니다. 그는 네트워크의 각 개별 노드의 성능과 작동을 분석하고 의도 한 방식으로 응답하도록 해당 부분을 의도적으로 수정했습니다.

예를 들어 그는 네트워크가 선을 인식 할 수 있기를 원했기 때문에 특정 레이어와 노드가 3 개의 픽셀 가로선, 3 개의 픽셀 세로선 및 모든 각도에서 대각선의 특정 변형을 인식하도록 훈련했습니다. 이를 통해 원하는 패턴이 존재할 때 네트워크의 어느 부분을 발사 할 수 있는지 정확히 알 수있었습니다. 그리고, 각각의 층은 고도로 연결되어 있기 때문에, 전체 네오 코니 트론 전체가 물리적으로 존재하는 곳에 상관없이 이미지에 존재하는 각각의 복합 부분을 식별 할 수있다. 따라서 특정 선분이 이미지 어딘가에 존재하면 항상 특정 노드가 발생합니다.

이 그림을 항상 유지하면서 선형 회귀를 고려하십시오. 이는 단순히 제곱 오차를 통해 수식 (또는 선)을 찾는 것입니다. 이는 데이터를 가장 가깝게 통과하므로 이해하기 쉽습니다. 곡선 "선"을 찾기 위해 x ^ 2 또는 x ^ 3 또는 더 높은 차수의 다항식을 추가하는 것을 제외하고 동일한 합계의 제품 계산을 수행 할 수 있습니다. 이제 로지스틱 회귀 분류 기가 있습니다. 이 분류기는 본질적으로 선형이 아닌 관계를 찾을 수 있습니다. 실제로 로지스틱 회귀는 임의로 복잡한 관계를 표현할 수 있지만 데이터를 예측하는 데 효과적인 작업을 수행하려면 올바른 수의 전력 기능을 수동으로 선택해야합니다.

신경망을 생각하는 한 가지 방법은 마지막 계층을 로지스틱 회귀 분류기 로 간주 한 다음 숨겨진 계층을 자동 "기능 선택기"로 생각할 수 있습니다 . 이를 통해 입력 기능의 올바른 수와 성능을 수동으로 선택하지 않아도됩니다. 따라서 NN은 자동 전력 기능 선택 기가되고 선형 또는 비선형 관계를 찾거나 임의로 복잡한 세트의 분류 자 ​​역할을 할 수 있습니다 ** (이것은 복잡성을 나타내는 충분한 숨겨진 레이어와 연결이 있다고 가정합니다. 학습해야 할 모델). 결국, 잘 작동하는 NN은 입력과 출력 사이의 "관계"를 배우는 것이 아니라 추상화 또는 모델을 위해 노력합니다.일반화 합니다.

경험상, 신경망은 합리적인 데이터를 가진 사람이 이론적으로 동일한 데이터에서 충분한 시간을 주어 충분히 배울 수 없었던 것을 배울 수는 없지만,

  • 아직 아무도 알아 내지 못한 것을 배울 수 있을지도 모른다
  • 큰 문제는 신경망을 처리하는 컴퓨터 은행이 훨씬 저렴한 비용으로 사람들보다 훨씬 빠른 솔루션을 찾을 수 있습니다.
  • 일단 훈련 된 NN은 훈련 된 입력 값으로 일관된 결과를 생성하며 올바르게 조정하면 잘 일반화되어야합니다
  • NN은 결코 지루하거나 산만하지 않습니다

1
숨겨진 레이어의 피처 선택 위에서 마지막 레이어가 로지스틱 회귀를 수행하는 방법에 대한 단락에 +1 NN을 생각하기에 좋은 방법입니다.
jlund3

고맙지 만 모든 ANN의 마지막 계층이 실제로 로지스틱 회귀 계층이라고 말하는 것이 아니라 이것이 많은 문제를 해결할 수있는 하나의 구성 일 뿐이라는 점을 분명히해야합니다. 대부분 랜덤 한 방식으로 인해 ANN의 트레이닝 결과는 대부분 임의의 방식으로 많은 노드와 레이어에 분산됩니다. 하위 네트워크가 특정 방식으로 응답하도록 훈련 한 다음 특정 문제에 대해 특수 네트워크를 수작업으로 만들기 위해 이들의 출력을 회귀 계층으로 펌핑 할 수 있습니다. ANN을 메모리와 속도에서 매우 효율적으로 만듭니다.
mcstar

1
이 답변은 계속해서 조회수를 얻었으므로 지금은 5 세 이상이며 완전히 연결된 네트워크를 피드 포워드하는 것으로 간주합니다. 여기에서의 개념적 통찰력은 여전히 ​​유효하지만, 실무자에게는 지난 10 년 동안 표준이 된 심도있는 NN 개념을 이해할만큼 충분한 지식이 없습니다. CNN (Convolution Neural Network)은 엣지, 대비, 선명도, 색 공간, 그림자 등을 찾아 저수준 기능의 컨텍스트를 결정하는 데 사용할 수있게함으로써 딥 네트워크에 강력한 기능을 제공하는 매우 중요한 최신 적응 기술입니다.
mcstar

10

신경망이 " 범용 함수 근 사기"라고 들었을 수도 있습니다 . 본질적으로 Cybenko 정리는 함수를 실수에 실수로 매핑하는 경우 시그 모이 드 활성화 함수가있는 신경망으로 근사 할 수 있다고 말합니다. 실제로 신경망을 사용하면 튜링 머신 에서 계산할 수있는 기능 (예 : 계산 알고리즘을 작성할 수있는 기능)을 계산할 수 있습니다. 불행히도, 이러한 증명은 뉴런과 가중치의 일부 유한 구성에 대해 모든 기능을 근사 할 수 있다고 말합니다.

이론은 모두 멋지고 멋지지만 귀하의 질문은 일부 함수의 계산을 실제로 일련의 뉴런과 가중치로 인코딩하는 방법에 더 많은 것 같습니다. 설명하기 위해 배타적 또는 간단한 예를 고려하십시오. XOR은 두 개의 입력을 받아 해당 입력을 전달합니다. 입력 중 하나만 활성화되면 출력 노드가 활성화됩니다. 입력이 모두 활성화되거나 활성화되지 않으면 출력 노드가 활성화되지 않습니다.

Wikipedia에서 빌린 XOR을 계산할 수있는 3 계층 Perceptron net.

세 개의 숨겨진 노드는 다른 작업을 수행합니다. 가장 왼쪽과 오른쪽 노드는 단순히 입력 노드 활성화를 통과합니다. 중간 뉴런은 두 개의 입력을 취하고 둘 다 켜져 있으면 어떻게 든 무시합니다. 이 영리한 입력 조합 및 재조합은 본질적으로 신경망에서 작동하는 방식입니다.

보다 복잡한 기능의 경우 결합과 재결합은보다 영리하고 복잡한 방식으로 수행되어야하지만 이는 본질적으로 낮은 수준에서 일어나는 일입니다. 미친 것은 이것이 실제로 계산 가능한 함수를 계산하는 데 필요한 전부라는 것입니다! 다시 말하지만, 튜링 머신은 믿을 수 없을만큼 간단합니다.

문제는 실제로 임의의 기능을 계산하는 신경망을 마술처럼 생성 할 수있는 방법이 없다는 것입니다. 증거는 단지 그것을 할 수있는 네트워크가 있다는 것을 말해줍니다. 신경망을 훈련시킬 때, 우리는 아주 가까운 네트워크를 찾기 위해 노력하고 있습니다.

이미지 인식의 맥락에서 네트워크에 인코딩 패턴을 상상할 수 있습니다. 예를 들어, 숫자 '1'을 인식하기 위해 인접 픽셀이 꺼진 상태에서 픽셀 열이 대부분 또는 모두 활성화 될 것으로 예상되는 숨겨진 노드를 상상할 수 있습니다. 이 숨겨진 노드는 해당 특정 열에서 직선을 인식하는 데 상당히 효과적 일 수 있습니다. 이것들을 충분히 합치면 곧 이미지의 충분한 장소에서 그것을 할 수있는 많은 노드가 생길 것입니다. 네트워크를 보여 주면 충분한 직선 숨겨진 노드가 활성화되어 '1'을 나타냅니다. 물론 문제는 네트워크를 일반화하여 다양한 입력 세트를 인식 할 수 있습니다.

희망적으로 이것은 신경망이 계산을 수행하는 방법의 개념을 다소 이해하는 데 도움이되기를 바랍니다. 그러나 신경망에 대해서는 다소 중요한 점에 부딪 쳤습니다. 일반적으로 네트워크가 특정 출력을 내뿜는 이유를 이해하는 것이 가장 어렵습니다. 특히 이미지 인식과 같은 경우 네트워크가 일반적으로 인간이 기계의 각 움직이는 부분을 이해하는 데 어려움을 겪을만큼 충분히 큽니다. 더 복잡한 문제는 일반적으로 대부분의 신경망에는 실제로 네트워크가 데이터에 대해 배울 수있는 작은 기능마다 하나의 숨겨진 노드가 없다는 것입니다. 대신, 숫자 '1'을 분류하기 위해 직선과 같은 것을 감지하면 많은 숨겨진 노드에 대해 중앙 집중식으로 수행되지 않습니다. 다른 알고리즘

더 많은 책을 찾고 있다면 ai junkie 에서이 튜토리얼 을 읽는 것이 좋습니다 . 신경망이 작동하는 기본 원리를 안내하고 신경망이 목표를 향해 탱크를 운전하도록하는 간단한 코드 예제도 제공합니다. 그러나이 튜토리얼에서는 신경망을 훈련시키는 가장 일반적인 방법 인 역 전파를 다루지 않고 간단한 유전자 알고리즘을 사용합니다. 그가 유전학 이야기를 시작하면 독서를 그만 둘 수있을 것 같아요 ...


이 모든 단어와 생각을한데 모아 주셔서 감사합니다. 특히 이미지 인식을위한 Convolutional NN에 관심이 있습니다. OpenCV 라이브러리에서 얼굴 감지 예제를 시도했지만 딱딱한 물체에만 적합하다는 것을 알았습니다. 신경망은 패턴 인식에 대해 비슷한 제한을 가지고 있습니까, 즉 딱딱한 물체에만 적합합니까?
user1731927

NN (또는 해당 문제의 CNN)이 패턴 인식에 제한을 두어야하는 이론적 인 이유는 없지만 이미 발견 한 것처럼 특정 문제는 다른 문제보다 배우기가 더 쉽습니다. 머신 러닝의 많은 문제와 마찬가지로, 해결하려는 특정 유형의 문제에 잘 대처할 수 있도록 모델을 약간 조정해야 할 것입니다. NN도 이에 대한 예외는 아닙니다.
jlund3

1
다음은 이미지 분류와 같은 2D 그리드 문제를 해결하기 위해 NN을 더 잘 구성하는 방법에 대한 흥미로운 논문입니다. axon.cs.byu.edu/~martinez/classes/678/Papers/science.pdf
jlund3

1
탄젠트하게, "단단하지 않은"시각적 물체를 정확하게 분류하는데 어려움이 있거나, 또 다른 방법으로, 가장자리가 깨끗한 선을 갖지 않는 물체는 자연조차 위장이 탁월한 회피 전략이라고 결정한 이유입니다. 생각할 거리.
mcstar

2

당신을 혼란스럽게 한 것은

이미지에 무엇이 있는지 배우는 방법.

이미지의 내용은 이미지의 픽셀 값으로 디지털 방식으로 표현됩니다. 이미지의 색상을 예로 든다면. 픽셀에는 세 가지 주요 색상 (빨강, 녹색 및 파랑 ( RGB)) 각각에 대해 세 개의 값이있을 수 있습니다 . ( 10,50,100)가있는 픽셀은 ( 40,50,100) 가있는 픽셀보다 파란색 요소가 적다는 것을 의미합니다 . 따라서, 이미지에서 제 1 픽셀은 청색이 적은 영역을 나타낸다. 이것은 신경망이 이미지의 한 위치 / 영역에서 다른 위치로 학습하는 정보이며 이미지에 무엇이 있는지 '알고'있습니다. 신경망에 대한 입력으로 사용될 수있는 다른 이미지 기능 (색상 제외)에도 동일한 원칙이 적용됩니다. 참조 , 그리고 기본 이미지 개념을 다음으로 이동 신경망이 어떻게 작동하는지 배웁니다.


1

모든 머신 러닝 문제는 동일합니다. 기차 데이터가 있고,이 데이터를 나타내는 모델을 배우고, 다른 알고리즘으로 클러스터링, 분류, 학습하는 방식으로이 지식을 일반화 할 수 있습니다.

이미지 인식에서 다시 배우고 싶은 이미지 세트가 있습니다.

  1. 이러한 이미지는 처음에 처리되고 일부 기능은 픽셀과 해당 값을 사용하는 것처럼 이미지 (SIFT, Bag of WORDS와 같은 가능한 이미지 기능 체계가 많이 있음)에서 추출됩니다.
  2. 해당 기능 벡터가있는 이미지를 ML 알고리즘 (Neural Net, SVM 또는 기타)에 제공하십시오.
  3. 모델 배우기
  4. 이 모델을 사용하면 훈련 데이터에서 충분히 보이는 물체를 인식 할 수 있습니다.

둘 이상의 것을 인식하려면 각각에 여러 분류기를 사용하십시오.


1

나는 또한 이미지 인식 컨볼 루션 신경망에 매우 인기가 있다고 언급하고 싶다. 다음은 CNN에 대한 간단한 설명 링크 입니다.

간단히, CNN 이미지에서 먼저 가장자리, 모양, 모양 모음과 같은 기능으로 분할됩니다. 그런 다음 이러한 기능은 '일반적인'완전히 연결된 다중 계층 신경망 (다중 계층 퍼셉트론)으로 '공급'됩니다.

더 자세하게, 필터 세트는 기능 맵의 형태로 기능을 추출하기 위해 적용됩니다. 필터는 원래 이미지 매트릭스와 필터 매트릭스의 내적을 계산하고 결과를 요약 할 수 있도록 원래 이미지에 적용되는 매트릭스 (처음에는 임의)입니다. 필터가 한 번에 한 픽셀 (단계) 씩 원래 이미지를 따라 이동하고 기능 맵의 매트릭스가 채워지고 있습니다. 각 필터에 대한 기능 맵이 작성됩니다. 그런 다음 각 기능 맵의 각 픽셀에 대해 RELU (Rectified Linear Unit)를 사용하여 비선형 성을 도입했습니다. max (), sum () 또는 average ()의 적용을 통해 풀링은 컨볼 루션 후에 수행됩니다. 마지막으로이 방법으로 추출 된 기능은 원본 이미지의 '확대 된'조각처럼 보입니다. 이러한 기능은 완전히 연결된 (모든 장치가 연결됨) 신경망에 입력되며 각 피드 포워드가 네트워크를 통과 한 후 각 이미지의 확률 (자동차, 나무 및 보트의 이미지에 대해 네트워크를 훈련했다고 가정)을 계산합니다. 네트워크가 훈련되었으므로 매개 변수 (가중치) 및 필터 행렬이 역 전파 (오 분류 오류 최소화)를 통해 최적화됩니다. 훈련 된 네트워크에 새로운 이미지가 입력 될 때 이미지를 식별하기 위해 피드 포워드 만 필요합니다 (네트워크가 충분히 정확하다면, 예를 들어 충분한 예를 들어 훈련했습니다). 이는 매개 변수 (가중치) 및 필터 매트릭스가 역 전파 (오 분류 오류 최소화)를 통해 최적화됨을 의미합니다. 훈련 된 네트워크에 새로운 이미지가 입력 될 때 이미지를 식별하기 위해 피드 포워드 만 필요합니다 (네트워크가 충분히 정확하다면, 예를 들어 충분한 예를 들어 훈련했습니다). 이는 매개 변수 (가중치) 및 필터 매트릭스가 역 전파 (오 분류 오류 최소화)를 통해 최적화됨을 의미합니다. 훈련 된 네트워크에 새로운 이미지가 입력 될 때 이미지를 식별하기 위해 피드 포워드 만 필요합니다 (네트워크가 충분히 정확하다면, 예를 들어 충분한 예를 들어 훈련했습니다).


0

ANN이 f (x) 또는 f (x, y, z, ..) 함수 또는 해당 문제에 대한 모든 함수를 만들 수 있다는 것을 알고있는 것이 좋습니다. 그러나 함수가 데이터를 분류하는 방법에 한계가 있다는 것을 아는 것이 중요합니다. 분류에 중요한 객체의 파워 셋의 더 복잡한 관계 하위 집합이 있으며, 이러한 함수에 의해 우아하거나 자연스럽게 설명되지 않습니다. 언어와 객체 분류에 중요합니다. 그러나 ANN도이를 수행 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.