English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
신경망
이전 오류를 전파를 통해 배우는
Colin Fahey
neuron_group01.jpg
생물 학적 신경망

1. 소프트웨어

NeuralNetwork20080614.zip
신경 네트워크에 소스 코드를 (C#)
21971 바이트
MD5: 94443565716e1101a3326dc2ffd558fd

2. 소개

이 문서를 구현하는 방법에 대해 설명합니다 인공 신경망 패턴을 인식하는 능력이가 훈련을합니다.
이 문서의 신경망 모델에 대해 설명하는 알고리즘을 사용하여 그 "뒤에 오류가 전파를" 배운다.
이 문서에는 "이전 오류 전파를" 통해 배우는 기본적인 시위를합니다.  이 문서는 컴퓨터 코드로 연결되는 링크합니다.  시위는 컴퓨터 코드를 포함합니다.  컴퓨터에 코드를 만드는 데 사용되는 복잡한 신경망 수있습니다.  그러나, 컴퓨터에 코드가에 대해서만 시위를 목적으로합니다.  메모리 사용량을 줄일 수도의 대안 구현 속도가 향상합니다.

3. 이전 오류 전파를 통해 배우는 대안

이 문서에 대해 설명하는 신경망 모델의 이름이 "뒤에 오류가 번식하는" 알고리즘을 배운다.  이 알고리즘을 배울 수있습니다 다양한 레슨는 매우 오랜 시간이 필요합니다.  또한,이 알고리즘을 배울 수있습니다 다양한 레슨 무작위로 실패로 인해 신경망하기 전에 임의의 초기 상태를 훈련합니다.
"활성 입력을 연결하는" 학습을 통해 배우는가 중요한 대안이 "후진 오류 전파합니다."  입력을 입력을 간단하게 동료를 통해 배우는가를 동시에 연결하는 활성 활성합니다.  이러한 학습이 빠르고 신뢰할 수있습니다.  그러나 많은 실용적인 목적으로 확실한 방법은없습니다를 사용하여 네트워크에 신경을 배운다 협회, 반면이 네트워크를 사용하는 방법을 배울 명백한 오류가 번식하여 후진합니다.
일부 생물 학적 신경망에 의해 협회의 활성 입력을 자세히 알려졌다.  후진 오류 전파 어떠한 생물 학적 신경망 관측되지 않았습니다.
이 문서에 대해 설명 신경망에 흥미를 사용하여 그 뒤에 오류가 전파를 배운다.  그러나, 협회를 통해 배우는 알고리즘을 배우기위한 대안은 매우 중요하다.  신경 네트워크를 디자인하는 특정 문제를 해결하는 학습을 조합하는 것은 더 어려울 수도 desgining 이전의 대안으로 신경 네트워크를 배운다 오류 전파,하지만 생물 학적 시스템 배우는 협회, 그리고 학습 능력을 생물 학적 시스템은 분명합니다.

4. 신경 생물 학적

4.1 신경 세포

neuron_1umeter01.jpg
생물 학적 신경 "(다중" 유형, ~4 um 세포 본문)
a 신경이 종류의 세포가 신경 신호를 전송할 수있는 능력을 받고있습니다.
신경 세포는 신경을 기준으로 시스템에서 발견 동물, 새, 물고기, 그리고 곤충을합니다.
두뇌와 메모리와 로직, 및 단순 반사 시스템, 신경 세포의 배열을 모두 기반으로합니다.
신경 세포에 신호를 전달에도 사용됩니다 동물의 시체를 장거리와 같은 센서로부터 두뇌, 또는 근육의 두뇌를합니다.
생물 학적 신경의 동작은 매우 복잡하고 그러나 캡처의 기본 원칙을 다음과 같은 간체 설명 :
다른 신경 세포로부터 신호를 신경의 축적, 그리고 임계값을 초과할 경우에는 총 신호를 축적은 자신의 신호를 다른 신경 세포 신경 전달합니다.

4.2 신경 부품

neuron_labels01.jpg
생물 학적 신경의 일부
소마
신체의 신경 세포
dendrites
섬유와 화학 수용체 (입력)가 신체의 세포에서 신경을 연장합니다.  a 신경 일반적으로이 많은 dendrites, 그리고이 많은 점포 dendrites 자주합니다.
축삭
섬유와 화학 물질 방출 (출력)에 그 세포의 본문을 종점에서 신경을 확장합니다.  a 신경은 하나의 축삭과 축삭 보통은 소수의 점포합니다.
시냅스
같은 구성을 dendrites 축삭 중 하나가 다른 신경 세포와 신경은 매우 작은 차이로 구분합니다.  이와 같은 구성, 화학 물질을 배출하는 축삭 신경 시냅스를 건너는 dendrites의 다른 신경을 받았다.  이것은 신경 세포에 영향하는 방법 다른 신경합니다.

4.3 신경 염증

신호를 신경 화학 물질의 축적 a dendrites, 그리고 만약의 총 화학 물질 축적 기간 내에 임계값을 초과, 신경 "화재," 자신의 신호를 보내는 축삭을 통해합니다.
일부 신경의 순서에 능력이 있는지 100 Hz 펄스를 발사합니다.
참여 신경 신호를 통과 (Na) 10-15의 나트륨, 칼륨 (K), 그리고 (Cl) 염소 이온, 그리고 전기가 결과 잠재적인 (예를 들어, 전압).
the 휴식 전압 (+30 mV) 수있습니다 (-70 mV)를 해고 전압 측정도 전통적인 전기 회로에 영향을받습니다.
다음은 쥐의 신경 녹음을 발사하는 전압의 속도로 약 100 Hz 만진 경우, 하나의 수염은 휴식을 벗어나 개최 위치 :
neuron_spikes_whisker01.jpg
쥐의 신경 (100 Hz)로 인해 해고를 들고 수염합니다.
다음은 동일한 신호를 적하 목록으로 오디오 : neuron_spikes_whisker01.wav
비록 동기 부여가 항상 있기 때문에 신경의 신호를 빠른 펄스합니다.

4.4 신경망

