답변:
패딩이 중요한 몇 가지 이유가 있습니다.
우리가 보존 경우는 네트워크를 설계하는 것이 더 쉽습니다 height
과 width
및 치수가 있기 때문에 한 레이어에서 다른 레이어로 갈 때 텐서 치수에 대해 너무 걱정하지 않아도 그냥 "작업"것이다 .
보다 깊은 네트워크 를 설계 할 수 있습니다 . 패딩이 없으면 볼륨 크기가 너무 빨리 줄어 듭니다.
패딩은 실제로 정보를 경계에 유지함으로써 성능을 향상시킵니다 .
Stanford 강의에서 인용 한 내용 : "CONV 이후 공간 크기를 일정하게 유지하는 전술 한 이점 외에도 실제로 성능이 향상됩니다. CONV 레이어가 입력을 제로 패드하지 않고 유효한 컨볼 루션 만 수행하는 경우 각 CONV 후에는 볼륨이 약간 줄어들고 경계의 정보는 너무 빨리 "씻겨 나갑니다". - 출처
가장 중요한 이유는 공간 크기를 유지하는 것입니다. 말했듯이 풀링 레이어를 제거하여 공간 크기 감소를 줄일 수 있습니다. 그러나 많은 최근 네트워크 구조 ( 잔여 그물 , 시작 그물 , 프랙탈 그물 등 )는 서로 다른 레이어의 출력에서 작동하며, 이들 사이의 일관된 공간 크기가 필요합니다.
패딩이 없으면 입력의 모서리에있는 픽셀은 출력의 해당 모서리에있는 픽셀에만 영향을 미치는 반면 가운데의 픽셀은 출력의 이웃에 기여합니다. 패딩이없는 여러 레이어가 함께 쌓이면 네트워크 종류는 이미지의 보더 픽셀을 무시합니다.
내 이해 중 일부는 다른 좋은 이유가 있다고 생각합니다.
좋은 질문입니다. Drag0은 훌륭하게 설명했지만 동의합니다.
마치 사진을보고 국경을 다루는 것과 같습니다. 실제 생활에서는 눈을 움직여 더 자세히 볼 수 있습니다. 실제 테두리가 없습니다. 따라서 매체의 한계입니다.
크기를 보존하는 것 외에도 중요합니까? 나는 만족스러운 대답을 알지 못하지만주의와 폐색 (부분 객체)에 대한 실험을 통해 경계에서 잃어버린 정보가 필요하지 않다고 추측합니다. 더 똑똑한 것을해야한다면 (예를 들어 옆에 픽셀을 복사하십시오), 나는 스스로 실험하지 않았지만 대답을 바꾸지 않을 것입니다. 0으로 채워 넣는 것은 빠르며 크기를 유지하므로 우리는 그렇게합니다.
나는 정보의 측면에서 패딩하는 것이 괜찮은 때와 그렇지 않은 때를 말하려고 노력할 것이다.
기본 사례의 경우 tensorflow 패딩 기능의 예를 들어 봅시다. "유효"또는 "동일"의 두 가지 시나리오를 제공합니다. 동일한 것은 출력의 크기를 유지하고 적절한 패딩을 추가하여 입력의 크기와 동일하게 유지하지만 유효한 것은 그렇지 않으며 일부 사람들은 정보 손실로 이어질 것이라고 주장하지만 여기에는 문제가 있습니다. .
이 정보 손실은 커널 크기 또는 사용중인 필터에 따라 다릅니다. 예를 들어 28x28 이미지가 있고 필터 크기가 15x15라고 가정 해 봅시다. 출력의 크기는 16x16이어야하지만 tensorflow에서 "같은"을 사용하여 채운 경우 28x28이됩니다. 이제 12 열과 12 열 자체에는 의미있는 정보가 없지만 여전히 잡음의 형태로 존재합니다. 그리고 우리는 소음에 대한 감수성이 깊은 딥 러닝 모델이 얼마나 많은지 알고 있습니다. 이것은 훈련을 많이 저하시킬 수 있습니다. 따라서 큰 필터를 사용하는 경우 패딩을 사용하지 않는 것이 좋습니다.