산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Equipment >> 산업용 로봇

신경망에 바이어스 노드 통합

이 문서에서는 Python과 같은 고급 프로그래밍 언어로 구현된 다계층 Perceptron에 편향 값을 추가하는 방법을 보여줍니다.

Robert Keim 엔지니어링 이사가 만든 신경망에 대한 All About Circuits 시리즈에 오신 것을 환영합니다. 편향 노드에 대한 이 강의를 계속하기 전에 아래 시리즈의 나머지 부분을 따라잡는 것을 고려해 보십시오.

<올>
  • 신경망을 사용하여 분류를 수행하는 방법:퍼셉트론이란?
  • 간단한 퍼셉트론 신경망을 사용하여 데이터를 분류하는 방법
  • 기본 퍼셉트론 신경망 훈련 방법
  • 단순 신경망 훈련 이해
  • 신경망 훈련 이론 소개
  • 신경망의 학습률 이해
  • 다층 퍼셉트론을 사용한 고급 기계 학습
  • 시그모이드 활성화 함수:다층 퍼셉트론 신경망에서의 활성화
  • 다층 퍼셉트론 신경망 훈련 방법
  • 다층 퍼셉트론에 대한 훈련 공식 및 역전파 이해
  • Python 구현을 위한 신경망 아키텍처
  • Python에서 다층 퍼셉트론 신경망을 만드는 방법
  • 신경망을 사용한 신호 처리:신경망 설계 검증
  • 신경망용 데이터 세트 훈련:Python 신경망 훈련 및 검증 방법
  • 신경망에는 몇 개의 히든 레이어와 히든 노드가 필요합니까?
  • 은닉층 신경망의 정확도를 높이는 방법
  • 신경망에 바이어스 노드 통합
  • <시간 />

    Perceptron의 입력 레이어나 히든 레이어에 추가할 수 있는 바이어스 노드는 디자이너가 선택한 일정한 값을 생성합니다.

    우리는 11부에서 편향 값에 대해 다시 논의했으며 편향 노드가 무엇인지 또는 어떻게 편향 노드가 신경망의 기능을 수정하고 잠재적으로 향상하는지 확실하지 않은 경우 해당 기사의 관련 부분을 읽거나 다시 읽을 것을 권장합니다.

    이 기사에서는 먼저 편향 값을 네트워크 아키텍처에 통합하는 두 가지 방법을 설명한 다음 편향 값이 이전 기사(파트 16)에서 얻은 정확도 성능을 향상시킬 수 있는지 여부를 확인하기 위해 실험을 수행합니다.

    스프레드시트를 통한 편향 통합

    다음 다이어그램은 입력 레이어에는 바이어스 노드가 있지만 은닉 레이어에는 없는 네트워크를 보여줍니다.

    이것이 원하는 구성인 경우 교육 또는 검증 데이터가 포함된 스프레드시트를 사용하여 편향 값을 추가할 수 있습니다.

    이 방법의 장점은 실질적인 코드 수정이 필요하지 않다는 것입니다. 첫 번째 단계는 스프레드시트에 열을 삽입하고 편향 값으로 채우는 것입니다.

    이제 입력 레이어 차원을 1만큼 늘리면 됩니다.

    강령에 편견 통합

    히든 레이어에 바이어스 노드를 원하거나 스프레드시트 작업이 싫다면 다른 솔루션이 필요합니다.

    입력 레이어와 은닉 레이어 모두에 바이어스 노드를 추가한다고 가정해 보겠습니다. 먼저 I_dim 그리고 H_dim , 우리의 목표는 일반 노드처럼 작동하지만 디자이너가 선택하고 절대 변경되지 않는 사전 가중치 값으로 바이어스 노드를 통합하는 것이기 때문입니다.

    다음과 같이 수행하겠습니다.


    입력 레이어 바이어스 노드 생성

    기억하시겠지만 다음 코드를 사용하여 훈련 데이터 세트를 조합하고, 목표 출력 값을 분리하고, 훈련 샘플 수를 추출합니다.

    이 명령문 뒤에 오는 2차원 배열 training_data의 열 수 스프레드시트의 입력 열 수와 같습니다. 입력 레이어의 바이어스 노드를 설명하기 위해 열 수를 하나씩 늘려야 하며, 여기에 있는 동안 이 추가 열을 원하는 바이어스 값으로 채울 수 있습니다.

    다음 코드는 이 작업을 수행하는 방법을 보여줍니다.


    np.ones() 함수는 행 수가 training_count와 같은 1열 배열을 생성합니다. , 그리고 이 배열의 각 요소에 +1 값을 할당합니다. 그런 다음 np.hstack()을 사용합니다. 원래 training_data의 오른쪽에 1열 배열을 추가하는 함수 배열.

    훈련 데이터와 검증 데이터 모두에 대해 이 절차를 수행했습니다. 목표가 실제로 훈련 또는 검증 데이터를 수정하는 것이 아니라는 점을 기억하는 것이 중요합니다. 오히려 원하는 네트워크 구성을 구현하기 위한 수단으로 데이터를 수정하고 있습니다.

    Perceptron의 블록 다이어그램을 볼 때 바이어스 노드는 네트워크 자체의 요소로 나타납니다. 따라서 네트워크에서 처리되는 모든 샘플은 이 수정을 거쳐야 합니다.

    히든 레이어 바이어스 노드 생성

    은닉층 사후 활성화 값을 계산하는 for 루프를 수정한 다음 마지막 은닉 노드(실제로 편향 노드)에 대한 편향 값을 수동으로 삽입하여 피드포워드 처리에 편향을 추가할 수 있습니다.

    첫 번째 수정 사항은 다음과 같습니다.


    네트워크가 은닉층 바이어스 노드가 없도록 구성된 경우 hidden_bias 0이고 for 루프의 실행은 변경되지 않습니다.

    반면에 은닉층 바이어스 노드를 포함하기로 결정했다면 for 루프는 레이어의 최종 노드(즉, 바이어스 노드)에 대한 활성화 후 값을 계산하지 않습니다.

    다음 단계는 postActivation_H 의 바이어스 노드에 액세스할 수 있도록 노드 변수를 증가시키는 것입니다. 배열을 선택한 다음 바이어스 값을 할당합니다.

    이러한 수정 사항은 코드의 유효성 검사 부분에도 적용되어야 합니다.

    +1 이외의 바이어스 값

    내 경험상 +1이 표준 편향 값이고 다른 숫자를 사용하는 확실한 근거가 있는지 모르겠습니다. 편향은 가중치에 의해 수정되므로 +1을 선택해도 편향이 네트워크의 전체 기능과 상호 작용하는 방식에 대해 확고한 제한을 두지 않습니다.

    그러나 다른 편향 값으로 실험하려는 경우 쉽게 수행할 수 있습니다. 숨겨진 편향의 경우 postActivation_H[노드]에 할당된 번호만 변경하면 됩니다. . 입력 편향의 경우 new_column을 곱할 수 있습니다. 원하는 바이어스 값으로 배열(초기에는 모든 요소에 대해 +1이 있음).

    편향 효과 테스트

    Part 16을 읽었다면 내 Perceptron이 실험 3에서 샘플을 분류하는 데 약간의 어려움을 겪었다는 것을 알 수 있습니다. 이는 "고복잡도" 문제였습니다.

    하나 이상의 편향 노드를 추가하여 일관되고 상당한 개선을 제공하는지 봅시다.

    내 가정은 분류 정확도의 차이가 상당히 미묘할 것이라는 것이었습니다. 그래서 이 실험에서는 5회가 아닌 10회를 평균했습니다. 훈련 및 검증 데이터 세트는 입력과 출력 간의 동일한 높은 복잡성 관계를 사용하여 생성되었으며 은닉층 차원은 7입니다.

    결과는 다음과 같습니다.

    결론

    보시다시피 바이어스 노드는 분류 성능에 큰 변화를 가져오지 않았습니다.

    이것은 사실 놀랍지 않습니다. 편향 노드가 때때로 약간 과장되었다고 생각합니다. 이 실험에서 사용한 입력 데이터의 특성을 감안할 때 편향 노드가 도움이 될 이유가 없습니다.

    그럼에도 불구하고 바이어스는 일부 응용 프로그램에서 중요한 기술입니다. 필요할 때 사용할 수 있도록 편향 노드 기능을 지원하는 코드를 작성하는 것이 좋습니다.


    산업용 로봇

    1. 네트워크 모니터링을 위한 계획 재고
    2. 사이버 공격을 방지하기 위해 장치를 강화하는 방법
    3. 가정에 무선 센서 네트워크 구축
    4. 신경망 교육의 국소 최소값 이해
    5. 은닉층 신경망의 정확도를 높이는 방법
    6. 예비 부품 관리를 CMMS에 통합하는 방법
    7. [인터뷰] IoT 네트워크 선택에 관한 업계 전문가
    8. 로봇 공학을 시설에 성공적으로 통합하는 방법
    9. 공급망을 기회 센터로 전환
    10. 작업 현장 네트워크는 얼마나 안전합니까?