신경망에서 숨겨진 계층은 무엇을 계산합니까?


187

많은 사람들이 'Google에 알려주세요'라는 링크로 응답 할 것이라고 확신합니다.이 사실을 이해하려고 노력했기 때문에 이해가 부족하다는 점을 용서해주십시오. 신경망의 실제 구현은 실제로 작동합니다.

입력 계층과 데이터를 정규화하는 방법을 이해하고 바이어스 단위도 이해하지만 숨겨진 계층에 대해서는 실제 계산이 해당 계층에 있으며 출력에 매핑되는 방식이 약간 안개 낀 것입니다. 숨겨진 레이어에 물음표가있는 다이어그램, AND / OR / XOR 같은 부울 함수, 활성화 함수 및 모든 숨겨진 단위에 매핑되는 입력 노드 및 각각 몇 개의 숨겨진 단위에만 매핑되는 입력 노드를 보았습니다. 나는 실용적인 측면에 대한 몇 가지 질문이 있습니다. 물론, 당신이 아이에게 설명하는 것처럼 전체 신경망 과정에 대한 간단한 설명은 훌륭 할 것입니다.

숨겨진 레이어에서 어떤 계산이 수행됩니까?

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

출력 레이어는 어떻게 작동합니까? 숨겨진 레이어의 데이터를 비정규 화합니까?

입력 레이어의 일부 레이어가 숨겨진 레이어에 연결된 이유는 무엇입니까?


13
이 주변 사람들은 훌륭합니다. "Google에 알려주세요"라는 대답은 보지 못했지만 처음에는 기본적인 질문이었던 것에 대한 놀랍도록 철저하고 통찰력있는 답변이 많이있었습니다. 불행히도, 나는 당신을 도울 수 없지만 그것은 매우 관련이있어서 행복하게 투표하고 있습니다.
Gala

4
의견과 Gael 투표에 감사드립니다. SO 커뮤니티는 사람들이 어떻게 얻을 수 있는지 잘 알고 있기 때문에 아마 약간 지쳤을 것입니다.) 질문을 편집 / 닫음으로써
FAtBoonoon

1
비록 그들의 응용과 방법에 관여하지만 신경망에 대해서는 특별히 전문가가 아닙니다. 아마도 도움이되지 않는 대답은 숨겨진 항목의 특정 계산이 출력에 부과하는 '비용 함수', 즉 달성하려는 목표에 달려 있다는 것입니다. 예를 들어 입력 요소를 군집 세트로 그룹화하려면 숨겨진 레이어의 요소 간 거리를 계산합니다. 이것은 프로세스가이 레이어를 '나갈'수있는 오류 기준을 충족 할 때까지이 레이어 내에서 다양한 반복 및 최적화주기를 거칠 수 있습니다.
Lucozade

답변:


230

세 문장 버전 :

  • 각 레이어는 이전 레이어에 원하는 기능을 적용 할 수 있습니다 (보통 선형 변환 후 스쿼시 비선형 성).

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

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

당신이 5 인 것처럼 :

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

따라서 버스 감지기는 휠 감지기 (차량을 알려주는 데 도움이 됨)와 상자 감지기 (버스가 큰 상자 모양이기 때문에)와 크기 감지기 (차가 너무 커서 말을 할 수 없음)로 구성 될 수 있습니다 ). 숨겨진 레이어의 세 가지 요소는 원시 이미지의 일부가 아니며 버스를 식별하는 데 도움이되는 도구입니다.

이 세 가지 감지기가 모두 켜져 있거나 (특히 작동중인 경우) 버스가있을 가능성이 높습니다.

신경망은 많은 검출기를 구축하고 조립하는 데 좋은 도구 (예 : 역 전파)가 있기 때문에 유용합니다.


당신이 성인 인 것처럼

피드 포워드 신경망은 일련의 기능을 데이터에 적용합니다. 정확한 함수는 사용중인 신경망에 따라 다릅니다. 가장 자주 함수는 이전 레이어의 선형 변환을 계산 한 다음 스쿼시 비선형 성을 계산합니다. 때로는 함수가 다른 기능을 수행 할 수도 있습니다 (예에서 논리 함수를 계산하거나 이미지의 인접 픽셀을 평균화하는 것과 같은). 따라서 다른 계층의 역할은 계산되는 함수에 따라 달라질 수 있지만 매우 일반적으로 노력하겠습니다.

입력 벡터 , 숨겨진 레이어 활성화 및 출력 활성화 호출 해 봅시다 . 에서 매핑되는 함수 와 에서 매핑되는 함수 가 있습니다 . xhyfxhghy

따라서 숨겨진 계층의 활성화는 이며 네트워크의 출력은 입니다.f(x)g(f(x))

왜 하나가 아닌 두 개의 함수 ( 및 )가 있습니까?fg

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


논리 함수를 사용한 예 :

예를 들어, 와 가 "AND", "OR"및 "NAND"와 같은 간단한 논리 연산자 만 허용 하면 "XOR"과 같은 다른 함수는 그 중 하나만 사용하여 계산할 수 없습니다. 다른 한편으로, 우리 이 함수들을 서로 겹쳐서 기꺼이한다면 "XOR"을 계산할 수 있습니다 :fg

