딥 러닝 지식 포인트의 종합 요약

기사 디렉토리

img신경망과 딥러닝 구조("신경망과 딥러닝"에서 선택한 사진 - Qiu Xipeng)

1. 딥러닝 개념

1. 딥러닝 정의

딥러닝의 정의 : 일반적으로 다층 네트워크 구조를 학습시켜 알려지지 않은 데이터를 분류하거나 회귀하는 것을 말합니다.

딥 러닝 분류 : 지도 학습 방법 - 딥 피드포워드 네트워크, 컨볼루션 신경 네트워크, 순환 신경 네트워크 등

​ 비지도 학습 방법 - 심층 신뢰망, 심층 볼츠만 머신, 심층 오토인코더 등

딥러닝의 아이디어:

심층 신경망의 기본 아이디어는 다중 계층의 상위 특성을 통해 데이터의 추상적인 의미 정보를 표현하고 더 나은 특성 견고성을 얻기 위해 대상을 다중 계층으로 표현하는 다중 계층 네트워크를 구성하는 것입니다. .

2. 딥러닝 응용

영상 처리 분야의 주요 응용 분야

  • 이미지 분류(객체 인식): 전체 이미지의 분류 또는 인식
  • 객체 감지: 이미지에서 객체의 위치를 ​​감지한 후 객체를 식별합니다.
  • 이미지 분할: 가장자리에 따라 이미지의 특정 개체를 분할합니다.
  • 이미지 회귀: 이미지에서 객체 구성 요소의 좌표 예측

음성 인식 분야의 주요 응용 분야

  • 음성 인식: 음성을 텍스트로 인식합니다.
  • 성문 인식: 누구의 목소리인지 식별
  • 음성합성 : 텍스트를 기반으로 특정인의 음성을 합성합니다.

자연어 처리 분야의 주요 응용 분야

  • 언어 모델: 이전 단어를 기반으로 다음 단어를 예측합니다.
  • 감정 분석: 텍스트에 반영된 감정(긍정적 또는 부정적, 긍정적 또는 부정적, 다양한 태도 유형)을 분석합니다.
  • 신경 기계 번역: 통계적 언어 모델을 기반으로 한 다국어 번역입니다.
  • 신경망 자동 요약: 텍스트에서 자동으로 요약을 생성합니다.
  • 기계 독해: 질문에 답하고, 객관식 질문을 완성하거나, 텍스트를 읽어 빈칸을 채우세요.
  • 자연어 추론: 한 문장(전제)을 바탕으로 다른 문장(결론)을 추론합니다.

종합적인 적용

  • 이미지 설명: 이미지를 기반으로 이미지에 대한 설명 문장을 입력합니다.
  • 시각적 Q&A: 이미지나 동영상을 기반으로 질문에 답변합니다.
  • 이미지 생성: 텍스트 설명을 기반으로 이미지 생성
  • 비디오 생성: 스토리를 기반으로 자동으로 비디오 생성

2. 신경망 기초

1. 신경망 구성

인공 신경망(ANN)은 동물 신경망의 행동 특성을 모방하고 분산 병렬 정보 처리를 수행하는 알고리즘 수학적 모델입니다. 이러한 종류의 네트워크는 다수의 내부 노드 간의 상호 연결된 관계를 조정하여 정보 처리 목적을 달성하기 위해 시스템의 복잡성에 의존하며 자체 학습 및 적응 기능을 갖추고 있습니다. 신경망에는 다양한 유형이 있으며 그 중 가장 중요한 것은 다층 퍼셉트론입니다. 신경망을 자세히 설명하기 위해 가장 간단한 신경망부터 시작합니다.

퍼셉트론

퍼셉트론은 1957년 Rosenblatt에 의해 제안되었으며 신경망 및 지원 벡터 머신 의 기초입니다 .

퍼셉트론은 생물학에서 영감을 얻었으며 참조 대상과 이론적 근거는 아래 그림에서 볼 수 있습니다. 뉴런, 뉴런. 이 많은 뉴런들이 연결되어 복잡한 네트워크를 형성하는데, 이것을 우리는 신경망이라고 부릅니다. 물론 지금 우리가 말하는 딥러닝에는 머신러닝도 포함됩니다. 신경망은 실제로 인공신경망(Artificial Neural Networks)을 의미합니다. 줄여서 ANN이라고 합니다. 우리 인간의 신경망은 이런 뉴런들로 구성되어 있기 때문에 이 뉴런도 나름대로의 역할을 하고 있습니다. 메커니즘은 아래와 같은 구조를 통해서 어떤 신호가 먼저 수신되는 것입니다. 이 신호들은 신경망을 통과합니다. 수상돌기 조직은 이러한 신호를 받아 세포 내부의 핵으로 보냅니다. 이 세포핵은 이러한 신호를 수신합니다. 이러한 신호는 어떤 형태로 존재합니까? 이러한 신호는 눈으로 수신되는 광학 신호나 소리와 같습니다. 귀로 수신된 신호는 수상돌기에 도달할 때 약간의 약한 생체전기를 생성하므로 다음과 같은 형태로 형성됩니다. 어떤 자극이 수집되고 수신된 자극은 세포핵에서 종합적으로 처리됩니다. 그의 신호가 특정 임계값에 도달하면 활성화되고 자극 출력이 생성된 다음 우리 뇌가 수신하는 추가 신호를 형성하고 축삭의 출력을 통해 계산됩니다. 이것이 인간 뇌의 뉴런이 인식할 때의 일반적인 작동 원리입니다. .)

2

간단한 퍼셉트론은 다음과 같습니다.

이미지 설명을 추가해주세요

img

적절한 x와 b를 설정하면 간단한 퍼셉트론 장치의 NAND 게이트는 다음과 같이 표현됩니다.

img

입력이 0, 1일 때 퍼셉트론의 출력은 0 × ( − 2 ) + 1 × ( − 2 ) + 3 = 1입니다.

더 복잡한 퍼셉트론은 간단한 퍼셉트론 단위로 구성됩니다.

img

다층 퍼셉트론

다층 퍼셉트론은 퍼셉트론에서 파생된 것으로, 뉴런의 층이 여러 개 있다는 것이 주요 특징이므로 심층 신경망이라고도 불린다. 별도의 퍼셉트론과 비교하면 다층 퍼셉트론의 i ii 번째 레이어에 있는 각 뉴런은 i − 1 i-1i−1 레이어에 있는 각 뉴런과 연결되어 있습니다.

img

출력 레이어에는 11개 이상의 뉴런이 있을 수 있습니다. 숨겨진 레이어는 11개만 있을 수도 있고 여러 레이어가 있을 수도 있습니다. 출력 레이어에 여러 뉴런이 있는 신경망의 예가 아래 그림에 나와 있습니다.

여기에 이미지 설명을 삽입하세요.

2. 신경망의 일반적인 모델 구조는 무엇입니까?

인공신경망은 뉴런 모델로 구성되는데, 이는 병렬 분산 구조를 가진 다수의 뉴런으로 구성된 정보처리 네트워크이다.

4.3

원형 노드는 뉴런을 나타내고, 사각형 노드는 뉴런 그룹을 나타냅니다.

아래 그림에는 가장 일반적으로 사용되는 모델이 포함되어 있습니다.

img

3. 순전파 및 역전파 소개

신경망에는 두 가지 주요 계산 유형이 있습니다. FP(순방향 전파)는 각 레이어의 입력에 작용하고, 출력 결과는 레이어별 계산을 통해 얻어지며, 역방향 전파(BP)는 네트워크의 출력에 작용합니다. , 그리고 기울기 계산을 통해 네트워크 매개변수를 깊은 곳에서 얕은 곳으로 업데이트합니다.

순방향 전파

img

상위 레이어의 노드 i, j, k, ...i, j, k,...i,j,k,...와 다른 노드들이 이 레이어의 노드 www에 연결되어 있다고 가정하면, 노드 w ww 값을 계산하는 방법은 무엇입니까? 이전 계층의 노드 i, j, k,...i, j, k,...i, j, k,...와 해당 연결 가중치를 통해 가중치 합 연산을 수행하고, 최종 결과에는 부분적인 설정 항목(그림에서는 단순화를 위해 생략)이 추가되고 마지막으로 R e Lu ReLuReLu, sigmoid sigmoidsigmoid 및 기타 함수와 같은 비선형 함수(즉, 활성화 함수)를 통해 최종 결과가 출력됩니다. 이 레이어의 노드 w ww의.

마지막으로 이 방법을 통해 계속적으로 레이어별 작업을 수행하여 출력 레이어 결과를 얻는다.

역전파

img

분류를 예로 들어 순방향 전파를 통해 최종 결과를 얻으므로 결국에는 항상 오류가 발생하므로 오류를 줄이는 방법은 무엇입니까? 현재 널리 사용되는 알고리즘 중 하나는 경사하강법(gradient descent) 알고리즘이지만 경사도(gradient)를 찾는 것입니다. 편미분이 필요합니다. 다음 그림은 한자를 예로 들어 보겠습니다.