인간의 두뇌가 약 10^11 (100 억원) 신경합니다.
각각의 신경 세포에있는만큼 많이 10^4 (10000) 소뇌 신경 세포로부터 입력 받는다.
비록 자주 신경의 축삭과 dendrites을 연장 불과 몇 마이크로 미터 떨어져 세포 몸, 일부 축삭의 길이는 1 미터의 순서를합니다.
뇌 신경 세포와 상대적으로 짧은 축삭은 지역이나 클러스터로 그룹화합니다.
뇌 신경 세포도 번들로 구분하여 분야와 상대적으로 긴 축삭 센티미터를 연결합니다.
따라서 네트워크의 프로세싱 요소의 계층 구조가 형성합니다.

4.5 신경 네트워크 상태

네트워크의 상태를 신경 세포는 신경 세포가 연결 방식을 둘 다의 모든 신경 세포와 신호를합니다.
이 불명 확한 상태 정보를 어느 정도는 진정제를 잃었을 경우에는 두뇌는 시간의 합계 금액 비활성를 찾으세요.
지속적인 신호에 의해서만 이동이 상상할 수있는 정보를 하나의 네트워크를 통해, 그리고 그 자체 네트워크 연결을 통해 할 수는없습니다 같은 세포 자동 장치 시뮬레이션을 Conway's "Game of Life"처럼, 단순 Dynamic Random Access Memory (DRAM) 칩, 그리고 반향을 회의소합니다.

4.6 신경망 학습

전통적인 학습을 변경할 경우에 발생합니다 dendrites의 속성을 어느 정도는 효율적으로 될 시냅스에서 화학 신호를 수신 축삭합니다.
이러한 변경 사항의 이유는 복잡하게,하지만 결과는 서로 다른 조합을 필요로하는 신경 시냅스 출력 신호 입력을 일으키는 원인이된다.

5. 인공 신경

5.1 정의

"인공 신경이" 알고리즘이나 물리적 장치를 구현하는 기본적인 행동을 수학적 모델을 생물 학적 신경에 의해 영감을받은합니다.
신호를 다른 신경 세포로부터받은 a 신경 축적 또는 입력 (예를 들면, 센서), 그리고 임계값을 초과할 경우에는 총 신호를 축적에 신경을 다른 신경 세포에 신호를 전송하거나 출력을 (예를 들어, effectors).
어떤 수학적 모델을 여러 개의 입력과 축적의 생각이 항복 통합 단일 출력 (accentuates에 대한 상대 강도의 입력이 상대적으로 어떤 명목 수준) 패턴 인식 사용할 수있습니다.
이러한 모델은 인공 신경을 기준으로합니다.
만약 각각의 입력의 영향을 수정할 수있습니다 다음 학습의 모델을 지원합니다.

5.2 정품 인증 기능을

수학 함수를 변환을 "작동시키는 기능은" 아래에 특정 값을 입력 값을 상대적으로 낮은 출력 값, 그리고 위의 특정 값을 입력 값을 변환 상대적으로 높은 출력 값을합니다.
을 "작동시키는 기능을" 변환하는 데 사용됩니다 신경을 격화를 입력 값을 합계 값이 신경의 출력을 나타냅니다.
a "sigmoid" 기능은 지극히 일반적인 유형의 원활한 기능이 더 낮은 한도를 입력 값을 asymptotically 접근 방식에 접근 부정적인 무한, 그리고 asymptotically 접근 방식의 입력 값을 상한선을 접근하고 긍정적인 무한합니다.
sigmoid 기능은 하나의 특정한 "logistic sigmoid" 기능 :
logistic_sigmoid_function.jpg
the "Logistic Sigmoid" 기능 : 1 / ( 1 + Exp( -x ) )
the "logistic sigmoid" 기능을 "활성화 기능을" 사용할 수있습니다로서 수학 모델의 신경합니다.
수학의 파생 "logistic sigmoid" 수로 계산 수식을 쉽게 연관된 학습 수식을 계산합니다.

5.3 신경망 입력

a "신경망 입력을" 입력 신경망을 나타냅니다.
neural_network_input.jpg
신경망 입력
숫자 값은 "Input"의 입력합니다.

5.4 신경망 출력

a "신경망 출력하는" 출력을 신경망를 나타냅니다.
neural_network_output.jpg
신경망 출력
숫자 값은 "Output"의 출력합니다.
"Error"가의 차이를 나타내는 숫자 값을 출력 값을 "Desired" 값 :
Error = (Output - Desired);  // Derived from: Output = Desired + Error;
원하는 값을 나타냅니다 the "Desired" 값, 또는 이상적인 값, 또는 올바른 값을, 그 신경망은 생산을 특정 입력, 출력에 대응합니다.
"Error"의 오류 값을 계산하고 훈련에 할당 알고리즘을합니다.
신경의 의견을 수렴하여 네트워크에있는 오류 값이합니다.
신경 네트워크의 차이점을 줄이기 위해 적응할 수에 원하는 값을 출력 및; 즉, 신경망 쉽게 배울 수 있지만, 그리고 미래의 오류를 줄일 수있습니다 따라서합니다.

5.5 신경 본문

a "신경 신체의" 시체를 나타냅니다 신경을 축적 입력 공헌, 그리고 추가 편견, 그리고 그 결과 값으로 변환 "기능을 활성화하는" 출력 값을 생성합니다.
neuron_body.jpg
신경 본문
누적 "InputAccumulator"로부터 입력을 나타내는 값은 신경 신경 신체에 연결되어있는 링크가 누구의 출력을합니다.
이 조정 값이 "Bias" 누적 입력값과 결합합니다.
"Output"을 나타내는 숫자 값은 신경의 값을 출력합니다.
다음과 같은 수식을 사용하여 컴퓨터의 출력 값은 :
Output = ActivationFunction( Bias + InputAccumulator );
누적된 오류 "ErrorAccumulator"은 숫자 값을 대표합니다.
특정 출력 값을 주어진 신경 몸, 그리고 주어진 특정 출력 오류 값의 누적된 오류 값이 조정에 따르면 다음과 같은 수식 :
ErrorAccumulator += Output * (1 - Output) * OutputError;
"Rate"은 값에 영향을주는 "Bias" 값 변경 방법에 대한 응답으로 "ErrorAccumulator" 값 :
Bias += (-1) * Rate * ErrorAccumulator;

