[Notas pessoais | Pacote de presente Convolution | Sob acordo]

【Lista de leitura】

Leia todos os 20 tipos de convoluções em aprendizado profundo em um artigo (CVHub) : Introdução aos princípios, vantagens e desvantagens (conceitual)

Resumo da convolução (convolução comum, convolução transposta, convolução dilatada, convolução agrupada e convolução separável em profundidade)

[Convolução clássica]

Leia todos os 20 tipos de convoluções em aprendizado profundo em um artigo (com compilação de código-fonte e interpretação de papel) - Zhihu (zhihu.com)    thumb.jpg

1. Convolução Baunilha

Consiste em um conjunto de kernels de convolução com tamanho de janela fixo e parâmetros que podem ser aprendidos, que podem ser usados ​​para extrair recursos.

Conectividade esparsa : em oposição à conectividade densa um para um

Pesos compartilhados : compartilhamento de parâmetros do kernel de convolução

Invariante de tradução : quando o alvo na imagem muda, a rede ainda pode produzir resultados consistentes para a mesma imagem de origem. Para tarefas de classificação de imagens, esperamos que as CNNs tenham invariância de tradução (frágeis, precisam aprender com vários dados)

Equivalência de tradução : quando a entrada muda, a saída da rede também deve mudar de acordo. Este recurso é mais adequado para tarefas como detecção de alvos e segmentação semântica.

Reabastecimento:

Redes Neurais Feedforward

Uma rede neural feedforward é uma rede neural artificial que processa informações de maneira unidirecional, da camada de entrada à camada de saída, sem quaisquer loops ou loops na rede. É chamado de “feedforward” porque a informação flui através da rede, com cada camada processando a saída da camada anterior.

Em uma rede neural feedforward, os dados de entrada passam primeiro pela camada de entrada , que geralmente contém um grande número de neurônios, cada neurônio correspondendo a uma característica dos dados de entrada . A saída da camada de entrada passa então por uma ou mais camadas ocultas, onde cada neurônio da camada oculta realiza uma soma ponderada das entradas e aplica uma função de ativação à soma . A saída de cada camada oculta é então passada para a próxima camada até que a camada de saída seja alcançada . A camada de saída contém um conjunto de neurônios que produzem a saída final da rede.

Os pesos e desvios dos neurônios em uma rede neural feedforward são aprendidos durante a fase de treinamento, normalmente usando retropropagação, que ajusta os pesos e desvios com base na diferença entre os resultados previstos e reais da rede. Depois que a rede estiver treinada, ela poderá fazer previsões sobre novos dados, passando-os para a rede e usando a saída produzida pela camada de saída.

【Série de Convolução】 Convolução Simples (qq.com)

Do ponto de vista do mapeamento de funções , o processo de convolução é como transformar linearmente cada posição na imagem e mapeá-la em um novo valor . Portanto, a convolução multicamadas consiste apenas em mapear camada por camada, e o todo é construído em uma função complexa. O processo de treinamento da rede é, na verdade, aprender o peso necessário para cada mapeamento local.Os resultados do treinamento podem ser vistos como o processo de ajuste da rede à distribuição de entrada.

Do ponto de vista da correspondência de modelo , o kernel de convolução pode ser essencialmente definido como um determinado padrão. A operação de convolução calcula o grau de correspondência entre a posição atual na imagem e o modelo (kernel de convolução). Se o grau de correspondência for maior, então O a resposta (valor de ativação) é mais forte. Portanto, extrair características mais discriminativas é a chave para as operações de convolução . No entanto, as operações de convolução tradicionais não podem suprimir eficazmente a interferência do ruído de fundo. Portanto, precisamos introduzir métodos semelhantes à atenção para melhorar o desempenho da rede.

2. Convolução de grupo

Divida a rede para permitir a computação paralela em múltiplas GPUs

Reduza o número de parâmetros, melhore a eficiência do treinamento (computação paralela de recursos distribuídos) e melhore o desempenho da generalização (desacoplamento-regularização)

Desvantagens : Na implementação original da convolução do grupo, os recursos dos diferentes canais serão divididos em grupos diferentes e não serão fundidos até o final da rede.O processo intermediário obviamente carece de interação de informações ( considerando que filtros diferentes podem extrair recursos diferentes ) Para resolver este problema, ShuffleNet [3] combina convolução de grupo pontual (PGC) e embaralhamento de canal (embaralhamento de canal) para obter um design de rede móvel leve e eficiente.

 3. Convolução Transposta