img

이 섹션이 업데이트됩니다!

3. 하이퍼파라미터

1 하이퍼파라미터란 무엇입니까?

하이퍼파라미터(Hyperparameters) : 머신러닝 맥락에서 하이퍼파라미터는 훈련을 통해 얻은 매개변수 데이터가 아닌, 학습 과정을 시작하기 전에 값이 설정되는 매개변수이다. 일반적으로 학습 성능과 효과를 향상시키기 위해서는 하이퍼파라미터를 최적화하고 학습 기계에 대한 최적의 하이퍼파라미터 세트를 선택해야 합니다.

하이퍼파라미터는 일반적으로 다음 위치에 존재합니다.

1.  定义关于模型的更高层次的概念,如复杂性或学习能力。
2.  不能直接从标准模型培训过程中的数据中学习,需要预先定义。
3.  可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定

구체적으로 말하면, 알고리즘의 학습률, 경사 하강법의 반복 횟수(iterations), 은닉층 수(hiddenlayer), 은닉층 단위 수, 활성화 함수(activation function) 등의 하이퍼파라미터 ) 모두 실제 상황을 기반으로 해야 하며, 설정하려면 이 숫자가 실제로 최종 매개변수 합계 값을 제어하므로 이를 하이퍼 매개변수라고 합니다.

2. 하이퍼파라미터의 최적값을 찾는 방법은 무엇입니까?

머신러닝 알고리즘을 사용할 때, 조정하기 어려운 하이퍼파라미터가 항상 존재합니다. 예를 들어 가중치 감쇠 크기, 가우스 커널 너비 등이 있습니다. 이러한 매개변수는 수동으로 설정해야 하며 설정된 값은 결과에 더 큰 영향을 미칩니다. 하이퍼파라미터를 설정하는 일반적인 방법은 다음과 같습니다.

  1. 추측 및 확인: 경험이나 직관을 바탕으로 매개변수를 선택하고 계속 반복합니다.
  2. 그리드 검색: 컴퓨터가 범위 내에서 균등하게 분포된 값 집합을 시도하게 합니다.
  3. 무작위 검색: 컴퓨터가 무작위로 일련의 값을 선택하도록 합니다.
  4. 베이지안 최적화: 베이지안 최적화 하이퍼파라미터를 사용하는 경우 베이지안 최적화 알고리즘 자체에 많은 매개변수가 필요하다는 어려움에 직면하게 됩니다.
  5. MITIE 방법은 좋은 초기 추측을 기반으로 로컬 최적화를 수행합니다. BOBYQA 알고리즘을 사용하며 신중하게 선택된 시작점이 있습니다. BOBYQA는 가장 가까운 로컬 최적 솔루션만 찾기 때문에 이 방법의 성공은 좋은 시작점을 갖는 데 크게 좌우됩니다. MITIE의 경우 좋은 출발점이 무엇인지 알고 있지만 일반적으로 좋은 출발점이 어디인지 모르기 때문에 이는 보편적인 해결책이 아닙니다. 장점으로는 이 접근 방식이 로컬 최적 솔루션을 찾는 데 좋습니다. 이에 대해서는 나중에 다시 설명하겠습니다.
  6. 새롭게 제안된 LIPO의 전역 최적화 방법. 이 방법은 매개변수가 없으며 무작위 검색 방법보다 더 나은 것으로 입증되었습니다.
3. 하이퍼파라미터 검색의 일반적인 프로세스는 무엇입니까?

하이퍼파라미터 검색의 일반적인 프로세스:

  1. 데이터 세트를 훈련 세트, 검증 세트, 테스트 세트로 나눕니다.
  2. 훈련 세트의 모델 성능 지표를 기반으로 모델 매개변수를 최적화합니다.
  3. 검증 세트의 모델 성능 지표를 기반으로 모델의 하이퍼파라미터를 검색합니다.
  4. 2단계와 3단계를 교대로 반복하여 최종적으로 모델의 매개변수와 하이퍼 매개변수를 결정하고, 테스트 세트에서 모델의 품질을 검증 및 평가합니다.

그중 검색 프로세스에는 일반적으로 그리드 검색, 무작위 검색, 휴리스틱 지능형 검색 및 베이지안 검색을 포함하는 검색 알고리즘이 필요합니다.

4. 활성화 기능

1. 활성화 함수란 무엇입니까?

활성화 함수는 인공 신경망 모델에서 매우 복잡하고 비선형적인 함수를 학습하고 이해하는 데 매우 중요한 역할을 합니다. 그들은 우리 네트워크에 비선형 속성을 도입합니다. 아래 그림과 같이 뉴런에서는 입력값에 가중치를 부여하고 합산한 후 함수를 적용하는데, 이 함수가 활성화 함수이다. **신경망 모델의 비선형성을 높이기 위해 활성화 함수가 도입되었습니다. **활성화 함수가 없는 각 레이어는 행렬 곱셈과 동일합니다. 여러 레이어를 겹쳐 놓은 후에도 행렬 곱셈에 지나지 않습니다.

그림 1

2. 활성화 기능을 사용하는 이유는 무엇입니까?
  1. 활성화 함수는 모델을 학습하고 매우 복잡하고 비선형적인 함수를 이해하는 데 중요한 역할을 합니다.
  2. 활성화 함수는 비선형 요인을 도입할 수 있습니다. 활성화 함수를 사용하지 않으면 출력 신호는 단순한 선형 함수가 됩니다. 선형 함수는 1차 다항식입니다. 선형 방정식의 복잡성은 제한되어 있으며 데이터에서 복잡한 함수 매핑을 학습하는 능력은 매우 작습니다. 활성화 기능이 없으면 신경망은 이미지, 비디오, 오디오, 음성 등과 같은 다른 복잡한 유형의 데이터를 학습하고 시뮬레이션할 수 없습니다.
  3. 활성화 함수는 특정 선형 매핑을 통해 현재 특징 공간을 다른 공간으로 변환하여 데이터를 더 잘 분류할 수 있습니다.
3. 활성화 함수에 비선형 함수가 필요한 이유는 무엇입니까?
  1. 네트워크의 모든 구성 요소가 선형이면 선형 조합은 단일 선형 분류기와 마찬가지로 여전히 선형입니다. 이로 인해 비선형성을 사용하여 함수를 근사화하는 것이 불가능해졌습니다.
  2. 비선형 활성화 함수를 사용하여 신경망을 더욱 강력하게 만들고 그 능력을 높여 입력과 출력 사이의 비선형성을 나타내는 복잡한 것, 복잡한 형태의 데이터, 복잡한 임의 함수 매핑을 학습할 수 있습니다. 비선형 활성화 함수를 사용하면 입력과 출력 간의 비선형 매핑을 생성할 수 있습니다.
4. 공통 활성화 기능

img

img

활성화 함수에 대한 자세한 연구는 다음 자료를 참조하십시오.

활성화함수의 과거와 현재의 삶_작은 발걸음이 없으면 천 리도 갈 수 없다!

활성화 기능의 일반적인 문제 요약_작은 걸음이 쌓이지 않으면 천 마일도 도달하지 못합니다.

딥 러닝 노트_다양한 활성화 기능 요약 및 비교_Jinghongyibo-CSDN 블로그

훌륭한 요약 참조:

여기에 이미지 설명을 삽입하세요.

활성화 함수 선택을 위한 몇 가지 경험 법칙:
출력이 0 또는 1(이진 분류 문제) 값인 경우 출력 계층은 시그모이드 함수를 선택하고 다른 모든 단위는 Relu 함수를 선택합니다. 이는 많은 활성화 함수에 대한 기본 선택이며, 히든 레이어에 어떤 활성화 함수를 사용해야 할지 확실하지 않은 경우 일반적으로 Relu 활성화 함수를 사용합니다 . 때로는 tanh 활성화 함수도 사용됩니다.

5. 최적화 방법 요약

1. 기본 경사하강법

경사하강법 알고리즘 소개:

경사하강법을 알기 쉽게 설명!

경사하강법 학습을 시작하기 위한 추천 비디오:

[경사하강법] 인공지능의 영혼, 그 진정한 의미를 깨달았나요?

[드라이 정보] 딥러닝 필수품: 간단한 용어로 학습하기 (경사하강법 알고리즘)_bilibili_bilibili

딥러닝 네트워크 훈련 과정은 순방향 계산 과정과 역전파 과정의 두 부분으로 나눌 수 있습니다. 순방향 계산 프로세스는 사전 설정된 컨볼루션 계층, 풀링 계층 등을 통해 규정된 네트워크 구조에 따라 계층별로 순방향 계산을 수행하여 예측 결과를 얻는 것을 말합니다. 역전파 과정은 설정된 네트워크의 많은 매개변수를 단계별로 조정하여 예측 결과가 실제 값에 더 가까워질 수 있도록 하는 것입니다.

따라서 역전파 프로세스에서 매우 중요한 점은 매개변수를 어떻게 업데이트할 것인가입니다. 아니면 좀 더 구체적으로 질문해 보세요. 매개변수를 어떤 방향으로 업데이트해야 합니까?