5.6 신경 연결

a "신경 링크" 사이에있는 링크를 나타냅니다 :
(1)을 입력하는 입력의 신경 네트워크와 신경 몸;
또는,
(2)에 입력하는 출력은 본문과 다른 신경 신경 몸;
또는,
(3) 신경을 출력하는 출력의 육체와 신경망합니다.
neuron_link.jpg
신경 연결
"Input"는 캐시를 입력하기 위해서는 링크합니다.
조정 값에 영향을주는가 "Weight" 신호 값 및 오류 값을하는 방법의 링크를 통해 전파합니다.
"Output"는 캐시의 출력의 링크합니다.
이 값은 다음과 같은 수식을 사용하여 계산된 :
Output = Weight * Input;
캐시의 오류는 링크의 "Error"합니다.
이 오류는 캐시를 "WeightedError"의 링크, 가중치의 무게 요소 :
WeightedError = Weight * Error;
"Rate"은 값에 영향을주는 "Weight" 값 변경 방법에 대한 응답으로 "Error" 값 및 "Input" 값합니다.
신경망 학습하는 동안에 다음과 같은 "Weight" 값이 조정 방식 :
Weight += (-1) * Rate * Input * Error;

5.7 신경망

a "신경망에" 입력, 출력, 신경 기관, 및 링크합니다.
다음과 같은 이미지를 묘사 단순한 신경망, 2 개의 입력, 신경 기관의 첫 번째와 두 계층, 그리고 하나의 신경에 두 번째 계층, 그리고 1 개의 출력합니다.
neuron_network_drawing.jpg
보기를 신경망
시뮬레이션을하는 동안 신경 네트워크를 입력 값을 전파를 통해 링크 및 신경 전달 기관, 그리고, 결국 출력에 도착합니다.
neuron_network_forward_propagation.jpg
번식에 전달 신경망의 예
동안 훈련, 오류 값의 출력을 제공하며, 이러한 오류가 신경망을 통해 전파 뒤에 그 결과 신경은 신체의 수정 및 링크의 무게와 편견을합니다.
neuron_network_backward_propagation.jpg
이전에 오류가 번식의 예 신경망

5.8 신경망 시뮬레이션

