Leitura rápida do novo artigo de Deepseek sobre Conexões Hiper-Restritas de Variedade: - Você quer aumentar o tamanho residual de 1×C para n×C (n fluxos em vez de 1). Atualização residual anterior: x' = x + camada(x). Faça o x ser n×C, e use x' = Ax + B camada(Cx) em vez disso. A, B, C dependem todos de x e são pequenas matrizes (n×n, n×1, n×1). A parece ser o mais impactante. Isso é Hiperconexões (HC). - HC apresenta o mesmo problema que outros esquemas de modificação residual - eventualmente o produto das matrizes A aprendidas (ao longo do caminho identidade) explode/anula. - Para corrigir isso, projetam as matrizes A sobre o politopo de Birkhoff (palavras mais simples: transforme-o, após exp, para tornar os elementos positivos, em uma matriz cujas somas de linhas e colunas se tornam 1 - chamada de matriz duplamente estocástica). Isso tem propriedades interessantes – produtos desses tipos de matrizes ainda têm soma de linhas e colunas 1 (devido ao fechamento), então as coisas não explodem (limitada espectralmente), e o invariante é que a soma dos pesos entre fluxos é 1. Para n = 1, isso se torna o fluxo residual padrão, o que é bom. O método de transformação deles é simples – alternadamente, dividir linhas e colunas por somas de linhas e colunas, respectivamente, para 20 iterações (converge para a matriz desejada à medida que as iterações vão para o infinito). Eles acham que 20 é suficiente tanto para a passagem para frente quanto para trás (em 60 camadas, o ganho máximo para trás é 1,6 em vez de 3000 do HC usual, e 1,6 não está muito fora de 1). - Compor essas matrizes (invólucro convexo de todas as matrizes de permutação) leva à mistura de informações à medida que o índice de camada aumenta, o que é uma boa intuição e também é mostrado claramente em sua matriz composta para 60 camadas. Acredito que, no geral, obtemos uma soma ponderada de caminhos residuais (pensando em gradientes), onde caminhos logicamente agrupáveis têm pesos que somam 1. Na minha opinião, uma abordagem bastante principiada também torna os ganhos (para frente e para trás) muito estáveis. - Coisa interessante de notar - muita mistura tipo "pooling" na primeira metade comparada à segunda metade das camadas. A segunda metade das camadas trata diferentes canais de forma mais precisa/nítida do que a primeira metade, o que é bastante intuitivo. - Eles também alteram a parametrização de B e C (sigmoide em vez de tanh, provavelmente para evitar mudanças de sinais, e um fator de 2 à frente de B, acredito que para conservar o multiplicador residual médio, C não precisa disso porque a entrada já é pré-normada de qualquer forma). - Otimizações de sistemas interessantes para tornar essa operação rápida - eles fazem fusão de kernel, recomputação no mHC backward pass e até modificam o DualPipe (sua implementação de paralelismo de pipeline). - Apenas 6,7% de sobrecarga no treinamento quando n = 4, a perda diminui 0,02 e melhorias nos benchmarks.