Aumento da resolução de recursos, visualização de recursos,

 4、Conv. 1x1

Capacidade aprimorada de expressão de recursos : a convolução 1×1 é essencialmente um filtro com parâmetros, que pode aumentar a profundidade da rede sem alterar o tamanho do próprio mapa de recursos . A capacidade expressiva da rede pode ser efetivamente aprimorada usando uma função de ativação não linear após a convolução . ( Modifique a profundidade do mapa de recursos alterando o número de canais, porque a profundidade do mapa de recursos de saída é determinada pelo número de canais do kernel de convolução. Mas a convolução 1x1 não está totalmente conectada, a convolução 1x1 é uma operação de convolução, geralmente usado para modificar recursos O número e a profundidade dos canais e ajuda a rede a aprender melhores representações. Camadas totalmente conectadas são um tipo de camada comum em redes neurais que conectam cada entrada a cada saída, frequentemente usadas para problemas de classificação e regressão. )

Aprimoramento e redução da dimensionalidade : a convolução 1 × 1 pode obter aprimoramento ou redução da dimensionalidade aumentando ou reduzindo o número de filtros. Diferente da camada totalmente conectada, a convolução é baseada no compartilhamento de peso, podendo reduzir efetivamente a quantidade de parâmetros e cálculo da rede . Por outro lado, a redução da dimensão pode ser pensada como a redução da dispersão dos pesos nas camadas intermediárias do modelo, reduzindo os mapas de características redundantes , obtendo assim uma estrutura de rede mais compacta.

Interação de informações entre canais : semelhante a um perceptron multicamadas, a convolução 1×1 é essencialmente uma combinação linear de múltiplos mapas de características . Portanto, a interação e integração de informações entre canais podem ser facilmente alcançadas por meio da operação de convolução 1×1.

 5. Conv dilatada

A taxa de furos é introduzida com base na convolução original para ajustar o número de intervalos do núcleo de convolução.

A função da convolução atrosa é aumentar o campo receptivo da rede sem realizar operações de downsampling, ou seja, sem perder nenhuma informação espacial, para que a rede possa capturar informações contextuais em diferentes faixas . Isso é benéfico para tarefas de previsão intensivas, como segmentação semântica.Ao mesmo tempo, também podemos extrair facilmente informações contextuais em várias escalas aplicando convolução atrosa.

Motivação: Foi aplicado pela primeira vez a tarefas de segmentação semântica (uma tarefa de previsão intensiva que requer classificação de imagens em pixels). Uma grande dificuldade nas tarefas de segmentação semântica é como extrair com eficiência informações contextuais em múltiplas escalas para se adaptar às mudanças em diferentes escalas de objetos . Normalmente, os métodos baseados em CNN são baseados principalmente em uma representação hierárquica de recursos e extraem recursos em diferentes níveis, empilhando continuamente camadas convolucionais e agrupando camadas. No entanto, ainda existem os seguintes problemas: ① À medida que a profundidade da rede aumenta, a quantidade de cálculos e parâmetros aumentará drasticamente ② Muitas vezes a redução da resolução fará com que objetos com resoluções menores não possam ser reconstruídos ③ Não há parâmetros na camada de upsampling ou downsampling Realize o aprendizado ④A estrutura de dados interna e as informações hierárquicas espaciais são seriamente perdidas. Portanto, é proposta a convolução dilatada, que pode efetivamente extrair informações de contexto de diferentes escalas sem reduzir a resolução espacial (expandindo o campo receptivo da rede com o mesmo núcleo de convolução) .

Aumentar o campo receptivo : A convolução atrosa pode obter um campo receptivo maior sob os mesmos parâmetros do kernel de convolução. Portanto, para tarefas que exigem mais informações semânticas globais ou que exigem dependências de informações de sequência mais longas, semelhantes ao texto de fala , você pode tentar aplicar a convolução atrosa. ( Campo receptivo : o neurônio representa o tamanho da faixa de percepção da imagem de entrada. Normalmente, os recursos extraídos usando operações de convolução e pooling são uma conexão local, que carece de correlação global. Portanto, para capturar o contexto global, as informações podem ser expandidas empilhando estruturas de convolução e agrupamento mais profundas para expandir o campo receptivo da rede . Quanto maior o campo receptivo, mais abrangentes serão os recursos extraídos. Pelo contrário, quanto menor o campo receptivo, mais sensível a rede será ao local recursos. Os detalhes serão mais sensíveis.)