분명히 매개변수는 목표 손실 함수가 가장 빠르게 감소하는 방향, 더 정확하게는 기울기 방향으로 업데이트되어야 합니다! 네트워크 매개변수는 θ \thetaθ, 학습률은 eta \etaeta, 네트워크가 나타내는 함수는 J ( θ ) J(\theta)J(θ)라고 가정합니다. 이번에는 ▽ θ J ( θ ) \bigtriangledown_{\theta }J(\theta)▽θJ(θ)이므로 매개변수 θ \thetaθ의 업데이트 공식은 다음과 같이 표현될 수 있습니다.

여기에 이미지 설명을 삽입하세요.

딥러닝에는 가장 기본적인 경사하강법 알고리즘 세 가지(SGD, BGD, MBGD)가 있으며, 각 알고리즘에는 고유한 장점과 단점이 있습니다. 데이터 및 매개변수의 양에 따라 구체적인 구현 형태를 선택할 수 있으며, 신경망 훈련을 위한 최적화 알고리즘은 크게 1) 최적화를 보다 안정적으로 만들기 위해 학습률을 조정하는 것, 2) 기울기 추정 보정 및 최적화 훈련 속도.

여기에 이미지 설명을 삽입하세요.

(1) 확률적 경사하강법 SGD

SGD(확률적 경사하강법), 각 반복(매개변수 업데이트)은 단일 훈련 샘플 만 사용 합니다. (x (i), y (i)) (x^{(i)}, y^{(i) }) (x( i),y(i)), 여기서 x는 입력 데이터이고 y는 레이블입니다. 따라서 매개변수 업데이트 표현식은 다음과 같습니다.

여기에 이미지 설명을 삽입하세요.
장점: SGD는 반복당 하나의 샘플만 계산하면 되므로 실행 속도가 매우 빠르며 온라인 학습에도 사용할 수 있습니다.

단점: (1) 단일 샘플의 무작위성으로 인해 목표 손실 함수의 값은 실제 프로세스에서 심하게 변동합니다. 한편, SGD의 변동으로 인해 새로운 로컬 최소값으로 점프할 수 있습니다. 더 나은. 반면에 훈련은 결코 수렴되지 않으며 항상 최소값 주위에서 변동합니다. (2) 한 번의 반복으로 하나의 이미지만 계산되는데, 이는 GPU의 병렬 컴퓨팅을 활용하지 않아 전체 계산이 비효율적입니다.

(2) 배치 경사하강법 BGD

BGD(Batch Gradient Descent) 방법은 각 반복 업데이트에서 모든 학습 샘플을 사용하며 매개변수 업데이트 표현식은 다음과 같습니다.

여기에 이미지 설명을 삽입하세요.
장점과 단점 분석: BGD는 볼록 오류 표면의 전체 최소값과 비볼록 표면의 로컬 최소값으로의 수렴을 보장할 수 있습니다. 하지만 각 반복에는 훈련 세트의 모든 데이터가 필요하므로 데이터 양이 많으면 반복 속도가 매우 느려집니다.

미니배치 경사하강법 MBGD

BGD와 SGD 방법을 절충한 MBGD(Mini-Batch Gradient Descent) 방법(3) ****각 반복에서는 계산 및 매개변수 업데이트 표현식에 대해 배치_크기 훈련 샘플을 사용**** 공식은 다음과 같습니다.

여기에 이미지 설명을 삽입하세요.
장점과 단점 분석: 각 반복은 여러 샘플을 사용하기 때문에 MBGD는 SGD보다 안정적으로 수렴하고 데이터 세트가 너무 클 때 BGD의 반복 속도가 느려지는 문제도 피할 수 있습니다. 따라서 MBGD는 딥러닝 네트워크 훈련에 자주 사용되는 경사하강법입니다.

딥러닝에서 일반적인 미니배치 크기는 64~256인데, 컴퓨터의 저장공간 설정과 사용량을 고려하면 미니배치가 2의 거듭제곱일수록 코드 실행 속도가 빨라집니다.
여기에 이미지 설명을 삽입하세요.
위 그림은 BGD 및 MBGD 훈련 중 손실 비용 함수의 변화 다이어그램입니다. BGD는 비용 함수를 점진적으로 감소시키고 궁극적으로 볼록 오류 표면의 전역 최소값에 수렴할 수 있음을 알 수 있습니다. MBGD의 손실 비용 함수 값은 상대적으로 진동하지만 궁극적으로 다음과 같이 최적화될 수 있습니다. 최소 손실 값.

(4) 복용량

img

img

(5) 아다델타

img

(6) RMSprop 최적화 프로그램

img

RMSProp 알고리즘의 전체 이름은 Root Mean Square Prop 입니다. Hinton이 Coursera 강좌에서 제안한 최적화 알고리즘입니다. 위의 Momentum 최적화 알고리즘에서는 최적화에서 큰 스윙 진폭 문제가 초기에 해결되었지만.

손실 함수 업데이트 시 과도한 스윙 진폭 문제를 더욱 최적화하고 함수의 수렴 속도를 더욱 높이기 위해 RMSProp 알고리즘은 가중치 W와 바이어스 b의 기울기의 미분 제곱 가중 평균을 사용합니다. 최적화된 효과는 다음과 같습니다. 파란색은 Momentum 최적화 알고리즘이 선택한 경로이고, 녹색은 RMSProp 최적화 알고리즘이 선택한 경로입니다.

여기에 이미지 설명을 삽입하세요.
t번째 반복 과정에서 각 수식은 다음과 같다고 가정하자. 위 수식에서 Sdw​와 Sdb​는
여기에 이미지 설명을 삽입하세요.
첫 번째 t-1 반복 과정에서 손실 함수에 의해 누적된 기울기 운동량의 제곱 이고 , β는 기울기이다. 축적.지수. 차이점은 RMSProp 알고리즘이 기울기의 미분 제곱 가중 평균을 계산한다는 것입니다 . 이 접근 방식은 스윙 진폭이 큰 방향을 제거하는 데 도움이 되며 각 차원의 스윙 진폭이 더 작아지도록 스윙 진폭을 수정하는 데 사용됩니다. 반면에 네트워크 기능의 수렴 속도도 빨라집니다.

2. 모멘텀 경사하강법

모멘텀은 주로 기울기 기반 이동 지수 가중 평균 개념을 도입합니다 . 즉, 현재 매개변수 업데이트 방향은 현재 기울기와 관련될 뿐만 아니라 과거 가중 평균 기울기의 영향도 받습니다. 기울기가 같은 방향을 가리키는 차원의 경우 운동량이 축적되어 증가하는 반면 , 기울기의 방향이 바뀌는 차원의 경우 시간이 지남에 따라 운동량이 감소합니다 . 또한 너무 많이 흔들지 않고도 수렴 속도가 빨라집니다.

운동량 경사하강법은 학습 속도를 높이기 위해 사용되며 국소 최적성을 제거하는 기능이 있습니다. 아래 그림의 빨간색 선에 표시된 대로:
여기에 이미지 설명을 삽입하세요.

운동량 경사하강법(Momentum)의 매개변수 업데이트 표현은 다음과 같습니다.

여기에 이미지 설명을 삽입하세요.

그 중 λ는 모멘텀 매개변수 모멘텀을 나타내며, λ = 0이면 일반적인 SGD 경사하강법이다. 0 < λ < 1. 이는 운동량을 사용한 SGD 경사하강법 매개변수 업데이트 방법을 나타내며, λ는 일반적으로 0.9입니다.

일반 SGD의 단점: SGD는 계곡(즉, 표면이 한 차원에서 다른 차원보다 더 가파르게 곡선을 이루는 영역)에서 반복하는 데 어려움이 있는데, 이는 로컬 최적 솔루션에서 흔히 발생합니다. 이러한 시나리오에서 SGD는 계곡 경사면에서 진동하면서 바닥을 따라 지역 최적을 향해 천천히 전진합니다. 이 문제를 완화하기 위해 모멘텀이 도입되었습니다.

여기에 이미지 설명을 삽입하세요.

본질적으로 운동량을 사용하는 것은 공을 언덕 아래로 밀어내는 것과 같습니다. 공은 내리막으로 굴러갈 때 추진력을 얻어 길을 따라 점점 더 빨라집니다. 매개변수 업데이트에서도 동일한 일이 발생합니다. 그라데이션이 동일한 방향을 가리키는 치수의 경우 운동량은 축적되고 증가하는 반면, 그라데이션의 방향이 변경되는 치수의 경우 업데이트 중에 운동량이 감소합니다. 결과적으로 우리는 더 빠른 수렴과 감소된 진동을 얻습니다.

3. 아담 옵티마이저

Adam은 매개 변수 적응형 학습률 의 또 다른 방법 으로 RMSprop + Momentum과 동일하며 기울기의 1차 모멘트 추정과 2차 모멘트 추정을 사용하여 각 매개변수의 학습률을 동적으로 조정합니다. 공식은 다음과 같습니다.

