CNN 컨볼루셔널 신경망의 기본 지식에 대한 참고 사항

1. CNN(Convolutional Neural Network)의 개발 역사

  • 1986년 Runmelheart, Hinton 등이 역전파 알고리즘을 제안했습니다(Back Propagation, BP).
  • 1998년 LeCun은 BP 알고리즘을 사용하여 LeNet5 네트워크를 학습시켜 CNN의 진정한 출현을 알렸습니다(그러나 당시 하드웨어 수준으로 인해 네트워크 학습이 어려웠습니다).
  • 2006년 Hinton은 과학 논문에서 딥러닝 개념을 처음으로 제안했습니다.
  • 2012년에 Hinton의 학생인 Alex Krizhevsky는 GPU를 사용하여 기숙사에서 딥러닝 모델을 마스터했으며 시각 분야 대회 ILSVRC 2012에서 단숨에 우승을 차지했습니다. 백만 레벨 ImageNet 데이터 세트에서는 그 효과가 기존 방식의 (70% 이상 -> 80% 이상)

  학습 비디오는 b: up: 스테이션에서 나옵니다.

PILIBALA Wz의 개인 공간_bilibili_bilibili

2. 완전 연결 레이어

완전 연결 계층은 서로 연결된 많은 뉴런으로 구성됩니다.

  • x1, x2, x3은 이 뉴런의 세 가지 자극이고, w1, w2, w3은 이 세 가지 자극에 해당하는 가중치입니다.
  • -1은 이 뉴런의 편향입니다.

 1. 역전파(BP)

BP 알고리즘에는 신호의 순전파오류의 역전파라는 두 가지 프로세스가 포함됩니다. 즉, 오차 출력을 계산할 때는 '입력 → 출력' 방향으로 진행하고, 가중치와 임계값을 조정할 때는 '출력 → 입력' 방향으로 진행한다.

 예: 차량번호 인식을 위해 BP 신경망 사용

 1. 먼저 컬러 RGB 이미지를 읽습니다. 각 픽셀에는 3개의 값(RGB 구성 요소)이 포함되어 있습니다.

  • 먼저 그레이스케일을 적용하면(가운데 그림 가져오기) 각 픽셀 값에는 하나의 구성 요소만 포함됩니다.
  • 그런 다음 이진화 처리를 수행하여 흑백 이미지를 얻습니다.

 2. 5행 3열의 슬라이딩 윈도우를 사용하여 이진화된 흑백 이미지를 슬라이드합니다.한 위치로 슬라이드할 때마다 슬라이딩 윈도우의 흰색 픽셀과 전체 슬라이딩 윈도우를 덮는 픽셀의 비율을 계산합니다.

  • 슬라이딩 윈도우가 오른쪽 끝으로 슬라이드되면 열 수가 부족하므로 제로 패딩을 수행하거나 판단할 수 있습니다. 슬라이딩 윈도우가 경계를 넘어가려고 할 때 임시로 5행의 슬라이딩 윈도우로 전환하고 2열 창
  • 이 방법을 통해 전체 이미지를 순회하면 5*5 행렬을 얻게 된다.

 3. 결과 5*5 행렬을 행 단위로 확장하고 행 벡터(1행 25열)로 접합하여 이 행 벡터를 신경망의 입력 레이어로 사용할 수 있도록 합니다.

4. 입력 레이어가 구축된 후 출력 레이어를 살펴보세요. 원-핫 인코딩은 태그를 인코딩하는 데 일반적으로 사용되는 방법입니다. 

  • 위 그림은 0부터 9까지 각 숫자에 해당하는 원-핫 인코딩을 반복 없이 보여줍니다.

 5. 입력과 출력을 받은 후 신경망을 훈련할 수 있습니다. 실제 훈련 과정에서는 실제 상황에 따라 입력 레이어의 입력 노드 수를 25로 설정하고 출력 레이어의 출력 노드 수를 10으로 설정하며 중간에 히든 레이어를 설정할 수 있습니다.

2. 컨볼루션 레이어

컨볼루션 레이어는 컨볼루션 신경망의 독특한 네트워크 구조입니다. 

컨볼루션(Convolution) : 슬라이딩 윈도우가 특징 맵 위에서 미끄러지며 계산됩니다(컨볼루션 커널의 값과 특징 맵의 값을 곱한 다음 이를 더하여 최종 행렬의 값을 얻습니다. 각 슬라이딩 단계에서 값을 계산하고 마침내 컨볼루션 결과를 얻습니다) 

 컨볼루션의 계산 방법: 위 그림의 왼쪽 주황색 상자에 표시된 대로       

(1*1)+(0*0)+(0*1)+(1*0)+(1*1)+(0*0)+(1*1)+(1*0)+(1 *1) = 4

컨볼루션의 목적은 이미지 특징을 추출하는 것입니다.