Representando informações multiescala : Usando convoluções com diferentes taxas de furos, informações semânticas contextuais multiescala também podem ser capturadas. Diferentes taxas de furos representam diferentes campos receptivos, o que significa que a rede pode perceber alvos de diferentes tamanhos.

Desvantagens :

Não é fácil de otimizar (aumentando o campo receptivo quando os parâmetros permanecem inalterados, mas devido ao aumento na resolução espacial , muitas vezes é difícil otimizar na prática. A velocidade é uma crítica, portanto há requisitos para tempo real desempenho na indústria. Mais aplicações ainda são baseadas em estruturas semelhantes a FCN),

Efeito grade/tabuleiro de xadrez: Ao usar convoluções com a mesma taxa de furos várias vezes para extrair recursos, a continuidade das informações será perdida . Isso ocorre porque o kernel de convolução não é contínuo, resultando em muitos pixels que não participam da operação do início ao fim, o que equivale a falha (o espaço em branco está sobreposto na imagem abaixo). Isso é muito difícil para tarefas de previsão intensivas , como segmentação semântica. Muito hostil , especialmente para alvos pequenos ( a partir do princípio de funcionamento, a convolução dilatada é usada para aumentar a capacidade da rede de capturar recursos de longa distância, por isso é útil apenas para segmentar alguns objetos maiores, mas para alguns Para objetos pequenos, o efeito é muitas vezes contraproducente. Por exemplo, para segmentação de fissuras, a fissura geralmente assume uma forma de faixa delgada. Se aumentarmos a taxa de vazios neste momento, isso sem dúvida destruirá seriamente a consistência espacial inerente do próprio recurso. )

Uma solução é garantir que a taxa de furos da convolução sobreposta não possa ter um divisor comum maior que 1, como [1, 2, 5], fazendo com que pareça uma estrutura em dente de serra.

 6. Convolução Separável em Profundidade (DSC )

Usado para reduzir a quantidade de parâmetros e cálculos de rede para melhorar a eficiência operacional da rede

O DSC primeiro aplica um único filtro de convolução de profundidade a cada canal de entrada e, em seguida, usa convolução pontual para combinar as saídas de diferentes convoluções de profundidade. Portanto, o DSC divide a operação de convolução comum em dois processos: convolução de profundidade (convolução profunda) e convolução pontual (Convolução Pontual). A convolução de profundidade é usada para filtragem e a convolução pontual é usada para combinação.Este método de decomposição pode reduzir significativamente a quantidade de parâmetros e cálculos de rede.

A convolução de profundidade é um núcleo de convolução responsável por um canal e executa a convolução espacial em cada canal de forma independente. Portanto, o número de mapas de recursos de saída de convolução profunda é igual ao número de mapas de recursos de entrada e a expansão efetiva da dimensão não pode ser realizada.

Como um mapa de características é convoluído apenas por um filtro, as informações de características de diferentes canais na mesma posição espacial não podem ser utilizadas de forma eficaz, portanto, a convolução pontual é adicionada. A convolução de pontos é composta principalmente pela convolução 1×1, que é responsável por projetar a saída da convolução de profundidade em um novo mapa de características por canal.

Filtre cada canal primeiro e depois combine

Reduza a quantidade de parâmetros e cálculos: a convolução separável em profundidade divide a operação de convolução original em duas camadas, uma para filtragem (convolução de profundidade) e outra para combinação (convolução pontual). Este processo de decomposição pode reduzir bastante o número de parâmetros e cálculos no modelo .

Reduza a capacidade do modelo: a convolução separável em profundidade é aplicada sem usar uma função de ativação . Além disso, embora a convolução separável em profundidade possa reduzir significativamente a quantidade de cálculo do modelo, ela também levará a uma redução significativa na capacidade do modelo, resultando em uma diminuição na precisão do modelo .

