신경망의 블랙박스를 열다

컨벌루션 신경망

각 컨볼루션 커널은 서로 다른 기능을 추출합니다 . 각 컨볼루션 커널은 입력을 컨볼루션하여 기능 맵을 생성합니다. 이 기능 맵은 입력에서 컨볼루션 커널에 의해 추출된 기능을 반영합니다.

  1. 얕은 컨볼루션 커널 추출: 가장자리, 색상, 패치와 같은 기본 픽셀 기능.
  2. 중간 수준 컨볼루션 커널 추출: 줄무늬, 선, 모양 등과 같은 중간 수준 텍스처 특징;
  3. 높은 수준의 컨볼루션 커널 추출: 눈, 타이어, 텍스트 등과 같은 높은 수준의 의미론적 특징

마지막으로 분류 출력 계층은 가장 추상적인 분류 결과를 출력합니다.

위 그림은 얕은 컨볼루션 커널에 의해 추출된 특징을 보여줍니다. 일부 컨볼루션 커널은 모양을 추출하고 일부는 색상을 추출하는 것을 볼 수 있습니다. Gabor 필터와 유사한 컨볼루션 기능입니다.

위 그림은 중간 및 깊은 컨볼루션 커널에 의해 추출된 특징을 보여줍니다. 중간 컨볼루션 커널은 더 큰 색상 및 질감 블록을 추출합니다. 깊은 컨볼루션 커널에 의해 추출된 특징에는 인간 또는 일부 구체적인 사물이 포함될 수 있습니다.

CAM 해석성

위 그림에서 입력 원본 이미지는 레이어별로 컨볼루션되었으며 마지막 레이어에는 512개의 컨볼루션 커널과 512개의 채널이 있습니다. 즉, GAP(globalaverage pooling) 후 512개의 심층 특징이 추출됩니다. 각 채널 특성에 대해 평균을 계산한 후 FC(완전 연결 계층) 계층 - \(W_1, W_2, W_3,..., W_n\)을 통해 각 특성 값의 가중치(계수)를 구합니다. 카테고리 점수 값(점수)을 얻을 수 있습니다.

\(점수=W_1*청색 고유값+W_2*적색 고유값+...+W_n*녹색 고유값\)

CAM 히트맵의 경우 주로 특징값 가중치 (W_1, W_2, W_3,..., W_n\) CNN 분류 과정인 소프트맥스(softmax)를 통해 구하고 최종적으로 계산한다. 최종 분류 결과가 다양한 기능에 기울이는 관심의 정도를 나타냅니다 .

  • CAM의 단점
  1. GAP 계층이 있어야 합니다. 그렇지 않으면 모델 구조를 수정하고 다시 학습해야 합니다.
  2. 마지막 컨벌루션 레이어의 출력만 분석할 수 있으며, 중간 레이어는 분석할 수 없습니다.
  3. 이미지 분류 작업만

GradCAM

GradCAM에서는 GAP 레이어를 사용하는 대신 FC 레이어를 완전히 사용하여 \(y^c\) 로 표시되는 완전 연결 레이어를 통해 점수를 출력할 수 있습니다 .

  • 행렬의 파생물

1. 벡터에 대한 스칼라 함수의 도함수:

이는 2차원 스칼라 함수입니다. 이 함수의 최소값은 다음과 같습니다.

\({df(y)\over dy}=0\)

이 함수가 두 개의 독립변수로 구성된 3차원 스칼라 함수라면 이미지는 다음과 같습니다.

동시에 이 이진 함수의 최소값을 구합니다.

  1. \({∂f(y_1,y_2)\over ∂y_1}=0\)
  2. \({∂f(y_1,y_2)\over ∂y_2}=0\)

스칼라 함수에 n개의 독립 변수 \(f(y_1,y_2,y_3,...,y_n)\) 가 있는 경우 벡터를 정의합니다.

Y=[ ]

그런 다음 벡터 Y에 대한 함수의 부분 도함수는 다음 과 같이 정의될 수 있습니다.

\({∂f(Y)\over ∂Y}=\) \([\) \(]\)

이것은 n*1 열 벡터이고 행 수가 분모 Y와 동일하다는 것을 알 수 있습니다. 이 레이아웃을 분모 레이아웃 이라고 합니다 .

마찬가지로, 벡터 Y에 대한 함수의 부분 도함수를 다음과 같이 정의할 수도 있습니다.

\({∂f(Y)\over ∂Y}=[{∂f(Y)\over ∂y_1}{∂f(Y)\over ∂y_2}...{∂f(Y)\over ∂y_n }]\)

이것은 1*n 행 벡터이며 행 수가 분자 f(Y)(1*1 스칼라)와 동일하다는 것을 알 수 있습니다. 이러한 레이아웃을 분자 레이아웃 이라고 합니다 .

분모 레이아웃과 분자 레이아웃은 서로의 전치입니다 .

예시 1: \(f(y_1,y_2)=y_1^2+y_2^2\)

분모 레이아웃:

Y=[ ] 라고 하자

하지만

\({∂f(Y)\over ∂Y}=\) [ ]=[ ]

분자 레이아웃:

\(Y=[y_1 y_2]\)

하지만

\({∂f(Y)\over ∂Y}=[​{∂f(Y)\over ∂y_1} {∂f(Y)\over ∂y_2}]=[2y_1 2y_2]\)

2. 벡터에 대한 벡터 함수의 미분

함수가 벡터인 경우

에프(와이)=[ ]

여기서 각 \(f_x(Y)\) (x=1,2,3,...,m)은 위의 스칼라 함수 f(Y)와 동일합니다(독립 변수는 벡터 Y입니다), F(Y ) m*1의 벡터 함수입니다.

예시 1:

  1. Y=[ ]
  2. F(Y)=[ ]=[ ]

벡터에 대한 벡터 함수의 편도함수인 분모 레이아웃은 다음과 같습니다.

\({∂F(Y)\over ∂Y}=\) [ ]=[ ]   

예제 1과 마찬가지로

\({∂F(Y)\over ∂Y}=\) [ ]=[ ]=[ ]

이것은 3*2 행렬입니다.

 

1990년대에 태어난 프로그래머가 비디오 포팅 소프트웨어를 개발하여 1년도 안 되어 700만 개 이상의 수익을 올렸습니다. 결말은 매우 처참했습니다! Google은 Flutter, Dart 및 Python 팀의 중국 코더의 "35세 저주"와 관련된 정리해고를 확인했습니다 . | Daily Windows 1.0용 Arc Browser가 3개월 만에 공식적으로 GA Windows 10 시장 점유율이 70%에 도달했으며 Windows 11 GitHub는 AI 기본 개발 도구 GitHub Copilot Workspace JAVA를 계속해서 출시했습니다 . OLTP+OLAP을 처리할 수 있는 유일한 강력한 유형의 쿼리입니다. 우리는 너무 늦게 만났습니다 .
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/3768341/blog/11086857