컨볼루션의 특징

  • 로컬 인식 메커니즘이 있습니다. 슬라이딩 창 형태의 기능 맵에서 슬라이딩 계산이 수행되므로 로컬 인식 기능이 있습니다.
  • 가중치 공유: 슬라이딩 과정에서 컨볼루션 커널의 값은 변하지 않으므로 가중치 공유의 특성을 갖습니다.

1. 가중치 공유의 장점(BP 신경망 대비)

  • 여기서 매개변수는 뉴런의 가중치를 나타냅니다.
  • 가중치를 공유하면 컨볼루셔널 신경망의 매개변수 수가 크게 줄어듭니다.

2. 컨볼루션 과정 

실제 응용 프로그램에서는 컨볼루션 작업이 다차원 기능 행렬에서 수행되는 경우가 많습니다.

컨볼루션 커널의 깊이는 입력 특성 행렬과 일치해야 하며(여기서 깊이는 채널, 즉 채널 수를 의미함) 모두 3차원이다. 채널 입력 특성 행렬과 3채널 컨볼루션 커널은 각각 컨볼루션에 해당하며, 해당 덧셈을 거쳐 컨볼루션 행렬을 얻습니다.

 3. 요약

1. 컨볼루션 커널의 채널은 입력 피처 레이어의 채널과 동일합니다(두 채널 모두 3개).

2. 출력 특징 행렬 채널은 컨볼루션 커널 수와 동일합니다. (컨볼루션 커널 1과 컨볼루션 커널 2를 거쳐 최종적으로 2채널 출력 특징 행렬이 얻어집니다)

4.생각해 보세요

(1) 오프셋 바이어스가 추가되었는지 계산하는 방법은 무엇입니까?

컨볼루션으로 얻은 최종 행렬의 각 요소와 오프셋을 추가하기만 하면 됩니다.

 (2) 활성화함수는 어떻게 계산하나요?

일반적으로 사용되는 활성화 함수

  • 활성화 기능을 사용하는 이유는 무엇입니까? 비선형 문제를 해결할 수 있는 기능을 제공하기 위해 선형 계산 프로세스에 비선형 요소를 도입합니다.
  • Relu 활성화 함수는 실제로 모든 음수 값을 필터링하고 양수 값만 변경되지 않은 상태로 남겨두는 기능으로 실제 응용에서 자주 사용됩니다.
  • 오류를 역전파하는 과정에서 시그모이드 활성화 함수를 사용하면 미분을 해결하는 것이 매우 번거롭습니다.
  • Relu 활성화 기능을 사용하면 비활성화 상태에 진입한 후에는 가중치가 다시 활성화될 수 없으므로 학습 과정 초기에는 학습에 특별히 큰 학습률을 사용하지 않는 것이 좋습니다. 다수의 뉴런이 비활성화됩니다.

(3) 컨볼루션 과정에서 범위를 벗어난 상황을 어떻게 처리합니까?

 

  • 일반적인 상황에서는 패딩을 사용하여 이미지 주변에 0을 직접 채워 처리할 수 있으며, 제로 패딩 후에는 범위를 벗어나는 상황 없이 정상적으로 컨볼루션을 수행할 수 있습니다.

 

  • 패딩의 픽셀 p : 일반적으로 실제 적용 과정에서는 양쪽에 동시에 0을 패딩합니다. 즉, 왼쪽, 오른쪽, 상하 대칭으로 : 제로 패딩 동작
  • 위 사진에서는 한쪽 면만 추가되었으므로 p만 추가하면 충분합니다.
  • N = (4 - 3 + 1)/2 + 1 = 2이므로 최종적으로 2*2 특성 행렬을 얻습니다.

3. 풀링 레이어

 풀링 계층의 목적은 특징 맵을 드물게 처리하고 데이터 작업량을 줄이는 것입니다.

maxpooling downsampling : 풀링 코어의 해당 범위 내에서 최대값을 찾아 최대 다운샘플링 작업을 수행합니다. 

평균풀링 다운샘플링 계층 : 풀링 코어의 해당 범위 내에서 평균값을 찾아 평균 다운샘플링 작업을 수행합니다. 

풀링 계층의 특성

1. 훈련 매개변수는 없지만 원본 특징 맵에서 최대값 또는 평균값을 찾는 작업이 수행됩니다.

2. 특징행렬의 너비(w)와 높이(h)만 변경되고 깊이(채널)는 변경되지 않습니다.

3. 일반적으로 풀링 커널의 크기(poolsize)와 스트라이드(stride)는 동일하며, 특징 맵을 일정 비율만큼 줄일 수 있어 계산이 더욱 편리해집니다.(이것은 일반적인 경우일 뿐이지 순수한)

4. 오류 계산

3계층 BP 신경망을 사용하여 설명

 매개변수:

  • 첫 번째 레이어: 입력 레이어: 두 개의 노드     \거대한 \chi _{1}   및   \거대한 \chi _{2}
  • 두 번째 레이어: 숨겨진 레이어: 세 개의 노드는     \거대한 \시그마활성화 함수 \거대한 \오메가 _{11}^{(1)}   이고    \거대한 \오메가 _{21}^{(1)}  합은 해당 가중치 \거대한 b_{1}^{(1)}와 편향입니다.

