딥 러닝 : 어떤 변수가 중요한지 어떻게 알 수 있습니까?


20

신경망 용어 (y = Weight * x + bias)와 관련하여 어떤 변수가 다른 변수보다 더 중요한지 어떻게 알 수 있습니까?

10 개의 입력, 20 개의 노드가있는 1 개의 숨겨진 레이어 및 1 개의 노드가있는 1 개의 출력 레이어가있는 신경망이 있습니다. 어떤 입력 변수가 다른 변수보다 더 영향력이 있는지 아는 방법을 잘 모르겠습니다. 내가 생각하는 것은 입력이 중요하면 첫 번째 레이어와의 가중치가 매우 높지만 가중치는 양수 또는 음수 일 수 있다는 것입니다. 그래서 내가 할 수있는 일은 입력 가중치의 절대 값을 취하고 합산하는 것입니다. 더 중요한 입력은 더 높은 합계를 갖습니다.

예를 들어 머리카락 길이가 입력 중 하나 인 경우 다음 레이어의 각 노드에 1 개의 연결이 있어야하므로 20 개의 연결 (따라서 20 개의 가중치)이 있어야합니다. 각 무게의 절대 값을 가져와 함께 합산 할 수 있습니까?


3
확실히 그렇게 할 수 있지만 "모든 연결에서이 변수에 대한 모든 가중치의 합"외에 실제로 의미가 무엇인지 명확하지 않습니다. 그것을 "중요성"이라고 부르는 것은 전적으로 임의적입니다.
Matthew Drury

1
변수의 중요성을 암시하는 모든 정보를 원하며 이것이 좋은 방법이라고 생각합니다.
user1367204

답변:


16

당신이 묘사하는 것은 실제로 신경망 입력의 중요성을 정량화하는 하나의 표준 방법입니다. 그러나 이것이 작동하려면 입력 변수가 어떤 방식 으로든 정규화되어야합니다. 그렇지 않으면 큰 값을 갖는 경향이있는 입력 변수에 해당하는 가중치는 비례 적으로 작아집니다. 예를 들어 변수의 평균을 빼고 표준 편차로 나누는 등의 다른 정규화 체계가 있습니다. 변수가 처음에 정규화되지 않은 경우, 변수의 표준 편차를 곱하는 것과 같이 중요도 계산에서 가중치 자체에 대한 수정을 수행 할 수 있습니다.

나는나는=σ나는제이=1숨겨진|나는제이|.

여기서 는 번째 입력 의 표준 편차이고 , 는 번째 입력의 중요성이며, 는 번째 입력을 첫 번째 레이어 의 번째 숨겨진 노드에 연결하는 가중치 이며 는 첫 번째 계층의 숨겨진 노드 수입니다.σ나는나는나는나는나는나는제이나는제이숨겨진

다른 기술 은 문제의 입력에 대해 신경망 매핑의 미분을 사용하여 입력에 대한 평균을 얻는 것입니다.

나는나는=σ나는|와이엑스나는|

여기서 는 번째 입력이고 는 출력이며 기대 값은 입력 벡터 와 관련하여 취 합니다.엑스나는나는와이엑스


숨겨진 레이어를 모두 사용하지 않고 입력과 첫 번째 숨겨진 레이어 사이의 연결 만 사용하는 경우이 기능이 작동합니까?
user1367204

첫 번째 숨겨진 레이어 만 사용해야합니다. 한 레이어 후에 다른 가중치는 다른 입력보다 하나의 입력에 연결되지 않습니다. 이것을 명확히하기 위해 대답을 약간 편집했습니다.
Sam Marinelli

다른 접근 방식을 기억하고 답변에 추가했습니다.
Sam Marinelli

11

다소 무차별하지만 효과적인 해결책 :

