많은 사람들이 “Google이 도와 드리겠습니다.”라는 링크로 응답 할 것이라고 확신합니다. 여기에 대한 이해 부족을 용서하십시오. 그러나 신경망의 실제 구현이 실제로 어떻게 작동하는지 이해할 수 없습니다.

입력 레이어와 데이터 정규화 방법을 이해하고 편향 단위도 이해합니다.하지만 은닉 레이어의 경우 실제 계산이 해당 레이어에 무엇이며 어떻게 매핑되는지 출력이 약간 흐릿합니다. 은닉층에 물음표가있는 다이어그램, AND / OR / XOR과 같은 부울 함수, 활성화 함수, 모든 은닉 유닛에 매핑되는 입력 노드와 각각 몇 개의 은닉 유닛에만 매핑되는 입력 노드를 보았습니다. 실제적인 측면에 대한 몇 가지 질문이 있습니다. 물론 어린이에게 설명 하듯이 전체 신경망 프로세스에 대한 간단한 설명은 멋질 것입니다.

히든 레이어에서 수행되는 계산은 무엇입니까? ?

이러한 계산은 어떻게 출력 계층에 매핑됩니까?

출력 계층은 어떻게 작동합니까? 숨겨진 계층의 데이터를 비정규 화하는 이유는 무엇입니까?

이유 입력 레이어의 일부 레이어는 히든 레이어에 연결되어 있고 일부는 연결되어 있지 않나요?