O DSC é muito superior à convolução comum em termos de quantidade de parâmetros e eficiência computacional. Como substituto da convolução comum, a maior vantagem do DSC é que sua eficiência de cálculo é muito alta . Portanto, usar o DSC para construir modelos leves é uma prática muito comum hoje em dia. No entanto, essa alta eficiência do DSC ocorre às custas da precisão . No futuro processo de uso de DSC para construir modelos leves, é necessário equilibrar precisão e eficiência computacional de maneira abrangente. Embora sacrifique uma pequena quantidade de precisão, melhorar significativamente a eficiência computacional é a escolha certa .

 7. Convolução Espacialmente Separável

Convolver a partir das dimensões do espaço da imagem (largura e altura)

A convolução espacialmente separável raramente é amplamente utilizada na prática.Uma das principais razões é que nem todos os núcleos de convolução podem ser efetivamente divididos em pequenos núcleos de convolução (para reduzir a quantidade de cálculo). No entanto, raramente é amplamente utilizado na prática.Uma das principais razões é que nem todos os núcleos de convolução podem ser efetivamente divididos em pequenos núcleos de convolução .

8. Convolução deformável

Pode ser visto como uma operação de autoatenção na área local (não é uma expansão do kernel de convolução, mas uma reintegração de pixel do mapa de recursos antes da convolução e a expansão do kernel de convolução disfarçada)

A transformação geométrica desconhecida do mesmo objeto em diferentes cenas e ângulos é um grande desafio da tarefa ( codificações de convolução convencionais apresentam informações através de uma estrutura geométrica fixa para capturar o campo receptivo. Porém, como a forma do objeto é mutável, Irregular, este método de codificação é difícil de capturar o campo receptivo apropriado, resultando em capacidade limitada de expressão de rede ).De modo geral, por meio de aprimoramento de dados suficiente, amostras suficientes são expandidas para aumentar a capacidade do modelo de se adaptar à transformação em escala, ou definir alguns recursos ou algoritmos que são invariantes às transformações geométricas, como SIFT ou janelas deslizantes. No entanto, a estrutura geométrica fixa das CNNs tradicionais não pode modelar efetivamente deformações de objetos desconhecidos, então a convolução deformável é proposta para resolver este problema.

Sem aumento no número de pontos de amostragem: capture a semântica do objeto de forma mais eficaz e abrangente, sem aumentar a quantidade de parâmetros adicionais

A convolução deformável realmente não aprende um núcleo de convolução deformável, mas usa camadas de convolução adicionais para aprender o deslocamento correspondente e sobrepor o deslocamento obtido aos pixels nas posições correspondentes no mapa de recursos de entrada . No entanto, como a geração do deslocamento produzirá um tipo de número de ponto flutuante e o deslocamento deverá ser convertido em um número inteiro, a retropropagação não poderá ser realizada se for arredondada diretamente. Portanto, o artigo original usa interpolação bilinear para calcular indiretamente o correspondente . valor de pixels.

Processo de cálculo x4:

(1) Calcule o deslocamento relativo : aprenda o deslocamento de cada pixel executando uma operação de convolução no mapa de recursos de entrada . 2N na figura representa o dobro do número de canais, ou seja, cada pixel possui um deslocamento nas direções x e y.

(2) Obtenha o deslocamento absoluto : Adicione o deslocamento relativo calculado na primeira etapa ao valor do índice de pixels da imagem original para obter o deslocamento absoluto do índice de pixels da imagem característica de entrada.

(3) Reintegração de pixel : primeiro arredonde o deslocamento absoluto do índice de pixel para cima e para baixo e, em seguida, integre-o ainda mais em quatro pares de coordenadas. Através da interpolação bilinear, o valor do pixel do índice de deslocamento é obtido.

(4) Codificação de novos pixels : Conclua o cálculo do valor do pixel do deslocamento do índice, ou seja, um novo mapa de características é obtido e a convolução convencional é realizada nele para obter a convolução deformável.

Este método usa uma ideia inteligente para implementar um método de extração de características de estrutura geométrica deformável: é baseado em uma rede paralela para aprender deslocamentos, permitindo que o kernel de convolução faça uma amostragem divergente do mapa de características de entrada, permitindo que a rede se concentre no centro do alvo , melhorando assim a precisão do objeto.Capacidades de modelagem de deformação. A convolução deformável . ()

