Resnet Residual Network|Convolutional Neural Network|원리|Newcomer 요약

 

서문: 이 글은 저자의 초보자인 cnn과 resnet을 요약한 글입니다. 이 글은 가능한 한 많은 관련 지식을 포함하고 있지만, 그 중 많은 부분이 자세히 소개되지 않았으며, 독자는 키워드를 추출하여 스스로 검색하거나 참조 링크를 볼 수 있습니다. 처음 접하는 경우 참조의 비디오 강의 및 기사를 적극 권장합니다. 또한 기사에 오류가 있으면 의견을 남겨 주시기 바랍니다.

1 합성곱 신경망 기초

1.1 전통적인 신경망과 합성곱 신경망

일반 신경망에서 입력은 벡터이며 일련의 숨겨진 레이어에서 변환됩니다. 각 숨겨진 레이어는 여러 개의 뉴런으로 구성되며 각 뉴런은 이전 레이어의 모든 뉴런에 연결됩니다.

입력이 256x256x3 크기의 RGB 색상 모드 이미지인 경우 신경망에는 최소 200x200x3=120000개의 가중치와 해당 바이어스 값이 포함됩니다. 그리고 일반적으로 네트워크에는 여러 개의 숨겨진 계층과 뉴런이 있습니다. 분명히 이것은 많은 수의 매개 변수를 생성합니다. 따라서 이 전체 연결 방법은 비효율적이며 많은 수의 매개변수가 빠르게 네트워크 과적합으로 이어집니다.

전통적인 신경망

Convolutional Neural Networks의 구조는 입력 데이터가 이미지라는 가정을 기반으로 합니다. 구조에 몇 가지 고유한 속성을 추가했습니다. 이러한 고유한 속성은 순방향 전파 기능을 보다 효율적으로 구현하고 네트워크의 매개변수 수를 크게 줄입니다.

컨벌루션 신경망

1.2 합성곱 신경망 구조

1.2.1 입력 레이어

이미지 분류 작업의 경우 입력 레이어는 H * W * C의 이미지이며, 여기서 H는 이미지의 길이, W는 이미지의 너비, C는 이미지의 채널 수를 나타냅니다. 일반적으로, 그레이스케일 이미지의 채널 수는 1개, 컬러 ,1개이미지

1.2.2 합성곱 계층

컨볼루션 레이어는 컨볼루션 신경망의 핵심입니다. 이미지를 여러 개의 작은 영역으로 나누고 하나의 영역에 따라 전체 원본 입력 이미지에 가중치를 부여하여 특징 맵을 얻습니다.각 특징 맵의 각 요소는 해당 위치에서 컨볼루션된 결과입니다. 내적(해당 위치를 곱함)을 사용한 다음 오프셋을 추가하여 계산할 수 있습니다.

그림에서 볼 수 있듯이 채널 번호가 3인 이미지의 단일 컨벌루션 커널 계산 프로세스(여기서 +1은 편향):

컨볼루션 레이어에는 다음과 같은 파라메트릭 매개변수가 있습니다.

슬라이딩 윈도우 단계 크기 S(단계 크기가 작을수록 더 많이 이동할 수 있고, 얻은 특징 맵이 커지고, 추출된 특징이 미세해집니다).

컨볼루션 커널 크기 K(선택 영역의 크기는 최종 결과 수의 크기와 동일).

에지 필링 P(단계 크기 선택으로 인해 일부 요소는 반복적으로 가중 기여를 하고, 안쪽 포인트가 많을수록 기여도가 높으며, 바깥쪽 포인트가 많을수록 기여도가 낮고, 경계 포인트가 기여도가 높으며, 외부에 0인 원을 추가하면 일부를 보완할 수 있습니다. 경계 기능 누락) 제로 패딩은 가장자리 패딩 값으로 0을 사용합니다.

컨볼루션 커널의 수: 얻은 특징 맵의 수와 동일합니다.

1.2.3  풀링 레이어

풀링 연산은 입력 행렬의 인접 영역의 전반적인 통계적 특성을 위치의 출력으로 취합니다. 즉, 기능 맵의 압축입니다. 이러한 방식으로 네트워크의 매개변수 수를 줄이면 컴퓨팅 리소스의 소비가 줄어들고 과적합을 효과적으로 제어할 수 있습니다.

주로 평균 풀링(Average Pooling), 최대 풀링(Max Pooling) 등이 있다. 풀링 계층 매개변수에는 풀링 창 및 풀링 단계 크기가 포함됩니다.

