Convolutional
Neural Networks—CNN은 기본적으로 기존 신경망의 개념과 일치하지만 입력의 공간 구조를 더 잘 보존할 수 있기 때문에 Convolutional 레이어를 훈련해야 한다는 차이점이 있습니다.
앞서 Fully Connected Layer의 개념에 대해 언급한 바 있는데, 32×32×3 크기의 포토 픽셀을 추출하고 확장하여 3072 차원의 벡터를 얻고 여기에 10×3072 가중치 행렬을 곱하여 활성화 값을 구합니다.
컨볼루션 레이어와 완전 연결 레이어의 주요 차이점은 컨볼루션 레이어가 공간 구조를 보존할 수 있다는 것입니다.예를 들어 위의 그림은 더 이상 성장 벡터로 확장하지 않고 그림의 구조를 유지합니다.우리의 가중치 W는 일부 작은 컨볼루션 커널(가중치 필터라고도 함)에 대해 전체 이미지 위로 슬라이드하여 각 공간 위치의 내적 결과를 계산합니다. 즉, 컨볼루션 커널의 각 위치 요소에 해당 이미지 영역의 픽셀 값을 곱합니다. 바이어스 항을 추가합니다. 내적 연산을 수행할 때 5×5×3 블록과 해당 입력 데이터를 벡터로 변환하고 각 공간 위치의 해당 요소를 곱하고 더합니다.
컨볼루션 커널을 슬라이드하고 모든 공간 위치를 트래버스하려면 어떻게 해야 합니까? 왼쪽 위 모서리에서 컨볼루션 커널을 시작하고 모든 입력 픽셀을 트래버스하도록 합니다. 각 내적 연산은 출력 활성화 맵에서 생성됩니다. 값을 지정한 후 계속 가장 쉬운 방법은 픽셀 단위로 슬라이드하고 그에 따라 출력 활성화 맵을 채우거나 다른 크기를 얻기 위해 매번 두 픽셀을 슬라이드하는 것과 같은 다른 슬라이딩 방법입니다.
컨볼루션 레이어를 다룰 때 각각의 컨볼루션 커널은 입력으로부터 특별한 패턴이나 개념을 얻을 수 있기 때문에 다양한 컨볼루션 커널을 사용하고자 하는 경우가 많습니다. 그래서 우리는 28×28×6 크기(각각 28×28×1 크기)의 6개의 레이어로 된 활성화 맵을 얻습니다.
컨볼루션 신경망은 기본적으로 여러 컨볼루션 레이어의 시퀀스입니다.입력 후 최종 결과를 출력하기 전 그림의 중간 결과가 컨볼루션 레이어입니다.이전 신경망에서와 같이 순차적으로 쌓입니다.스태킹은 간단합니다. 의 선형 레이어와 마찬가지로 활성화 함수를 사용하여 하나씩 처리하고 ReLU, Conv 및 풀링 레이어와 같은 것을 얻은 다음 일련의 이러한 레이어를 얻습니다. 각 레이어에는 다음과 같이 사용되는 출력이 있습니다. 다음 컨볼루션 계층에 대한 입력입니다.
아래 그림의 28×28×6 컨볼루션 레이어는 6개의 컨볼루션 커널로 얻은 6개의 28×28×1 활성화 맵으로 구성됩니다.
이러한 레이어는 여러 컨볼루션 커널을 사용하며 각 컨볼루션 커널은 활성화 맵을 생성합니다.최종 결과는 이 컨볼루션 커널 집합에 대한 학습을 완료한 것입니다.이전 컨볼루션 커널은 일반적으로 일부 낮은 수준의 이미지 기능을 나타냅니다.예를 들어, 가장자리 기능과 중간 레이어의 경우 모서리 및 반점과 같은 좀 더 복잡한 이미지 기능을 얻을 수 있으며 이러한 고급 기능의 경우 반점보다 더 풍부한 것을 얻을 수 있습니다.
일반적으로 컨볼루션 신경망은 실제로 입력 영상이 여러 레이어를 거치는데 첫 번째는 컨볼루션 레이어, 그 다음은 보통 ReLU와 같은 비선형 레이어, 그 다음이 Conv ReLU 레이어, 그 다음이 풀링 레이어입니다. 나중에 소개합니다. 이러한 측정은 활성화 맵의 샘플링 크기를 크게 줄입니다.이러한 프로세스 후 컨볼루션 네트워크의 마지막 레이어가 출력되고 모든 컨볼루션 출력은 이전에 본 완전히 연결된 레이어와 연결되어 최종 점수 함수를 얻는 데 사용됩니다. 즉, 고정된 크기의 행렬은 자신의 길이, 너비, 높이를 알고 평탄화하여 순진한 신경망 벡터로 1차원 벡터를 얻고 모든 내용을 모아 이 정보를 기반으로 어떤 결론을 얻습니다.
입력 크기를 동일하게 유지하기 위해 이미지의 바깥쪽 원을 0으로 채워 전체 크기 출력을 유지할 수 있습니다. 앞서 언급한 바와 같이 이미지가 여러 개의 레이어를 가지는 경우 제로 패딩이나 다른 형태의 패딩을 수행하지 않으면 레이어 수가 증가함에 따라 출력 이미지의 크기가 급격하게 줄어들어 일부 정보가 손실되고 몇 가지 값 원본 이미지는 이미지가 작아질 때마다 이미지 모서리에 대한 더 많은 정보가 손실됩니다.
예를 들어보자 32×32×3 그림이 입력되고 채우기 너비가 2이고 단계 크기가 1일 때 10개의 5×5 컨볼루션 커널을 사용하면 출력 이미지의 크기는 얼마 입니까? 32 32 10
레이어에 몇 개의 매개변수가 있습니까? —> 5×5 컨볼루션 커널이 10개 있고 깊이 3이 내포되어 있고 실제 사용하는 편향항이 있기 때문에 답은 10×(5×5×3+1)=760이다.
다음은 일부 컨볼루션 레이어의 매개변수에 대한 요약입니다.
풀링 레이어의 개념은 앞서 언급한 바 있는데, 풀링 레이어가 해야 할 일은 생성된 표현을 더 작게 만들고 제어하기 쉽게 만드는 것, 즉 다운샘플링입니다. 풀링하고 비행기에서만하십시오.
가장 일반적인 방법은 최대 풀링 방법으로 다음 파티클에서 풀링 레이어는 컨볼루션 커널의 크기를 가지며 2×2 필터(컨볼루션 커널 또는 풀러)를 사용하고 stride를 2로 설정하면 필터는 전체 입력 부분을 통과하고 최대값만 취합니다. 풀링 레이어의 일반적인 설정은 2×2 컨볼루션 커널과 2의 스트라이드 또는 3×3 + 3입니다. 왜 평균 등 대신에 가장 일반적으로 사용되는 최대 풀링입니까?
최대 풀링의 의미는 여기에 일부 뉴런의 활성화 값이 있고 각 값은 이 위치에서 특정 뉴런의 여기 정도 또는 특정 컨볼루션 커널의 여기 정도를 어느 정도 나타내기 때문입니다. 최대 풀링은 이미지의 어느 영역에서 컨볼루션 커널이 얼마나 들뜨고 있는지를 나타내는 지표라고 생각하면 되므로 감지, 인식 등의 작업을 하고자 한다면 최대 풀링이 더 직관적이고, 최대값 .
또한 풀링 레이어에서는 일반적으로 제로 패딩이 수행되지 않는다는 점에 유의하세요. 풀링 레이어는 다운샘플링만 수행하므로 컨볼루션 커널이 가장자리 부분을 스윕할 때 입력 범위를 초과하지 않도록 합니다.
학습 신경망 - 활성화 함수, 데이터 전처리, 가중치 초기화, 배치 정규화, 학습 프로세스 모니터링, 하이퍼파라미터 최적화
활성화 함수
는 앞서 소개한 특정 레이어가 출력을 생성하는 방법, 데이터를 입력하는 방법, 완전 연결 레이어 또는 컨볼루션 레이어에서, 입력에 가중치 값을 곱한 다음 그 결과를 활성화 함수 또는 비선형 단위에 입력합니다.여기서 다양한 비선형 함수를 도입하고 가중치를 적용합니다.
첫 번째는 입력을 0에서 1로 변환하는 시그모이드 함수로 뉴런의 포화 "발사 속도"로 잘 해석될 수 있기 때문에 역사적으로 널리 사용되었습니다.
그러나 세 가지 단점이 있습니다: 1. 입력된 양수가 너무 크거나 음수가 너무 작으면 포화 뉴런의 기울기가 쉽게 사라지고 체인 규칙 후에 기울기 흐름이 사라집니다. 0 기울기는 다운스트림 노드로 전달됩니다 2. 0이 아닌 중심 기능입니다. 계산 그래프의 노드를 생각해보면 모든 입력 매개변수를 활성화 함수 연산에 전달하고 결과를 출력한 다음 W의 기울기를 찾을 때 xi의 값이 모두 양수일 때 로컬 기울기는 실제로 x 자체에 활성화 함수를 곱한 값 Sigmoid 함수의 도함수는 양수여야 하고 xi는 모두 양수이므로 로컬 기울기는 모두 양수이고 W의 기울기는 로컬 기울기 곱하기 업스트림 기울기이므로 기울기는 의 W는 업스트림 기울기 부호를 통과하므로 W의 기울기는 모두 양수이거나 모두 음수입니다.이 방법은 기울기 업데이트에 매우 비효율적입니다.그 이유는 아래 그림에서 볼 수 있습니다.3. 지수 함수를 사용합니다
. 계산 비용이 약간 더 높지만 일반적으로 주요 문제는 아닙니다.
그런 다음 0이 아닌 중심 함수의 문제를 해결하는 tanh 함수가 있지만 그래디언트 소실 문제는 여전히 존재합니다.
이전 예제에서 사용된 ReLU 함수는 fx=max(0,x)로 매우 단순하며 우리가 자주 사용하는 함수로 양수 영역에서 그래디언트 소실 문제가 없고 계산 비용이 높음, 계산 속도는 처음 두 개보다 약 6배 빠르며 생물학과 더 일치합니다.
하지만 그 문제는 더 이상 0을 중심으로 하지 않는다는 것과 음의 반 축에서 기울기가 사라지는 문제를 dead ReLU라고 하는데, 초기화가 잘못되었거나 학습률이 너무 높으면 이런 일이 일어나기 쉽습니다. 사실, 네트워크에서 10%-20%는 죽은 ReLU 단위입니다.실제로 사람들은 초기화 중에 활성화될 가능성을 높이고 일부 업데이트를 얻기 위해 작은 양의 편향으로 ReLU를 초기화하는 것을 좋아하지만 이것은 기본적으로 더 많은 것을 허용하기 위한 것입니다. ReLU는 초기에 편향 항을 방전할 수 있으며 많은 사람들도 이것이 유용하지 않다고 생각합니다.
다른 하나는 ReLU의 최적화 버전인 Leaky ReLU인데, 유일한 차이점은 음의 구간에 약간의 기울기를 주어 앞에서 언급한 문제를 해결하고 여전히 계산이 효율적이라는 것입니다.
또 다른 예를 들자면 매개변수 정류기를 PReLU라고 하는데 Leaky ReLU와 매우 유사하다. 더 높은 유연성.
ELU라고 하는 지수 선형 단위도 있는데 ReLU의 장점을 모두 가지고 있고 평균 출력값이 0에 가까운 점도 장점이지만(PReLU도 이 효과를 낼 수 있음) Leaky와 비교하면 ReLU, ELU는 음의 구간에서 기울어지지 않습니다.사실, 음의 포화 메커니즘을 확립하면 어떤 사람들은 이것이 모델을 노이즈에 더 강인하게 만든다고 생각합니다.
ReLU와 Leaky ReLU를 일반화하는 데 사용되는 최대 출력 뉴런도 있습니다.
위의 내용을 요약하면 ReLU를 사용하는 것이 가장 좋습니다. Leaky ReLU, Maxout 및 ELU는 여전히 실용적이지 않습니다.
데이터 전처리
일반적으로 우리는 입력 데이터에 대해 항상 전처리를 하고자 합니다.일반적인 유형은 제로 평균(중앙화)과 표준편차에 의한 정규화입니다.이의 의미는 다음 예제와 같이 이진 분류를 통과해야 한다는 것입니다. 이 점을 분리하면 왼쪽 그림의 점은 정규화되지 않고 중앙에 있으며 원점에서 멀리 떨어져 있지만 여전히 직선으로 분리할 수 있지만 선을 약간 회전하면 분류기가 파괴되므로 손실이 발생합니다. 왼쪽의 함수 가중치 행렬의 선형 분류기에서 작은 섭동에 민감하며 동일한 함수를 나타낼 수 있지만 손실이 매개 변수 벡터에 매우 민감하기 때문에 딥 러닝을 훨씬 더 어렵게 만듭니다. 오른쪽의 경우 데이터 세트를 사용할 때 데이터 포인트를 원점에 더 가깝게 이동하고 단위 분산을 축소하면 여전히 잘 분류할 수 있지만 선을 돌릴 때 손실 함수는 작은 섭동에 덜 민감합니다. 최적화를 더 쉽고 깊게 만드는 매개변수 값 Sensitive.
TIPS: 이런 상황은 선형 분류에만 있는 것이 아니라 신경망에서는 선형 행렬 곱셈이나 컨벌루션과 비선형 활성화 함수를 사용해야 하기 때문에 신경망에서 특정 계층의 입력 평균이 0이 아니거나 분산이 1이 아니면 이 레이어의 네트워크 가중치 행렬의 작은 플로팅 기회로 인해 이 레이어의 출력이 크게 플로팅되어 학습에 어려움을 겪게 됩니다. 우리는 정규화의 중요성을 이해하고 있기 때문에 중간에 활성화 값의 평균값이 0이고 분산이 1이 되도록 신경망에 레이어를 추가하는 배치 정규화의 개념을 다음과 같이 소개합니다.
딥 러닝에서는 위에서 언급한 매우 비효율적인 그래디언트 업데이트를 방지하기 위해 평균 0을 사용합니다. 일반적으로 각 위치의 이미지에 상대적으로 비슷한 범위와 분포가 제공되기 때문에 이 레슨에서는 이미지가 너무 많은 픽셀 값을 정규화하지 않습니다. . 기계 학습에는 이미지 응용 프로그램에서 거의 사용되지 않는 더 복잡한 PCA, 미백 등이 있습니다.
일반적으로 훈련 단계에서 평균 이미지를 결정하고 이를 테스트 데이터에 적용합니다. 일반적으로 이미지에 대해 제로 평균 전처리를 수행합니다. 방법은 그림에서 전체 평균 이미지 값을 빼는 것입니다. . 치수는 사진과 동일합니다. 네트워크에 전달하려는 각 이미지에 대해 평균 이미지 집합의 값을 빼 평균이 0인 전처리를 달성합니다. 테스트 그룹에서 우리는 똑같이 할 것입니다.
TIPS: Zero Meanization은 첫 번째 레이어에서 Sigmoid 함수의 0이 아닌 중심 문제만 해결하며 나중에 동일한 문제가 계속 발생합니다.
가중치 초기화
더 깊은 네트워크의 경우 가중치 초기화가 더 중요합니다. 네트워크 가중치를 초기화한 다음 기울기로 업데이트하는 방법, W를 0으로 초기화하면 어떻게 됩니까?
전체 신경망에는 동일한 방식으로 연결된 많은 뉴런이 있기 때문에 모두 동일한 업데이트를 갖고 동일한 작업을 수행하므로 문제가 됩니다.
따라서 w=0.01*np.random.randn(D,H)와 같이 작은 난수로 소유권 값을 초기화하도록 변경할 수 있습니다. (가중치와 그래디언트가 0에 가깝고 학습이 불가능함) 가중치가 너무 크게 설정되면 네트워크 포화가 발생할 수 있습니다. 값이 너무 크거나 너무 작으면 기울기가 사라지거나 값이 보존되지 않고 성장합니다.)
좋은 초기화 경험은 Xavier initialization (2010년 Glorot에서 발행한 논문)입니다.자세한 내용은 이 논문의 설명이나 주석을 참조하십시오. 산출. 다른 MSRA 초기화 방법도 더 좋습니다.
실제로 현재 권장 사항은 relu 단위를 사용하고 w = np.random.randn(n) * sqrt(2.0/n)을 사용하는 것입니다.
배치 정규화는
명시적으로 전체 네트워크의 활성화가 훈련 시작 시 단위 가우시안 분포를 나타내도록 강제하므로(단위 가우시안 활성화의 목적은 학습된 특징을 유지하면서 정규화를 허용하는 것임) 신경망을 올바르게 초기화하여 많은 문제를 완화합니다. 두통.
핵심 관찰은 정규화가 단순한 미분 가능 작업이기 때문에 이것이 가능하다는 것을 보여줍니다. 이 기술을 실제로 적용하는 것은 일반적으로 완전 연결 계층(또는 컨벌루션 계층) 뒤와 비선형성 앞에 BatchNorm 계층을 삽입하는 것과 같습니다. 링크된 문서에 잘 설명되어 있으므로 여기서는 이 기술을 확장하지 않지만 신경망에서 배치 정규화를 사용하는 것은 매우 일반적인 관행이 되었습니다. 실제로 배치 정규화를 사용하는 네트워크는 잘못된 초기화에 훨씬 더 강력합니다. 또한 배치 정규화는 네트워크의 각 계층에서 전처리로 해석될 수 있지만 차별화 가능한 방식으로 네트워크 자체에 통합됩니다. 기이!
배치 정규화의 아이디어는 입력을 제공한 다음 미니 배치의 평균을 계산하고 각 입력 미니 배치에 대해 이 작업을 수행한 다음 분산을 계산하고 입력 데이터를 평균과 분산으로 정규화한 다음 따라서 스케일링 및 변환 계수가 추가되어 네트워크 전체의 그래디언트 흐름이 개선되고 더 넓은 범위의 학습 속도와 다양한 초기 값으로 작업하는 것이 더 강력해집니다. 또한 작은 배치로 훈련하고 주어진 훈련 샘플에 특정 값을 부여하지 않기 때문에 각 레이어의 X에 약간의 지터를 추가하기 때문에 정규화 방법으로 생각할 수도 있습니다.
마지막으로 테스트 단계 동안 배치 정규화는 테스트 단계 동안 다시 계산할 필요가 없습니다.
교육 프로세스 모니터링
이제 교육을 모니터링하는 방법과 교육 중에 이러한 하이퍼파라미터를 조정하는 방법에 대해 설명합니다. 첫 번째 단계는 항상 데이터 전처리였으며, 이는 데이터를 제로 의미로 만드는 것입니다.
그런 다음 네트워크 구조를 선택합니다. 예를 들어 여기에는 50개 뉴런의 숨겨진 레이어가 있는 간단한 신경망이 있습니다. 기본적으로 원하는 네트워크 구조를 선택할 수 있습니다.
그런 다음 네트워크를 초기화하고 네트워크는 정방향 전파를 수행하며 W가 작을 때 이전 수업에서 이야기한 다항 로지스틱 회귀 손실 함수와 같은 특정 손실 함수로 손실 함수의 첫 번째 라운드를 결정하는 것이 합리적입니다. 10개의 범주가 있을 때 산포는 1/10의 음수 로그가 될 것입니다. 약 2.3입니다. 이는 꽤 좋은 온전성 검사입니다.
다음으로 우리가 하고 싶은 것은 0 정규화 항목을 추가하는 것입니다. 추가하지 않으면 손실 값은 데이터의 손실 값입니다. 2.3 부근에서 손실 값이 3.07 정도로 상승한 것을 볼 수 있습니다. 정규화를 시작할 때.
...
loss,grad=two_layer_net(X_train,y_train,1e3)
print loss
.036859716482
이를 완료한 후 교육을 시작합니다. 작은 데이터 세트로 시작하는 것이 가장 좋습니다. 매우 작은 손실을 얻기 위해 잘 맞출 수 있기 때문입니다. 여기에서 정규화를 해제하여 교육 손실을 0으로 줄일 수 있는지 확인합니다.
너무 많은 에포크를 훈련할 때 손실이 감소하는 것을 볼 수 있습니다(한 에포크는 모든 훈련 샘플을 한 번 훈련하는 프로세스로, 모든 데이터가 네트워크로 전송되고 순방향 계산 + 역전파 프로세스가 완료됨을 의미합니다) 우리는 매 에포크마다 손실을 계산하고 손실이 0으로 내려가기를 원하며 반면에 훈련 세트 정확도가 1로 올라가는 것을 보고 있으므로 작은 데이터 세트가 있는 경우 이러한 데이터를 완벽하게 맞출 수 있어야 합니다. .
팁: lr은 learning rate cost는 loss train, val은 training set과 validation set의 정확도
온전성 검사를 모두 완료한 후에는 모든 훈련 데이터를 가져오고 작은 정규화 항을 추가하여 실제 훈련을 시작할 수 있습니다. 최적의 학습률이 무엇인지 결정해 보겠습니다. 이것은 가장 중요한 매개변수 중 하나이며 조정해야 하는 첫 번째 매개변수 중 하나입니다. 몇 가지 학습률 값을 시도해 볼 수 있습니다. 예를 들어 여기서는 1e-6을 사용합니다.
손실은 기본적으로 변하지 않는 것을 볼 수 있는데 그 이유는 학습률이 너무 낮아서 기울기와 비용 업데이트가 너무 적기 때문입니다. 검증 기계는 빠르게 20%에 도달했습니다.그 이유는 여기서 의 분포가 여전히 분산되어 손실 기간이 매우 가깝지만 이러한 모든 분포를 올바른 방향으로 약간 이동하고 가중치 매개 변수가 올바른 방향으로 변경되기 때문입니다. 이제 정확도 비율이 갑자기 변경될 수 있습니다.손실은 여전히 상당히 분산되어 있지만.
극단적인 학습률을 1e6으로 만들려고 하면 비용 값 비용은 NaN이 됩니다. 일반적인 학습률 범위는 1e-3에서 1e-5이며, 이 범위에서 다른 학습률을 시도할 수 있습니다. 손실이 너무 작거나 너무 크면 이 원칙에 따라 조정하십시오.
하이퍼파라미터 최적화
우리의 하이퍼파라미터 최적화 전략은 학습률과 같은 모든 하이퍼파라미터에 대해 교차 검증을 수행하는 것입니다. 이 하이퍼파라미터는 훈련 세트에서 훈련된 다음 검증 세트에서 검증되어 이러한 하이퍼파라미터의 실험적 효과를 관찰합니다. 먼저 상대적으로 분산된 값을 선택한 다음 여러 epoch 반복을 사용하여 학습합니다.몇 번의 epoch 후에 어떤 하이퍼 매개 변수가 효과적인지, 어떤 값이 좋은지 나쁜지, NaN인지 아닌지 알 수 있습니다.보통 , 더 나은 매개변수 간격을 찾을 수 있습니다. 더 정확한 값을 추가로 검색하기 위해 시간이 오래 걸릴 수 있는 두 번째 단계입니다. 학습 속도, 업데이트 유형, 정규화, 네트워크 구조, 숨겨진 계층의 수 및 깊이를 모두 최적화할 수 있습니다.
학습률이 가장 중요한 요소로 손실곡선을 통해 어떤 학습률이 좋은지 나쁜지 직관적으로 느낄 수 있으며 매우 높은 서지선(노란색)이 있다면 손실에 대한 학습률이 폭발적으로 증가했다는 의미입니다. 표면이 너무 높음 선형성 및 평탄도(파란색)가 너무 높으면 학습률이 너무 낮다는 것을 나타냅니다. 단계 크기가 너무 커서 로컬 최적값에 속하지 않을 수 있기 때문입니다. 좋은 학습률(빨간색)은 상대적으로 가파른 곡선에 이어 지속적으로 감소하는 것입니다.
추신: 학습 속도 손실 곡선이 처음에는 일정 시간 동안 매끄럽다가 갑자기 훈련을 시작하고 떨어지는 경우 초기 시도 값이 잘 설정되지 않았을 수 있습니다.
팁: 시각화 정확도에서 학습 정확도와 검증 정확도의 차이가 크면 훈련이 과적합되었음을 의미합니다. 정규화 가중치를 높이려고 시도할 수 있습니다. 정확도를 향상시킵니다.
최적화의 예로 아래 그림과 같이 프로세스 검색을 위해 5개의 peoch를 사용하여 얻은 검증 정확도를 관찰하고 빨간색 상자는 결과가 더 나은 결과를 표시하며 이 간격은 더 세분화해야 할 영역입니다.
추신: 교육 주기에서 NaN과 같은 급증을 찾는 트릭이 있습니다. 각 반복 또는 에포크에서 비용 비용을 관찰하십시오. 예를 들어 3배 이상 초기 비용보다 훨씬 큰 값이 있는 경우 다음을 수행할 수 있습니다. 그것이 올바른 방향이 아니라는 것을 알고 있으면 빠르게 성장할 것이므로 이 매개변수의 훈련을 중지하려면 루프에서 뛰어내리십시오.
추신: 로그를 사용하여 최적화하는 것이 좋습니다.예를 들어 학습 속도에서 1e-0.001과 1e100 사이의 균일 샘플링과 비교할 때 일부 값을 곱하거나 나누는 것이 더 합리적입니다.
또한, 그리드 서치 방식의 경우 임의 샘플링을 사용하여 하이퍼파라미터의 고정값 집합을 샘플링하는 것이 좋다. 위의 그림을 보면 초록색 기능이 더 좋은 위치를 표시합니다 그리드 분포를 사용하면 3개의 값만 샘플링할 수 있고 좋은 로컬 영역을 놓칩니다.
마지막으로 일반적으로 기존 매개변수의 노름을 사용하여 업데이트 값, 가중치 업데이트 비율 및 가중치 크기를 기록하여 크기와 크기를 업데이트할 시기를 알 수 있습니다. 그 크기를 기술하여 비율이 Near 0.001이 될 수 있도록 특정 값을 얻을 필요는 없지만 원하는 값에 비해 너무 크거나 작은 값을 알아야하므로 쓸모없는 일을 피하기 위해 훈련이 필요합니다.