댓글

  • 이 주변 사람들은 멋지네요. “Google에 알려 드리겠습니다.”라는 답변이지만 처음에는 기본적인 질문으로 보였던 것에 대한 놀랍도록 철저하고 통찰력있는 답변이 많습니다. 안타깝게도 ‘가 도움을 드릴 수는 없습니다. 귀하의 의견이지만 관련성이있는 것 같아서 기꺼이 투표하겠습니다.
  • 댓글과 Gael 투표에 감사드립니다. ‘ 우리 모두가 알고있는 SO 커뮤니티 🙂 질문을 편집 / 종료하여 배지와 포인트를 획득하는 대신 여기에서 더 많은 협업 정신을 보게되어 기쁩니다.
  • 아니요 특히 신경망 전문가이지만 응용 프로그램과 방법에 관여합니다. 내 대답은 그다지 도움이되지 않을 것입니다. 숨겨진 특정 계산이 ‘ 비용 함수 ‘에 따라 달라진다는 것입니다. 출력에 부과, 즉 달성하려는 것. 예를 들어 입력 요소를 클러스터 된 집합으로 그룹화하려는 경우 은닉 계층에있는 요소 간의 거리를 계산합니다. 프로세스가이 레이어를`떠나는 ‘ 허용하는 오류 기준을 충족 할 때까지이 레이어 내에서 다양한 반복 및 최적화주기를 거칠 수 있습니다.

답변

세 문장 버전 :

  • 각 레이어는 이전 레이어에 원하는 모든 기능을 적용 할 수 있습니다 (일반적으로 선형 변환에 이어 스 쿼싱 비선형 성).

  • 숨겨진 레이어 “작업은 입력을 출력 레이어가 사용할 수있는 것으로 변환하는 것입니다.

  • 출력 레이어 히든 레이어 활성화를 원하는 출력 배율로 변환합니다.

Like you “re 5 :

사진에 버스가 있는지 컴퓨터로 알려주려면 올바른 도구가 있으면 컴퓨터가 더 쉬울 수 있습니다.

따라서 버스 감지기는 바퀴 감지기 (차량이라고 말할 수 있음)와 상자 감지기 (버스가 큰 상자 모양이므로) 및 크기 감지기 ( 자동차로보기에는 너무 큽니다.) 히든 레이어의 세 가지 요소는 “원시 이미지의 일부가 아니라”버스를 식별하는 데 도움이되도록 설계된 도구입니다.

이 세 가지 감지기가 모두 켜지면 (또는 “특히 활성 상태 인 경우) 버스가 앞에있을 가능성이 높습니다.

신경망은 유용합니다. l 많은 감지기를 구축하고 결합 할 수있는 좋은 도구 (예 : 역 전파)가 있기 때문입니다.


당신이 성인처럼

피드 포워드 신경망은 데이터에 일련의 함수를 적용합니다. 정확한 함수는 사용중인 신경망에 따라 달라집니다. 가장 자주 이러한 함수는 이전 계층의 선형 변환을 계산 한 다음 비선형 성을 스 쿼싱합니다. 때때로 함수는 다른 작업을 수행합니다 (예 : 논리 함수 계산). , 또는 이미지의 인접 픽셀에 대한 평균). 따라서 다른 레이어의 역할은 계산되는 함수에 따라 달라질 수 있지만 매우 일반적으로 시도해 보겠습니다.

입력을 호출하겠습니다. 벡터 $ x $, 히든 레이어 활성화 $ h $ 및 출력 활성화 $ y $. $ x $에서 $ h $로 매핑되는 $ f $ 함수와 $ h $에서 매핑되는 $ g $ 함수가 있습니다. $ y $로.

히든 레이어의 활성화는 $ f (x) $이고 네트워크의 출력은 $ g (f (x)) $입니다.

하나가 아닌 두 개의 함수 ($ f $ 및 $ g $)가있는 이유는 무엇입니까?

함수 별 복잡성 수준이 제한되면 $ g (f (x)) $는 $ f $와 $ g $가 개별적으로 수행 할 수없는 작업을 계산할 수 있습니다.


논리 함수가있는 예 :

예 : $ f $ 만 허용하는 경우 그리고 $ g $는 “AND”, “OR”, “NAND”와 같은 간단한 논리 연산자가 될 수 있습니다. 그러면 “XOR”과 같은 다른 함수를 그 중 하나만으로 계산할 수 없습니다. 반면에 이러한 함수를 서로 겹쳐서 쌓으려면 “XOR”을 계산 할 수 있습니다 .

첫 번째 계층 함수 :

  • 하나 이상의 요소가 “TRUE”(OR 사용)인지 확인
  • 모두 “TRUE”(NAND 사용)가 아닌지 확인

두 번째 레이어 기능 :

  • 두 첫 번째 레이어 기준이 모두 충족되는지 확인합니다 (AND 사용)

네트워크의 출력은 이 두 번째 함수의 결과. 첫 번째 계층은 전체 네트워크가 XOR을 수행 할 수 있도록 두 번째 계층이 사용할 수있는 것으로 입력을 변환 합니다.


이미지가있는 예 :

이 강연 의 슬라이드 61– 또한 여기 에서 단일 이미지로 사용할 수 있습니다. 특정 신경망에서 다른 숨겨진 레이어가 찾고있는 것을 (시각화하는 한 가지 방법) 보여줍니다.

첫 번째 레이어는 이미지에서 짧은 가장자리 조각을 찾습니다. 원시 픽셀 데이터에서 쉽게 찾을 수 있지만 “얼굴을보고 있는지 버스를보고 있는지 또는 코끼리.

다음 레이어는 가장자리를 구성합니다. 하단 숨겨진 레이어의 가장자리가 특정 방식으로 서로 맞으면 가장 왼쪽 열의 중앙에있는 눈 감지기 중 하나가 켜질 수 있습니다. . 원시 픽셀에서 매우 특정한 것을 찾는 데 아주 좋은 단일 레이어를 만드는 것은 어려울 것입니다. 눈 감지기는 원시 픽셀보다 가장자리 감지기에서 빌드하기가 훨씬 쉽습니다.

다음 레이어 눈 감지기와 코 감지기를 얼굴로 구성합니다. 즉, 이전 레이어의 눈 감지기와 코 감지기가 올바른 패턴으로 켜지면 조명이 켜집니다. 특정 종류의 얼굴을 찾는 데 매우 유용합니다. 하나 이상의 얼굴이 켜지면 출력 레이어에서 얼굴이 존재한다고보고해야합니다.

이는 안면 감지기는 눈 감지기와 코 감지기로 구축하기 쉽지만 픽셀 강도로는 구축하기가 정말 어렵습니다.

따라서 각 레이어는 원시 픽셀에서 점점 더 멀어지고 궁극적 인 목표 (예 : 얼굴 감지 또는 버스 감지)에 더 가까워집니다.


답변 기타 여러 질문

“왜 입력 레이어의 일부 레이어가 히든 레이어에 연결되고 일부는 연결되지 않습니까?”

네트워크에서 연결이 끊어진 노드를 “바이어스”노드라고합니다. “ 여기 에 정말 멋진 설명이 있습니다. 짧은 대답은”회귀에서 절편 용어와 같다는 것입니다.

“어디서 이미지 예에서 “눈 감지기”사진의 출처는 무엇입니까? “

연결 한 특정 이미지를 다시 확인하지 않았지만 일반적으로 이러한 시각화는 해당 뉴런의 활동을 최대화하는 입력 레이어의 픽셀입니다. 따라서 뉴런을 눈 감지기로 생각하면 뉴런이 가장 눈과 비슷하다고 간주하는 이미지입니다. 사람들은 일반적으로 최적화를 통해 이러한 픽셀 세트를 찾습니다. (언덕 등반) 절차.

세계에서 가장 큰 신경망 중 하나를 보유한 일부 Google 직원이 작성한 이 문서 에서는 “얼굴 탐지기”뉴런과 “고양이 탐지기”뉴런은 두 번째 방법입니다. 또한 뉴런을 가장 강력하게 활성화하는 실제 이미지 를 보여줍니다 (그림 3, 그림 16). 두 번째 접근 방식은 네트워크가 얼마나 유연하고 비선형적인지를 보여주기 때문에 좋습니다. 이러한 높은 수준의 “감지기”는 픽셀 수준에서 특별히 유사하게 보이지는 않지만 이러한 모든 이미지에 민감합니다.


여기에 명확하지 않은 것이 있거나 더 궁금한 점이 있으면 알려주세요.

댓글

  • 정의 된 항목이 하나뿐인가요? 주어진 레이어의 모든 단일 노드에 대한 알고리즘과 가중치가 출력을 다르게 만드는 이유입니까? 아니면 레이어의 모든 노드를 다르게 프로그래밍 할 수 있습니까?
  • @GeorgeMcDowd 이것이 핵심 문제에서 가져옵니다. 제안한 것처럼 픽셀과 버스 식별은 어렵습니다. 다행히도 픽셀을보고 가장자리를 찾는 것은 쉽습니다. ‘ 모든 첫 번째 숨겨진 레이어가 시도합니다. 다음 레이어는 픽셀을 기반으로하는 것보다 훨씬 쉽습니다.
  • 이 답변에 투입 한 시간과 노력에 대한 보상 (단지 포인트가 아닌)을 제공해야합니다!
  • @JoshuaEnfield 1980 년의 논리를 생각합니다. ‘는 사람들이 뇌가 작동한다고 생각하는 방식과 비슷하고, 어디서나 구별 할 수 있으며, 말씀하신대로 가치가 제한되어 있다는 점의 조합이었습니다. 그 이후로 사람들은 f(x) = max(x, 0) (” 정류 된 선형 단위 “)를 자주 발견했습니다. 이러한 속성이 많지 않지만 ‘ 더 잘 작동합니다.
  • 버스 예제와 함수 체인이 문제를 해결했습니다. ‘ 교과서가 왜 이렇게 설명 적이 지 않을 수 있는지 ‘ 이해하지 마십시오.

답변

직관적 인 작동 설명에 추가하려고합니다 …

신경망에 대해 생각하는 좋은 직관적 인 방법은 생각하는 것입니다. 선형 회귀 모델이 수행하려는 작업에 대해 설명합니다. 선형 회귀는 몇 가지 입력을 받아 각 입력 값과 몇 가지 모델 최적 가중치 계수를 곱한 다음 그 결과의 합을 출력 응답에 가깝게 매핑하는 선형 모델을 만듭니다. 실제 출력과 일치합니다. 계수는 원하는 출력 값과 모델에서 학습 한 값 사이의 일부 오류 메트릭을 최소화하는 값을 찾아 결정됩니다. 또 다른 방법은 선형 모델이 계수 승수를 생성하려고한다는 것입니다. (다중) 입력과 (일반적으로 단일) 출력 값 사이의 관계를 결정하기 위해 각 입력에 대해 모두 합산 ues. 동일한 모델을 신경망의 기본 구성 요소로 생각할 수 있습니다. 단일 단위 퍼셉트론.

그러나 단일 단위 퍼셉트론에는 비선형 방식으로 가중치 데이터의 합을 처리하는 조각이 하나 더 있습니다. 일반적으로이를 수행하기 위해 스 쿼싱 함수 (sigmoid 또는 tanh)를 사용합니다. 따라서 가중 입력 세트를 합산하는 블록 인 은닉 계층의 기본 단위가 있습니다. 그런 다음 합산 된 응답을 비선형 함수에 전달하여 (숨겨진 계층) 출력 노드 응답을 생성합니다. 바이어스 단위는 처리 할 각 노드에 추가되는 상수 오프셋 인 선형 회귀와 같습니다. 비선형 처리 블록으로 인해 더 이상 선형 회귀 모델에서와 같이 선형 전용 응답으로 제한되지 않습니다.

좋습니다.하지만 여러 개의 단일 퍼셉트론 단위가 함께 작동하면 각각 다른 입력 가중치 승수 및 다른 응답을 가질 수 있습니다 (ALL이 이전에 설명한 동일한 비선형 블록으로 동일한 입력 세트를 처리하더라도). 응답을 다르게 만드는 것은 각각 훈련을 통해 신경망이 학습 한 계수 가중치가 다르다는 것입니다 (일부 형태에는 경사 하강 법이 포함됨). 모든 퍼셉트론의 결과는 개별 블록이 처리 된 것처럼 다시 처리되어 출력 레이어로 전달됩니다. 그러면 문제는 모든 블록에 대해 올바른 가중치가 어떻게 결정됩니까?

올바른 가중치를 배우는 일반적인 방법은 무작위 가중치로 시작하여 실제 실제 출력과 학습 된 결과 사이의 오류 응답을 측정하는 것입니다. 모델 출력. 오류는 일반적으로 네트워크를 통해 거꾸로 전달되며 피드백 알고리즘은 이러한 가중치를 오류에 비례하여 개별적으로 증가 또는 감소시킵니다. 네트워크는 앞으로 전달하고, 출력 응답을 측정 한 다음, 만족스러운 오류 수준에 도달 할 때까지 가중치를 업데이트 (뒤로 가중치 조정 전달)하고 수정하여 반복적으로 반복합니다. 그 시점에서 선형 회귀 모델보다 더 유연 할 수있는 회귀 모델이 있습니다. 일반적으로 범용 함수 근사라고하는 것입니다.

신경망이 실제로 어떻게 작동하는지 배우는 데 정말 도움이 된 방법 중 하나는 신경망 구현 코드를 연구하고 구축하는 것입니다. 가장 기본적인 코드 설명 중 하나는 (무료로 제공되는) “The Scientist and Engineer”s guide to DSP “ Ch의 신경망 장에서 찾을 수 있습니다. 26. 대부분은 매우 기본적인 언어 (포트란이라고 생각합니다)로 작성되어 진행 상황을 파악하는 데 도움이됩니다.

답변

이에 대한 내 관점을 두 단계로 설명하겠습니다. 입력에서 숨김 단계와 숨김에서 출력 단계입니다. 별로 흥미롭지 않게 보이기 때문에 출력 숨김 단계를 먼저 수행하겠습니다.

출력 숨김

숨겨진 레이어의 출력은 다를 수 있지만 지금은 에서 나온다고 가정하겠습니다. 시그 모이 드 활성화 함수. 따라서 이들은 0과 1 사이의 값이며 많은 입력에 대해 0 “과 1″일 수 있습니다.

이 숨겨진 뉴런의 출력과 출력 레이어 사이의 변환을 단순한 번역 (기하학적 의미가 아닌 언어 적 의미)으로 생각하고 싶습니다. 변환이 가역 , 그렇지 않은 경우 번역에서 손실 된 것이 있습니다.하지만 기본적으로 다른 관점에서 볼 수있는 숨겨진 뉴런 “출력 만 있습니다.

Input-to-Hidden

3 개의 입력 뉴런이 있다고 가정 해 보겠습니다. 여기에 방정식을 쓰세요)와 숨겨진 뉴런도 있습니다. 각 숨겨진 뉴런은 입력 값의 가중 합계 를 입력으로받습니다. 예를 들어

hidden_1 = 10 * (input_1) + 0 * (input_2) + 2 * (input_3) 

이는 hidden_1의 값이 , input_2에 전혀 민감하지 않고 input_3.

hidden_1가 입력의 특정 측면 을 캡처하고 있다고 말할 수 있습니다.이를 “input_1가 중요합니다. “측면입니다.

hidden_1의 출력은 일반적으로 일부 함수를 통해 입력을 전달하여 구성됩니다. 시그 모이 드 함수를 사용하고 있다고 가정 해 보겠습니다. 이 함수는 0과 1 사이의 값을 취합니다. 따라서 input_1가 중요하거나 그렇지 않다는 스위치로 생각하십시오.

그것이 히든 레이어가하는 일입니다! 입력 공간의 측면 또는 특징 을 추출합니다.

이제 가중치도 음수 일 수 있습니다! 즉, “input_1는 중요하지만 input_2는 그 중요성을 제거합니다”와 같은 측면을 얻을 수 있습니다.

hidden_2 = 10 * (input_1) - 10 * (input_2 ) + 0 * (input_3) 

또는 input_1input_3는 중요도를 공유합니다.

hidden_3 = 5 * (input_1) + 0 * (input_2) + 5 * (input_3) 

기하 정보 더보기

선형 대수, 특정 방향을 따라 투영하는 관점에서 기하학적으로 생각할 수 있습니다. 위의 예에서는 input_1 방향을 따라 투영했습니다.

hidden_1를 다시 살펴 보겠습니다. input_1의 값이 충분히 크면 시그 모이 드 활성화 함수의 출력은 1로 유지되며 더 커지지 않습니다 . 즉, 점점 더 많은 input_1가 출력에 영향을주지 않습니다. 마찬가지로 반대 방향 (즉, 음수)으로 이동하면 한 지점 이후에 출력에 영향을주지 않습니다.

좋습니다. 그러나 특정 방향에서 무한대의 방향으로 감도를 원하지 않고 라인의 특정 범위 에 대해서만 활성화되기를 원한다고 가정합니다. 매우 음수 값에 대해서는 효과가 없음을 의미합니다. , 매우 양수 값의 경우 효과가 없지만 5에서 16 사이의 값에 대해서는 깨우기를 원합니다. 여기에서 방사형 기저 함수 .

요약

숨겨진 레이어 입력 공간의 특징을 추출하고 출력 레이어는 원하는 컨텍스트로 변환합니다. 이것보다 훨씬 더 많은 것이있을 수 있습니다. 멀티 레이어 네트워크 등을 사용하는 경우도 있지만 지금까지 이해했습니다.

편집 : 멋진 대화 형 그래프가있는이 페이지는 위의 길고 성가신 답변보다 더 잘 작동합니다. : http://neuralnetworksanddeeplearning.com/chap4.html

댓글

  • OP처럼 ‘ 숨겨진 레이어에 대해 약간 혼란 스러움 신경망에서. 귀하의 예에서 NN 알고리즘은 hidden_1, hidden_2 및 hidden_3 뉴런에 대한 가중치를 어떻게 찾습니까? hidden_1, hidden_2 및 hidden_3은 동일한 입력 변수에서 파생되었으므로 ‘ 가중치는 동일한 솔루션으로 수렴되지 않습니까?

답변

분류 사례를 살펴 보겠습니다. 출력 레이어가하려는 것은 샘플이 주어진 클래스에 속할 조건부 확률, 즉 해당 샘플이 주어진 클래스에 속할 가능성을 추정하는 것입니다. 기하학적 측면에서 임계 값 함수를 통해 비선형 방식으로 레이어를 결합하면 신경망이 가장 흥미로운 문제인 비 볼록 문제 (음성 인식, 객체 인식 등)를 해결할 수 있습니다. 즉, 출력 단위는 여기 에 설명 된 것과 같은 비 볼록 결정 함수를 생성 할 수 있습니다.

출력 계층이 한 클래스를 다른 클래스와 더 잘 식별하고보다 정확한 결정 경계를 생성 할 수 있도록 데이터에서 복잡한 기능을 학습하는 것으로 숨겨진 계층의 단위를 볼 수 있습니다. 예를 들어 얼굴 인식의 경우 첫 번째 레이어의 유닛은 가장자리와 같은 특징 (주어진 방향 및 위치에서 가장자리 감지)을 학습하고 상위 레이어를 결합하여 코, 입 또는 눈과 같은 얼굴 특징에 대한 탐지기가되도록 학습합니다. 각 은닉 유닛의 가중치는 이러한 특징을 나타내며, 출력 (시그 모이 드라고 가정)은 해당 특징이 샘플에 존재할 확률을 나타냅니다.

일반적으로 출력 및 출력의 의미 히든 레이어는 해결하려는 문제 (회귀, 분류)와 사용하는 손실 함수 (교차 엔트로피, 최소 제곱 오차 등)에 따라 다릅니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다