1.2.4 배치 정규화 계층

사전 처리 중에 수렴 속도를 높이기 위해 이미지를 정규화합니다. 그러나 컨볼루션 계산 후 특징 맵은 새로운 데이터 분포가 되며 이때 추가 계산으로 기울기가 사라질 수 있습니다. 이를 위해 Batch Normalization을 도입하여 Feature Map이 평균값 0, 분산 1의 분포 법칙을 만족하도록 합니다.

1.2.5 활성화 함수와 완전 연결 계층

활성화 함수는 모델에 비선형 요소를 도입하고 Relu는 일반적으로 컨볼루션 신경망, 즉 f(u)=max(0,u)에서 사용됩니다. 완전 연결 계층은 컨볼루션 신경망에서 분류자 역할을 합니다. 즉, 위에서 언급한 계층은 입력 특징을 추출하고 완전 연결 계층을 통해 분류를 얻는다.

2 Resnet은 네트워크의 깊이 문제를 해결합니다.

컴퓨터 비전에서는 신경망의 깊이가 중요합니다. 딥 네트워크는 더 많은 차원의 특징을 추출할 수 있습니다. 그러나 Resnet 이전의 deep network는 학습이 어렵고 효과가 좋지 않아 돌파하기 어려웠으며 일정 수준에 도달한 후에도 네트워크가 깊어질수록 효과가 나빠졌습니다.

아래 그림은 resnet 작성자가 기존 네트워크를 사용하여 얻은 결과 통계입니다. 20계층 네트워크와 비교할 때 56계층 네트워크는 훈련 및 테스트에서 더 큰 오류가 있으며, 더 적은 계층의 네트워크에서는 배치 정규화 및 경사하강법을 통해 경사 소멸 및 수렴 속도 문제를 크게 해결할 수 있었습니다. . 관련 질문. 따라서 이것은 그래디언트 소실로 인한 과적합 현상이 아닙니다.

이 현상을 네트워크 저하 현상이라고 합니다. 즉, 네트워크의 깊이가 증가함에 따라 정확도가 포화되기 시작하여 급격히 떨어집니다. 이 문제에 대응하여 He Yuming과 다른 사람들은 ResNet ResNet을 제안했고 2015 ImageNet Image Recognition Challenge에서 우승했습니다. 심지어 CIFAR-10에서 1000개 레이어에 도달했습니다.

2.1 중첩 및 비중첩 함수

그림의 파란색 다섯개 별은 최적 값을 나타냅니다. Fi의 닫힌 영역은 함수를 나타냅니다. 이 영역에서 최적의 모델(해당 영역의 한 점)을 찾을 수 있으며 최적값까지의 거리를 모델의 품질을 측정하는 데 사용할 수 있습니다. 위의 그림은 non-nested function을 나타낸 것으로, 복잡도가 높아질수록 함수의 영역은 증가하지만 이 영역에서 찾을 수 있는 최적의 모델(영역의 한 점)은 거리가 멀다는 것을 알 수 있습니다. 최적의 값 거리가 점점 멀어질 수 있습니다. 모델이 잘못되었다는 것을 이해할 수 있습니다. 다음 그림은 중첩된 함수를 보여줍니다. 함수 복잡도가 증가할 때마다 함수가 차지하는 영역은 원래 함수가 있는 영역을 포함합니다. 즉, 함수의 복잡도를 높이면 원래 영역에서 벗어나지 않고 원래 기반으로 함수가 커버하는 영역만 확장됩니다.

심층 신경망의 경우 새로 추가된 계층이 함수 f(x) = x를 식별하도록 훈련될 수 있는 경우 새 모델과 원래 모델이 동등하게 효과적일 것입니다. 레이어를 추가해도 성능이 저하되지 않도록 교육 데이터 세트를 맞춥니다.

3 Resnet 핵심 아이디어 및 구조

학습 목표가 f(x)라고 가정합니다. 여기서 x는 얕은 계층의 출력입니다. 점선 상자는 새로 추가된 레이어입니다. 전통에 따르면 f(x)를 직접 배울 수 있습니다. 그러나 Resnet에 새로 추가된 레이어는 f(x)-x를 학습합니다. 출력할 때 f(x)를 얻으려면 두 개를 더하십시오. 따라서 새 네트워크의 훈련 오류율은 적어도 얕은 네트워크보다 나쁘지 않습니다.