중간 노드를 예로 들어 계산 

 마찬가지로   \대단한 y_{1}  합계  \대단한 y_{2}  의 값을 구합니다.

 

1. Softmax 활성화 함수의 계산 과정

 Softmax 활성화 기능을 사용하는 이유는 무엇입니까?

왜냐하면: 우리는 출력    합계가 확률 분포를 따르기를 \대단한 y_{1}  바랍니다  .\대단한 y_{2}

 

2.교차 엔트로피 손실, 교차 엔트로피 손실 함수

1. 다중 분류 문제의 경우( 소프트맥스 출력 , 모든 출력 확률의 합은 1임)

\대형 H=-\sum _{i} o _{i}^{*} log(o_{i})

2. 두 가지 분류 문제( 시그모이드 출력 , 각 출력 노드는 서로 관련이 없음)

\LARGE H=-\frac{1}{N}\sum_{i=1}^{N} [ o_{i}^{*}log o_{i}+(1-o_{i}^{*} )log(1-o_{i})]

Softmax 출력을 사용하는 것은 확률 출력(모든 확률의 합은 1임)과 일치합니다.
Sigmoid 출력을 사용하는 것은 확률 출력과 일치하지 않습니다.

이 공식에 따르면 교차 엔트로피를 이용하여 Loss의 계산식을 얻을 수 있습니다.

 

5. 오류 의 역전파

\거대한 \오메가 _{11}^{(2)}  오류 기울기 계산(즉, 편도함수 찾기   )   

노란색 상자의 편도함수를 별도로 계산합니다.

 

 얻은 값은 오류를 각 노드에 역전파하여 각 노드의 손실 기울기를 얻는 것과 같습니다.

 

6. 가중치 업데이트

 가중치를 업데이트하는 표현식은 매우 간단하지만, 우리가 찾고 있는 기울기 방향이 손실을 가장 빨리 줄이는 방향 인지 확신할 수 없습니다 .

 

실제 훈련에서는 훈련을 위한 배치를 설정하는 경우가 많습니다. 각 배치가 훈련된 후 배치의 손실 및 기울기가 계산됩니다. 기울기가 있지만 이 기울기는 이 배치에 최적입니다. 전체 데이터. 따라서 배치 훈련에서 그래디언트 업데이트를 더 잘 수행하기 위해 최적화기 개념이 도입되었습니다. 

 

7.  옵티마이저

 

다음 최적화를 수행하십시오. 모멘텀 부분을 하나 더 추가하십시오.

현재 배치의 기울기를 계산하는 것 외에도 이전 배치의 기울기도 추가됩니다.

 \대형 g_{(t+1)} 는 이 배치의 기울기이고, \대형 g_{(t)}는 이전 배치의 기울기 \대형 g_{(t+1)}^{*} 이며, 는 이 배치의 실제 업데이트된 기울기입니다.

 운동량을 추가하면 샘플 노이즈의 간섭을 효과적으로 억제할 수 있습니다.

 

이 옵티마이저는 학습률을 향상시킵니다. 

 배치가 진행됨에 따라    \large \frac{\alpha }{\sqrt{S_{t}+\varepsilon }}  결국 점점 작아지게 됩니다. -> 업데이트의 강도가 점점 작아지고 있다는 뜻이며, 업데이트에 사용되는 학습률도 점점 작아지는 것처럼 보입니다.

단점 : 학습률이 너무 빨리 떨어지고, 수렴되기 전에 훈련이 중단될 수 있습니다.

또한 학습률을 조정하며 Adagrad 최적화 프로그램의 향상된 버전입니다. Adagrad 최적화 프로그램과 비교하여 RMSProp은 실제로 학습 속도의 감쇠를 제어하기 위해 두 개의 계수를 추가합니다. 

 

 

6. 여러 옵티마이저의 효과 비교 

 

  • SGD는 느리지만 그래디언트 업데이트 방향이 이상적입니다.
  • Momentum을 갖춘 SGD는 시작이 좋지 않았지만 빠르게 올바른 경로를 찾았습니다.
  • Adagrad와 RMSProp은 방향이 정확할 뿐만 아니라 빠릅니다.
  • Adam 최적화 프로그램의 효과는 여기에 표시되지 않습니다.

 

실제 프로젝트에서 가장 일반적으로 사용되는 것은 다음과 같습니다.

  1. 모멘텀 적용 SGD
  2. 아담

많은 사람들이 더 나은 결과를 얻기 위해 Adam 옵티마이저를 선택하지만, 논문에서는 여전히 많은 저자들이 SGD 옵티마이저를 탄력적으로 사용하고 있으며, 선택 방법은 여전히 ​​실제 상황에 따라 다릅니다
.

추천

출처blog.csdn.net/weixin_45897172/article/details/128345978