첫 번째 및 두 번째 순간 mt, vt m_t, v_tmt, vt는 운동량과 유사하며 다음과 같이 초기화됩니다. m 0 = 0, v 0 = 0 m_{0}=0, v_{0}=0m0=0,v0 =0

mt, vt m_t, v_tmt, vt는 각각 그라디언트의 첫 번째 모멘트(평균)와 두 번째 모멘트(비중심 분산)의 추정값입니다.

여기에 이미지 설명을 삽입하세요.

이동 지수 평균은 반복 시작 시 시작 값과 큰 차이를 유발하므로 위에서 얻은 여러 값에 대해 편향 보정을 수행해야 합니다. 이러한 편향은 편향 수정된 1차 순간 및 2차 순간 추정치를 계산하여 대응됩니다.

여기에 이미지 설명을 삽입하세요.

그런 다음 Adam의 매개변수 업데이트 공식인 RMSprop에서 볼 수 있듯이 매개변수를 업데이트하는 데 사용됩니다.

여기에 이미지 설명을 삽입하세요.

Adam 알고리즘에서 매개변수 β1은 Momentum 알고리즘의 β 값에 해당하며 일반적으로 0.9이고, 매개변수 β2는 RMSProp 알고리즘의 β 값에 해당하며 일반적으로 0.999를 취하고 ϵ는 평활화 항입니다. 일반적으로 값은 1 0 − 8 10^{−8}10−8이며, 학습률은 훈련 중에 미세 조정이 필요합니다.

img

최적화 알고리즘 요약

딥러닝의 가장 완벽한 최적화 방법 비교(SGD, Adagrad, Adadelta, Adam, Adamax, Nadam) - Zhihu

여기에 이미지 설명을 삽입하세요.

Pytorch의 최적화 도구 및 학습률 감소 방법 요약

pytorch_ys1305 블로그의 옵티마이저 및 학습률 감소 방법 요약

6. 손실 함수

소개 학습 비디오:

[선형회귀, 비용함수, 손실함수] 애니메이션 이해, 수학에 푹 빠지다

1.손실 함수 정의

기계 학습 작업에서 대부분의 지도 학습 알고리즘은 목적 함수(Objective Function)를 가지며, 알고리즘은 목적 함수를 최적화하는 과정을 최적화 알고리즘이라고 합니다. 예를 들어 분류나 회귀 작업에서는 손실 함수(Loss Function)를 목적 함수로 사용하여 알고리즘 모델을 최적화합니다.
BP 신경망에서는 일반적인 유도에서는 손실 함수로 평균 제곱 오차를 사용하지만 실제로는 교차 엔트로피를 손실 함수로 사용하는 경우가 많습니다. 아래 그림에서 볼 수 있듯이 경사 하강 과정에서 손실 함수에 따라 수렴 속도와 성능이 다르다는 것을 명확하게 관찰할 수 있습니다.

  1. 손실 함수로서 평균 제곱 오차는 천천히 수렴하여 국소 최적 솔루션에 속할 수 있습니다.
  2. 손실 함수인 교차 엔트로피의 수렴 속도는 평균 제곱 오차보다 빠르며 함수의 최적해를 찾는 것이 더 쉽습니다.

따라서 손실함수의 종류를 이해하고 손실함수를 활용하는 기술을 익히는 것은 딥러닝에 대한 이해를 높이는 데 도움이 됩니다.

여기에 이미지 설명을 삽입하세요.

img

분류모델과 회귀모델에 사용되는 손실함수는 서로 다르며, 이에 대해서는 아래에서 별도로 소개하겠습니다.

2 회귀 손실 함수

(1) 평균 제곱 오차 손실 함수

평균 제곱 오류 손실(MSE) 손실 함수는 다음과 같이 정의됩니다.

img

코드 예

def mean_squared_error(y_true, y_pred):
    return np.mean(np.square(y_pred - y_true), axis=-1)

(2) 평균 절대 오차 손실 함수

평균 절대 오류 손실(MAE) 손실 함수는 다음과 같이 정의됩니다.

img

코드 예

def mean_absolute_error(y_true, y_pred):
    return np.mean(np.abs(y_pred - y_true), axis=-1)

(3) 평균 제곱 오차 대수 손실 함수

MSLE(평균 제곱 로그 오류 손실) 손실 함수는 다음과 같이 정의됩니다.

img

코드 예

def mean_squared_logarithmic_error(y_true, y_pred):
    first_log = np.log(np.clip(y_pred, 10e-6, None) + 1.)
    second_log = np.log(np.clip(y_true, 10e-6, None) + 1.)
    return np.mean(np.square(first_log - second_log), axis=-1)

(4) 평균 절대 백분율 오류 손실 함수

MAPE(평균 절대 백분율 오류 손실) 오류 손실 함수는 다음과 같이 정의됩니다.

img

코드 예

def mean_absolute_percentage_error(y_true, y_pred):
    diff = np.abs((y_pred - y_true) / np.clip(np.abs(y_true), 10e-6, None))
    return 100 * np.mean(diff, axis=-1)

(5) 요약

평균제곱오차 손실함수는 가장 널리 사용되며, 대부분의 경우 평균제곱오차가 좋은 성능을 보여 손실함수의 기본 척도로 사용된다. MAE는 이상값을 보다 효과적으로 처벌합니다. 데이터에 이상값이 많은 경우 평균 절대 오류 손실을 손실 함수로 사용하는 것을 고려해야 합니다. 일반적으로 데이터에 이상치가 너무 많이 발생하는 것을 방지하기 위해 데이터를 전처리할 수 있습니다.
평균 제곱 오차의 로그 손실 계산 과정은 함수 출력 값의 범위를 줄이기 위해 각 출력 데이터에 대해 로그 계산을 수행한다는 점을 제외하면 평균 제곱 오차와 유사합니다. 평균 절대 백분율 오류 손실은 예측 값과 실제 값 사이의 상대 오류를 계산합니다. 평균 제곱 오차 대수 손실과 평균 절대 백분율 오차 손실은 실제로 대규모 데이터([ − 10 5 , 10 5 ])를 처리하는 데 사용되지만, 신경망에서는 입력 데이터를 합리적인 범위( [ − 1 , 1 ]), 평균 제곱 오차 또는 평균 절대 오차 손실을 사용하여 손실을 계산합니다.

3 분류 손실 함수

(1) 로지스틱 손실 함수

로지스틱 손실 함수는 다음과 같이 정의됩니다.

img

(2) 음의 로그 우도 손실 함수

음의 로그 가능성 손실 함수(Negative Log Likelihood Loss)는 다음과 같이 정의됩니다.

img

(3) 교차 엔트로피 손실 함수

로지스틱 손실 함수와 음의 로그 우도 손실 함수는 두 가지 분류 문제만 처리할 수 있으며 두 가지 분류를 M 분류로 확장하려면 교차 엔트로피 손실 함수(Cross Entropy Loss)를 사용하며 이는 다음과 같이 정의됩니다.

img

코드 예

def cross_entropy(y_true, y_pred):
    return -np.mean(y_true * np.log(y_pred + 10e-6))

(4) 힌지 손실 기능

Hinge loss를 사용하는 대표적인 분류기는 SVM 알고리즘입니다. 왜냐하면 Hinge loss를 사용하여 간격 최대화 문제를 해결할 수 있기 때문입니다. 분류 모델이 분류 결과가 0 또는 1, -1 또는 1인 이진 데이터와 같이 하드 분류 결과를 요구하는 경우 힌지 손실이 가장 편리한 선택입니다. 힌지 손실 함수는 다음과 같이 정의됩니다.

img

코드 예

def hinge(y_true, y_pred):
    return np.mean(np.maximum(1. - y_true * y_pred, 0.), axis=-1)

(5) 지수손실함수

지수(Exponential) 손실함수를 사용하는 대표적인 분류기는 AdaBoost 알고리즘으로 지수손실함수는 다음과 같이 정의된다.

img

코드 예

def exponential(y_true, y_pred):
    return np.sum(np.exp(-y_true * y_pred))

4. 신경망에서 일반적으로 사용되는 손실 함수

신경망의 손실 함수는 데이터 자체와 이를 해결하는 데 사용되는 최적화 방식을 고려해야 하는 경우 사용자 정의할 수 있습니다. 즉, 맞춤형 손실함수는 입력 데이터 형식과 손실함수 도출 알고리즘을 고려해야 합니다. 실제로 손실함수를 맞춤화하는 것은 다소 어려운데, 실제 엔지니어링 프로젝트에서는 활성화함수와 조합하여 손실함수를 선택하는 것이 일반적이며, 일반적으로 3가지 조합이 있다.

(1) ReLU + MSE