Pode melhorar a capacidade de generalização da extração de características do modelo até certo ponto, mas também introduzirá alguma interferência irrelevante de ruído de fundo. Três soluções correspondentes: usar um número maior de convoluções deformáveis, adicionar pesos correspondentes a cada polarização e imitar os recursos do R-CNN. No entanto, a eficiência computacional da convolução deformável também é uma questão questionável ( embora possa trazer alta precisão, quando o kernel de convolução é muito grande, ele ocupará um espaço de memória muito grande, portanto sua aplicação na implantação de pouso é muito limitada. Mas pode ser considerado um truque para melhorar pontos ao participar de competições. )

 9. Convolução do gráfico

Artigo: https://arxiv.org/abs/1609.02907

Código: https://github.com/tkipf/gcn

( outros lendo notas , código CVHub )

A rede convolucional de grafos é o ramo mais simples das redes de grafos. Ela é projetada para resolver efetivamente problemas de dados em espaços não euclidianos que as CNNs, RNNs e outras redes tradicionais não conseguem lidar ( em redes convolucionais de grafos, a semelhança ou distância entre os nós não apenas dependem de sua distância no espaço físico, mas são determinados pelos vetores de características dos nós e suas relações de conexão no gráfico. Portanto, a convolução do gráfico pode capturar a correlação abstrata entre os nós, não apenas a distância física. )

Princípio: Use informações de borda para agregar informações do nó para gerar uma nova representação do nó . Em suma, a operação de convolução em CNNs é a soma ponderada das posições correspondentes do núcleo de convolução. Estendido aos GCNs, utiliza as informações de borda para agregar continuamente as informações dos nós adjacentes para atualizar os parâmetros do nó original.

Recursos: recursos de nó (cada nó pode ser usado para representação de recursos), recursos estruturais (os nós são relacionados por meio de arestas que transportam informações)

Visão geral da rede neural gráfica GNN

Primeiros passos com redes convolucionais gráficas GCN

Figura ML: Usando o Transformer para aliviar as limitações do GNN

 10. Bloco de Iniciação

As informações contextuais multiescala são capturadas principalmente por meio de múltiplas operações de convolução com diferentes tamanhos de kernel de convolução e, finalmente, a saída é agregada por meio de operações de emenda para obter representação de recursos multiescala. O objetivo original era obter representações de recursos em diferentes escalas na mesma camada de mapas de recursos. Aumentar a largura da rede conduz à obtenção de representações de recursos mais ricas. ( Execute várias operações de convolução ou operações de pool em paralelo na imagem de entrada e divida todos os resultados de saída em um mapa de recursos muito profundo. Porque diferentes operações de convolução, como 1*1, 3*3, 5*5, etc. são diferentes das operações de Pooling pode-se obter diferentes informações da imagem de entrada, processar essas operações em paralelo e combinar todos os resultados obterá uma melhor representação da imagem )

Análise completa do Inception v1 ao Inception v4

Inception v1 : ① O kernel de convolução 1x1 comprime o número de canais, reduz os parâmetros e a quantidade de cálculo e melhora o efeito; ②. Use kernels de convolução de tamanhos diferentes para processamento paralelo e deixe a rede escolher sozinha o melhor mapa de recursos. A vantagem disso é que pode melhorar a velocidade e a precisão. ③Além disso, o Inception v1 também introduz a camada de pooling máxima e a camada de pooling média para enriquecer o método de extração de recursos.

A ideia principal do Inception v1 é usar núcleos de convolução de tamanhos diferentes para convolução ( combinar diferentes núcleos de convolução pode não apenas aumentar o campo receptivo, mas também melhorar a robustez da rede neural. ) e, em seguida, combiná-los. a convolução é unida na dimensão do canal como saída para aumentar o poder expressivo da rede. Neste processo, a convolução 1x1 é usada para controlar o número de canais, reduzir a quantidade de cálculo da rede e também ajudar a melhorar a capacidade de expressão não linear dos recursos.

