파이썬 인공신경망 예제

August 2, 2019 at 7:42 pm

신경망 작동의 원리는 간단합니다. 먼저 네트워크가 출력에 대해 임의로 예측하도록 합니다. 그런 다음 신경망의 예측 된 출력을 실제 출력과 비교합니다. 다음으로, 우리는 우리의 예측 출력이 기본적으로 “신경망 훈련”으로 알려진 실제 출력에 가까워지도록 우리의 가중치와 바이어스를 미세 조정합니다. Sigmoid 함수의 출력은 그 유도체를 생성하기 위해 사용될 수있다. 예를 들어 출력 변수가 “x”인 경우 해당 파생 변수는 x * (1-x)가 됩니다. 또한 신경망의 작동 방식을 이해하는 가장 좋은 방법은 라이브러리를 사용하지 않고 처음부터 빌드하는 방법을 배우는 것입니다. 이제 무게 행렬을 정의했기 때문에 다음 단계를 밟아야 합니다. 우리는 입력 벡터를 wih 행렬을 곱해야합니다. Btw. 이것은 우리가 수동으로 우리의 이전 예제에서 수행 한 정확히 입니다. 이 경우 이 합계의 결과가 항상 0이되기 때문에 모든 가중치 값을 0으로 설정하는 것이 좋지 않다는 것을 쉽게 알 수 있습니다.

이것은 우리의 네트워크가 학습 할 수 없다는 것을 의미합니다. 이것은 최악의 선택이지만 가중치 행렬을 초기화하는 것도 나쁜 선택입니다. 신경망에는 여러 가지 유형이 있습니다. 이 프로젝트에서는 피드 포워드 또는 지각 신경망을 만들 것입니다. 이러한 유형의 ANN은 앞에서 후면으로 직접 데이터를 전달합니다. 이제 우리는 사람이 비만인지 여부를 예측할 수 있는 신경망을 훈련할 준비가 되었습니다. 아직 기차 방법이 없습니다. 이 네트워크를 인스턴스화하고 실행할 수 있지만 결과는 의미가 없습니다.

그들은 임의의 무게 행렬을 기반으로합니다 : 신경망의 가중치는 기본적으로 출력을 올바르게 예측할 수 있도록 조정해야 하는 문자열입니다. 지금은 각 입력 기능에 대해 하나의 가중치가 있음을 기억하십시오. 이 간단한 신경망 예제에서는 신경망 라이브러리를 사용하지 않더라도 계산을 지원하기 위해 numpy 라이브러리를 가져옵니다. 우리는 파이썬에서 우리의 신경망의 구현으로 시작할 준비가 되었습니다. 우리는 기차와 실행 방법을 나중에 정의해야합니다. 파이썬 클래스의 __init__ 메서드 내에서 무게 행렬을 정의하는 대신 명확성을 위해 스페이트 방식으로 정의합니다. 신경망을 살펴보면 가중치와 편향만 제어할 수 있습니다.