평균 제곱 오차 손실 함수는 기울기가 사라지는 문제를 처리할 수 없지만 Leak ReLU 활성화 함수를 사용하면 계산 중 기울기가 사라지는 문제를 줄일 수 있으므로 신경망에서 평균 제곱 오차 손실 함수를 사용해야 하는 경우 Leak ReLU 등은 일반적으로 그래디언트 소멸 문제를 줄이기 위해 사용될 수 있습니다.활성화 함수. 또한, 평균제곱오차는 보편적이고 일반적으로 손실값을 측정하는 기준으로 사용되기 때문에, 평균제곱오차를 손실함수로 사용하는 것은 성능이 너무 좋지도 너무 나쁘지도 않습니다.

(2) 시그모이드 + 로지스틱

Sigmoid 함수는 Vanishing Gradient 문제를 발생시킵니다: 체인 유도 방법에 따르면 Sigmoid 함수를 유도한 후 [0, 1] 범위의 여러 숫자를 곱합니다. 예를 들어 그 파생 형식은 다음과 같습니다. 숫자 중 하나가 매우 작습니다. 연결된 후 마침내 사라질 때까지 무한히 0에 접근합니다. 로지스틱형 손실함수 도출 시 대수 곱셈 연산을 합산 연산으로 변환하여 기울기가 어느 정도 사라지는 것을 방지하므로 시그모이드 활성화 함수 + 크로스픽킹 손실 함수 의 조합을 흔히 볼 수 있습니다. .

(3) 소프트맥스 + 로지스틱

수학적으로 Softmax 활성화 함수는 출력 클래스의 상호 배타적 확률 분포를 반환합니다. 즉, 이산 출력을 (0.2, 0.8)과 같이 동일하게 분포된 상호 배타적 확률로 변환할 수 있습니다. 또한 Logisitc 손실함수는 확률의 최대 우도 추정 함수를 기반으로 하기 때문에 출력 확률화를 통해 최적화 알고리즘이 도출 및 계산을 수행하는 것이 더 편리할 수 있으므로 Softmax 활성화 함수를 사용하여 출력 레이어를 자주 볼 수 있습니다 . + 교차 엔트로피 손실 함수의 조합 .

손실 함수 학습 참고자료:

딥 러닝 - 일반적으로 사용되는 손실 함수에 대한 자세한 소개_알고리즘의 아름다움-CSDN 블로그_딥 러닝의 손실 함수

5. 활성화 함수, 손실 함수, 최적화 함수의 차이점

1. 활성화 함수 : 신경망 계층의 비선형 변환을 통해 신경망 상위 계층의 입력을 변환한 후, 활성화 함수를 통해 출력을 얻는다. 일반적인 활성화 함수로는 Sigmoid, tanh, relu 등이 있습니다.

[ 딥러닝] 신경망 활성화 기능_Beiwang Huacun-CSDN Blog

2. 손실함수(Loss function) : 신경망 출력의 예측값과 실제값의 차이를 측정하는 방식. 일반적인 손실 함수에는 최소 제곱 손실 함수, 교차 엔트로피 손실 함수, 회귀에 사용되는 매끄러운 L1 손실 함수 등이 있습니다.

3. 최적화 기능 : 즉, 신경망의 가장 바깥쪽 레이어에서 손실 값을 앞쪽으로 전달하는 방법입니다. 가장 기본적인 경사하강법 알고리즘, 확률적 경사하강법 알고리즘, 배치 경사하강법 알고리즘, 운동량을 이용한 경사하강법 알고리즘, Adagrad, Adadelta, Adam 등이 있습니다.

[ 딥러닝] 경사하강법 알고리즘, 최적화 방법(SGD, Adagrad, Adam...)_Beiwang Huacun-CSDN 블로그

7. CNN 컨볼루셔널 신경망

추천 정보: 컨볼루셔널 신경망 CNN(유용한 정보가 가득) - CSDN 블로그

초보자를 위한 추천 기사: 컨볼루션을 이해하기 쉽게 설명하는 방법은 무엇입니까? - 거의 안다

CNN(Convolutional Neural Networks)은 컨볼루션 계산을 포함하고 심층 구조를 갖는 피드포워드 신경망의 일종으로, 딥러닝의 대표적인 알고리즘 중 하나입니다. 현재 CNN은 얼굴인식, 자율주행, 아름다운 사진, 보안 등 다양한 분야에서 널리 활용되고 있다.

컨볼루셔널 신경망(Convolutional Neural Network) – CNN이 가장 잘하는 것은 이미지 처리입니다. 이는 인간의 시각 신경계에서 영감을 받았습니다.

CNN 기능:

  1. 많은 양의 데이터가 포함된 이미지의 차원을 작은 양의 데이터로 효과적으로 줄일 수 있습니다.
  2. 이미지 특징을 효과적으로 유지하고 이미지 처리 원칙을 준수할 수 있습니다.

CNN에는 두 개의 코어가 있습니다.

컨벌루션 계층의 가장 중요한 두 가지 기능은 로컬 연결과 가중치 공유이며, 일부에서는 희소 연결 및 매개변수 공유라고도 합니다.

  1. 로컬 연결은 컨볼루션 작업을 통해 구현되며, 이 로컬 영역의 크기는 필터이므로 전체 연결에서 너무 많은 매개변수로 인해 계산이 불가능해지는 것을 방지할 수 있습니다.
  2. 그런 다음 매개변수 공유를 사용하여 실제 매개변수 수를 줄여 다층 네트워크 구현이 가능합니다.

img

1. 부분 연결:
  • 일반적으로 이미지의 공간적 연결은 로컬 픽셀은 밀접한 연결을 갖고 먼 픽셀은 약한 상관 관계를 갖는다고 생각됩니다. 따라서 각 뉴런은 전체 이미지를 인식할 필요가 없고 로컬 부분만 인식하면 됩니다. 그런 다음 상위 계층에서는 로컬 정보를 결합하여 글로벌 정보를 얻습니다. 컨볼루션 레이어를 사용하여 구현: (특징 맵, 각 기능 맵은 뉴런 배열): 로컬 컨볼루션 필터를 통해 이전 레이어에서 로컬 특징을 추출합니다. 컨볼루셔널 레이어 다음에는 로컬 평균화 및 2차 추출을 위한 계산 레이어가 옵니다. 이 2차 특징 추출 구조는 특징 해상도를 감소시킵니다.
  • 즉, 네트워크는 부분적으로 연결되어 있으며, 각 뉴런은 이전 계층의 뉴런 중 일부에만 연결되어 전체 이미지가 아닌 이미지의 일부만 감지합니다. (슬라이딩 윈도우 구현)
2. 매개변수 공유:
  • 로컬 연결에서는 각 뉴런의 매개변수가 동일합니다. 즉, 동일한 컨볼루션 커널이 이미지에서 공유됩니다 . (이해: 컨볼루션 연산은 실제로 지역 정보를 추출하는 것이며 지역 정보의 일부 통계적 속성은 다른 부분과 동일하므로 이 부분에서 학습한 기능을 다른 부분에서도 사용할 수 있습니다. 따라서 이미지의 모든 위치는 네트워크는 동일한 학습 기능을 사용할 수 있습니다.) 컨볼루션 커널 공유에는 문제가 있습니다. 기능 추출이 충분하지 않아 여러 컨볼루션 커널을 추가하여 보완할 수 있으며 다양한 기능을 학습할 수 있습니다.
  • 100x100 픽셀 이미지의 경우 뉴런을 사용하여 이미지를 연산하면 뉴런 크기는 100x100=10000이고, 10x10 컨볼루션 커널을 사용하면 여러 번 계산해야 하지만 필요한 매개변수는 10x10=100 뿐입니다. , 바이어스 b를 더하면 총 101개의 매개변수만 필요합니다. 이미지 크기는 여전히 100x100입니다.
  • 더 큰 이미지를 얻으면 더 많은 매개변수를 갖게 됩니다. 10*10 컨볼루션 커널을 통해 이미지에서 특징을 추출하여 특징 맵을 얻습니다.
  • 컨볼루션 커널은 하나의 특징만 추출할 수 있으므로 더 많은 컨볼루션 커널이 필요합니다. 6개의 컨볼루션 커널이 있다고 가정하면 6개의 특징 맵을 얻게 됩니다. 이 6개의 특징 맵은 하나의 뉴런으로 결합됩니다. . 이 6개의 기능 맵에는 101*6=606개의 매개변수가 필요합니다. 이 값은 10,000에 비해 여전히 상대적으로 작습니다.

CNN 네트워크 소개

다음은 주로 컨볼루션 레이어, 풀링 레이어, 활성화 함수, 완전 연결 레이어 개념 및 원리를 소개합니다.

일반적인 CNN은 세 부분으로 구성됩니다.

img

1. 컨볼루션 레이어

Convolution은 이미지 특징을 추출하는 효과적인 방법입니다. 일반적으로 정사각형 컨볼루션 커널은 이미지의 모든 픽셀을 탐색하는 데 사용됩니다. 이미지와 컨볼루션 커널의 중첩 영역에 해당하는 각 픽셀 값에 컨볼루션 커널의 해당 지점의 가중치를 곱한 후 합산하고, 오프셋을 더한 후 최종적으로 출력 이미지의 픽셀 값을 얻는다. .
이미지는 그레이스케일 이미지와 컬러 이미지로 나누어지며 컨볼루션 커널은 단일 또는 다중이 될 수 있으므로 컨볼루션 연산은 다음 세 가지 상황으로 나눌 수 있습니다.