Especificamente, o Inception v1 usa vários tamanhos de kernel de convolução diferentes (como 1x1, 3x3, 5x5) para convolução para extrair recursos de diferentes escalas. Além disso, o Inception v1 também introduz uma camada de pooling (como Max Pooling ou Average Pooling) para reduzir ainda mais o tamanho do mapa de recursos. Em última análise, o Inception v1 obtém uma representação de recursos mais poderosa ao unir esses recursos de diferentes escalas.

Adicionado 1x1conv, canal :

O ramo de convolução 1×1 refere-se ao uso de um kernel de convolução de tamanho 1×1 para a operação de convolução, onde 1 indica que o kernel de convolução cobre apenas um pixel na dimensão espacial. O ramo de convolução 1×1 é usado principalmente para aumentar ou diminuir o número de canais para reduzir a quantidade de cálculo e a complexidade do modelo. No bloco inicial, o ramo de convolução 1×1 é geralmente usado para reduzir o número de canais do mapa de recursos de entrada, de modo que o ramo de convolução subsequente e o ramo de pooling exijam menos cálculos. Em redes mais profundas, como Inception-ResNet, o ramo de convolução 1×1 também é usado para realizar operações de aprimoramento de dimensionalidade para aumentar a capacidade de representação não linear da rede. Na prática, o ramo de convolução 1×1 geralmente é colocado no início ou no final do Bloco de Iniciação para aproveitá-lo ao máximo.

Em relação à compactação de canais : a convolução 1x1 geralmente é usada para compactar o número de canais. Especificamente, ele usa uma camada de convolução com apenas 1 tamanho de kernel de convolução em uma determinada camada da rede neural convolucional, onde a profundidade do kernel de convolução é o número de canais que precisam ser compactados, ou seja, o mapa de recursos de entrada está em o canal Execute operações de redução de dimensionalidade.

O conteúdo do canal é aprendido pela rede e geralmente inclui a extração de diferentes características dos dados de entrada. Em uma rede neural convolucional, os canais gerados por cada camada convolucional correspondem a diferentes características, como bordas, texturas, cores, etc. Ao realizar a compressão de canais, geralmente é determinado calculando a importância de cada canal para determinar quais canais precisam ser retidos e quais podem ser descartados. Este método de cálculo pode ser determinado de acordo com diferentes cenários de aplicação. Os métodos comumente usados ​​incluem o uso de métodos de redução de dimensionalidade, como PCA, ou o uso de métodos baseados em gradiente, como o cálculo do tamanho do gradiente de cada canal durante o treinamento da rede para determinar sua importância.

Em geral, o objetivo da compactação do canal é reduzir a quantidade de cálculo e o número de parâmetros do modelo, mantendo ao máximo as características dos dados de entrada. O conteúdo específico e o mecanismo de compressão serão ajustados de acordo com cenários e algoritmos de aplicação específicos, mas o princípio geral é manter as características mais representativas dos dados de entrada .

Para cada camada da rede neural convolucional, os dados de entrada geralmente incluem três dimensões: altura, largura e canal. O número de canais pode ser entendido como o número de recursos ou mapas de recursos. Cada canal contém o valor de resposta dos dados de entrada sob certas características. Por exemplo, para uma imagem colorida, seus canais podem incluir canais de cores (vermelho, verde, azul) e canais de textura, etc. O valor em cada canal representa o grau de resposta da imagem sob este recurso. Em uma rede neural convolucional, o objetivo da operação de convolução é extrair diferentes recursos dos dados de entrada sem alterar o tamanho. Esses recursos geralmente são não lineares e seu número pode variar em diferentes camadas. Portanto, ajustando o número de canais na camada convolucional, o grau em que a rede neural convolucional extrai diferentes características dos dados de entrada pode ser controlado, afetando assim o desempenho da rede.

Lote suplementar e minilote

