이 경우 이 합계의 결과가 항상 0이되기 때문에 모든 가중치 값을 0으로 설정하는 것이 좋지 않다는 것을 쉽게 알 수 있습니다. 이것은 우리의 네트워크가 학습 할 수 없다는 것을 의미합니다. 이것은 최악의 선택이지만 가중치 행렬을 초기화하는 것도 나쁜 선택입니다. 라인 23: 이것은 이 신경망에 대한 우리의 가중치 매트릭스입니다. “syn0″이라고 하여 “시냅스 제로”를 의미합니다. 우리는 단지 2 개의 레이어 (입력 및 출력)를 가지고 있기 때문에, 우리는 그들을 연결하는 하나의 가중치 매트릭스가 필요합니다. 그 차원은 (3,1) 우리는 3 입력과 1 출력을 가지고 있기 때문에. 그것을 보는 또 다른 방법은 l0이 크기 3이고 l1은 크기 1입니다. 따라서 l0의 모든 노드를 차원 행렬(3,1)이 필요한 l1의 모든 노드에 연결하려고 합니다. :) 또한 평균이 0으로 임의로 초기화됩니다. 무게 초기화에 들어가는 이론의 꽤 있다. 지금은 가중치 초기화에서 평균을 0으로 하는 것이 좋습니다. 또 다른 참고는 “신경망”이 실제로이 행렬일 뿐이라는 것입니다.

“레이어” l0 및 l1이 있지만 데이터 집합을 기반으로 하는 일시적인 값입니다. 우리는 그들을 저장하지 않습니다. 모든 학습은 syn0 행렬에 저장됩니다. 처음에 신경망은 몇 가지 무작위 예측을 하고, 이러한 예측은 올바른 출력과 일치하며 예측된 값과 실제 값 간의 오차 또는 차이가 계산됩니다. 실제 값과 전파된 값 간의 차이를 찾는 함수를 COST 함수라고 합니다. 여기에 드는 비용은 오류를 나타냅니다. 우리의 목표는 비용 기능을 최소화하는 것입니다. 신경망을 훈련하는 것은 기본적으로 비용 기능을 최소화하는 것을 말합니다.

우리는 우리가이 작업을 수행 할 수있는 방법을 볼 수 있습니다. 다음은 Python 프로젝트에서 신경망을 만드는 방법에 대한 전체 코드입니다: 피드 포워드 뉴런을 교육하려면 백 프로세지(back-prop)가 필요하며, 이에 따라 해당 입력 및 출력 집합이 네트워크에 제공됩니다. 입력 데이터가 뉴런으로 전송되면 처리되고 출력이 생성됩니다. 그것은 훨씬 더 자세히 신경 망을 커버, 컨볼루션 신경망을 포함 하 여, 재발 신경 망, 그리고 훨씬 더. 그리고 그것은 거의 그것입니다. 지금은 우리가 지금까지 연구 한 것을 구현할 때입니다. 우리는 파이썬에서 하나의 입력과 하나의 출력 계층으로 간단한 신경망을 만들 것입니다. 줄 32 : 그래서, l1은 각 입력에 대한 “추측”을 가지고 주어진. 이제 추측(l1)에서 실제 대답(y)을 빼서 얼마나 잘 했는지 비교할 수 있습니다. l1_error는 네트워크가 놓친 양을 반영하는 양수 및 음수의 벡터일 뿐입니다. 만들려는 신경망에는 다음과 같은 시각적 표현이 있습니다.

39호선: 이제 네트워크를 업데이트할 준비가 되었습니다. 단일 교육 예제를 살펴보겠습니다. 이 교육 예제에서는 모든 가중치를 업데이트하도록 설정되어 있습니다. 맨 왼쪽 무게(9.5)를 업데이트해 보겠습니다. weight_update = input_value * l1_delta 맨 왼쪽 가중치의 경우 1.0 * l1_delta를 곱합니다. 아마도, 이것은 증가 9.5 이제까지 너무 약간. 왜 작은 암마인가? 글쎄, 예측은 이미 매우 자신감이 있었고, 예측은 대체로 정확했습니다. 작은 오류와 작은 경사는 매우 작은 업데이트를 의미합니다.

모든 가중치를 고려하십시오. 그것은 이제까지 너무 약간 세 가지를 증가 시킬 것 이다. 좋아, 그래서 뉴런이 작동하는 것이 제안되는 방법입니다. 이제 컴퓨터 과학자들은 우리가 이것을 얻었다고 생각합니다.