첫 번째 레이어 기능 :

  • 하나 이상의 요소가 "TRUE"인지 확인하십시오 (OR 사용).
  • 모두 "참"이 아닌지 확인하십시오 (NAND 사용).

두번째 층 기능 :

  • 첫 번째 계층 기준이 모두 만족되는지 확인하십시오 (AND 사용).

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


이미지가 포함 된 예 :

이 대화의 슬라이드 61 ( 여기서는 단일 이미지로도 제공됨 )은 특정 신경망에서 서로 다른 숨겨진 레이어가 찾고있는 것을 보여줍니다 (한 가지 방법으로 시각화).

첫 번째 레이어는 이미지에서 짧은 가장자리를 찾습니다. 이것은 원시 픽셀 데이터에서 찾기가 쉽지만 얼굴이나 버스 또는 코끼리를보고 있는지 여부를 알려주는 데는별로 유용하지 않습니다. .

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

다음 층은 눈 탐지기와 코 탐지기를 얼굴로 구성합니다. 다시 말해, 이전 레이어의 눈 탐지기와 코 탐지기가 올바른 패턴으로 켜지면 불이 켜집니다. 이들은 특정 종류의면을 찾는 데 매우 적합합니다. 하나 이상의면이 켜지면 출력 레이어에면이 있다고보고해야합니다.

얼굴 탐지기는 눈 탐지기와 코 탐지기에서 쉽게 구축 할 수 있지만 픽셀 강도로 만들기는 어렵 기 때문에 유용합니다 .

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


여러 다른 질문에 대한 답변

"입력 레이어의 일부 레이어가 숨겨진 레이어에 연결된 이유는 무엇입니까?"

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

"이미지 예의"눈 감지기 "사진은 어디에서 왔습니까?"

필자는 연결된 특정 이미지를 다시 확인하지 않았지만 일반적으로 이러한 시각화는 해당 뉴런의 활동을 최대화하는 입력 레이어의 픽셀 집합을 보여줍니다. 우리가 뉴런을 눈 탐지기로 생각한다면, 이것은 뉴런이 가장 눈과 같은 것으로 간주하는 이미지입니다. 사람들은 일반적으로 최적화 (hill-climbing) 절차를 통해 이러한 픽셀 세트를 찾습니다.

에서 이 논문 세계 최대의 신경 그물의 하나 일부 Google 사람들에 의해, 그들은 "얼굴 검출"신경과 "고양이 검출기"신경이 방법뿐만 아니라 두 번째 방법을 보여 그들은 또한 보여 실제 이미지 을 활성화 뉴런이 가장 강력합니다 (그림 3, 그림 16). 두 번째 접근 방식은 네트워크가 얼마나 유연하고 비선형적인지를 보여주기 때문에 좋습니다. 이러한 높은 수준의 "검출기"는 픽셀 수준에서 특별히 유사하지는 않지만 모든 이미지에 민감합니다.


불분명하거나 더 궁금한 점이 있으면 알려주세요.


2
따라서 주어진 레이어의 모든 단일 노드에 대해 하나의 정의 된 알고리즘이 있으며 가중치는 출력을 다르게 만드는 이유는 무엇입니까? 아니면 레이어의 모든 노드를 다르게 프로그래밍 할 수 있습니까?
FAtBalloon

3
@GeorgeMcDowd 이것은 중요한 문제에 있습니다. 픽셀을보고 버스를 식별하는 것은 제안한대로 어렵습니다. 다행히도 픽셀을보고 가장자리를 찾는 것은 쉽습니다. 이것이 첫 번째 숨겨져있는 레이어가하는 모든 것입니다. 다음 레이어는 가장자리를 기반으로 추론을 시도하는데, 이는 픽셀을 기반으로하는 것보다 훨씬 쉽습니다.
David J. Harris

4
따라서이 답변에 넣은 시간과 노력에 대해 다른 포인트 (단지가 아닌)를 제공해야합니다!
samsamara

1
@JoshuaEnfield 1980 년대의 논리는 사람들이 뇌가 어떻게 작용하는지 생각한 것과 비슷하며, 어디에서나 차별화 될 수 있으며, 언급 한대로 그 가치가 제한되어 있다고 생각합니다. 그 이후로 사람들은 f(x) = max(x, 0)(정류 된 선형 단위) 속성이 많지 않더라도 더 잘 작동 한다는 것을 알게되었습니다 .
David J. Harris

2
버스 예제와 일련의 기능들이 막을 내 렸습니다. 왜 교과서를 설명 할 수 없는지 이해하지 마십시오.
drecute

12

직관적 인 운영 설명에 추가하려고합니다 ...