Quando treinamos uma rede neural profunda, geralmente precisamos treinar iterativamente uma grande quantidade de dados de treinamento. Esses dados de treinamento não podem ser carregados na memória de uma só vez, portanto, precisam ser divididos em vários lotes para processamento. O tamanho do lote determina o número de amostras usadas em cada iteração de treinamento. Geralmente, a escolha de um tamanho de lote apropriado pode melhorar a velocidade e a estabilidade do treinamento. Além disso, o lote também pode ser usado para computação paralela de GPU, enviando várias amostras para a GPU para cálculo ao mesmo tempo para melhorar a eficiência do treinamento.
Na verdade, ao treinar uma rede neural profunda, geralmente dividimos o conjunto de dados em vários lotes para treinamento, e minilote é a quantidade de pequenos dados de amostra contidos em um lote. Dividimos um lote em vários minilotes para enviar o conjunto de dados para a rede em lotes para treinamento. Apenas os dados do minilote precisam ser processados ​​​​a cada vez, o que pode reduzir o uso de memória e acelerar o treinamento. Ao mesmo tempo, ao percorrer continuamente todo o conjunto de dados, a rede pode ser treinada de forma mais completa, melhorando assim o desempenho do modelo. Portanto, o minilote faz parte do lote, o que pode ser considerado uma divisão mais refinada.

Inception v2 : É proposta a normalização em lote, que acelera efetivamente o treinamento de redes profundas, reduzindo compensações de covariáveis ​​internas. Além disso, valendo-se das ideias de VGG-Net [19], v2 substitui a convolução 5×5 em v1 por duas convoluções 3×3, reduzindo ainda mais o número de parâmetros de rede e garantindo o mesmo campo receptivo e quantidade de cálculo.

Comparado com o Inception v1, o Inception v2 fez algumas melhorias e otimizações, mantendo algumas ideias centrais. Em primeiro lugar, o Inception v2 introduz a Normalização em Lote, que torna o treinamento da rede mais estável e também ajuda a melhorar a precisão . Em segundo lugar, o Inception v2 usa uma tecnologia chamada "Factorizing Convolutions", que substitui um kernel de convolução maior por dois kernels de convolução menores. Por exemplo, use dois kernels de convolução 3x3 em vez de um kernel de convolução 5x5. A vantagem disso é que pode reduzir a quantidade de parâmetros e cálculos, ao mesmo tempo que garante que o campo receptivo permaneça inalterado e melhora a precisão da rede. Além disso, o Inception v2 também introduz algumas novas tecnologias , como "Label Smoothing" e "Weight Decay", para melhorar ainda mais a precisão e a capacidade de generalização da rede.

Regularização adicional:

Regularização refere-se a limitar a complexidade do modelo adicionando restrições adicionais durante o processo de treinamento do modelo, evitando assim que o modelo se ajuste demais aos dados de treinamento e melhorando a capacidade de generalização do modelo. As técnicas de regularização são amplamente utilizadas nas áreas de aprendizado de máquina e aprendizado profundo. No aprendizado profundo, as técnicas de regularização comumente usadas incluem regularização L1, regularização L2, Dropout, Normalização em lote, etc. Entre eles, a regularização L1 e a regularização L2 adicionam um termo de regularização à função de perda, de modo que os parâmetros do modelo continuam a tender a 0, reduzindo assim a complexidade do modelo; O dropout reduz o sobreajuste ao definir aleatoriamente uma parte dos neurônios como 0. ; Normalização em lote é padronizar a entrada de cada lote para reduzir o deslocamento covariável interno da rede e melhorar a eficiência e capacidade de generalização do treinamento. A escolha da técnica de regularização deve ser adaptada ao problema específico e ao conjunto de dados para melhorar a capacidade de generalização e precisão do modelo.

Esses conceitos podem ser facilmente confundidos. Regularização e métodos para reduzir a explosão/desaparecimento de gradiente são técnicas comumente usadas em aprendizado profundo e seu objetivo é melhorar o desempenho de generalização do modelo.

Os métodos para reduzir a explosão/desaparecimento de gradientes visam principalmente o problema de que os gradientes em redes neurais profundas se tornam muito pequenos ou muito grandes à medida que o número de camadas aumenta.Os gradientes são controlados por alguns meios, como inicialização de peso, uso de funções de ativação, normalização de lote , etc. O tamanho do gradiente evita que o gradiente seja muito pequeno ou muito grande , para que a rede possa ser melhor treinada.

A regularização é um método de adicionar alguns termos de penalidade à função de perda. O objetivo é tornar os parâmetros do modelo mais suaves ou mais próximos de 0, reduzindo assim a complexidade do modelo, evitando overfitting e melhorando o desempenho da generalização. Os métodos de regularização comumente usados ​​​​incluem regularização L1, regularização L2, abandono, etc.