입력 기능 중 하나에 상수를 사용하여 입력을 '삭제'하십시오. 그런 다음 가능한 각 사례에 대해 네트워크를 훈련시키고 정확도가 어떻게 떨어지는 지 확인하십시오. 중요한 입력은 전체 정확도에 가장 큰 이점을 제공합니다.


확실히 가능성이 있습니다.
SmallChess

6
함정이 있습니다. 기능이 매우 중요하더라도 첫 번째 기능과 관련성이 높은 다른 기능이있는 경우 기준에 따라 중요하지 않은 것으로 간주됩니다 (첫 번째 부족은 후자의 존재로 보상되지만 덜 유익하지만 더 많은 '고유 한'기능이 더 중요하게 보일 것입니다)
Firebug

이것은 가끔 절제 호출 (구체적 마이크로 박리) 테스트
Veltzer 도론을

7

당신이 설명한 것은 "딥 네트워크"가 아닙니다. 여기서 숨겨진 레이어 에는 입력과 5 개의 유닛 만 있습니다 . 사람들이 딥 러닝을 할 때 일반적으로 수십만 개의 숨겨진 단위를 의미합니다.105

얕은 네트워크의 경우, 변수의 중요성을 정의의 예를 제공합니다.

정말로 깊은 네트워크의 경우 사람들은 변수의 중요성에 대해 너무 많이 이야기하지 않습니다. 입력은 이미지의 픽셀과 같은 원시 레벨 기능이기 때문입니다.


내 의견을 편집하여 내가 의미하는 바를 반영했습니다. 나는 첫 번째 계층에서 5 개의 노드가 아닌 20 개의 노드를 말하려고했습니다. 얕고 깊은 그물을 구별하는 데 큰 도움과 감사합니다.
user1367204

9
@ hxd1011은 풍성한 자존심은 아니지만 깊이는 수천 개의 숨겨진 단위가 아닌 더 많은 레이어를 의미합니다. :).
Rafael

3

이것에 대해 발견 필자가 가장 정교에 상장되어 이 사이트에 더 구체적으로 당신이 볼 수 . 선형 모델에 대해서만 이야기하는 경우 가중치를 정규화해야 해석 할 수 있지만 언급 된 링크에서이 점에 대해 더 잘못 오도 할 수 있습니다. 어떤 사람들은 입력의 중요성 (Garson 's, Gedeon 's and Milne 's)의 중요성을 해석하기 위해 가중치의 복잡한 기능을 만들려고 시도했지만, 내가 언급 한 첫 번째 링크를 스크롤하면 이것에 대해 더 잘못 알 수 있습니다. 일반적으로 나는 소금 한 알로 결과를 해석하는 것이 좋습니다.

@rhadar의 답변에 동의하지만 해당 입력에 대한 평균 값을 사용하여 상수를 사용하는 대신 네트워크를 다시 훈련시키는 것을 잊지 마십시오.

추신 : 죄송합니다 더 많은 링크를 게시하거나 여기에 댓글을 올리지 못했습니다 평판이별로 없습니다.


1

당신이 가진 것을 감안할 때 :

  1. 분류 작업
  2. 훈련 된 모델
  3. 정규화 된 기능 (0과 1 사이)

누구든지 시도한 적이 있습니까?

  1. 편견 제로화
  2. 매번 1 개를 제외한 모든 기능이 0 인 1 개의 핫 벡터를 기능으로 전달합니다.
  3. 출력을 검사하십시오.

이 경우, 출력은 네트워크 내에서이 1 신호 경로의 출력을 나타 내기 때문에 기능의 "중요도"를 지정하는 숫자라고 생각합니다.

그것은 미로 내부에 단 하나의 전구를 비추는 것과 같으며 출구에서 나오는 빛을 측정합니다.


나는 이것이 많은 도움이 될 것이라고 생각하지 않습니다. 평가하고자하는 것은 해당 입력의 변동이 출력에 영향을 미치는 정도입니다 (자체적으로 또는 다른 기능과 함께)
elachell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.