심층 신경망에서의 민감도 분석


14

이미 한 질문 ( One-Layer 피드 포워드 네트워크에서 가중치 중요성 추출 )에 따라 신경망에서 입력의 관련성에 대한 추론을 찾고 있습니다.

관심있는 출력 노드에서 레이어를 통해 뒤로 이동하여 입력 중요도를 재구성하는 것이 어렵거나 시간이 많이 걸리는 딥 넷을 고려할 때 신경망에 대한 감도 분석을 수행하는 데 이론적 프레임 워크가 있는지 궁금해했습니다. 관심있는 ouptut 노드가 어떻게 변화하는지 입력하고 고려하십시오.

신경망에서 일종의 감도 분석을 수행하는 정식 방법이 있습니까?

파이썬 코드가 있다면 환영합니다.

답변:


12

제안하는 감도 분석은 입력과 관련하여 출력의 부분 미분을 검사하는 것에 해당합니다. 출력 벡터 은 로 주어집니다 . 여기서 는 입력 벡터이고 는 네트워크가 구현하는 함수입니다. 입력에 대한 출력 의 Jacobian 은 다음과 같습니다.yRmy=f(x)xRdf

Jij(x)=xjfi(x)

Jacobian은 각 입력에 대한 각 출력의 로컬 변경 속도를 제공하므로 무한 변동에 대한 반응을 알려줍니다 . 입력 시작 하여 번째 입력에 무한 값 를 추가 하면 번째 출력이 증가 할 것으로 예상 됩니다.fxΔjiΔJij(x)

경우 큰 크기를 갖고, 그 출력 수단 입력에 민감 근방 . 때문에 이고, 일반적으로 비선형으로, 민감성이 개념은 입력에 의존한다; 일부 지역에서는 크거나 다른 지역에서는 거의 0 일 수 있습니다. 출력이 입력에 얼마나 강하게 의존하는지에 대한 일종의 요약 측정을 원한다면 여러 입력 값을 집계해야합니다. 예를 들어 훈련 세트의 모든 입력에 대한 평균 인 Jacobian의 절대 값을 사용할 수 있습니다 (입력의 기본 분포에 대한 예상 값에 대한 대리 역할). 물론, 이러한 종류의 요약은 정보를 버리는 결과를 초래하므로 일부 상황에서는 오도 될 수 있습니다.Jij(x)ijxf

연쇄 규칙을 사용하여 백프로 프에 사용할 매개 변수를 사용하여 손실 함수의 그라디언트를 도출하는 방법과 유사하게 Jacobian에 대한 표현식을 도출 할 수 있습니다. Theano, TensorFlow 등과 같은 라이브러리를 사용하여 자동 차별화를 사용하여 계산할 수도 있습니다. 이 경우 Jacobian이 존재하지 않습니다).

몇 가지주의 사항 : 입력이 서로 다른 단위 / 스케일을 갖는 경우 감도도 다른 단위 / 스케일을 가지며 직접 비교할 수 없습니다. 입력 표준화 / 스케일링이 하나의 가능한 솔루션입니다. 이 유형의 분석은 모델 자체에 대해 알려주지 만 반드시 데이터를 생성 한 기본 분포는 아니라는 점을 명심해야합니다. 예를 들어, 두 입력이 서로 연관되어 있으면 모델은 첫 번째를 사용하지만 두 번째는 사용하지 않을 수 있습니다. 이 경우 첫 번째 입력의 경우 감도가 높고 두 번째 입력의 경우 감도가 낮다는 것을 알 수 있지만 첫 번째 입력이 본질적으로 출력을 예측하는 데 더 중요하다는 결론을 내리지 않아야합니다.

기사 는 관심을 가져야합니다.


좋은 답변과 좋은 기사! 이 방법의 구현에 관심이있는 사람이라면 여기에서 jacobian 계산의 훌륭한 구현을 찾을 수 있습니다. medium.com/unit8-machine-learning-publication/…
pcko1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.