1.1 단일 채널 입력, 단일 컨볼루션 커널

여기서 단일 채널이란 입력이 회색조 이미지이고, 단일 컨볼루션 커널 값을 갖는 컨볼루션 커널의 개수가 1개라는 의미입니다.

여기에 이미지 설명을 삽입하세요.

위는 5x5x1 회색조 이미지입니다. 1은 단일 채널을 의미하고, 5x5는 해상도를 의미하며, 5행과 5열의 회색조 값이 있습니다. 3x3x1 컨볼루션 커널을 사용하여 이 5x5x1 회색조 이미지를 컨볼루션하고 바이어스 항 b=1인 경우 컨볼루션 계산은 다음과 같습니다. (-1)x1+0x0+1x2+(-1)x5+0x4+ 1x2+(-1 )x3+0x4+1x5+1=1(오프셋 1을 추가하는 것을 잊지 않도록 주의하세요).

1.2 다중 채널 입력, 단일 컨볼루션 커널

대부분의 경우 입력 영상은 RGB 3가지 색상으로 구성된 컬러 영상이며, 입력 영상에는 Red, Green, Blue 3개의 데이터 레이어가 포함되어 있으며, 컨볼루션 커널의 깊이(채널 수)는 컨볼루션 커널의 수와 같아야 합니다. 3x3x3 컨볼루션 커널의 경우 마지막 3개는 입력 이미지와 일치하는 3개의 채널을 나타내므로 이 컨볼루션 커널에는 3개의 채널이 있습니다. 각 채널은 최적화할 9개의 매개변수를 무작위로 생성합니다 . 총 3개가 있습니다. 27개의 매개변수를 최적화하고 바이어스를 설정합니다. b를 설정합니다.

여기에 이미지 설명을 삽입하세요.

참고: 이는 여전히 단일 컨볼루션 커널의 경우이지만 컨볼루션 커널은 여러 채널을 가질 수 있습니다. 기본적으로 컨볼루션 커널의 채널 수는 입력 이미지의 채널 수와 같습니다.

1.3 다중 채널 입력, 다중 컨볼루션 커널

다중 채널 입력 및 다중 컨볼루션 커널은 심층 신경망의 가장 일반적인 형태입니다. 다중 채널 입력 및 다중 컨볼루션 커널을 사용하는 경우를 나타냅니다. 그러면 컨볼루션 프로세스는 실제로 매우 간단합니다. 3채널 입력과 2개의 컨볼루션 커널을 예로 들어 보겠습니다 .

(1) 먼저 컨벌루션 커널을 꺼내서 3채널 입력과 컨볼루션하면 이 과정은 다 채널 입력, 단일 컨볼루션 커널과 동일하며 1채널 출력 출력1을 얻는다. 또한 두 번째 컨볼루션 커널을 꺼내 동일한 연산을 수행하여 두 번째 출력 Output2를 얻습니다.
(2) 동일한 크기의 출력1과 출력2를 스택하여 2채널 출력 출력을 얻습니다.

보다 직관적으로 이해하기 위해 다음 다이어그램이 제공됩니다.

여기에 이미지 설명을 삽입하세요.
그림에 X:[1,h,w,3]을 입력한다는 것은 높이가 h이고 너비가 w인 3채널 그림을 입력한다는 의미입니다.
컨볼루션 커널 W:[k,k,3,2]는 컨볼루션 커널 크기가 3*3, 채널 수는 3, 수는 2라는 의미입니다.

요약:
(1) 컨볼루션 연산 후 출력 채널 수 = 컨볼루션 커널 수
(2) 컨볼루션 커널 수와 컨볼루션 커널의 채널 수는 서로 다른 개념입니다. 각 계층의 컨볼루션 커널 개수는 네트워크를 설계할 때 주어지지만, 컨볼루션 커널의 채널 개수는 반드시 주어지지는 않습니다. 기본적으로 컨볼루션 커널의 채널 수 = 입력 채널 수입니다 . 이는 컨볼루션 작업의 필수 조건 이기 때문입니다 .

(3) 바이어스 수 = 컨볼루션 커널 수

1.4 패딩

컨볼루션 작업 후 만족스러운 출력 이미지 크기를 얻기 위해 패딩을 사용하여 입력을 채우는 경우가 많습니다. 기본적으로 이미지 주위에는 0이 채워집니다.

(1) All-zero padding padding='same'
same을 사용하면 원본 이미지는 자동으로 모두 0으로 채워지며, step size가 1이면 출력 이미지가 입력 이미지 크기와 일치하는지 확인할 수 있습니다.
출력 크기 계산 공식: 입력 길이/단계 크기(반올림)
는 TensorFlow에서 다음과 같이 구현됩니다. (여기서 컨볼루션 커널 수: 48, 컨볼루션 커널 크기: 3, 단계 크기: 1, 전체 패딩은 예시로 들었습니다)

layers.Conv2D(48, kernel_size=3, strides=1, padding='same')

(2) No padding padding='valid'
valid를 사용하면 padding 없이 바로 convolution을 수행하는데, 이는layers.Conv2D()의 기본 방식입니다.
출력 크기 계산 공식: ( 입력 길이 - 코어 길이) / 단계 크기 + 1(반내림)
TensorFlow의 구현은 다음과 같습니다.

layers.Conv2D(48, kernel_size=3, strides=1, padding='valid')

(3) 커스텀 채우기는
일반적으로 상하좌우 4방향에서 채워지며, 왼쪽과 오른쪽 채우기의 열 수 pw p_wpw​는 일반적으로 동일하고, 위쪽 및 오른쪽 채우기의 행 수 ph p_hph​는 바닥 채우기도 동일해야합니다. 아래 그림과 같이:
여기에 이미지 설명을 삽입하세요.출력
크기 계산 공식:

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

이 중 h와 w는 원본 이미지의 높이와 너비, k는 컨볼루션 커널의 크기, s는 단계 크기입니다.

TensorFlow2.0에서 사용자 정의 패딩 프로세스 중 패딩 매개변수 설정 형식은 다음과 같습니다.
padding=[ [0, 0], [upper, lower], [left, right], [0, 0] ]

# 例如要在上下左右各填充一个单位,实现如下:
layers.Conv2D(48, kernel_size=3, strides=1, padding=[[0,0], [1,1], [1,1], [0,0]])

2. 풀링 레이어

풀링은 다음과 같이 작동합니다."

1. 컨벌루션 신경망은 특징의 국소적 불변성을 보장하기 위해 특징을 추출합니다.

2. 풀링 작업은 차원과 매개변수 수를 줄일 수 있습니다.

3... 풀링 작업 최적화는 비교적 간단합니다.

컨벌루션 레이어에서는 단계 매개변수 s를 조정하여 특징 맵의 높이와 너비를 두 배로 늘릴 수 있으므로 네트워크의 매개변수 수를 줄일 수 있습니다. 실제로 단계 크기를 설정하는 것 외에도 크기 축소 기능을 달성할 수 있는 특수 네트워크 계층도 있는데, 이것이 바로 우리가 소개할 풀링 계층입니다.

풀링 레이어 역시 지역 상관(Local Correlation) 개념을 기반으로 하며 지역적으로 관련된 요소 집합에서 정보를 샘플링하거나 집계하여 새로운 요소 값을 얻습니다. 일반적으로 다운샘플링을 위해 두 가지 유형의 풀링을 사용합니다.
(1) Max Pooling - 로컬 관련 요소 집합에서 가장 큰 요소 값을 선택합니다.
(2) 평균 풀링(Average Pooling) , 로컬 관련 요소 집합에서 평균값을 계산하여 반환합니다.

3. 활성화 기능

활성화 함수 역시 신경망에서 없어서는 안 될 부분으로, 비선형 인자를 추가하고 네트워크 표현 능력을 향상시키기 위해 활성화 함수를 사용하며, 가장 많이 사용되는 컨벌루션 신경망은 ReLU이며, Sigmoid는 덜 자주 사용된다.

5.12구체적으로 적절한 활성화 함수를 선택하는 방법입니다. 이 블로그 게시물 인 신경망 구성: 활성화 기능 요약 또는 위의 소개를 참조할 수 있습니다 .

4. 완전 연결 레이어

완전 연결 계층 FC는 각 뉴런이 전후의 인접한 계층의 모든 뉴런과 연결 관계를 갖기 때문에 완전 연결이라고 불립니다. 아래 그림과 같이 간단한 2계층 완전 연결형 네트워크로, 입력이 특징이고 출력이 예측 결과입니다.

여기에 이미지 설명을 삽입하세요.
완전 연결 레이어의 매개변수는 직접 계산할 수 있으며 계산 공식은 다음과 같습니다.