정의 :
"네트워크 시뮬레이션이" 절차를 사용하여 네트워크에 입력을 전달하는 링크와 신경을 통해 네트워크에 도달하기 전까지 시신 출력을합니다.
네트워크 시뮬레이션 관련이 시뮬레이션을 신체의 모든 구성하는 링크와 신경합니다.
시뮬레이션을하지 않고 루프를하거나 시간 :
네트워크 구성에 해당하는 이미 많은 관계 루프 수있습니다.
모델에 의존하는 시간에 해당하는 이미 많은 신경합니다.
하지만 일부의 경우 가장 일반적인 응용 프로그램이나 시간 루프를 둘 인공 신경 관여합니다.
다음은 수학적 모델의 신경 본문 :
Output = ActivationFunction( Bias + InputAccumulator );
이 신경 모델과 네트워크 "루프를하지" 않고, 간단하게, 처음부터 다시 시작하여 외부 입력, 출력을 계산의 첫번째 층 신경, 그리고 그 출력을 제공하여 다음을 입력 레이어 출력을 계산하는 계층, 그리고 계층의를 통해 계속 신경 전까지는 최종 출력을 계산합니다.
루프 :
의 형태로의 네트워크 연결은 루프 (또는 "사이클)."
예를 들어, 신경의 출력을 직접적으로 연결될 수있습니다 동일한 신경을 입력 발생 "의견합니다."
또 다른 예제는 신경 # 1의 출력이 연결되어있는 신경 # 2의 입력과 출력의 입력에 연결된 신경 # 2가 신경 # 1.
처음부터 다시 시작 수있다면 어떤 시점에서 신경 세포와 연결을 통해 네트워크와 경로를 추적, 1 - 방식 흐름을 따르면 신호, 그리고, 결국 동일한 시작 지점에 도착, 그 경로는 루프합니다.
루프를 소개하는 흥미로운 가능성이 불확 실한 신호를 네트워크를 주위에 흐르는 기간합니다.
몇몇 간단한 모델을 추측하는 데 걸리는 시간을 특정 금액을 통과 신호를 개별 신경합니다.
그러한 모델, 루프를 통해 신호를 돌아 다니면서 몇 신경 신호를보다 빠르게 루프를 돌아 다니면서 많은 신경을 통해합니다.
a 신경에 연결되어 그 자체가 속도가 빠른 신호를 순환합니다.
신경이 경우에는 입력 X에 무게 W, B 편견, 그리고 부정적인 출력이 아닌 - Y (예를 들면, 0.0 -> 1.0)로 설정하면 간단하게 할 수 발진기 형성 W = (-8) 및 B = +4 및 연결을 설정하여 X을 Y;
각각의 시뮬레이션 시간을 신경 신호는 그 반대 상태로 토글합니다.
화산의 활동으로 바쁜 수있는 네트워크 루프를 허용하지 않습니다 경우에도 그것 외부 신호 (동기 부여)를 입력합니다.
휴대 Conway's 규칙을 자동 장치 "Game of Life" 수있습니다 신경망을 구현하는 작은 힌트를 제공합니다 활동에의 다양성과 루프를 신경망에 발생할 수있습니다.
유한 - 상태 머신 (FSM), 발진기, 휘발성 메모리 (대조적으로 학습 패턴을 통해 변화하는 무게)은 루프를 만들 수있습니다.
경우에는 네트워크에 루프를 우리가 어떤 출력을 업데이트할 수없습니다 계산할 때까지 모든 출력, 그러므로, 우리는 임시의 버퍼를 저장할 필요로 계산된 출력을 계산할 때까지 모든 출력, 그리고 우리의 새 출력 값을 수 커밋 신경의 네트워크로합니다.
어떠한 방법을 업데이 트의 실제 네트워크에 프로 그레시브 출력 방법 대신에 모든 -에 - 한 번 방법을 소개합니다 시간이 연결되는 임의의 순서 혼돈합니다.
물리 시뮬레이션을 결합 관계 기관과 같은 궤도를 도는 행성의 모든 기관 사이에 미군이 스타와 상호 작용하는 중력, 요구와 같은 종류의 접근 방법 : 계산 그물 세력의 모든 기관을 업데이 트하기 전에 어떤 속도와 위치합니다.
시간 - 의존 :
간단한 네트워크 시뮬레이션 일반적으로 입력을 포함하여 원하는 출력을 일으키는 하나의 시뮬레이션 시간 이후 단계를합니다.
이와 같은 시뮬레이션, 우리가 생각보다는 측면에서 "많은 시간을 초 단위로 반복합니다."
어떤 대응이 필요가 없다 규모와 시간 사이에 반복합니다.
디자인을 할 수있는 시스템의 네트워크 시뮬레이션 (반복) 새로운 입력 경우에만 사용할 수있는 불규칙한 간격의 시간을가 발생할 수있습니다.
그러나, 수학적 모델을 고려 신경을 시뮬레이션을 시도합니다 신경 생물 학적 측면 펄스 출력합니다.
시간의 특징을 이용 the 펄스 수도와 같은 펄스 펄스의 곡선 데 특정 주파수를하거나 특정 많은 시간을 연장합니다.
우리는 다른 시간 - 종속 요소를 수학적 모델의 신경 세포와 같은 값을 입력 accumulator가 누수가 기부를 입력하지만 현재 값에 비례합니다.
일반적으로, 우리가 전기 회로를 찾을 수있습니다 비유에 대한 요소가 특정 수학의 방정식을 준수하고 a 신경으로 한 회로에 관해서는 저항, 콘덴서, 그리고이 아닌 - 선형 증폭기합니다.
전시는 복잡한 회로처럼 시간 - 종속 문제를 해결하려면 신경의 출력을하는 함수가하는 것으로 간주 수있습니다의 입력 및 시간에 따라 달라집니다 방법이 복잡합니다.

5.9 후진 오류 전파

정의 :
수학의 프로 시저는 "오류가 번식 이전의" 오류로 시작하는 네트워크와 신경의 출력을 네트워크를 통해 전파 수익률이 오류는 하위의 모든 신경 세포의 네트워크 오류 값을 출력합니다.
후진 오류가 번식 식 :
신경망의 오류 값을 출력은 다음과 같은 수식을 사용하여 계산된 :
Error = (Output - Desired);  // Derived from: Output = Desired + Error;
신경 세포에 축적의 오류에 따르면의 출력을 조정할 본문은 본문과 신경의 출력 오류 (지정하는 링크가 연결되어있는 신경 본문).
각각의 출력 오류 값의 오류 accumulator에 기여하고 다음과 같은 방식 :
ErrorAccumulator += Output * (1 - Output) * OutputError;
다시말해, 모든 계층의 출력 오류가 누출 뒤쪽을 통해 다음 번에 축적의 입력 및 출력의 무게는 이전 레이어에 신경합니다.
이 누적된 값이 곱한 값이 최대 전류 출력의 경우 신경이 가장 중립적인 (대부분의 "미정)," 그리고 최소한의 출력을 때 신경은 대부분의 익스 트림 (아주 "특정한)."
체중 변화와 편견 공식 변경 :
체중을 기준으로 학습 및 바이어스 값이 조정을 미래의 출력 오류를 줄이기위한 시도합니다.
이 수치는 근본적으로 학습 "속도를" 나타냅니다 신속하게 a 신경을 조정하는 방법에 따라 오류 값을 무게와 편견 값을합니다.
다음과 같은 수식의 무게를 변경하는 방법에 신경을 나타냅니다의 특정 세트를 입력 값 및 해당 출력 오류 값 :
Weight += (-1) * Rate * Input * Error;
다음과 같은 수식의 편견을 변경하는 방법에 신경을 나타냅니다 주어진 현재의 출력 오류에 신경 :
Bias += (-1) * Rate * Error;

6. 훈련을 신경망

6.1 훈련 절차

하나 훈련을 시작할 수있습니다 네트워크와 계속해서 감소 출력에 오류가있습니다 심화교육,하지만 그 중 하나를 자주받지 않은 네트워크를 시작합니다.
전 훈련, 임의의 값을 선택하십시오 전체 무게의 모든 신경 세포의 네트워크합니다.
나는 무작위로 선택된 관찰의 값을 나는 간격을 때 발생하는 문제 [ -1.0, +1.0 ], 그리고 난 그럴 필요가 없었 선택된 임의의 값에서 나는 간격을 때 발생하는 문제 [ +0.1, +1.0 ]합니다.
나는 이러한 관측을 언급,하지만 그들은 내 실수로 인해 수도있습니다.
의 목적은 임의의 무게는 가능성을 줄이기 위해 네트워크에서 모든 상황을 진단합니다.
하기 시작하면 모든 네트워크에서 신경 세포와 동일한 무게, 네트워크를 확대하기위한 기준이 없다는 신경 세포 분화합니다.
나는 모든 바이어스 값을 0으로 설정을 관찰하는 (0.0)은 허용합니다.
가는 훈련 집합을 통해 훈련 세션을 포함 여러 번, 아마 수백 또는 수천 명의 엔지니어합니다.
세트의 각 분야를 통과, 우리의 트레이닝 세트의 각 항목을 고려합니다.
훈련 설정 항목은 일련의 입력 및 출력을 원하는 세트를합니다.
우리 시뮬레이션에서 네트워크를 사용하여 일련의 훈련 항목에 의해 지정된 입력합니다.
시뮬레이션의 결과는 출력 값을합니다.
우리가 뒤쪽에서 오류 전파 신경망다고 생각하는 모든 신경 세포에 대한 오류의 출력을 계산합니다.
우리가 무게와 편견을 모두 업데이 트합니다.
주의 : 한 학술 토론 신경망 주창하는 텍스트 전체를 훈련을 통해서 이동을 설정하고 체중 변화와 편견만을 요약합니다.
트레이닝 세트 전체를 거쳐 우리는 일련의 변경 사항 액수의 무게 변화와 편견합니다.
우리는 이러한 액수 및 업데이 트의 모든 무게와 편견을합니다.
같은 액수의 크기가 크면 트레이닝 세트 거대한 수있습니다 - 그리고 그 결과 부당 점프의 무게 - 공간이 큰합니다.
그래서 난 자들의 숫자로 나누어 훈련 생각 품목, 평균 체중 변화를 바이어스 값과 평균 값을 변경은 합리적인합니다.
뭔가가있는 컴퓨팅에 대한 매력이 어떤 하나의 무게 변화 벡터의 전체 훈련은 고려 사항을 설정합니다.
잘 모르겠를 구현하는 경우에 실수를 간단히 말해서 나는 당신을 생각이다, 그러나 거의 전적으로 포기하고 나쁜 것들이 선회하는 방법 때문에 신경망 아웃합니다.
그런 다음 대안 순진하게 사용해 본 때, 즉 모든 훈련 항목을 업데이 트를시 상황 근무 완벽하게합니다.
전체 훈련을 고려하고 업데이 트를 설정하기 전에는 어떤 장점과 단점 :
이점 :
교육 훈련 항목에 단 하나 극단적인 오류가 준비가되어있습니다 (즉, 나쁜 교육 항목)를 내지 않을 것입니다 큰 공헌을이 업데이 트의 영향을 압도하기 때문에이 "좋은" 데이터를;
단점 :
만약 귀하의 훈련 항목에 N 집합의 개수는 귀하의 비율이 진보를 최적의 무게로 나눈 벡터 N된다.
아니면 특정 거리를하셔야합니다 방향으로 불과 힌트를 따라 일부 순진하게 접근하는 방법에 비해;
아마도이 기술은 당신을 위해 일한다는하지만 순진하게 접근 방식을 시도하기 전에 네트워크에 신경을 포기 완전히 좌절!

6.2 실패를 줄일 오류

전반적인 오류가 실패할 수있습니다을 줄이기 위해 교육 훈련 설정합니다.
이 실패를 감지하는 것이 중요 오류를 줄일합니다.
다음 목록은 오류를 줄일 실패의 원인을 설명하고 해결책합니다.
목록에있는 항목의 순서에 나와있는 대략적인 확률로의 첫 번째 항목이 대부분의 추정합니다.
(1)의 무게 조합을 현지 최소의 오류 표면에 도달했습니다, "그리고가" 정지되어있습니다;
해결 방법 : 새 시뮬레이션에 새로운 임의의 무게를 시작합니다.
(2)의 네트워크가 너무 몇 신경 또는 레이어를 인코딩할 수있는 모든 패턴을 귀하의 훈련 세트;
해결 방법 : 계층이나 신경을 추가 가능성을 신중하게 즐겁게합니다.
(3) 하나 이상의 항목에 귀하의 훈련 설정과 모순되거나 일관성이 당신의 다른 교육 육안 상품;
해결 방법 : 데이터 집합에 대한 부정을 확인하십시오.
시험 항목이 항복을 찾을에서 가장 오류가 네트워크에 귀하의 훈련을합니다.
평균 무게 변경 사항을보고 기술을 사용하여 전체 데이터 세트의 영향을 줄이기 위해 어떤 나쁜 사례합니다.
(4) 학습 속도가 너무 높음 (1.0는 아마 아무것도 지나친 이상) 및 업데이 트를 항상 오버의 목표;
해결 방법 : 학습 속도 감소합니다.
(5) 제품의 학습 속도가 너무 낮습니다 (아래에 아무것도 0.01 수도 너무 작습니다), 그리고 네트워크가 정말 이상적인 체중을 수렴 조합 -하지만이 너무 느리게;
해결 방법 : 늘릴 학습 속도합니다.
연수는 2 - 레이어, 3 - 신경 네트워크에 일치하는 단독 - 또는 (xor) 기능, 수, 단순화의 기능에도 불구하고, 실패를 수렴합니다.
이것은 놀라운과 실망스러운합니다.
그러나,이 솔루션의 모든 신경 링크는 단순히 무게를 새 임의의 값을 설정하고 다음을 훈련을위한 네트워크를 다시 시도합니다.
의 경우에는 네트워크에 일치하는 훈련을 독점 - 또는 (xor) 기능, 무작위로 성공적인 학습을 이끌 긍정적인 체중 때마다 보이는 반면 긍정적이고 부정적인 무게 때로는 특정 조합의 실패 원인이 훈련을 극적으로합니다.
새로운 임의의 초기의 필요성을 선택하십시오 무게를 복구하는 데있어서의 실패에서 불행한 결과를 수렴의 조합은 학습 절차를합니다.
본질적으로 검색하는 학습 프로 시저는 가파른 하강에 의해 세계의 최소 표면, 그리고 "지역의 최소의" 존재를 수있는 잠재적인 검색이 될 수있습니다 갇힌합니다.

6.3 전반적인 훈련 오류

네트워크의 전체 오류를 특징으로 수있습니다 광장 - 루트에있는 평균 제곱 오류 또는 "루트 - 의미 - 스퀘어" (RMS)합니다.
어떤 특정 네트워크의 오류에 의해 주어진 출력은 다음과 같은 수식 :
Error = (Output - Desired);
제곱의 합계에 대한 오류를 준 하나의 훈련 항목은 다음과 같은 수식 :
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
    squaredError += (output.Error * output.Error);
}
제곱의 합계에 대한 오류 항목에 대한 일련의 훈련의 전체 집합은 개별 항목의 합계의 제곱에 오류가있습니다.  다음과 같은 코드를 보여줍니다 제곱 방법을 훈련에 대한 오류 항목의 전체 집합을 계산 수있습니다 :
double squaredError = 0.0;
for
    (
    int trainingItemIndex = 0;
    trainingItemIndex < totalTrainingItems;
    trainingItemIndex++
    )
{
    trainingSet.SetAllInputNodeValues( trainingItemIndex );
    Simulate( propagationIterations );
    trainingSet.SetAllOutputNodeErrorValues( trainingItemIndex );
    PropagateErrors( propagationIterations );
    UpdateWeightsAndBiases();

    foreach (NeuralNetworkOutput output in ListOfOutputs)
    {
        squaredError += (output.Error * output.Error);
    }
}
전체 루트 - 의미 - 스퀘어 (RMS)의 오류 메시지가 준의 평균의 제곱의 제곱근 오류가 발생하였습니다 :
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
이 값은 전반적인 오류의 성격을 나타내는 방법은 하나의 네트워크의 모든 훈련의 경우 고려합니다.

7. 학습

경우에 발생합니다 무게와 편견의 값을 학습 신경 링크 및 신경 시체들이 조정에 따라 네트워크에 입력 및 출력 오류 값을 지정합니다.
신경 네트워크를 고려 두 개의 입력 (x1 및 x2), 그리고 2 개의 연결 (w1와 무게 w2), 그리고 하나 신경 몸, 그리고 1 개의 출력 (y)합니다.
neuron_network_single_neuron.jpg
신경망과 2 개의 입력, 그리고 하나 신경 몸, 그리고 1 개의 출력
우리가이 신경 열차 입력을 제공하여, 컴퓨터의 출력, 컴퓨터의 오류, 컴퓨터 무게와 편견 변경 사항, 그리고 무게를 업데이 트와 편견, 새로 도착한 무게 ( w1', w2' )합니다.
아주 재미있는 방법을가이 과정을 시각화합니다.
무게 집합을 할 수 관해서 멀티 - 차원 공간에서 벡터로합니다.  예를 들어, 두 개의 무게 W = (w1, w2)에서 우리는 두 개의 - 용적 "중량" 벡터 "공간을합니다."
무게가 조정 때, 우리는 새로운 제품 무게 벡터 W' = (w1',w2')합니다.
이것을 할 수 시각화 W 포인트를 이동하는 프로세스의 일환으로 새로운 지점 W' 출력 오류를 최소화합니다.
일반적으로 하나의 출력 오류를 계산 않을 수있습니다 무게의 모든 조합이, 왜냐하면의 희망은 향하는의 무게 조정 과정은 최고의 조합을 효율적으로합니다.
그러나, 우리의 얼굴을 근본적으로 줄거리를 얼마나 잘 보여줍니다 신경의 모든 항목에 대한 훈련을 만족하는 함수의 집합으로 두 개의 무게 :
neuron_weight_space03.jpg
제곱 합계는 지정된 훈련에 대한 오류 2 개의 무게로 설정하는 함수 (w1, w2)
기본적으로, 그것의 목표는 학습이 최저 수준으로 하강이 표면에있는 오류를 최소화합니다.
그 결과는 일단의 최소 값을 찾을 W = (w1, w2) 점이 표면, 학습이 끝나면 훈련 그리고 우리는 신경을 사용하시면됩니다.
훈련은 다음과 같은 그래프의 출력 가능한 모든 입력을 신경의 기능을 X = (x1, x2) :
neuron_input_space02.jpg
두 개의 입력을 출력으로 신경의 기능을 무게 조합을 최소화하는 (x1, x2) 제곱 오류
합계 격화에도 불구하고이 두 개의 - 입력 신경은 단순히 (w1*x1 + w2*x2), 정품 인증 기능을 허약하고 절벽을 단순 회전 비행기를합니다.
이 표면에 올바른 출력 값을 지정하는 모든 입력 조합을 (x1, x2) 우리의 훈련 설정합니다.
그러나 당신이 상상할 수있는 유사하게 훈련하는 방법 값을 입력 벡터 X = (x1, x2) 리드를 적절한 출력 값을도 있지만,이 기능이 "일반화되어" 신경망은 신경망의 주요 값을합니다.
우리가 "하강하려고" 제곱의 표면에 오류가 "도약하기 전에해야합니다보세요!"
우리가 업데이 트의 무게 벡터 및 편견, 그리고 우리는 우리의 평가에의 표면의 "높이를" 새 위치로합니다.
한 결과 이것은 포인트로 이동하는 것을 얻을 수있을 좀 더 극단적인 오류가있습니다.
또 다른 결과가 하강 할려면 시간이 걸릴 수도의 깊이를 우리의 이전 위치합니다.
극단적인 봉우리의 가능성과 계곡을 더 "뛰어" 표면이 직접적으로 관련되어 오류의 "학습 속도," 학습 속도를 결정하기 때문에 오류 값을 얼마나 많은 영향을 변경 사항에 미칠 영향은 우리의 무게와 편견합니다.
다음의 그래프는 빠르게 죄어오고 우리가 도착하는 방법에 비해 낮은 비율을 늘리는 배우는 자세를 제곱 오류가 표면에있는 오류를 최소화합니다.
이 그래프도 보여줍니다 학습 속도가 향상의 가능성을 소개하고 또한 나쁜 단계 :
neuron_training_error1512_zoom.jpg
단기적인 추세를 뿌리 - 의미 - 제곱 (RMS) 오류가 몇개의 집합 교육 훈련의 전체 반복, 학습 속도 0.1, 0.5, 1.0, 그리고 2.0합니다.
다음은 그래프의 루트 - 의미 - 제곱 출력 오류가 네트워크에 멀티 - 레이어 19386 세트를 훈련 경험이 많은 나쁜 단계를하는 항목에 대한 경로를 최고의 무게 벡터 :
neuron_training_error_spikes.jpg
훈련 때로는 루트에 스파이크가 발생 - 의미 - 제곱 (RMS) 오류를 반복하면 일부 재개하기 전에 오류가 감소 추세가 증가합니다.
때로는 부드럽게 컨버전스의 흐름은 단순히 일련의 무게를 원하는 :
neuron_training_error1512.jpg
루트 - 의미 - 제곱 (RMS) 동향에 오류가 몇개의 집합 교육 훈련의 전체 반복, 학습 속도 0.1, 0.5, 1.0, 그리고 2.0합니다.

8. 예 : 독점 - 또는 (xor)

"독점 -" (xor)이 기능을 수용 "또는" 두 개의 논리 입력과 출력 결과는 하나의 논리에 따르면 다음과 같은 테이블 :
X1
X2
Y = xor (X1, X2)
0
0
0
0
1
1
1
0
1
1
1
0
일반적으로, 하나의 신경이 입력을 {x1, x2, ...}, 무게 {w1, w2, ...}와의 연계를 통해 진입합니다.
수량 d = bias + (w1*x1 + w2*x2 + ...) 중간에 신경의 계산을 식별할 수있는 것으로 간주 비행기, 무한 집합을 병렬에서 비행기, 특정 지점과 좌표를 포함하는 {x1, x2, ...}합니다.
신경 계산하는 출력 값을 y = ActivationFunction( d ) 갖고있는 무한 집합을 분할의 효과를 병렬로 두 세트를 비행기로 한 세트를 생산 낮은 출력 값, 그리고 다른 생산 높은 출력 값을 설정합니다.
따라서, 다차원 공간을 하나의 신경을 두 영역으로 분할로 구분하여 비행기를 bias + w1*x1 + w2*x2 + ...  = 0, 그리고 낮은 출력 값을 할당합니다 지역에서 한쪽 지점에서 비행기를, 그리고 높은 출력 값을 할당합니다 반대쪽에이 지역에 포인트를 이 비행기를합니다.
따라서,이 두 종류의 포인트를 다차원 공간을 별개로 구분하여 분류하고 완전 수는 비행기, 그럼 하나의 신경을 올바르게 사용할 수있습니다 포인트로 분류에 속하는 한 세트로 이들을 설정 또는 다른합니다.
- (xor) 기능을 분류 포인트를 전용하거나 두 개의 - 차원 공간 (과 좌표를 (x1, x2)) 같은 지점에서 생산하는 출력 설정이 "0으로" 분류된 { (0,0), (1,1) }가, 그리고 포인트를 설정하는 출력 { (0,1), (1,0) } 생산은 "1로" 분류된 것입니다.
단일 "비행기가없습니다" (이 경우, 직선)가 이들을 별도의 4 개 지점에 두 세트를합니다.
따라서, 하나의 신경을 분류 포인트를 사용할 수없습니다에 따르면 독점 - 또는 (xor) 기능을합니다.
하나의 신경 수있는 공간 분할의 지점에서만 두개의 영역을합니다.
- (xor) 기능을 분류 포인트를 전용하거나 분할하는 방식을 근본적으로 차원 공간을, 2 -, 3 영역 (또는, 또는, 4 개 지구).
2 개의 신경 세포는 두 개의 - 차원 공간을 분할, 3 영역 (예를 들어, 두 개의 별개로 평행선), 그리고 사용할 수있습니다 따라서 지점을 분류에 따르면 독점 - 또는 (xor) 기능을합니다.
제 3의 출력을 결합하는 신경을 사용할 수있습니다에서 다른 2 개의 신경을 단일 출력합니다.
다음과 같은 신경망, 2 개의 입력, 신경 기관의 첫 번째와 두 계층, 그리고 하나의 신경에 두 번째 계층, 그리고 하나의 출력을 사용할 수있습니다 지점을 분류에 따르면 독점 - 또는 (xor) 기능을합니다.
훈련을 다음과 같은 신경망 수있습니다 단독 - 또는 (xor) 기능을 계산한다, 또는 신경 네트워크는 단순히 그 무게와 바이어스 값을 할당하는 방식에 원하는 동작을 생산합니다.
neuron_network_drawing.jpg
a 신경망 능력을 배타적으로 분류 지점에 따르면 - 또는 (xor)
이 문서는 컴퓨터와 연관된 코드를 보여줍니다 훈련을 위 그림에 표시된 신경망과 일치하는 단독 - 또는 (xor) 기능을합니다.
신경 네트워크를 때로는 실패를 배우는 기능을하지만 간단하게 다시 시작할 수있습니다 노력의 소프트웨어를 새 세트를 배우는 초기 체중합니다.
소프트웨어를 성공적으로 배울 경우에는 전용 - 또는 (xor) 기능, 다음의 출력은 다음과 유사합니다 :
x1 =   0.0000   x2 =   0.0000   y =   0.0172    error =   0.0172
x1 =   1.0000   x2 =   0.0000   y =   0.9802    error =  -0.0198
x1 =   0.0000   x2 =   1.0000   y =   0.9839    error =  -0.0161
x1 =   1.0000   x2 =   1.0000   y =   0.0154    error =   0.0154
(y)가의 2 % 이내의 출력 각각에 대해 원하는 값을 변수를 4 개 조합의 (x1, x2)합니다.
비록 네트워크가 훈련을 4 개의 조합을 자세히 출력 값 대해서만 변수 (값으로 0.0 및 1.0 대표 부울 값)를 입력 신경망을 무작위로 설정할 수있습니다 플로팅 - 포인트 값합니다.
는 다음과 같은 이미지의 출력을 보여주는 여러 조합을위한 훈련을 신경망의 입력 값 :
neuron_xor_surface02.jpg
a 신경망 능력을 배타적으로 분류 지점에 따르면 - 또는 (xor)
신경망의 표면의 출력을 나타냅니다의 모든 조합이 (x1, x2)의 범위를 입력 [ -2.0, +2.0 ] 수있습니다.
주변의 출력이 낮은 영역에서 0.0 얼굴, 그리고 최고의 출력이 분야에서 주변 1.0의 표면합니다.
참고 사항에 대한이의 얼굴에 포인트가 낮은 { (0,0), (1,1) }, 그리고 표면이 높은 지점에서 { (0,1), (1,0) }합니다.
생산의 네트워크에 불과 원하는 출력을위한 훈련을 4 개의 특정 조합의 입력 변수, 출력을 생성하지만 신경망 또한 다른 모든 조합의 입력 값을 수있습니다.
신경망의 기능을 합리적인 반응에 대한 일반적인 케이스를 생산 훈련을 거쳐 구체적인 사례를 "일반화하는" 것으로 간주합니다.
모든 프로세스에 맞는 데이터 포인트를 모델과 같은 선 또는 다른 커브 피팅 포인트를, 또한 "일반화" 효과 생성, 그래서 a 신경망를 생산 피팅는 사실을 구체적인 학습 결과를 출력을 원하는 종류의 일반화가 임시 있지만이 그럼에도 불구하고 흥미를 구체적인 사례를 일반화 능력을 관찰합니다.

9. 예 : Tic-tac-toe "(naughts 및 교차)"

9.1 소개

Tic-tac-toe "(naughts 및 교차)은" 간단한 게임 3 * 3 그리드의 세포를 재생할 수있는 표시가있는 "O" 또는 "X"합니다.
선수 "X" 자국을 번갈아 장소를 "O" 중 하나를 플레이어가 완료될 때까지 빈 세포를 행, 열, 또는 대각선합니다.
왜냐하면, 세상에는 3 열, 3 열, 그리고 2 대각선, 8 개의 승리가 각 선수의 패턴을합니다.
tic_tac_toe_board_and_winning_patterns.jpg
Tic-Tac-Toe 보드와 승리 패턴을
그것은 사소한을 쓰는 사람이 모든 가능한 재귀 함수를 탐구 Tic-Tac-Toe 게임의 최대 기간이 있기 때문에 게임은 9 개 이동합니다.
게임에서 각 지점에서 검사의 결과를 우리가 단순히 각각의 나머지 빈 세포를 움직이는합니다.
이러한 기능을 Tic-Tac-Toe를 확인할 수있습니다 게임이없는 선수와 "완벽한 선수들이" 최종 우승자합니다.

9.2 훈련을 최고의 움직임을 나타내는 신경망

재귀 함수는 모든 가능한 게임과 탐구의 각 보드 구성을 결정하는 최고의 이동합니다.
각각의 보드에 추가 구성 (입력), 그리고 최고의 이동 (원하는 출력을)를 훈련 항목의 목록을합니다.
그러면 저희가 철도의 네트워크를 생산의 각 집합에 대해 원하는 출력을 입력합니다.
네트워크는 각각의 세포에 해당하는 9 개 입력 그리드, 그리고 다음과 같은 값을 입력 값을으로 제한됩니다 :
0 : 빈 셀
+1 : 주인공 플레이어
-1 : 상대 선수
9 출력에 대응하는 네트워크는 각각의 세포의 격자로 제한 및 출력 값은 다음과 같은 값 :
0 : 여기에 움직이지
1 : 이사는 여기에
8 개의 출력을 "0으로" 설정됩니다, 그리고 1 개의 출력은 "1로" 설정합니다.
따라서, 이후 훈련을 신경망의 입력으로위원회 구성을 지정할 수있습니다, 그리고 최고의 이동 신경망 나타냅니다.
최고의 출력 가까운를 "1로" 나타냅니다 이동, 및 기타 모든 주변을 "0으로" 출력을해야합니다.
일반적으로, 어떤 함수를 부울 매개 변수 및 부울 출력은 두 개의 계층을 대표 네트워크에 신경 신경합니다.
첫 번째 층 신경 수있습니다 다차원 공간을 분할을 지역이고, 두 번째 레이어 결합이 지역에 적절한 출력 값을 분류를 생산합니다.
the Tic-Tac-Toe 신경망 생산 부울 출력 및 입력이 세 개 주에서 비록 ( -1, 0, +1 )을 할 수도, princple, 변환 이러한 일련의 부울 몇 이산 입력 값을 입력합니다.
따라서, 두 개의 계층을 충분히 배울 신경 Tic-Tac-Toe되어야합니다.
네트워크가 있기 때문에 9 출력, 신경 시체가 결승에서 9 (2) 계층합니다.
유일하게 남아있는 신경 네트워크 디자인 결정은 신경 세포의 수를 결정하는 첫 번째 레이어의 시신을 넣어 신경망합니다.
설정 여부를 결정해야합니다, 컴퓨터 코드를 생성 및 훈련을 N 신경망과 신경의 첫번째 레이어합니다.
신경 네트워크를 배울 수있는 능력을 Tic-Tac-Toe의 전체 훈련 설정 그래프로 작성할 수있습니다.
다음의 그래프는 각각의 전반적인 교육 훈련을 설정할 48 중 오류가 발생했습니다 서로 다른 신경망과 신경의 첫 번째 레이어 N = 1,2,...,48합니다.
neuron_training_tictactoe_nlayers01.jpg
전반적인 훈련 세트 중 오류가 발생했습니다 훈련, N = 1,2,...,48 신경에 대한 첫 번째 레이어 (N = 1가 상단에, 그리고 N = 48은 하단에, 대부분의 중간 곡선이 더 높은 값을 낮게 N)
다른 방법을 시각화의 얼굴을 형성하는 이러한 경향은 곡선의 순서는 :
neuron_training_tictactoe_surface01.jpg
전반적인 훈련 세트 중 오류가 발생했습니다 훈련, N = 1,2,...,48 신경에 대한 첫 번째 레이어 (N = 1은 뒤쪽, 그리고 N = 48은 전면)
그러므로, 우리가 보는 접근 방식이 우리가 신경 N = 48의 첫번째 레이어, 네트워크의 모든 것 같습니다 훈련의 경우를 받아들일 수있습니다.
아무것도 신경 레벨 48 미만의 완전한 일련의 사례를 배우는 것 불충분합니다.
에 대한 낮은 수의 신경, 각 추가적인 신경 전반적인 오류가 현저하게 줄일 수있습니다.
그러나 신경 세포는 주변의 개수를 배우는 데 필요한 전화 번호 전체를 일련의 레슨, 각각의 추가적인 신경에 의해서만 상대적으로 적은 액수의 오류 감소합니다.
신경 네트워크는 다음과 같은 이미지 표시 9 개 입력, 신경 기관 및 48의 첫번째 계층과 9 신경 구의 시체를 두 번째 레이어와 9 개의 출력합니다.