Inceptionv3 : Baseia-se principalmente na ideia de convolução espacialmente separável, dividindo o núcleo de convolução k × k original em convoluções unidimensionais 1 × k e k × 1. Por um lado, pode efetivamente acelerar a operação da rede e por outro lado, pode efetivamente acelerar a operação da rede.O excesso de recursos computacionais pode ser usado para aumentar a profundidade da rede e melhorar a capacidade de mapeamento não linear.

Convolução separável em profundidade e convolução separável espacialmente são dois conceitos diferentes. A convolução separável em profundidade decompõe um kernel de convolução comum em um kernel de convolução 1x1 na direção de profundidade e um kernel de convolução kxk na direção espacial e, em seguida, primeiro usa o kernel de convolução 1x1 para realizar a convolução de profundidade e, em seguida, usa a convolução kxk O kernel executa a convolução espacial , reduzindo assim a quantidade de cálculo até certo ponto e também aumentando a profundidade da rede. A convolução espacialmente separável consiste em dividir um núcleo de convolução kxk em núcleos de convolução k 1xk e k kx1 e, em seguida, primeiro realizar convoluções 1xk e kx1 no espaço e, em seguida, realizar convoluções 1x1 em profundidade. , reduzindo assim a quantidade de cálculo até certo ponto. .

Quando usamos a convolução 1x1 na direção da profundidade, podemos controlar a profundidade do mapa de recursos de saída ajustando o número de núcleos de convolução. Por exemplo, suponha que temos um mapa de recursos de entrada de tamanho 28x28x192 e queremos reduzir sua profundidade para 64, então podemos usar 64 kernels de convolução de tamanho 1x1x192 para convolver o mapa de recursos de entrada. Isso produz um mapa de recursos de saída de tamanho 28x28x64, onde o valor de cada pixel é obtido tomando uma soma ponderada dos 192 valores em cada posição do mapa de recursos de entrada.

Inception v4 : Baseando-se nas ideias do ResNet, apresenta Skip Connection, que não apenas acelera muito o treinamento da rede, mas também melhora significativamente o desempenho da rede.

Com base no Inception v3, a tecnologia de salto de conexão no ResNet é introduzida e a estrutura Inception-ResNet é proposta. Essa estrutura pode não apenas acelerar o treinamento da rede, mas também aliviar efetivamente os problemas de desaparecimento e explosão de gradiente e melhorar o efeito de treinamento e a capacidade de generalização da rede. O Inception v4 também usa algumas outras tecnologias, como filtragem baseada em matriz esparsa, convolução dinâmica, etc., para melhorar ainda mais o desempenho e a eficiência da rede.

A tecnologia de salto de conexão no ResNet pode aliviar os problemas de desaparecimento e explosão de gradiente, principalmente porque pode tornar a retropropagação da rede mais suave e estável . Em redes neurais profundas, como o gradiente será reduzido ou amplificado por operações contínuas de multiplicação de matrizes durante o processo de retropropagação, o problema do desaparecimento ou explosão do gradiente tende a ocorrer na parte profunda da rede, dificultando o treinamento. A tecnologia de conexão de salto no ResNet introduz conexões de camada cruzada na rede para transferir informações diretamente entre diferentes camadas, de modo que o gradiente não seja reduzido ou amplificado demais por operações contínuas de multiplicação de matrizes durante a retropropagação, evitando assim o desaparecimento do gradiente . Ou o problema da explosão de gradiente, também pode tornar a rede mais fácil de treinar e convergir.

[Variante de convolução]

Será atualizado depois de usá-lo

1. Convolução Assimétrica (Convolução Assimétrica)


2. Convolução de oitava


3. Convolução Heterogênea


4. Convoluções parametrizadas condicionalmente


5. Convolução Dinâmica (Convolução Dinâmica)

Convolução dinâmicaCondConv 


6. Convolução Fantasma


7. Convolução Autocalibrada (Convolução Autocalibrada)


8. Convolução sobreparametrizada em profundidade (convolução sobreparametrizada em profundidade)


9. Módulo de atenção separada (Bloco ResNeSt)


10. Involução

Acho que você gosta

Origin blog.csdn.net/sinat_40759442/article/details/129284792
Recomendado
Clasificación