신경망을 생각하는 좋은 직관적 인 방법은 선형 회귀 모델이 무엇을 시도하는지 생각하는 것입니다. 선형 회귀는 일부 입력을 가져 와서 각 입력 값에 일부 모델 최적 가중 계수를 곱한 결과의 합을 실제 출력과 거의 일치하는 출력 응답에 매핑하려고하는 선형 모델을 제공합니다. 계수는 원하는 출력 값과 모델이 학습 한 값 사이의 일부 오류 메트릭을 최소화 할 값을 찾아서 결정됩니다. 또 다른 방법은 선형 모델이 각 입력에 대해 계수 승수를 만들고 모든 값을 합산하여 (다중) 입력 값과 (일반적으로 단일) 출력 값 사이의 관계를 결정하려고 시도한다는 것입니다. 같은 모델이 신경망의 기본 구성 요소로 생각 될 수 있습니다.

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

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

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

신경망이 실제로 어떻게 작동하는지 배우는 데 실제로 도움이 된 방법 중 하나는 신경망 구현 코드를 연구하고 구축하는 것입니다. 가장 기본적인 코드 설명 중 하나는 (무료로 제공되는) 'DSP에 대한 과학자 및 엔지니어 안내서'의 신경망 장에서 찾을 수 있습니다 . 26. 그것은 주로 당신이 무슨 일이 일어나고 있는지 볼 수 있도록 매우 기본적인 언어로 작성되었습니다.


12

이것에 대한 나의 견해를 입력-숨김 단계 및 숨김-출력 단계의 두 단계로 설명하겠습니다. 숨겨진 출력 단계를 먼저 수행합니다. 왜냐하면 흥미가 덜하기 때문입니다.

숨겨진 출력

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

나는 이러한 숨겨진 뉴런의 출력과 출력 레이어 사이의 변환을 단순한 기하학적 번역이 아닌 언어 적 의미로 번역이라고 생각합니다. 이것은 변형이 불가피한 경우와 그렇지 않은 경우 번역에서 무언가가 손실 된 경우에 해당됩니다. 그러나 기본적으로 숨겨진 뉴런의 출력은 다른 관점에서 볼 수 있습니다.

숨겨진 입력

3 개의 입력 뉴런 (여기서 방정식을 쉽게 작성할 수 있음)과 숨겨진 뉴런이 있다고 가정 해 봅시다. 각 숨겨진 뉴런은 가중 된 입력 합계 를 입력 으로 얻 습니다. 예를 들어

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

이 값이 있음을 의미합니다 hidden_1매우 값에 민감 input_1, 전혀 민감 input_2하고에 약간 민감한 input_3.

따라서 입력 hidden_1의 특정 측면 을 캡처 한다고 말할 수 있습니다 input_1. "중요"측면 이라고 할 수 있습니다 .

출력 hidden_1은 일반적으로 입력을 일부 함수를 통해 전달하여 형성되므로 S 자형 함수를 사용한다고 가정 해 봅시다 . 이 함수는 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위에서 다시 살펴 보자 . at의 값 input_1이 충분히 크면 S 자형 활성화 함수의 출력은 1로 유지되며 더 이상 커지지 않습니다 . 다시 말해, 점점 더 input_1출력에 차이를 만들지 않을 것입니다. 유사하게, 반대 방향 (즉, 음의 방향)으로 움직인다면, 점 후에 출력에 영향을 미치지 않습니다.

알았어 괜찮아. 그러나 특정 방향으로 무한대 방향으로 감도를 원하지 않고 라인 의 특정 범위 에 대해서만 활성화하기를 원한다고 가정하십시오 . 매우 음의 값은 효과가 없으며 매우 양의 값은 효과가 없지만 5와 16 사이의 값은 깨우기를 원합니다. 여기에서 활성화 기능에 방사형 기본 기능 을 사용합니다.

요약

숨겨진 레이어는 입력 공간의 기능을 추출하고 출력 레이어는이를 원하는 컨텍스트로 변환합니다. 이것보다 더 많은 것이있을 수 있습니다. 멀티 레이어 네트워크 등은 무엇입니까? 그러나 이것이 내가 지금까지 이해 한 것입니다.

편집 : 멋진 대화 형 그래프가있는이 페이지는 위의 길고 번거로운 답변보다 더 나은 작업을 수행합니다 : http://neuralnetworksanddeeplearning.com/chap4.html


1
OP와 마찬가지로 신경망의 숨겨진 계층에 대해 약간 혼란 스럽습니다. 귀하의 예에서 NN 알고리즘은 hidden_1, hidden_2 및 hidden_3 뉴런의 가중치를 어떻게 찾습니까? 그리고 hidden_1, hidden_2 및 hidden_3은 동일한 입력 변수에서 파생되므로 가중치가 동일한 솔루션으로 수렴되지 않습니까?
RobertF 2016 년

5

분류의 경우를 보자. 출력 레이어가 시도하는 것은 샘플이 주어진 클래스에 속하는 조건부 확률, 즉 해당 샘플이 주어진 클래스에 속하는 가능성을 추정하는 것입니다. 기하학적 측면에서 임계 값 함수를 통해 비선형 방식으로 레이어를 결합하면 신경망에서 볼록하지 않은 문제 (음성 인식, 객체 인식 등)를 해결할 수 있습니다. 다시 말해서, 출력 유닛은 여기에 도시 된 것과 같은 볼록하지 않은 결정 함수를 생성 할 수 있다 .

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

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

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