즉, f(x)는 이상적인 매핑이고 f(x)-x는 잔차 매핑입니다. 잔차 매핑은 실제로 최적화하기가 더 쉽습니다. 그리고 이상적인 맵 f(x)가 아이덴티티 맵에 매우 가까울 때 잔차 맵은 아이덴티티 맵의 미묘한 변동을 포착하기 쉽습니다.

또한 Identity map f(x) = x를 학습하고자 하는 아이디얼 맵 f(x)로 사용한다면, residual block의 점선 박스에 weighted operation의 weight와 bias 파라미터만 설정하면 됩니다. 0으로. 잔차 블록에서 입력은 교차 계층 데이터 와이어를 통해 더 빠르게 전파될 수 있습니다.

3.1 잔여 블록 세부 정보

잔차 블록은 먼저 출력 채널 수가 같은 2개의 3 * 3 컨볼루션 레이어를 가지며, 각 컨볼루션 레이어 뒤에는 배치 정규화 레이어와 ReLu 활성화 함수가 있습니다. 최종 ReLu 활성화 함수 직전의 입력.

이 설계는 두 개의 컨볼루션 레이어의 출력이 입력과 동일한 모양을 가져야 하므로 두 번째 컨볼루션 레이어의 출력이 원래 입력과 동일한 모양을 가지며 추가될 수 있습니다.

채널 수를 변경하려면 추가 1 * 1 컨볼루션 레이어를 도입하여 입력을 필요한 모양으로 변환한 다음 위 오른쪽 그림과 같은 추가 작업을 수행해야 합니다. 1*1 컨벌루션 레이어는 공간 차원에서 아무것도 하지 않는 것을 원칙으로, 주로 채널 차원에서 출력 채널이 입력 채널의 2배가 되도록 1*1 컨볼루션을 선택하여 잔여 입력과 출력 연결의 서로 일치합니다. ResnNet에서는 출력 채널의 수가 2배가 되면 입력의 높이와 너비가 반으로 줄어드므로 여기서는 stride를 2로 설정하여 높이와 너비, 채널을 일치시킬 수 있습니다. 또한 제로 필링(Zero Filling)과 프로젝션(Projection)의 두 가지 방법이 있으며, Resnet의 저자는 실험을 통해 위의 방식을 비교했습니다.

3.2 다양한 층의 잔류 구조

모듈에서 다른 수의 채널과 잔차 블록 수를 구성하여 다른 ResNet 모델을 얻을 수 있습니다.

위 표에서 레지듀얼 블록 × N은 레지듀얼 구조가 N번 반복된다는 것을 의미한다.

아래 그림은 18계층 resnet의 세부 구조를 보여줍니다. 여기서 k, s, p는 convolutional layer의 세 매개변수입니다. 실선은 3.1에서 왼쪽 그림의 구조이고 파선은 3.1에서 오른쪽 그림의 구조이다.

3.2.1 더 깊은 병목 현상 설계

이 구간의 첫 번째 그림에서 레이어의 수가 50개 이상이 되면 구조가 약간 변경된 레지듀얼 블록이 나타나는 것을 볼 수 있습니다. 아래 그림과 같이

우선 더 깊게 배우고 싶다면 채널 수를 늘리면 됩니다. 그러나 이것은 계산 복잡성을 증가시킬 것입니다. 병목 설계는 1*1 컨볼루션을 통해 256차원을 다시 64차원으로 투영한 다음 동일한 수의 채널로 컨볼루션을 수행한 다음 다시 256으로 투영합니다(비교를 용이하게 하기 위해 입력 및 출력 채널 수 일치). 먼저 형상 차원을 축소한 다음 축소된 차원 위에 공간적인 것을 만든 다음 다시 투영하는 것과 같습니다. 따라서 기존보다 채널 수가 4배가 되더라도 이 설계에서는 두 알고리즘의 복잡도가 비슷하다. 또한 1*1 컨볼루션은 다른 채널의 기능 융합에도 사용할 수 있습니다.

3.3 Resnet이 기울기 소멸을 처리하는 방법

우선 매개변수 업데이트(파란색 부분)의 경우 w에 대한 y의 도함수가 너무 작지 않기를 바랍니다. 그렇지 않으면 학습률을 높여도 개선되지 않습니다.

체인 유도를 통한 전통적인 네트워크(보라색 부분)의 경우 y에 대한 g(y)의 미분은 예측 값과 참 값의 차이와 동등한 관계를 갖습니다. 특정 시점에서 모델 예측이 비교적 양호하면 이 값이 매우 작아지고 곱셈에 의해 그래디언트 문제가 발생하고 네트워크 구조가 심화될 수 없습니다.