여기에 이미지 설명을 삽입하세요.
위와 같이 구축된 2계층 완전 연결 네트워크에 따르면, 단 28x28=784의 해상도로 흑백 이미지를 훈련하려면 거의 400,000개의 매개변수를 최적화해야 합니다. 실제 고해상도 컬러 이미지는 더 많은 픽셀을 가지며 빨간색, 녹색, 파란색의 3채널 정보를 포함합니다. 최적화할 매개변수가 너무 많으면 모델 과적합이 쉽게 발생할 수 있습니다. 이러한 현상을 피하기 위해 실제 애플리케이션에서는 일반적으로 원본 이미지가 완전히 연결된 네트워크에 직접 공급되지 않습니다.
실제 응용에서는 원본 이미지에서 컨벌루션 특징을 추출하고 추출된 특징을 완전 연결 네트워크에 공급한 다음 완전 연결 네트워크에서 분류 평가 값을 계산합니다.

5. 네트워크 매개변수량 및 계산량

컨볼루션 레이어 매개변수/컨볼루션 계산량

컨볼루션 매개변수 = 컨볼루션 커널 길이 x 컨볼루션 커널 너비 x 입력 채널 수 x 출력 채널 수 + 출력 채널 수(바이어스)
컨볼루션 계산량 = 출력 데이터 크기 x 컨볼루션 커널 크기 x 입력 채널 수

예: 입력: 224x224x3, 출력: 224x244x64, 컨볼루션 커널: 3x3

  • 매개변수 개수 = 3x3x3x64+64
  • 계산량 = 224x224x64x3x3x3

컨벌루션 레이어:

예를 들어, 입력은 컨볼루션 레이어를 통과하는 32x32x3 컬러 이미지입니다.

layers.Conv2D(100, kernel_size=3, strides=1, padding='same')

(1) 네트워크 매개변수의 양은
주로 컨볼루션 커널의 매개변수와 편향의 매개변수입니다: 3x3x3x100+100=2800

(2) 계산량 FLOPS
딥러닝 프레임워크에서의 FLOP 개념: 부동소수점 연산, 즉 부동소수점 연산의 횟수.
{32x32x[3x3+(3x3-1)]x3+32x32x(3-1)}x100

완전 연결 레이어:

예를 들어 첫 번째 레이어의 노드 수는 5개이고 두 번째 레이어의 노드 수는 10개입니다. 네트워크 매개변수와 계산량 FLOPS를 구합니다.

(1) 네트워크 매개변수
네트워크 매개변수의 주요 소스는 뉴런 연결 가중치와 편향 입니다 : 5x10+10=60

(2) 계산량 FLOPS
5x10+10=60
2015년 Google 연구원 Sergey 등은 매개변수 표준화를 기반으로 BN 레이어를 설계했습니다 . BN 레이어가 제안된 후 다양한 딥 네트워크 모델에서 널리 사용되어 네트워크 하이퍼파라미터 설정이 더 자유로워지고 네트워크 수렴 속도가 빨라지고 성능이 향상되었습니다. 자세한 내용은 신경망 구성: BN 레이어를
참조하세요.

6. 컨벌루션 신경망 훈련:

기본 교육 과정:

1단계: 난수를 사용하여 모든 컨볼루션 커널 및 매개변수/가중치 초기화

2단계: 훈련 이미지를 입력으로 취하고 순방향 단계(콘볼루션, ReLU, 완전 연결 계층의 풀링 및 순방향 전파 )를 수행하고 각 범주의 해당 출력 확률을 계산합니다.

3단계: 출력 레이어의 총 오류 계산

4단계: 역전파 알고리즘은 모든 가중치에 대한 오차의 기울기를 계산하고, 기울기 하강법을 사용하여 모든 컨볼루션 커널과 매개변수/가중치의 값을 업데이트하여 출력 오차를 최소화합니다.

참고: 컨볼루션 커널 수, 컨볼루션 커널 크기, 네트워크 아키텍처와 같은 매개변수는 1단계 이전에 고정되어 있으며 훈련 과정 중에 변경되지 않습니다. 컨볼루션 커널 행렬과 뉴런 가중치만 업데이트됩니다 .

5.14

다층 신경망과 마찬가지로 컨벌루션 신경망의 매개변수 훈련 역시 오류 역전파 알고리즘을 사용하며 , 풀링 층의 훈련에 있어서는 풀링 층이 다층 형태로 변경된다는 점을 다시 한 번 언급할 필요가 있다. - 레이어 신경망.

5.16

5.15

컨볼루셔널 레이어를 다층 신경망 형태로 변경

5.17

CNN은 다음과 같이 자세히 해결합니다.

CNN은 본질적으로 입력-출력 매핑(input-to-output mapping)으로, 알려진 패턴을 사용하는 한 입력과 출력 사이에 정확한 수학적 표현이 필요 없이 입력과 출력 사이의 수많은 매핑 관계를 학습할 수 있습니다. 네트워크에는 입력과 출력 쌍 간의 매핑 기능이 있습니다.

컨벌루션 네트워크는 지도 학습을 수행하므로 샘플 세트는 (입력 벡터, 이상적인 출력 벡터) 형식의 벡터 쌍으로 구성됩니다. 이러한 모든 벡터 쌍은 시뮬레이션할 네트워크의 실제 "실행 중인" 구조에서 파생되어야 하며 실제 실행 중인 시스템에서 수집할 수 있습니다.

1) 매개변수 초기화:

훈련을 시작하기 전에 모든 가중치는 다른 임의의 숫자로 초기화되어야 합니다. "작은 난수"는 과도한 가중치로 인해 네트워크가 포화 상태에 들어가 훈련 실패를 초래하지 않도록 하기 위해 사용되며, "다르다"는 네트워크가 정상적으로 학습할 수 있도록 하기 위해 사용됩니다. 실제로 동일한 숫자를 사용하여 가중치 행렬을 초기화하면 네트워크에는 학습 능력이 없습니다.

2) 훈련 과정은 4단계로 구성됩니다.

① 첫 번째 단계: 순전파 단계

  • 샘플 세트에서 샘플을 가져와 네트워크에 입력합니다.
  • 해당 실제 출력을 계산합니다. 이 단계에서는 정보가 단계별 변환을 통해 입력 계층에서 출력 계층으로 전달됩니다. 이 프로세스는 훈련 완료 후 정상적인 실행 중에 네트워크에서 수행되는 프로세스이기도 합니다.

② 두 번째 단계: 역전파 단계

  • 실제 출력과 해당하는 이상적인 출력 간의 차이를 계산합니다.

  • 오차를 최소화하는 방법에 따라 가중치 행렬을 조정

    네트워크의 훈련 과정은 다음과 같습니다.

  1. 훈련 그룹을 선택하고 훈련 그룹으로 샘플 세트에서 N개의 샘플을 무작위로 찾습니다.
  2. 각 가중치와 임계값을 0에 가까운 작은 임의의 값으로 설정하고 정확도 제어 매개변수와 학습률을 초기화합니다.
  3. 훈련 그룹에서 입력 패턴을 가져와 네트워크에 추가하고 목표 출력 벡터를 제공합니다.
  4. 중간 계층 출력 벡터를 계산하고 네트워크의 실제 출력 벡터를 계산합니다.
  5. 출력 벡터의 요소와 목표 벡터의 요소를 비교하여 출력 오류를 계산합니다. 중간 계층의 은닉 유닛에 대해서도 오류를 계산해야 합니다.
  6. 각 가중치의 조정량과 임계값의 조정량을 차례로 계산합니다.
  7. 가중치와 임계값을 조정합니다.
  8. M을 경험한 후 지표가 정확도 요구사항을 충족하는지 판단하고, 그렇지 않으면 (3)으로 돌아가 반복을 계속하고, 만족되면 다음 단계로 진행한다.
  9. 훈련이 끝나면 가중치와 임계값이 파일에 저장됩니다. 이때 각 가중치가 안정에 도달하여 분류기가 형성되었다고 볼 수 있다. 다시 훈련하려면 초기화 없이 훈련용 파일에서 직접 가중치와 임계값을 내보내세요.

8. 클래식 네트워크 소개:

여기에 사진 설명을 쓰세요

  • 르넷-5

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

뉴런 수 =
컨볼루션 커널 수 )
수렴 레이어의 학습 가능한 매개변수 수 =
컨볼루션 커널 수 커널 너비
커널 높이 + 1) (출력 특징 맵 크기는 1X1)

  • 알렉스넷

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

  • 인셉션 네트워크

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

  • 잔여 네트워크
  • 여기에 이미지 설명을 삽입하세요.
자세한 네트워크 소개는 다음 문서를 참조하세요.
컨볼루셔널 신경망에 대한 매우 상세한 소개_Dumb Cat's Blog-CSDN 블로그_컨볼루셔널 신경망

CNN 요약

이 기사를 연구하기 위한 참고 자료:

심해에서의 딥러닝-Task04 컨볼루셔널 신경망 CNN_GoAl's Blog-CSDN Blog

