ResNet: Design de nível de bloco com Deep Learning Studio | PARTE 1 |

Manik Soni Blocked Unblock Seguir Seguindo 8 de janeiro

1 – O problema das redes neurais muito profundas

O principal benefício de uma rede muito profunda é que ela pode representar funções muito complexas. Ele também pode aprender recursos em muitos níveis diferentes de abstração, desde arestas (nas camadas inferiores) até recursos muito complexos (nas camadas mais profundas). No entanto, usar uma rede mais profunda nem sempre ajuda. Uma enorme barreira para treiná-los é o desaparecimento de gradientes: redes muito profundas geralmente têm um sinal de gradiente que chega a zero rapidamente, tornando a descida de gradiente insuportavelmente lenta. Mais especificamente, durante a descida de gradiente, à medida que você retrocede da camada final de volta à primeira camada, você está multiplicando pela matriz de peso em cada etapa e assim o gradiente pode diminuir exponencialmente rapidamente a zero (ou, em casos raros, crescer exponencialmente rapidamente e “explodir” para obter valores muito grandes).

Problema do Gradiente em Explosão e Desaparecimento: Matemática por Trás da Verdade
Olá Stardust! Hoje vamos ver a razão matemática por trás da explosão e desaparecimento do problema do gradiente, mas primeiro vamos… hackernoon.com

Durante o treinamento, você pode, portanto, ver a magnitude (ou norma) do gradiente para as camadas anteriores diminuir para zero muito rapidamente à medida que o treinamento prossegue.

2 – Construindo uma Rede Residual

Em ResNets, um “atalho” ou uma “conexão de salto” permite que o gradiente seja diretamente retropropagado para camadas anteriores:

Dois tipos principais de blocos são usados em uma ResNet, dependendo principalmente de as dimensões de entrada / saída serem iguais ou diferentes. Você vai implementar os dois no DLS.

Vamos implementar blocos de resnet semelhantes aos mencionados em seu trabalho de pesquisa. Não é exato.

2.1 – O bloco de identidade

O bloco de identidade é o bloco padrão usado em ResNets e corresponde ao caso em que a ativação de entrada (digamos a [l]) tem a mesma dimensão da ativação de saída (digamos a [l + 2]). Para detalhar as diferentes etapas do que acontece no bloco de identidade de uma ResNet, aqui está um diagrama alternativo mostrando as etapas individuais:

Bloco de identidade. Ignorar conexão “pula” 2 camadas.

O caminho superior é o “caminho de atalho”. O caminho inferior é o “caminho principal”. Neste diagrama, também tornamos explícitas as etapas CONV2D e ReLU em cada camada. Para acelerar o treinamento, também adicionamos uma etapa BatchNorm. A normalização do lote deve ser feita ao longo do eixo do canal (modo = 1).

Para saber mais sobre o DLS:

Classificação do género Iris | DeepCognition | Estúdio Azure ML
Reino: Plantae Clado: Angiospermas Ordem: Asparagales Família: Iridaceae Subfamília: Iridoideae Tribo: Irideae Gênero: Iris towardsdatascience.com

Para implementar o abaixo, você pode escolher qualquer conjunto de dados do DLS.

Bloco de Identidade ResNet

Aqui estão os passos individuais.

Primeiro componente do caminho principal:

  • O primeiro CONV2D possui filtros (F1, F1) de forma (1,1) e uma passada de (1,1). Seu preenchimento é "válido".
  • O primeiro BatchNorm está normalizando o eixo dos canais.
  • Em seguida, aplique a função de ativação ReLU. Isso não tem nome nem hiperparâmetros.

Segundo componente do caminho principal:

  • O terceiro CONV2D tem (32,32) filtros de forma (1,1) e uma passada de (1,1). Seu preenchimento é "válido".
  • O terceiro BatchNorm está normalizando o eixo dos canais.

Passo final:

  • O atalho e a entrada são adicionados juntos.
  • Em seguida, aplique a função de ativação ReLU. Isso não tem nome nem hiperparâmetros.

2.2 – O bloqueio convolucional

Você implementou o bloco de identidade do ResNet. Em seguida, o "bloco convolucional" da ResNet é o outro tipo de bloco. Você pode usar esse tipo de bloco quando as dimensões de entrada e saída não corresponderem. A diferença com o bloco de identidade é que existe uma camada CONV2D no caminho do atalho:

Figura 4 : Bloco Convolucional

A camada CONV2D no caminho de atalho é usada para redimensionar a entrada x para uma dimensão diferente, para que as dimensões correspondam à adição final necessária para adicionar o valor de atalho novamente ao caminho principal. Por exemplo, para reduzir a altura e a largura das dimensões de ativação por um fator de 2, você pode usar uma convolução de 1×1 com um passo de 2. A camada CONV2D no caminho do atalho não usa nenhuma função de ativação não linear. Sua principal função é apenas aplicar uma função linear (aprendida) que reduza a dimensão da entrada, para que as dimensões correspondam à etapa de adição posterior.

Os detalhes do bloco convolucional são os seguintes.

(Você pode escolher valores de f, F1, F2, F3 com base no seu conjunto de dados)

Primeiro componente do caminho principal:

  • O primeiro CONV2D possui filtros (F1, F1) de forma (1,1) e um passo de (s, s).
  • O primeiro BatchNorm está normalizando o eixo dos canais (mode = 1).
  • Em seguida, aplique a função de ativação ReLU. Isso não tem nome nem hiperparâmetros.

Segundo componente do caminho principal:

  • O segundo CONV2D tem filtros (F2, F2) de (f, f) e um passo de (1,1).
  • O segundo BatchNorm está normalizando o eixo dos canais.
  • Em seguida, aplique a função de ativação ReLU. Isso não tem nome nem hiperparâmetros.

Terceiro componente do caminho principal:

  • O terceiro CONV2D possui filtros (F3, F3) de (1,1) e um passo de (1,1).
  • O terceiro BatchNorm está normalizando o eixo dos canais (modo = 1). Observe que não há função de ativação ReLU neste componente.

Caminho de atalho:

  • O CONV2D possui filtros (F3, F3) de forma (1,1) e um passo de (s, s). Seu preenchimento é "válido".
  • O BatchNorm está normalizando o eixo dos canais (modo = 1).

Passo final:

  • O atalho e os valores do caminho principal são adicionados juntos.
  • Em seguida, aplique a função de ativação ReLU. Isso não tem nome nem hiperparâmetros.

Se você gostou deste artigo, faça e compartilhe. Para mais artigos sobre Deep Learning, siga-me no Medium e no LinkedIn .

Assine o meu canal no YouTube:

AI com MANIK
AI está de volta com um estrondo! www.youtube.com

Obrigado pela leitura ?

ResNets felizes.