Resnet(녹색 부분)의 경우 w에 대한 y´의 도함수가 작더라도 덧셈을 통해 그래디언트가 사라지지 않음을 알 수 있습니다. 이것이 Resnet이 1000개의 레이어로 훈련될 수 있는 이유입니다. 왜 1000 레이어 이후에도 성능 저하 문제가 발생하는지에 대해서는 더 이상 구조 최적화 문제 때문이 아니라 네트워크 레이어가 너무 깊고 강하고 데이터 세트가 너무 작고 약해서 그런 문제를 처리할 수 없기 때문입니다. 강력한 잔차 구조 과적합으로 이어집니다.

4 요약

Resnet은 딥 네트워크를 훈련하기 쉽게 만들고 잔여 연결을 사용하여 새 네트워크를 최소한 이전 네트워크보다 나쁘지 않게 만들고 그래디언트가 사라지지 않고 항상 실행될 수 있도록 합니다. 이론적으로 그런 것은 잔차 네트워크를 추가하지 않고도 학습할 수 있지만 실제로는 지침이 없기 때문에 불가능합니다. 그리고 Resnet은 전체 네트워크가 길을 잃지 않도록 안내하여 더 깊고 더 나은 모델을 훈련할 수 있도록 합니다.

참고

  1. 【CNN이란? ] 절강형님이 CNN 굴리는 방법을 알려주시는데, 컨볼루션 신경망 CNN은 엔트리부터 실전까지, 듣기만 해도 이해하기 쉬운 Paramecium 끄덕끄덕 (인공지능, 딥러닝, 머신러닝, 컴퓨터비전)_哔哩哔哩_bilibili https icon-default.png?t=M85B: //www.bilibili.com/video/BV1zF411V7xu/?note=open&vd_source=a78ac0f401dbefddd573755a05848c85
  2. 핸즈온 딥 러닝 온라인 과정 - Li Mu 과정 일정 - 핸즈온 딥 러닝 과정(d2l.ai) icon-default.png?t=M85Bhttps://courses.d2l.ai/zh-v2/
  3. ResNet 논문 단락별 정독 [Paper intensive reading]_哔哩哔哩_bilibili icon-default.png?t=M85Bhttps://www.bilibili.com/video/BV1P3411y7nn/?spm_id_from=333.999.0.0&vd_source=a78ac0f401dbefddd573755a05848c85
  4. ResNet 논문 번역 및 해석_Autumn's Feng'er's blog-CSDN blog_resnet 논문 icon-default.png?t=M85B해석 2522166374698116782417093330%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%252 2%257D&request_id=1663746981167824 17093330&biz_id=0&utm_medium=distribute.pc_search_result.none-task- 블로그-2~all~first_rank_ecpm_v1~pc_rank_v39-9-123285262-null -null.142%5ev48%5epc_rank_34_2,201%5ev3%5econtrol_2&utm_term=resnet&spm=1018.2226.3001.4187
  5. BN의 원리와 구현 과정(Batch Normalization )을 이해하기 위한 글 icon-default.png?t=M85B2~default~CTRLIST~Rate-1.pc_relevant_antiscan&utm_re levant_index=1
  6. ResNet 상세 설명_qq_45649076's Blog-CSDN Blog_resnet icon-default.png?t=M85Bhttps://blog.csdn.net/qq_45649076/article/details/120494328
  7. [공식 이중언어] 딥러닝의 기울기 감소 방법 2편 Ver 0.9 beta_epi Bilibili Lick & VD_Source = icon-default.png?t=M85BA78AC0F401DBEFDDDDDDDDDDDDDDDDDDDDDD573755848C85
  8. Convolutional Neural Networks의 원리_The Blog of Fried Tomatoes-CSDN Blog_Principles of Convolutional Neural Networkshttps://blog.csdn.net/hjskj/article/details/123683095?ops_request_misc=%257B%2522request%255Fid%2522% 253A %25221663747752167 82417066333%2522 icon-default.png?t=M85B% 252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=16637477521678 2417066333&biz_id=0&utm_medium=distribute.pc_search_result.none- task-blog-2~blog~first_rank_ecpm_v1~pc_rank_v39-2-123683095- null-null. 142%5ev48%5epc_rank_34_2,201%5ev3%5econtrol_2&utm_term=%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB %9C&spm=1018.2226 .3001.4187

Supongo que te gusta

Origin blog.csdn.net/qq_54499870/article/details/127011866
Recomendado
Clasificación