CNN의 가치:

  1. 결과에 영향을 주지 않고 대용량 데이터 볼륨의 차원을 작은 데이터 볼륨으로 효과적으로 줄일 수 있습니다.
  2. 인간의 시각 원리와 유사한 이미지의 특성을 유지할 수 있음

CNN의 기본 원리:

  1. 컨볼루셔널 레이어 - 주요 기능은 이미지의 특성을 보존하는 것입니다.
  2. 풀링 레이어 – 주요 기능은 데이터의 차원을 줄여 과적합을 효과적으로 방지하는 것입니다.
  3. 완전 연결 레이어 – 다양한 작업을 기반으로 원하는 결과를 출력합니다.

CNN의 실제 적용:

  1. 이미지 분류 및 검색
  2. 표적 위치 감지
  3. 타겟 세분화
  4. 얼굴 인식
  5. 해골 인식

9. RNN 순환 신경망

img

img

img

img

RNN의 기본 원리

전통적인 신경망의 구조는 상대적으로 간단합니다. 입력 계층 – 숨겨진 계층 – 출력 계층. 아래 그림과 같이:

전통적인 신경망

RNN과 기존 신경망의 가장 큰 차이점은 매번 이전 출력 결과를 다음 숨겨진 레이어로 가져와 함께 훈련한다는 것입니다. 아래 그림과 같이:

RNN 차이

RNN 학습 자료 참조:

Dahua 순환 신경망(RNN)

10. LSTM 장단기 기억 신경망

1 LSTM 생성 이유

RNN은 장기적인 종속성(시계열에서 멀리 떨어져 있는 노드)을 처리할 때 큰 어려움에 직면하게 됩니다. 왜냐하면 먼 노드 간의 연결을 계산하려면 야코비 행렬의 여러 곱셈이 포함되어 그래디언트가 사라지기 때문입니다. 경사 확장 현상. 가장 성공적이고 널리 사용되는 것은 Gated RNN이고, LSTM은 Gated RNN 중 가장 유명한 것입니다. Leaky Unit을 사용하면 RNN이 연결 간의 가중치 계수를 설계하여 먼 노드 간의 장기 연결을 축적할 수 있지만 임계값 RNN은 이 아이디어를 일반화하여 계수가 서로 다른 시간에 변경되도록 허용하고 네트워크가 현재 축적된 정보.

2 RNN과 LSTM의 차이점

모든 RNN은 반복되는 신경망 모듈 체인의 형태를 갖습니다. 표준 RNN에서 이 반복 모듈은 아래 그림과 같이 tanh 레이어와 같은 매우 간단한 구조만 갖습니다.

img

LSTM은 동일한 구조를 가지고 있지만 반복되는 모듈은 다른 구조를 가지고 있습니다. 단일 신경망 계층 대신 4개의 신경망 계층이 매우 구체적인 방식으로 상호 작용합니다.

img

참고: 위 그림에 있는 아이콘의 구체적인 의미는 다음과 같습니다.

img

위 그림에서 각 검정색 선은 한 노드의 출력에서 ​​다른 노드의 입력으로 전체 벡터를 전송합니다. 분홍색 원은 벡터의 합과 같은 점별 연산을 나타내고, 노란색 행렬은 학습된 신경망 계층입니다. 모인 선은 벡터의 연결을 나타내고, 분리된 선은 복사된 후 다른 위치에 배포되는 콘텐츠를 나타냅니다.

3 LSTM 코어

LSTM은 일반적으로 셀 상태에 정보를 제거하거나 추가할 수 있는 "게이트"라고 알려진 구조를 가지고 있습니다. 게이트는 정보가 선택적으로 통과하도록 하는 방법입니다. 여기에는 시그모이드 신경망 계층과 점별 곱셈 연산이 포함되어 있습니다. 개략도는 다음과 같습니다.

img

LSTM에는 셀 상태를 보호하고 제어하기 위해 잊어버린 게이트, 입력 레이어 게이트 및 출력 레이어 게이트라는 세 가지 게이트가 있습니다.

방문 문은 잊어 버리세요

대상 개체: 셀 상태.

기능: 셀 상태의 정보를 선택적으로 잊어버립니다.

작동 단계: 게이트는 ht−1 및 xt를 읽고 셀 상태 Ct−1의 각 숫자에 대해 0과 1 사이의 값을 출력합니다. 1은 "완전히 유지"를 의미하고 0은 "완전히 폐기"를 의미합니다. 개략도는 다음과 같습니다.

img

입력 층 문

대상: 셀 상태

기능: 세포 상태에 새로운 정보를 선택적으로 기록합니다.

단계:

첫 번째 단계에서는 "입력 게이트 레이어"라고 불리는 시그모이드 레이어가 업데이트할 값을 결정합니다.

2단계: tanh 레이어는 새로운 후보 값 벡터 C~t를 생성하고 이를 상태에 추가합니다. 개략도는 다음과 같습니다.

img

3단계: ct−1을 ct로 업데이트합니다. 이전 상태에 ft를 곱하고 버려야 한다고 알고 있는 정보를 버리세요. 그런 다음 *C~t를 추가하여 각 상태를 업데이트하기로 결정한 정도에 따라 변경되는 새로운 후보 값을 얻습니다. 개략도는 다음과 같습니다.

img

출력 레이어 게이트

대상 개체 : 숨겨진 레이어 ht

기능: 출력할 값을 결정합니다.

단계:

1단계: 시그모이드 레이어를 사용하여 셀 상태의 어느 부분이 출력될지 결정합니다.

2단계: tanh를 통해 셀 상태를 처리한 후 시그모이드 게이트의 출력과 곱하여 최종적으로 출력을 결정하는 부분만 출력하게 됩니다.

개략도는 다음과 같습니다.

img

img

LSTM 및 GRU에 대해 알아보려면 내 기사(https://blog.csdn.net/qq_36816848/article/details/121616301)를 참조하세요.

img


인터뷰 요약:

알고리즘 면접 관련
  1. 알고리즘 사후 작업 요약 https://zhuanlan.zhihu.com/p/95922161
  2. 인공지능 실기 면접 학습 로드맵 https://github.com/tangyudi/Ai-Learn
  3. Baimen Machine Learning의 모델 평가 https://zhuanlan.zhihu.com/p/78603645
  4. 기계 학습을 위한 기능 엔지니어링 https://github.com/HadXu/feature-engineering-for-ml-zh
  5. 딥 러닝 500가지 질문 https://github.com/scutan90/DeepLearning-500-questions
  6. 딥러닝 MugenKnock https://github.com/yoyoyo-yo/DeepLearningMugenKnock
  7. 컴퓨터 비전 지식 포인트 요약 https://zhuanlan.zhihu.com/p/58776542
  8. 딥러닝 이력서 분야에서 가장 눈길을 끄는 성과 https://zhuanlan.zhihu.com/p/315605746
  9. 알고리즘 엔지니어 기술 로드맵 https://zhuanlan.zhihu.com/p/192633890?utm_source=wechatTimeline_article_bottom&from=timeline

**리버스 면접: **https://github.com/yifeikong/reverse-interview-zh 기술면접 마지막에 면접관에게 물어볼 내용

추천 관련 정보:
  1. 알고리즘 사후 작업 요약 https://zhuanlan.zhihu.com/p/95922161
  2. 인공지능 실기 면접 학습 로드맵 https://github.com/tangyudi/Ai-Learn
  3. Baimen Machine Learning의 모델 평가 https://zhuanlan.zhihu.com/p/78603645
  4. 기계 학습을 위한 기능 엔지니어링 https://github.com/HadXu/feature-engineering-for-ml-zh
  5. 딥 러닝 500가지 질문 https://github.com/scutan90/DeepLearning-500-questions
  6. 딥러닝 MugenKnock https://github.com/yoyoyo-yo/DeepLearningMugenKnock
  7. 컴퓨터 비전 지식 포인트 요약 https://zhuanlan.zhihu.com/p/58776542
  8. 딥러닝 이력서 분야에서 가장 눈길을 끄는 성과 https://zhuanlan.zhihu.com/p/315605746
  9. 알고리즘 엔지니어 기술 로드맵 https://zhuanlan.zhihu.com/p/192633890?utm_source=wechatTimeline_article_bottom&from=timeline
이 기사에 대한 참고 자료:

Ng Enda 선생님의 딥러닝 강좌 노트

컨볼루셔널 신경망 - 실습형 딥 러닝 2.0.0

작은 발걸음이 쌓이지 않으면 천 리도 갈 수 없어요! -CSDN 블로그

5만 단어 요약, 딥러닝의 기초. _AI Hao-CSDN 블로그

딥 러닝 입문 노트 - 나는 관샤오량입니다 CSDN 블로그

위 내용은 아직 완성되지 않아 업데이트가 필요합니다.개인 공부용이므로 침해시 연락주시고 삭제해주세요!

Supongo que te gusta

Origin blog.csdn.net/qq_43842093/article/details/135278842
Recomendado
Clasificación